普通视图

记账工具 Firefly III

2025年12月7日 16:50

前言

多亏 Firefly III 让我养成了记账的习惯,快半年的时间里几乎每天能用上,收支一笔记一笔。在此之前我是一个完全不记账的人,反观老婆对记账是非常积极的,起初这个工具也是为了她方便记账而部署。

工作性质使得她有为家庭收支记账的习惯,且一直使用 Excel,对于公式函数之类的 Excel功能玩的算是很溜,以至于不屑于用那些记账 App。然而使用 Fireflyiii 一段时间下来,坚持在用的是我,而老婆最终回归 Excel,她习惯就好。

选择

那会老婆问我有没有好用的工具来平替 Excel 记账,并提了几点要求,首先是排除手机应用商店中的记账 App,再是功能要符合她的记账习惯,三是可以让她随时随地记账,重要的是能在电脑上使用。让我找的话当然是开源为首,根据她的习惯往复式记账类方向找,于是便在搜索引擎找,在饭桶中心找,还挺多的,把问题抛给 ChatGPT 得到如下表格(以各自官方文档为准):

项目 移动端 桌面端 自托管 中文支持
Actual PWA Web / PWA ✔ ❌
Firefly III Android/iOS Web ✔ ✔
ezBookkeeping PWA Web / PWA ✔ ✔
GnuCash Android Windows / macOS / Linux ✖ ✔
Money Manager Ex Android/iOS Windows / macOS / Linux ✖ ✔

根据此推荐琢磨了一翻,最终选择了 FireflyIII。

实用

FireflyIII —— 开源、自托管,支持多种部署方式,采用复式记账法,报告功能丰富,预算、类别标签和自动化等,并且提供 REST API,可以说是该有的都有。官方有 Demo 站 (语言可在偏好设置中改成中文),方便新人了解 FireflyIII 全方面功能。

我很喜欢它的几点功能:

预算 :设置好预算后,以进度条的方式展示我的支出及上限,虽然每个月都是超出把进度条撑红~;

订阅 :把周期性账单放在这里,比如我的 Apple iCloud+ Music 订阅,及月付的服务器续费、话费等,可以设置交易日期,让我知道这个周期是否付过,下个周期是什么时候该缴钱。

定期交易 :顾名思义就是时间一到便自动创建交易记录,我会把一些到期自动从账户中扣固定金额的订阅放在这里,它可以完成 订阅 中的项目,让该项订阅变成已付状态。有个问题就是我的 Apple 订阅是美金账单,虽然 Fireflyiii 有汇率功能,但定期交易无法自动完成汇率转换。

管理后台有丰富的收支 图表,且要是不知道钱都花到哪里去了,试试创建 对账 或生成 报表,一目了然。

以上截图为官方演示站

部署

Fireflyiii 支持 Docker、K8s 及 MySQL+PHP 的方式部署,更多信息可参考官方文档,我则以 Docker Compose 的方式把它部署在 NAS 中,利用 Cloudflare Tunnel 来实现远程使用。

官方提供标准的 Docker Compose 文件,内容包含了数据库,以及用来实现定期交易和自动更新汇率的 Cron,且推荐用 .env 来配置变量。而我的部署场景是已有正在使用的数据库 MariaDB,Cron 用 青龙面板 来实现,且习惯直接在 Compose 文件中添加变量,方便自己。

根据官方文档去部署完全没问题,要了解有哪些变量及作用可以查阅 Docker 部署文档中的 .env 示例。以下只列出推荐添加的几个变量及开启个别功能:

#...其它省略...
  environment:
    #... 推荐添加
    - DEFAULT_LANGUAGE=zh_CN        # 默认界面语言
    - SITE_OWNER=admin@example.com  # 管理员Email
    - APP_KEY=APP_KEY=base64:xxx    # 生成加密密钥,用于加密敏感数据和会话
    - APP_ENV=production            # 表明生产环境
    - TRUSTED_PROXIES=**            # 让反代正常工作
    - TZ=Asia/Shanghai              # 时区
    #... 以下看个人需求,我开启了邮件提醒、Webhooks及汇率
    - MAIL_FROM=user@example.com    # 发送人Email,用于通知
    - MAIL_MAILER=smtp
    - MAIL_HOST=smtp.example.com
    - MAIL_PORT=587
    - MAIL_ENCRYPTION=tls
    - MAIL_USERNAME=user
    - MAIL_PASSWORD=xxx
    - ALLOW_WEBHOOKS=true           # 开启Webhook功能
    - ENABLE_EXCHANGE_RATES=true    # 开启汇率功能
    - ENABLE_EXTERNAL_RATES=true    # 开启更新汇率
#...其它省略...

以上几点功能必须在变量中开启,其它所支持的通知方式有 ntfy、Slack、Pushover,这三种通知方式可在后台设置,看个人喜好。

Fireflyiii 支持多用户,部署后第一个注册的用户将自动成为管理员,而后会禁止注册。若要多用户可在后台启用注册,或以分享邀请链接的形式新增用户。

客户端

FireflyIII 官方并没有 Web 之外的应用,但它提供 REST API 支持,所以有丰富的第三方应用,官方给了个应用列表自己挑。桌面端自然使用 Web,移动端能让人随时随地快速地记上一笔,我认为好用且使用最多的是 iOS客户端 Abacus;其次是针对移动设备优化 PWA 的 Firefly-Pico(需自行部署,支持 Docker,阅安装文档);安卓客户端推荐 Waterfly III,老婆用 Fireflyiii 时在手机上安装过,一样非常不错。

新建交易看起来要填很多东西,但 Abacus 和 Pico 都能快速克隆已有交易表单,使得一些日常账单新增起来方便快速;另外 Pico 在新建交易时可实时汇率转换,对于一些有外币账单的人来说非常实用。

尾声

FireflyIII 是个很棒的开源个人财务管理工具,自托管 + 数据自主,非常适合想要长期掌控自己财务状况的人,在 GitHub 上已有约21.7k ⭐,社区挺活跃的,有兴趣的朋友可以试试。

至于我老婆不喜欢用,她认为“复杂”、“不习惯”。那会还花时间设置好常用的收支类目、标签、分类等,尽量达到让她只需输入几个字点一点便完成记账之程度,哎哟自作多情了。

AI 开发——改了一个浏览器翻译插件

2025年12月7日 12:30

前言

《我在用什么浏览器翻译插件?》这篇博文里我提到过我对浏览器翻译插件的体验和需求,那时候用了一阵子的 trancy,后来不知何时就弃用了,当时我就提到过,这不是我理想中的翻译插件(个人主观原因)。

在简单导航(simpleNav)基本不必再改动之后,我又萌生了改一个停更开源翻译插件的想法,虽然很早之前就有过,但 codebbudy 没能给我足够的信心。现在换上了 trae solo,我觉得效率上起码要高出不少。

选择

选择项目

停更许久的翻译插件大多是翻译接口失效或者不好用,看起来只需要替换接口就可以,所以我想找的是轻量,且使用体验比较适合我的项目。对比了一下轻氧翻译和侧边翻译,我最终选择了后者。

侧边翻译是我曾使用过很长一段时间的翻译插件,可惜已经停更很久了。加上现在各大翻译插件都有 AI 模型的加持,传统的机翻很难满足要求。

为了避免误导其他人,所以在遵循原项目的开源协议前提下,把这个新项目命名为“轻量翻译”,英文名:lightrans。

选择接口

既然不要机翻,又要考虑到公开给大众使用,就不能有高昂的开支,所以我首先想到的是用智谱清言的官方 api 调用 GLM 4.5-Flash,但是并发数限制得非常低,加上翻译速度没有达到我期望的即点即译,于是作罢。

好在我又体验了一下 trancy,发现 trancy 也没有免费提供 GLM 模型,而是改成了硅基流动。于是我注册了硅基流动的账号,发现居然有免费的模型可以使用!硅基流动真是带善人!

感谢硅基流动提供的免费模型

首先体验的是 deepseek 的一个模型,翻译速度也很慢(我猜测是因为有推理思考过程),在网上多方了解,发现Hunyuan-MT-7B倒是一个不错的专为翻译而生的小模型,腾讯混元官方的 api 依然是收费的,还好硅基流动限免提供使用。最后我选择了三个体量都不大的小模型:Hunyuan-MT-7BQwen2.5-7B-InstructGLM-4-9b-chat

这三个模型除了混元比较新之外,另外两个都算比较老的模型了,没办法,不花钱嘛,况且效果也不是不好。

根据我的用量级别,我使用这几个模型的速率限制为:1000 RPM 和 80000 TPM。即每分钟请求数1000,每分钟处理 token 数80000。

开改

精简代码

侧边翻译不是个人开发者的作品,应该类似于一些较大的开源项目组织维护,所以侧边翻译里有非常丰富和强大的功能及代码。考虑到我只需要接入一个翻译接口,于是必应、谷歌和百度等翻译接口都删掉了。

初次以外还删掉了分析代码、隐私政策、部分设置项和个别国家的本土化适配等等,源代码从14MB缩减到4.5MB。

添加翻译器

由于我选择的三个模型都是对话模型,所以请求的 api 地址一样,于是我只创建了一个 aitrans 的翻译器,方便测试就在代码里明文写了我的私钥,经过测试,对话框(popup)翻译正常,划词翻译正常,但是网页翻译不正常。

修改

原本的侧边翻译的对话框默认是搜索的,输入文本点击翻译后即会在侧边栏显示翻译结果,但是测试了一下目前的翻译接口都已经失效了。为了获得输入和获取结果的一致性,即当前对话框不会被打断关闭而显示另一个对话框,我改了 popup 的样式,并使它能够直接在当前窗口显示结果。

侧边翻译的对话框

lightrans的对话框翻译

除了对话框以外,侧栏显示翻译也会让人的视线离开当前关注的区域,所以我把划词翻译的结果也以浮动的卡片形式显示在了当前位置,并且和原来一样支持拖动。以下是划词翻译中三个不同模型结果的对比(发音按钮点击无效,功能删了但是还没删按钮):

lightrans混元模型划词翻译

lightrans千问模型划词翻译

lightransGLM模型划词翻译

当然,用不着的设置项也可以删掉,因为我的需求没有那么丰富(不然就用 trancy了),为了追求极简但好用,所以砍掉了许多原本有的功能,也为后面的修改和维护减轻一点负担。

侧边翻译的设置页

轻量翻译的设置页

看起来基本可以正常使用了,但是网页全文翻译依然不行。原项目使用的是谷歌和有道,但是有道已经下线了,谷歌在国内也无法直接访问,看来要支持网页翻译需要改动的还挺多。

中间的过程就不再赘述了,除了新增代码,调试代码之外,还要测试不同的请求频次和字符数,以免触发硅基流动限频的策略。

和原项目一样支持右键选择翻译模型

一开始选中模型进行网页翻译,往往要过十来秒钟页面才会有变化。或许是内容太多了模型处理也要时间吧,于是我设定了分批次提交,最高并发三个,最多重试三次。所以在进行网页翻译的时候可以看到内容是一部分一部分出来的,但是间隔不算大(主要是网页本身的菜单栏花的时间多,正文其实很快)。这样用户能感知到翻译已经开始了,而不是像之前一样等待了十来秒都没反应,于是不断尝试,就更容易触发限频。

lightrans贴一段代码

从翻译结果来看,不知道为什么千问模型会漏掉几个词语不翻译,也可能是我的代码有问题,相比之下,混元模型翻译得还不错,有些专有名词甚至会加括号解释说明。比如昨天在新华网英文站翻译页面时,发现它会解释“GuoChao”这一个词汇,但是我没找到那篇新闻,只能找另一个,没想到也复现了。

上方是翻译,下方是原文

这是更完整的页面翻译。

lightrans使用混元的网页翻译

最后

通过这次改写这个开源项目,我才发现原来微软的机翻 api 也是要钱的,那么多较大的翻译插件都把谷歌和微软翻译免费使用,甚至开放一些 AI 模型翻译免费使用,这样看起来他们真的是在为爱发电了。

而我能轻松改写这个项目,要感谢侧边翻译的开发者们的开源,也要感谢 trae solo 的帮助。考虑到我的 api 限频问题,所以暂时没想过上架应用商店,但是如果愿意体验并且给我提出意见的话,也欢迎下载扩展包尝试一下。

项目地址:hin/Lightrans · CNB

扩展包下载:lightrans_chrome.zip | w4j1e’s drive

足不出户,开通香港星展银行账户

2025年12月6日 05:28

以前开通一张香港银行卡,需要肉身去一趟香港,现在出现了更简单的方式。零费用,可以开一个星展银行户头,备用!下面是保姆级开通教程,半小时搞定。

一、教程

  1. 第一步是注册WISE

下载APP后,使用邮箱登录 → 点击创建个人账户 → 填写国家和个人信息 → 然后人脸识别之后就成功创建WISE账户了。

Wise(前称TransferWise)是一家英国金融科技公司,提供低成本、透明的国际汇款、多币种账户和借记卡服务,拥有1500多万客户,每月处理90亿英镑的国际汇款。作为一间全球性的汇款公司,Wise已经在多个国家获得当局的认可和授权,例如英国金融行为监管局(FCA)、美国金融犯罪执法网络(FinCEN)、澳洲金融监理署(APRA)。

可以使用邀请链接注册,能获得4500元的免费转账额度。不用链接没有此额度。wise.com

  1. 第二步是创建账户。

成功后,在首页,点击添加货币。点击添加港币,然后点击验证账户详细信息。选择国家为中国大陆,文件类型一定要选择“身份证”。护照很多人经验说无法验证成功。

  1. 第三步验证身份。

这一步就是拍摄身份证正反面,然后上传。注意⚠️填写税号,这里填写身份证号就可以。都填完之后等待邮件通知就可以了。工作日一般第二天就会收到开户成功的信息。

开出来的账户是香港星展银行的,DBS Bank,如上图所示。

星展银行(香港)有限公司是新加坡星展银行的附属公司,属于香港第七大注册银行,实力很强。DBS是亞洲最大金融服务集团之一,星展香港佣有24家分行和超過4,500名员工。

二、开通港卡户头的用处

这个账户支持FPS转账,是免赴港开户最简方式。剩下赴港路费和酒店钱,趁没有门槛,赶快注册一个吧。你问有什么用?

  • 可以用作推特创作者激励的收款账号;
  • 可以作为海外券商的出入金账号;
  • 可以用FPS,与其它香港账户之间互转都是免手续费;
  • 海外平台收款(Upwork/Fiverr/Stripe/Payoneer)直接进Wise美元余额,当然也可以收款 Google Ads 的广告费;
  • 可以用此账户验证开通港版的 Stripe,实现全球收款;
  • 汇率永远用中间价 + 超低手续费(通常0.4%-1%),比银行省80-90% 。

三、不足的地方

  • 大陆注册的Wise没有卡,只有账户,更别说申请实体卡了;
  • 每年仍有国家外汇5万美元额度限制(合法收入结汇不受影响)。

历史经来看属于灰度放开,理论上随时可能收紧,推荐能开就赶紧开,花的时间不多,注册一个备用也很香。开通WISE.com

精神食粮系列 声音的觉醒(二)被误解的声音:高音的错觉与低音的幻觉

2025年12月1日 08:46

精神食粮系列 声音的觉醒(二)被误解的声音:高音的错觉与低音的幻觉 无敌的个人博客 tangwudi

1 前言 在这两年认真研究唱歌的过程中,我遇到过一个非常棘手的问题:耳朵的辨识能力跟不上身体的发声能力。专业声乐人士听一段原唱,往往能立刻判断那句高音到底有多高、那句低音是否真的沉到那么低;但像我这种野路子的业余爱好者,耳朵没有经过系统训练,很容易被各种外在因素误导。 最典型的情况就是:跟着原唱唱的时候,高音或低音总觉得别扭、费力;一旦关掉原唱,只剩伴奏,又能轻松唱出来。 刚开始我以为是自己状态不稳定,后来越想越不对劲——怎么可能经常都在“跟着原唱”时才出问题? 抱着好奇,我开始一点一点拆解这种“不对劲”的来源,结果发现:很多所谓的“高音”和“低音”,其实不是音高本身的问题,而是耳朵被误导之后,身体跟着做了错误反应。甚至可以说,是“听力不够专业”导致了某种声音上的”错觉”或者”幻觉”。 这些错觉或者幻觉从哪里来?可能来自原唱的共鸣方式、后期处 […]

<p>The post 精神食粮系列 声音的觉醒(二)被误解的声音:高音的错觉与低音的幻觉 first appeared on 无敌的个人博客.</p>

如何让MFC的Dialog类型窗口在高度超出屏幕高度时出现比例合适的垂直滚动条

2025年8月20日 22:31

客户提了个需求:因为他们的显示器(32吋)大,所以经常把缩放比设成125%或者150%,希望我们的APP在这两个缩放比下能够正常显示。
但是我们干活用的只是普通的24吋,设成150%之后高度就出溢出屏幕了,这就需要加滚动条。而工作这个东西,到了二鬼子领导那里就会加码,变成100%-225%都得能正常运行,并且因为增加的高度与原来的高度相比没多太多,所以要大滑块,不要分的细碎的小滑块。
这个功能本身不难。通常的做法是取屏幕放大后的窗口新高度,然后减去桌面有效视窗高度,得到的差值除以一个系数,然后用SetScrollRange的第三个数给传进去。然后重写OnVScroll方法,从系数反推滑块位置。
但是,这样得到的是小滑块,而且最后一屏的空白部分也不准确,往往会出现大片空白。

研究了好几天,终于找到了还算不错的方案。在此分享一下。
注意,我只写了垂直滚动条,因为我们的窗体就是瘦长型,即使增加到225%也没超出屏幕宽。给公家干活的一个要务就是不干多余的事,所以要添加水平滚动条的自己酌情修改,我这里就不提供了。

开始。

第一步,在OnInitDialog()中,增加垂直滚动条

如需要增加则对垂直滚动条进行初始化。初始化时,不使用简化版的SetScrollRange(),而改用SetScrollInfo()。利用结构体SCROLLINFO的nPage和nMax配合实现大滑块。这里的逻辑是:nPage与nMax的比值也就是滑块占总高度的比值,比值越接近一,滑块越大。nPage和nMax都是相对值,只要二者单位统一即可。方便起见直接使用真实值。
一个很坑的点是nMax不能用窗口Rect的高,而要取最下边控件的下沿,原因未知。
下面是代码:

BOOL CMFCAppDemoDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

        //取窗口位置
	CRect rcThis;
	GetWindowRect(&rcThis);

        //取最下面控件的位置,如果有动态创建的控件,可以遍历取得。
	CRect rcLastButton;
	GetDlgItem(IDCANCEL)->GetWindowRect(rcLastButton);

        //取放大倍数,96.0是100%时候的DPI
	float fScale = static_cast<float>(GetDpiForWindow(m_hWnd)) / 96.0;
        
        //取桌面工作区大小
	CRect rcScreen;
	::SystemParametersInfo(SPI_GETWORKAREA, 0, &rcScreen, 0);

        //对话框的工作区域理想高度:比最后一个控件多一丢丢。
	int nHeightImage = rcLastButton.bottom + rcLastButton.Height() * fScale;

        //如果想象高度比工作区域高,那么将窗口高度设为与工作区等高。
	if (nHeightImage > rcScreen.Height())
	{
		m_blHasVScrollBar = true; //成员变量,用于标记是否有滚动条
		rcThis.bottom = rcThis.top + rcScreen.Height();
		this->MoveWindow(&rcThis, TRUE); //修改Dialog自身高度
		SCROLLINFO si{};
		si.cbSize = sizeof SCROLLINFO;
		si.fMask = SIF_RANGE | SIF_PAGE | SIF_PAGE;
		si.nPage = rcScreen.Height(); //Windows桌面可利用高度作为Page高
		si.nMax = nHeightImage; //窗口高度最大值。
		SetScrollInfo(SB_VERT, &si, TRUE); //激活滚动条
	}
        //否则没用滚动条
	else
	{
		SetScrollRange(SB_VERT, 0, 0, FALSE);
	}

	return TRUE; 
}

第二步,重写WM_VSCROLL的消息响应函数OnVScroll()

没有难点。只要每个消息处理时,nPage与nMax的比例关系一致即可。

BEGIN_MESSAGE_MAP(CMFCAppDemoDlg, CDialogEx)
	ON_WM_VSCROLL()
END_MESSAGE_MAP()

void CMFCAppDemoDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
	CDialogEx::OnVScroll(nSBCode, nPos, pScrollBar);
        //取之前的滚动条信息
	SCROLLINFO si{};
	GetScrollInfo(SB_VERT, &si, SIF_ALL);

        //滚动条上一次的位置
	int nCurPos = si.nPos;
	const int FACTOR(100);
	switch (nSBCode)
	{
	case SB_LINEUP:          //Scroll one line up
		nCurPos -= (si.nPage / 50); //点击一次箭头,或者按一次↑,移动页面的1/50,注意方向
		break;
	case SB_LINEDOWN:           //Scroll one line down
		nCurPos += (si.nPage / 50); //注意方向
		break;
	case SB_PAGEUP:            //Scroll one page up
		nCurPos -= (si.nPage / 50* 20); //PgUp键的处理。所有的响应要统一单位标准即可。注意方向
		break;
	case SB_PAGEDOWN:        //Scroll one page down        
		nCurPos += (si.nPage / 50* 20); //注意方向
		break;
	case SB_THUMBPOSITION:  //Scroll to the absolute position. The current position is provided in nPos
		nCurPos = nPos; //从缩略图直接确认位置
		break;
	case SB_THUMBTRACK:     //Drag scroll box to specified position. The current position is provided in nPos
		nCurPos = nPos; //从滚动条直接确认位置
		break;
	case SB_ENDSCROLL:
		break;
	default:
		break;
	}
        //确认没有超出最小值和最大值范围。最小值一般是0,最大值是nMax - nPage。
	nCurPos = max(si.nMin, min(nCurPos, si.nMax - static_cast<int>(si.nPage)));
        //当位置移动时,滚动窗口内容
	if (nCurPos != si.nPos)
	{
		int nDelta = si.nPos - nCurPos; //注意方向,原始值减目标值
		si.nPos = nCurPos;
		si.fMask = SIF_POS;
		SetScrollInfo(SB_VERT, &si, TRUE); //设滚动条
		ScrollWindow(0, nDelta); //滚动窗口
		UpdateWindow();
	}
}

第三步,重写WM_MOUSEWHEEL的消息响应函数OnMouseWheel()

同样没有难点,只是鼠标滚动一下会转化成多次向上或向下的消息。

BEGIN_MESSAGE_MAP(CMFCAppDemoDlg, CDialogEx)
	ON_WM_MOUSEWHEEL()
END_MESSAGE_MAP()
BOOL CMFCAppDemoDlg::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
        //确认滚动条有效
	if (!m_blHasVScrollBar) {
		return CDialogEx::OnMouseWheel(nFlags, zDelta, pt);
	}
	CONST INT WHEEL_SCROLL_LINES(3);
	UINT8 ucDirection(SB_LINEUP);
        //根据zDelta方向确定消息重量
	if (zDelta < 0) {
		ucDirection = SB_LINEDOWN;
	}
        //把鼠标滚动值换算成N个箭头消息并发送。次数是没有方向的。
	UINT unLines = (abs(zDelta) * WHEEL_SCROLL_LINES) / WHEEL_DELTA;
	while (unLines--)
	{
		SendMessage(WM_VSCROLL, MAKEWPARAM(ucDirection, 0), 0);
	}
	return TRUE;
}

总之,最难的其实还是开头。nPage与nMax虽然设什么数都可以,但只有用真实值才是最符合拖动规律的。

阳澄湖游记

2025年11月18日 11:12

这周六,与老婆孩子一起,跟风加入了吃大闸蟹的大军。目的地——阳澄湖。这念头一起,心里那点小期待就压不住了,仿佛已经闻到了蟹黄那勾人的鲜香。

可这期待,刚一上路,就被现实堵了个结结实实。100公里出头的路,活生生堵了一个半小时,感觉全世界的人都约好了今天去阳湖。原本计划得好好的午饭,等我们历经整整3小时的“车程马拉松”,抵达目的地时,指针已经毫不留情地跳到了下午1点。

一路上,我的内心活动大概是这样的:“下次再也不凑这热闹了!”“我的屁股已经不是我的屁股了……”

心里特别过意不去,赶紧发消息让朋友们别等了先吃。结果你猜怎么着?我们风尘仆仆地赶到时,包间里传来的不是吃饭的动静,而是阵阵“鬼哭狼嚎”的歌声!推门一看,好家伙,这帮可爱的朋友,愣是饿着肚子,一边K歌一边等我们。那一刻,什么堵车的烦躁、屁股的酸痛,瞬间都被这“有爱”的画面给治愈了。有这样的朋友,真好。

这一路开过来,还有个特别有意思的现象:放眼望去,几乎全是沪牌车的天下,毫不夸张地说,感觉比在上海街头看到的还密集。这阵仗,让人不得不感叹,阳澄湖这块金字招牌的号召力是真强啊。当地的文旅局,看来是真发力了。

我们预约的农家乐是 「小郑蟹坊」 。这一片基本都是家族式的农家乐,当然也有气派的大酒店,但朋友是这家的老主顾,每年都来,我们也就跟着来了。没想到,味道出乎意料地不错!

更妙的是,店里提供的娱乐项目相当齐全:K歌、麻将、喝茶一应俱全。吃完饭还能接着玩乐,不用担心冷场,着实是个聚会的好地方。

重头戏当然是大闸蟹。这里是自选的,公母、大小不同,价格也不一样。对我这种“业余选手”来说,其实吃不出太大区别,只觉得每一只都膏满黄肥,鲜美得不得了。我家娃更是“暴殄天物”的典型,对蟹黄蟹膏兴趣寥寥,只专注于拆解蟹腿肉。我们俩凑一块,堪称“业余吃蟹二人组”。

酒足饭饱,下一站是去 「1971粮仓」 逛逛。结果小家伙的眼球,直接被路边一台棉花糖机俘获了,挪不动步。那必须得买一个。

广告牌上明明写着可以选各种卡通款式,可当我满怀期待地询问时,售货大妈非常淡定地回了句:“不会做,只会做白色的。” 那语气,大概就是“爱要不要”的意思。15块钱一个的原味棉花糖,看着大妈娴熟的手法,我心里暗暗嘀咕:这钱赚得可真轻松,想当年公司搞活动,我还上手做过几次呢,感觉我都能来应聘了。

d0e92bea824f9b64e5e0e6f33fa1929e

回程的路上我仔细算了一笔时间账:上午10点出发,下午1点到,吃完饭3点,玩到4点多往回走,到家已经7点多了。好家伙,开车开了整整6小时,真正玩的时间满打满算才3小时。这性价比,属实有点低啊。

经过这一天“人在囧途”般的体验,我和家人达成了一个坚定的共识:下次再来,说什么也要坐高铁了! 把时间浪费在美好的事物上,而不是无尽的堵车中,这才是休闲的正确打开方式嘛。

欢乐谷游记

2025年10月27日 15:21

ae36c7b558b32096dd5a67dc48a00720

前两天去了欢乐谷,正逢万圣节活动期间,活动的类目不少,随手拍了点图记录一下。

P4

e8d2b7b43a6356dc6485328b2b39ebdc

46567f0b5dbca97d6412a5b17c961516

这类游乐场一般情况下我都是属于拎包客,陪玩居多,要说为啥不敢玩,那只能来句,懂的都懂。

82f81ac90f36d31d20e13bf4d4058111

顺便我还问了NPC是不是很多都是兼职的,回答说是的,有些还是大学生兼职大概,NPC还是很有活的,跟NPC做小游戏互动会给游客发游戏卷,有些NPC的卷发光了,就跟游客整活,毕竟没卷了,还是非常有意思的。

61f02d651d79baac0660818802add366

实际的游玩体验还是不错的,如果你不打算排队等项目,那就还行,一般情况下小项目排队都是30分钟起。

796cbde4e9a41b043be375f21982507b

如果是一些招牌项目动辄1.5小时,路边也有人兜售快速通行票,大概就是跟迪士尼学的吧,这个是人家的商业化手段,至少能控制普通门票的价格趋于一个合理的区间。

571683816ffa8c8034ba756173fd5912

有个什么主题鬼屋,我记不得了,好像叫什么嫁衣之类的,是里面排队人最多的项目之一。进去玩了一圈,还找到了里面扮鬼吓人的鬼新娘,被我逮住了,要求合影一张,留作纪念。

19748a36c2b44f7521170567589eca4a

4e65d24c826d23624d433f54d26a886b

大部分项目都没有排,总共就选了两个,一个转转椅,就是转的飞起来的那个,小时候玩过很多次,大概是我为数不多玩的项目了,还记得以前上海欢乐谷刚开业,我妈带我去玩,一入园就排了谷木游龙过山车,大概是我人生第一次挑战过山车类的项目。临走的时候还看了一场灯光秀,刚好赶上了,没拍视频,留张图纪念下。

ef7cd57c9c448f1da5513a5924388342

一路走不停,实在是没闲心拍照,好玩是很好玩的,大概是E人的天堂,你遇见所有的人都那么热情,无论是游客还是NPC,如果有时间,推荐你去体验下,以上,欢乐谷-万圣夜活动 游记。

补码陷阱

2025年10月22日 11:10

为什么这个Bug如此狡猾?

直觉背叛:我们直觉上认为 -A 就是 “负的A”,但在位运算中它变成了”A的补码”
测试遗漏:我们测试了正数情况,但对负数的测试不够充分
认知偏差:我们都”知道”补码,但真正用到时却忘了它的存在

你发现下面代码中的问题了吗 ?

1
2
3
4
5
6
7
8
9
// 伪代码:用负数表示反选,正数表示正常选择
bool ShouldSelect(int value, int mask)
{
if (-value & mask == Mathf.Abs(-value))
{
return -value > 0;
}
return false;
}

在C#中,A & B-A & B 的区别主要在于对负数处理的不同。让我通过具体案例来说明:

案例演示

1
2
3
4
5
6
7
8
9
10
int A = 5;    // 二进制: 0000 0101
int B = 3; // 二进制: 0000 0011

// 情况1: A & B
int result1 = A & B; // 5 & 3
Console.WriteLine($"A & B = {result1}"); // 输出: 1

// 情况2: -A & B
int result2 = -A & B; // -5 & 3
Console.WriteLine($"-A & B = {result2}"); // 输出: 3

二进制分析:

1
2
3
4
5
6
7
A = 5:  0000 0101
B = 3: 0000 0011
A & B: 0000 0001 = 1

-A = -5: 1111 1011 (补码表示)
B = 3: 0000 0011
-A & B: 0000 0011 = 3

更多案例

1
2
3
4
5
6
7
8
9
10
11
12
// 案例2
int A2 = 10; // 1010
int B2 = 6; // 0110

Console.WriteLine($"{A2} & {B2} = {A2 & B2}"); // 输出: 2
Console.WriteLine($"-{A2} & {B2} = {-A2 & B2}"); // 输出: 6

// 案例3 - 负数和负数
int A3 = -3;
int B3 = -5;

Console.WriteLine($"{A3} & {B3} = {A3 & B3}"); // 输出: -7

背后的意义

1. 补码表示法

  • 在C#中,整数使用二进制补码表示
  • 正数的补码是其本身
  • 负数的补码 = 对应正数的二进制取反 + 1

2. 运算本质

  • A & B:对两个数的实际二进制位进行按位与
  • -A & B:先计算A的补码(得到-A),再与B进行按位与

3. 实际应用场景

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 标志位检查
[Flags]
enum Permissions
{
Read = 1, // 0001
Write = 2, // 0010
Execute = 4 // 0100
}

// 检查权限
Permissions userPermissions = Permissions.Read | Permissions.Write;

// 正确的方式:直接与操作
bool canRead = (userPermissions & Permissions.Read) != 0; // true

// 错误的方式:使用负数(无意义)
bool wrongCheck = (-(int)userPermissions & (int)Permissions.Read) != 0; // 结果不可预测

4. 重要注意事项

1
2
3
4
// 注意:-A & B 不等于 -(A & B)
int A = 5, B = 3;
Console.WriteLine($"-A & B = {-A & B}"); // 3
Console.WriteLine($"-(A & B) = {-(A & B)}"); // -1

总结

  • A & B 是直接的按位与运算,结果可预测
  • -A & B 涉及补码转换,结果取决于负数的二进制表示
  • 在实际编程中,应避免对负数进行无意义的位运算,除非明确理解补码机制
  • 位运算通常用于标志位、掩码操作等场景,应保持操作数的明确性和可读性

殊途同归的“搜打撤”

2025年10月10日 14:47

引言:为什么要做“搜打撤”模式对比?

“搜打撤”(Loot-Shoot-Extract)作为一种混合了PVE与PVP元素的玩法范式,近年来在射击游戏中迅速崛起。它精妙地融合了资源争夺的贪婪、生存博弈的恐惧、策略规划的智慧与风险管理的回报,为设计者提供了一个兼顾“爽感”与“深度”的绝佳实验田。

在中国手游市场,《和平精英》的“地铁逃生”模式《三角洲行动》是“搜打撤”框架下的两款代表性产品。然而,它们面向的用户、系统根基、设计取舍乃至商业逻辑都存在本质差异。本文将从游戏设计视角出发,层层剖析二者在关键轴向上的权衡与考量,并最终构想一种理想化的“混合型”模型,供广大游戏制作者参考。

一、 定位与产品策略:DAU的“存量激活” vs. 核心圈层的“品类定义”

在深入机制之前,我们必须首先理解两者在产品战略上的根本区别,这决定了后续所有设计的“锚点”。

  • 《和平精英·地铁逃生》:典型的“DAU复利模型”
    它的核心任务并非创造新品类,而是服务于《和平精英》的亿级用户池。通过引入一套高风险、高回报的循环,将用户的“战术竞技”习惯,转化为可持续的“装备驱动”型追求,本质目标是提升用户时长、粘性及付费深度。因此,它的所有设计都必须向“低学习成本”和“即时爽快感”倾斜,这是对存量市场的尊重和最大化利用。

  • 《三角洲行动》:一次“品类卡位战”
    它的野心是在移动端定义“硬核战术射击”的标准,对标的是PC端的《逃离塔科夫》等标杆。它吸引的是已被PC市场教育、对深度有极高要求、且在移动端需求未被满足的核心用户。因此,它的设计必须追求系统深度、策略空间和社区生态,以此构建足够高的品类壁垒,实现对核心圈层的占领。

维度和平精英·地铁逃生三角洲行动
产品基底在已有大体量战术竞技产品上插入的“玩法变体/资料片”。以战术射击为核心定位的新产品,旨在定义品类。
目标用户主要面向已有《和平精英》用户,下沉“搜打撤”玩法。面向对战术、深度有期待的核心玩家,同时兼容大众。
设计倾向爽感 + 低门槛深度 + 策略性 + 系统联动
生命周期依赖主产品,可能被作为“活动”模块。若设计稳健,可成为游戏核心长期支柱,潜力巨大。

设计启示:立项之初,必须明确你的项目是服务于“流量”,还是定义“品类”。前者要求你做“减法”和“嫁接”,后者则要求你做“加法”和“深耕”。

二、 武器与装备体系:内容消耗的“数值驱动” vs. 策略空间的“构筑驱动”

这是两种截然不同的长期留存设计思路,直接决定了玩家的核心追求与游戏的长线生态。

对比维度《和平精英·地铁逃生》《三角洲行动》
核心循环内容消耗循环策略迭代循环
设计本质采用了传统MMORPG的“装备驱动”模型。通过“随机词条”组合,用有限的武器模型,创造出海量的“伪内容”,驱动玩家为了极小概率的“毕业神装”而进行重复劳动。这是一种典型的“内容消耗型(Content Treadmill)”设计。采用了模拟类游戏的“方案驱动”模型。武器本身只是平台,核心在于配件组合出的“战术解决方案”。玩家研究改装,是为了解决特定的战术问题。乐趣来自于创造、实验和验证。这是一种“系统驱动型(System-Driven)”设计。
玩家心态赌徒心态:爽点来自于开箱、拾取瞬间的“惊喜”,是被动获得的、由随机性带来的快感。工程师/工匠心态:爽点来自于一个成功的“Build”在实战中发挥作用的“成就感”,是主动创造的、由策略验证带来的快感。
运营依赖强依赖版本更新。需要不断推出新品质、新词条来维持玩家的“刷取”动力。相对不依赖海量内容更新。一个新配件、一张新地图都可能催生出全新的改装Meta,激活整个系统的可玩性。运营的重点在于“环境营造”而非“内容填充”

三、 经济系统:封闭的“中央计划经济” vs. 开放的“自由市场博弈”

经济系统是“搜打撤”玩法的灵魂,它塑造了玩家的长期行为和社区生态。

对比维度地铁逃生的“系统商店回收”三角洲行动(及塔科夫类)的“玩家市场”
开发者角色价值定义者(中央银行)。官方统一定价,直接控制货币产出与回收,经济模型稳定、可预测、易于平衡。规则制定者(证监会)。官方只设定交易规则(如税率),物品价值由市场供需决定。开发者需要通过“宏观调控”来间接影响市场。
系统风险低风险。几乎没有通货膨胀或市场崩溃的风险,能有效保护新手。缺点是缺乏深度。极高风险。极易受到脚本工作室、RMT(真实货币交易)、囤积居奇等因素的冲击。这要求开发者具备极高的经济系统设计和监控能力。
与玩法的联动弱联动。经济是战斗的“附属品”,玩家只需记住“什么东西值钱”。强联动。经济本身就是核心玩法之一。玩家的行为不再是单纯的“搜打撤”,而是“信息收集 → 市场分析 → 风险投资 → 战场执行 → 资本变现”的完整闭环。

设计启示:选择自由市场,意味着你不仅在做射击游戏,更是在运营一个虚拟社会。这需要配备专门的经济策划和数据监控团队,并做好与黑产长期斗争的准备。

四、 战斗与战术:即时反应的“遭遇战” vs. 风险管理的“信息战”

战斗体验的差异,根源在于对“风险”和“信息”这两个核心资源的不同定义。

  • 地铁逃生:核心是“装备”的风险管理。
    由于继承了《和平精英》较快的TTK,战斗更偏向遭遇后的枪法与反应。玩家在战前最大的考量是:“我这身装备值不值得冒险?”战斗是获取更好装备的手段,因此更鼓励“富贵险中求”。关卡设计更注重交战点(Choke Point)的设置高级资源区的分布,以引导PVP冲突。

  • 三角洲行动:核心是“生存”的风险管理。
    更拟真的TTK和伤害系统,使得“死亡”本身的惩罚远高于装备损失。战斗的核心从“交火瞬间”前移到了“交火前的信息博弈”信息本身就是最重要的战略资源。玩家的首要目标是“活下来”。关卡设计必须提供多样化的信息攻防手段,包括复杂的声效传播、多层次的垂直空间和多种隐蔽/绕后路线。

五、 玩家心理、动机与运营触点

  • 刺激点差异:地铁逃生的刺激点在于“刷到极品”的瞬间满足感(随机刺激);三角洲行动则更偏向“我的战术方案成功了”的自驱型成就感(策略验证)
  • 成长路径:地铁逃生是“对局循环+活动加持”的短时高频反馈;三角洲行动则需构建“配件研发、市场交易、战术解锁”的长期投入路径
  • 失败惩罚:地铁逃生失败成本相对可控,鼓励高频次尝试;三角洲行动类游戏则必须在“高惩罚带来的紧张感”与“过高挫败感导致的流失”之间做出精细的平衡。

六、 扩展对比与设计谱系:从行业标杆中汲取智慧

为了更完整地理解设计空间,我们将视野扩展到其他同类标杆:

  • 《逃离塔科夫》:展示了玩家驱动经济和高惩罚机制的极致魅力,但也警示了其平衡难度与社区管理成本之高昂。
  • 《Hunt: Showdown》:强调“氛围营造”和“高价值目标”,将每一局都塑造成电影式的高潮体验,证明了“价值集中”设计的吸引力。
  • 《全境封锁:暗区》 / 《COD: DMZ》:演示了如何将“撤离点”设计成动态的社交战场和戏剧性冲突的天然舞台。

由此,我们可以抽象出一个“搜打撤”的设计谱系供决策参考:

  1. 装备获取:随机词条(大众) ←—→ 深度改装(硬核)
  2. 经济系统:系统回收(稳定) ←—→ 玩家市场(动态)
  3. 战斗节奏:快TTK(爽快) ←—→ 慢TTK(拟真)
  4. 撤离设计:形式化终点(简单) ←—→ 策略化高潮(复杂)
  5. 失败代价:轻度惩罚(低门槛) ←—→ 重度惩罚(高沉浸)

七、 终极构想:一个理想化的“混合型”搜-打-撤游戏模型

核心目标:通过“分层设计”和“风险隔离”,在同一个产品内,为不同层次的玩家提供差异化的核心乐趣,同时保证系统长期运营的稳定性。

1. 武器系统:引导而非强制的“构筑之路”

  • 新手层(掉落驱动):保留装备品级和少量随机词条,提供即时满足感。
  • 进阶层(改装驱动):通过“导师任务”或“每周挑战”,手把手教会玩家改装的乐趣。
  • 顶层(Meta驱动):设立“方案工坊”,让头部玩家的优秀Build能够被社区学习和模仿,形成玩家自发的教育生态。

2. 经济系统:受宏观调控的“混合市场”

  • 基础保障(系统回收):低价值“垃圾”物资只能卖给系统,为所有玩家提供稳定的保底收入。
  • 核心博弈(玩家交易):仅允许稀有材料、配件、高级装备进入玩家市场。
  • 风险控制(运营工具箱):设立阶梯交易税上架限制,并在必要时由官方商人限量出售基础物资,作为市场“稳定器”。

3. 撤离机制:从“终点”到“高潮”

  • 低风险选项:常驻撤离点,但需上缴部分战利品作为“路费”。
  • 高风险选项:限时开启、全图广播位置的撤离点,收益最高。
  • 特殊选项:需要完成特定任务才能开启的隐藏撤离点,提供独有奖励。

4. 风险与容错:引入“保险”与“安全容器”

  • 安全容器:提供一个无论死亡与否都能带出物品的极小空间,保护玩家最重要的物品,保证“保底”收获。
  • 保险机制:玩家可为装备购买保险。若装备在局内丢失且未被其他玩家带走,则会在一段时间后返还。这极大地缓冲了挫败感,鼓励玩家使用更好的装备。

八、 运营与数据指标:确保虚拟社会的健康运转

一个复杂的“搜打撤”游戏上线后,必须实时监控以下关键数据,以防经济或玩法走向失衡:

  1. 拾取/使用率:判断物资和道具的价值平衡。
  2. 撤离成功率:评估地图和玩法的整体难度。
  3. 交易行流动性与价格波动:监控经济健康度,预警市场操纵或通胀。
  4. 新手留存率与失败后的重返率:评估上手门槛和挫败感控制是否合理。
  5. 方案工坊活跃度:衡量社区生态和玩家自驱内容的健康状况。
  6. 作弊/RMT报告与处理效率:维护游戏公平性的生命线。

小结

“搜打撤”并非一个固定公式,而是一个可以灵活塑造的框架。通过以上对比,我们可以清晰地看到两条路径:

  • 《和平精英》的“爽快”路线:以低门槛和即时反馈激活海量用户,适合拥有巨大流量池的产品。其核心是简化系统,聚焦“搜”与“打”的瞬间快感

  • 《三角洲行动》的“硬核”路线:以深度和拟真构筑品类壁垒,吸引核心玩家。其核心是构建值得长期钻研的周边系统(改装、经济),让乐趣从局内延伸到局外

“混合模型”,则试图在这两者之间找到一个平衡点:用分层设计为大众玩家提供入口和即时爽感,同时为核心玩家保留长期的策略追求和工匠乐趣;并通过受控的经济与风险机制,吸取行业先行者(如《逃离塔科夫》)的经验教训,降低项目长线运营的风险。

中班学习规划

2025年9月29日 17:27

规划下家里的娃娃,中班的学习计划,指导思想就是,精简,高效。
小学阶段不在课程内的古诗词不碰,其他科目同理,超纲内容也不碰。
先学习必要的精简过的部分,如果再有余力,再谈其他。
核心的期望还是以培养学习习惯为主,快乐教育为辅的学习模式。
学习中要真的不快乐了,那我也没办法,我只能在旁边憋笑。
挨打应该不会挨打的,教训一顿应该是要的,毕竟培养学习习惯是个严肃的事情。
本篇学习资料,是用了各种AI,结合我的一些学习经验,整合出的一份文档,留存于博客,需要用的人自取。
文末是<超市教学计划> ,以后带娃逛超市就按照这个来。

20250929172427_8513_1

语文部分

培养古诗词背诵的习惯(可选)

古诗词比较特殊,小学阶段的古诗词往往都是朗朗上口易于背诵的,这块大人可以带着一起背着玩。
此部分随意,能背多少背多少,当作小朋友的才艺展示也是不错的,我小时候也当众背过古诗,很多人都有类似的经历。

📚 小学一年级建议背诵古诗词清单

学期篇目作者/出处
一年级上册《咏鹅》(唐)骆宾王
《画》(唐)王维
《悯农(其二)》(唐)李绅
《江南》汉乐府
《古朗月行(节选)》(唐)李白
《风》(唐)李峤
一年级下册《春晓》
《赠汪伦》(唐)李白
《静夜思》(唐)李白
《寻隐者不遇》(唐)贾岛
《池上》(唐)白居易
《小池》(宋)杨万里
《画鸡》(明)唐寅

一年级上册

1. 《咏鹅》

(唐)骆宾王
é é é
鹅,鹅,鹅,
qū xiàng xiàng tiān gē
曲 项 向 天 歌。
bái máo fú lǜ shuǐ
白 毛 浮 绿 水,
hóng zhǎng bō qīng bō
红 掌 拨 清 波。

简介:传说这是诗人骆宾王七岁时写的诗,通过“曲项”、“白毛”、“红掌”等词,生动地描绘了鹅在水中嬉戏的神态。

2. 《画》

(唐)王维
yuǎn kàn shān yǒu sè
远 看 山 有 色,
jìn tīng shuǐ wú shēng
近 听 水 无 声。
chūn qù huā hái zài
春 去 花 还 在,
rén lái niǎo bù jīng
人 来 鸟 不 惊。

简介:这是一首经典的谜语诗,描述的是一幅画。诗句写出了画中山水、花鸟的特点,可以引导孩子感受艺术与真实的区别。

3. 《悯农(其二)》

(唐)李绅
chú hé rì dāng wǔ
锄 禾 日 当 午,
hàn dī hé xià tǔ
汗 滴 禾 下 土。
shuí zhī pán zhōng cān
谁 知 盘 中 餐,
lì lì jiē xīn kǔ
粒 粒 皆 辛 苦。

简介:这首诗教导孩子要珍惜粮食,尊重劳动人民的辛勤付出。语言朴实,但寓意深刻。

4. 《江南》

汉乐府
jiāng nán kě cǎi lián
江 南 可 采 莲,
lián yè hé tián tián
莲 叶 何 田 田。
yú xì lián yè jiān
鱼 戏 莲 叶 间。
yú xì lián yè dōng
鱼 戏 莲 叶 东,
yú xì lián yè xī
鱼 戏 莲 叶 西,
yú xì lián yè nán
鱼 戏 莲 叶 南,
yú xì lián yè běi
鱼 戏 莲 叶 北。

简介:这是一首汉代的民歌,描绘了江南水乡人们采莲时欢快的场景。诗句回环往复,节奏轻快,充满了动感和趣味。

5. 《古朗月行(节选)》

(唐)李白
xiǎo shí bù shí yuè
小 时 不 识 月,
hū zuò bái yù pán
呼 作 白 玉 盘。
yòu yí yáo tái jìng
又 疑 瑶 台 镜,
fēi zài qīng yún duān
飞 在 青 云 端。

简介:这是大诗人李白充满想象力的作品。诗人小时候把月亮想象成“白玉盘”和“瑶台镜”,非常适合启发孩子的想象力。

6. 《风》

(唐)李峤
jiě luò sān qiū yè
解 落 三 秋 叶,
néng kāi èr yuè huā
能 开 二 月 花。
guò jiāng qiān chǐ làng
过 江 千 尺 浪,
rù zhú wàn gān xié
入 竹 万 竿 斜。

简介:这首诗句句都在写风,但通篇不见一个“风”字。它通过叶落、花开、浪涌、竹斜等自然现象,巧妙地表现了风的力量。

一年级下册

1. 《春晓》

(唐)孟浩然
chūn mián bù jué xiǎo
春 眠 不 觉 晓,
chù chù wén tí niǎo
处 处 闻 啼 鸟。
yè lái fēng yǔ shēng
夜 来 风 雨 声,
huā luò zhī duō shǎo
花 落 知 多 少。

简介:这首诗描绘了春天早晨的景色。语言平易浅近,自然天成,写出了诗人对春光的喜爱与珍惜。

2. 《赠汪伦》

(唐)李白
lǐ bái chéng zhōu jiāng yù xíng
李 白 乘 舟 将 欲 行,
hū wén àn shàng tà gē shēng
忽 闻 岸 上 踏 歌 声。
táo huā tán shuǐ shēn qiān chǐ
桃 花 潭 水 深 千 尺,
bù jí wāng lún sòng wǒ qíng
不 及 汪 伦 送 我 情。

简介:这首诗表达了李白与好友汪伦之间深厚的友谊。后两句用桃花潭水的深来对比友情的更深,非常动人。

3. 《静夜思》

(唐)李白
chuáng qián míng yuè guāng
床 前 明 月 光,
yí shì dì shàng shuāng
疑 是 地 上 霜。
jǔ tóu wàng míng yuè
举 头 望 明 月,
dī tóu sī gù xiāng
低 头 思 故 乡。

简介:这是李白最著名的思乡诗,语言简洁,感情真挚,勾勒出一幅静谧的月夜思乡图。

4. 《寻隐者不遇》

(唐)贾岛
sōng xià wèn tóng zǐ
松 下 问 童 子,
yán shī cǎi yào qù
言 师 采 药 去。
zhǐ zài cǐ shān zhōng
只 在 此 山 中,
yún shēn bù zhī chù
云 深 不 知 处。

简介:全诗采用问答体,简短而意境深远。通过“白云”、“深山”等意象,描绘出隐者超然物外的形象。

5. 《池上》

(唐)白居易
xiǎo wá chēng xiǎo tǐng
小 娃 撑 小 艇,
tōu cǎi bái lián huí
偷 采 白 莲 回。
bù jiě cáng zōng jì
不 解 藏 踪 迹,
fú píng yī dào kāi
浮 萍 一 道 开。

简介:白居易的诗通俗易懂,这首诗如同一个短片,生动地刻画了一个孩子偷采白莲后天真烂漫、憨态可掬的形象。

6. 《小池》

(宋)杨万里
quán yǎn wú shēng xī xì liú
泉 眼 无 声 惜 细 流,
shù yīn zhào shuǐ ài qíng róu
树 阴 照 水 爱 晴 柔。
xiǎo hé cái lù jiān jiān jiǎo
小 荷 才 露 尖 尖 角,
zǎo yǒu qīng tíng lì shàng tóu
早 有 蜻 蜓 立 上 头。

简介:这首诗描绘了一幅小巧、精致、充满生机的初夏池塘风景图。“小荷才露尖尖角”一句常被用来形容初显才华的年轻人。

7. 《画鸡》

(明)唐寅
tóu shàng hóng guān bù yòng cái
头 上 红 冠 不 用 裁,
mǎn shēn xuě bái zǒu jiāng lái
满 身 雪 白 走 将 来。
shēng píng bù gǎn qīng yán yǔ
生 平 不 敢 轻 言 语,
yī jiào qiān mén wàn hù kāi
一 叫 千 门 万 户 开。

简介:这是明代画家兼诗人唐寅(唐伯虎)的作品。前两句写公鸡的威武外貌,后两句写它一鸣惊人的本领,气魄宏大。

语文必学

拼音

对学龄前儿童,拼音教学的核心是 “听说先行,趣味导入”

教学总原则:

  • 可视化: 将抽象的符号变成具体的形象(如图卡、手势)。
  • 游戏化: 在玩中学,保持兴趣。
  • 生活化: 在阅读和生活中不断复现。

分阶段教学步骤:

第一阶段:单韵母和声调(基础中的基础)

  1. 从6个单韵母开始: a, o, e, i, u, ü
    • 方法: 制作可爱的卡片,配合口诀和手势。比如,念 a 的时候,嘴巴张得大大的,模仿医生检查喉咙;念 o 的时候,嘴巴圆圆,模仿公鸡叫。
  2. 学习四声: 这是拼音学习的难点和重点。
    • 方法:汽车爬坡来比喻,非常形象。
      • 一声(¯):汽车平地开 → ā
      • 二声(ˊ):汽车爬山坡 → á
      • 三声(ˇ):汽车下坡又上坡 → ǎ
      • 四声(ˋ):汽车下山坡 → à
    • 带着孩子用手臂划出声调的轨迹,动起来学习。

第二阶段:声母(23个)

  1. 分组学习: 可以按发音部位分组,如“唇音家族”(b, p, m, f),“舌尖家族”(d, t, n, l)。
  2. 区分易混声母:
    • 手势区分: bd:伸出左手大拇指,握拳是 b;伸出右手大拇指,握拳是 d
    • 口诀区分: pq

第三阶段:复韵母、鼻韵母和整体认读

  • 在孩子熟悉单韵母和声母后,再引入更复杂的组合,如 ai, ei, ui, an, en, in, zhi, chi, shi, ri 等。
  • 整体认读音节直接作为一个整体来认读,不需要拼,可以编成小故事帮助记忆。

第四阶段:拼读练习(核心技能)

  • 从双拼音节开始: b-ā → bā(八), m-ā → mā(妈)。
  • 使用“滑音法”: 从声母快速滑向韵母,中间不要停顿。
  • 游戏化练习: “拼音寻宝”——您发出一个音,如 sh-uǐ,让孩子在家里找到“水”(水杯)。

推荐资源:

  • App: “洪恩拼音”、“悟空拼音”等,通过互动游戏学习,孩子接受度高。
  • 书籍: 《学拼音儿歌77首》等,通过朗朗上口的儿歌记忆。

二、 拼音与英语教学是否冲突?

1. 时间错开,打好基础(最推荐的方法)

  • 先扎实学好拼音: 利用中班下学期到大班上的时间,集中精力攻克拼音。因为拼音规则相对固定,短时间内可以掌握牢固。
  • 再系统引入自然拼读: 等孩子对拼音已经非常熟练,形成“条件反射”后(通常在大班下学期),再开始系统学习英语自然拼读。
    避免了同时学习两套陌生规则带来的直接碰撞,大大减少混淆。

2. 情境分离,明确界限

  • 如果无法完全错开时间,就要在学习场景上做严格区分。
  • 创设“拼音时间”和“英语时间”
    • 拼音时间: 使用中文指令,关联汉字学习。明确告诉孩子:“现在我们是中文小老师,这些字母是帮助我们读汉字的拼音符号。”
    • 英语时间: 尽量使用英语指令,营造英语氛围。明确告诉孩子:“现在我们是英语小探险家,这些字母是组成英语单词的英文字母。”

3. 教学方法差异化

  • 使用不同的视觉材料:
    • 拼音卡片可以用红色边框,并配上汉字。
    • 英语字母卡片可以用蓝色边框,并配上英语单词和图片。
  • 使用不同的手势和动作: 为拼音和英语设计不同的辅助手势或律动操,从身体记忆上帮助区分。

需掌握汉字表**

  1. 核心需掌握汉字表:与小学一年级教材衔接紧密的汉字,是识字重点。
  2. 题目指令高频汉字表:做练习时经常会遇到,但不需要孩子会写,只需“见面能认”的汉字。

学习目标:能够见字认读,理解基本含义,不要求书写。

第一类:数字与量词 (约25字)

目标:能认读,理解基本含义,并初步使用。

一 二 三 四 五 六 七 八 九 十 零 百 千 万 亿
个 只 条 头 匹 片 颗 块 本 辆

第二类:人物、身体与称呼 (约60字)

目标:能指认自身、家人和常见身体部位。

人 口 手 足 脚 头 耳 目 眼 眉 鼻 舌 牙 齿 嘴 唇 脸 面 皮 毛 发 骨 肉 血 心 身 体
爸 妈 父 母 爷 奶 哥 姐 弟 妹 兄 叔 伯 姨 姑 娘 儿 子 女 孩 娃 亲 家 我 你 他 她 它 们 自 己 朋 友 同 学 师 生

第三类:自然、天地与现象 (约70字)

目标:认识基本自然事物和常见天气现象。

日 月 星 光 天 空 地 土 田 山 石 沙 水 火 河 江 湖 海 波 浪 油 泉 冰 雪 雨 风 云 雷 电 气 候 春 夏 秋 冬 早 晨 晚 夜 午 昨 今 明 年 月 时 分 秒 季 节 早 晚 阳 亮 暗 阴 晴 金 木 火 土 干 湿 冷 热 温 暖 凉 快

第四类:动物、植物与食物 (约80字)

目标:认识常见的动植物名称和日常食物。

虫 鸟 鱼 牛 羊 马 猪 狗 猫 鸡 鸭 鹅 虾 蟹 贝 蛋 羽 爪 尾 象 狼 熊 鹿 兔 猴 虎 狮 蛇 龙 龟 豆 谷 米 饭 菜 瓜 果 桃 李 梨 苹 莓 花 草 树 林 森 木 禾 苗 叶 根 枝 芽 松 竹 梅 荷 茶 玉 豆 角 萝 卜 青 菜 黄 瓜 西 红 柿 土 豆 面 包

第五类:颜色、性状与方位 (约80字)

目标:能描述物体的基本特征、位置和状态。

红 黄 蓝 绿 黑 白 紫 灰 粉 橙 色 彩
大 小 多 少 高 矮 低 长 短 宽 窄 厚 薄 方 圆 扁 尖 直 弯 平 正 反 歪 胖 瘦 美 丑 新 旧 老 好 坏 快 慢 早 晚 真 假 对 错 软 硬 轻 重 香 臭 脏 乱 干 净 穷 富 强 弱
上 下 左 右 前 后 里 外 内 中 间 旁 边 东 南 西 北 角 顶 底 端 侧 面

第六类:动作与行为 (约150字)

目标:理解并说出常见的行为动作。

看 见 瞧 望 听 闻 说 讲 话 谈 唱 读 诵 背 写 画 描 做 作 干 办 造 打 拿 抓 捉 抱 搂 拍 摇 摆 推 拉 拖 搬 抬 挑 提 挤 按 摸 擦 洗 刷 扫 捉 放 收 拾 捡 掉 落 丢 失 找 寻 追 赶 跑 跳 跃 走 行 跑 奔 逃 爬 飞 游 骑 坐 站 立 躺 睡 醒 起 来 去 回 出 入 进 退 开 关 闭 合 到 来 往 经 过 通 穿 戴 脱 换 改 变 吃 喝 吞 吐 咬 嚼 啃 呼 吸 吹 哭 笑 喜 怒 哀 乐 爱 恨 怕 惊 想 思 念 忘 记 知 道 认 识 学 习 教 练 考 试 猜 玩 戏 游 耍 赢 输 生 死 病 痛 医 治 休 息 梦 买 卖 付 给 送 还 欠 赔 赚 工 作 劳 动 帮 助 救 护 保 护 守 攻 击 胜 利 败 失 完 成 破 坏 杀 伤 切 割 剪 砍 劈 分 离 合 结 束 始 终

第七类:日常物品、场所与建筑 (约70字)

目标:认识家中、学校和社区的常见物品与地点。

门 窗 户 床 桌 椅 凳 柜 箱 盒 杯 碗 盘 筷 勺 瓶 桶 盆 灯 镜 钟 表 书 笔 纸 墨 刀 尺 剪 针 线 衣 服 帽 鞋 袜 被 枕 巾 伞 车 船 舟 桥 路 道 街 巷 房 屋 楼 层 墙 壁 窗 台 阶 园 校 厂 店 场 院 市 城 镇 乡 村 国 家 京 都 王 宫 殿 堂 寺 庙 观 教 师

第八类:反义词、抽象概念与虚词 (约120字)

目标:理解基本逻辑关系,为阅读和造句打下基础。

有 无 没 是 非 不 否 可 能 会 要 想 愿 意 该 应 当 必 须 需 要 敢 肯 愿 请 求 让 叫 使 令 被 把 将 从 自 由 于 向 朝 往 对 对于 关 于 至 到 达 在 存 于 的 地 得 着 了 过 呢 吗 吧 啊 呀 哇 啦 唉 喂 哼 嗯 噢 哦 呵 哈 嘻 因 为 所 以 但 是 然 而 不 过 虽 然 尽 管 如 果 假 如 只 要 只 有 除 非 无 论 不 管 并 且 而 且 还 还 有 或 者 还 是 宁 可 宁 愿 为 了 为 着 按 照 依 照 根 据 通 过 经 过 沿 着 顺 着 围 绕 绕 着 除 了 除 外 另 外 其 他 每 各 某 些 所 有 全 部 整 整 个 整 体 总 共 共 同 一 起 一 块 儿 互 相 相 互 交 往 来 往 联 系 关 系 比 较 很 最 太 极 非 常 十 分 特 别 格 外 更 加 越 发 稍 微 有 点 儿 几 乎 差 不 多 大 约 大 概 左 右 上 下 前 后 里 外 内

使用建议:

  1. 分阶段进行:不要试图一次学完。可以每周设定一个主题(如“我的身体”),从中选取10-15个汉字进行学习。
  2. 语境中学习:将汉字融入词语、短句和童谣中学习。例如学“口”,可以组词“人口”、“口水”、“开口”。
  3. 多感官互动:利用识字卡、汉字磁贴、识字APP等工具,通过“找字”、“拍苍蝇”、“汉字配对”等游戏加深记忆。
  4. 生活化应用:鼓励孩子在生活中“找汉字”,如食品包装、路牌、广告牌等,让识字变得有意义。

这份字表是一个全面的目标导向,请根据孩子的兴趣和接受程度灵活调整进度。快乐和成就感是坚持学习的最好动力。

二、 题目指令高频汉字表 (“见面能认”即可)

这部分汉字是“功能性”的,是孩子独立完成练习题目的“钥匙”。重点在于让孩子看到这个字或词,知道它代表什么指令。

类别高频字/词如何教孩子理解
核心指令动词连、圈、画、写、填、选、找、指、读、背拿出练习题,直接指着题目中的这个字说:“宝宝你看,这个字是‘连’,就是要我们用线把两边连起来。” 并通过示范让孩子明白。
常见名词与描述词图、字、词、句、音、数、颜色、形状、大小、长短、多少、高矮在题目中遇到时解释,如:“这个词是‘颜色’,就是要你涂上或者说出红色、蓝色。”
关键连接与否定词和、或、同、一样、不同、不是、不对、错误、相同这些词影响答题逻辑,需重点解释。比如用实物演示:“把苹果香蕉拿给我”(两样都要),“把苹果香蕉拿给我”(其中一样就行)。
答案格式要求正确、错误、填空、选择、答案、序号、(1)、(2)、(3)、(一)、(二)、(三)、√、×告诉孩子这些符号在题目中的含义,比如“√”表示对,“×”表示错。
数学题目专用加、减、等于、一共、还剩、剩下、分成、第几、顺序、相邻、合起来通过生活场景和数学游戏来理解,比如:“我们来看看一共有几个苹果?”

💡 如何高效让孩子掌握“题目字”?

  1. 制作“指令卡”:将上述高频指令字(连、圈、选、填等)做成小卡片,和孩子玩“老师学生”的游戏。你出示卡片,孩子做出相应的动作。
  2. 模拟练习:找一些简单的练习题,不要求孩子会做里面的题,而是专门和他一起“找题目”。你说:“帮妈妈找找,这页纸上哪里有‘圈’这个字?哪里有‘连’这个字?”
  3. 日常渗透:在孩子画画时,可以说:“我们来出你画得最好的部分”;在玩贴纸时,说:“请把兔子到它的家”。

通过这种方式,孩子就能将这些功能性的汉字与具体的操作指令联系起来,从而避免“会做题但不认识题目”的尴尬,建立独立完成任务的信心。

英语部分

上海小学一年级英语(基于牛津上海版等主流教材)需要掌握的核心语法核心词汇

这份清单完全遵循“实用为主,避免负担”的原则,只列出了最基础、最核心的内容,旨在帮助孩子建立最初的语感并能够进行简单的日常交流。

一、 核心语法点(理解即可,无需术语)

对于一年级孩子,绝对不要讲解语法术语。所有的语法点都应该在例句、歌曲和情景对话中让孩子感知和模仿。

语法范畴具体内容与要求示例
1. 动词Be(是)理解并能在简单句中使用 am, isI am a boy. (我是个男孩。)
He is my dad. (他是我爸爸。)
It is a book. (它是一本书。)
2. 指示代词能区分并使用 this(这个)that(那个)This is my ruler. (这是我的尺子。)
That is a pencil. (那是一支铅笔。)
3. 人称代词理解主格代词:I(我), you(你/你们), he(他), she(她), it(它)I like apples. (我喜欢苹果。)
You are nice. (你很好。)
She is tall. (她很高。)
4. 名词复数掌握最常见名词的复数形式,即在词尾加 -sone book → two books
one cat → three cats
one apple → many apples
5. 形容词性物主代词理解并使用:my(我的), your(你的), his(他的), her(她的)My name is… (我的名字是…)
This is your bag. (这是你的书包。)
That is her doll. (那是她的娃娃。)
6. 基本疑问句能用 WhatHow many 提问并回答。What’s this? - It’s a pen.
How many books? - Four.
7. 冠词初步感知 aan 的区别(a用于辅音音素前,an用于元音音素前)。a dog, a cat
an apple, an egg
8. 简单祈使句能听懂并回应简单的指令。Stand up. (站起来。)
Sit down. (坐下。)
Look at me. (看着我。)

二、 核心词汇表(主题分类)

以下词汇要求能做到 “听到英文知道意思”“看到图片能说英文” ,不要求拼写。

主题分类核心词汇
1. 动物cat, dog, bird, fish, tiger, lion, panda, monkey, elephant, rabbit (cat, dog, bird, fish, tiger, lion, panda, monkey, elephant, rabbit)
2. 食物与饮料apple, banana, pear, orange, cake, candy, milk, water, juice, egg, rice (apple, banana, pear, orange, cake, candy, milk, water, juice, egg, rice)
3. 家人与称呼father/dad, mother/mum, grandfather/grandpa, grandmother/grandma, brother, sister, friend (father/dad, mother/mum, grandfather/grandpa, grandmother/grandma, brother, sister, friend)
4. 身体部位eye, ear, nose, mouth, face, hand, arm, leg, foot (eye, ear, nose, mouth, face, hand, arm, leg, foot)
5. 颜色red, yellow, blue, green, black, white, orange, brown (red, yellow, blue, green, black, white, orange, brown)
6. 数字one, two, three, four, five, six, seven, eight, nine, ten (one, two, three, four, five, six, seven, eight, nine, ten)
7. 学校物品book, bag, pencil, pen, ruler, rubber/eraser, school, classroom (book, bag, pencil, pen, ruler, rubber/eraser, school, classroom)
8. 基础动作与日常see, look, listen, sing, dance, read, write, draw, play, go, stop, run, jump, eat, drink, like (see, look, listen, sing, dance, read, write, draw, play, go, stop, run, jump, eat, drink, like)
9. 常见形容词big, small, tall, short, long, happy, sad, good, hot, cold (big, small, tall, short, long, happy, sad, good, hot, cold)

三、 学习建议与方法

  1. 情景对应,而非中文翻译

    • 指着苹果说 This is an apple.,而不是“apple是苹果”。
    • 做动作说 Jump!,让孩子跳起来。
  2. 歌曲和童谣启蒙

    • 选择旋律简单、重复性高的英文儿歌,如《Hello Song》、《What’s Your Name?》、《How Many Fingers?》。孩子在跟唱中自然习得句型和词汇。
  3. 游戏化学习

    • “I Spy”游戏I spy with my little eye, something red.(我用我的小眼睛看到了红色的东西。)
    • 闪卡游戏:利用单词卡片玩配对、钓鱼等游戏。
  4. 高频短句,日常渗透

    • 将学习融入生活,每天说几句:
      • Good morning!(早上好!)
      • Thank you!(谢谢!)
      • I love you.(我爱你。)
      • Give me... please.(请给我…)

数学部分

这份清单严格对标上海及全国主流小学一年级的数学课程标准,目标是建立数感、培养初步的数学思维,并解决生活中的简单问题,所有内容都围绕入学必备知识,绝不增加额外负担。

数学知识体系与学习目标

对于学前儿童,数学学习的关键在于 “将抽象概念具象化” 。核心不是刷题,而是通过动手和游戏来理解概念。

知识模块具体学习目标生活化示例与解释
1. 数与运算1. 熟练数数:1-100,能正数、倒数、任意起点数。
2. 理解基数:点数并说出总数(手口一致)。
3. 数字认知:认、读、写0-20。
4. 数的组成:熟练掌握10以内数的分解与组合(如7可以分成3和4)。
5. 加减法:理解含义,掌握10以内加减法,熟悉20以内不进位加法和不退位减法。
- 数数:上下楼梯数台阶;数碗筷。
- 基数:“帮妈妈拿3个苹果过来。”
- 数的组成:用积木、糖果等实物演示“5个糖果,分给爸爸2个,还剩几个?”
- 加减法:理解“+”是“合起来”,“-”是“拿走、剩下”。
2. 量与比较1. 比较大小、多少、长短、高矮、粗细、厚薄、轻重
2. 认识钟表:会认整点和半点。
3. 认识人民币:认识元、角、分,了解简单兑换。
- 比较:比一比爸爸和宝宝的手谁大;两堆糖果哪堆多。
- 钟表:“看,长针指着12,短针指着7,就是7点整,该起床了。”
- 人民币:玩“超市”游戏,用玩具钱币进行简单买卖。
3. 图形与几何1. 认识平面图形:圆形、正方形、长方形、三角形、椭圆形。
2. 认识立体图形:球体、正方体、长方体、圆柱体。
3. 空间方位:理解并运用上、下、左、右、前、后、里、外。
- 图形:从生活中找图形,如“时钟是圆形的”,“冰箱是长方体”。
- 空间:听指令放玩具,“请把积木放到盒子里面”。
4. 逻辑与规律1. 分类:按颜色、形状、大小、用途等标准给物品分类。
2. 找规律:能发现并续接简单的ABAB、AABBAABB等规律。
- 分类:收拾玩具时,要求“所有积木放一起,所有娃娃放一起”。
- 找规律:用串珠游戏(红-蓝-红-蓝-?)或拍手节奏(拍手-跺脚-拍手-跺脚)来练习。

核心知识点详解与教学资源

1. 数与运算(核心中的核心)

  • 关键方法:凑十法
    这是学习20以内进位加法的基础,一定要通过实物(如十格阵)让孩子透彻理解。

    • 口诀“看大数,分小数,凑成十,加剩数”
    • 举例:8 + 5 = ?
      1. 看大数(8)
      2. 分小数(5分成2和3)
      3. 凑成十(8+2=10)
      4. 加剩数(10+3=13)
        所以,8+5=13。
  • 推荐资源:《幼升小学前数学准备》或《奇迹幼儿数学》系列丛书,这些书通常设计了很多游戏化的练习,非常适合家庭启蒙。

2. 图形与空间

  • 从2D到3D:先认识平面的图形,再引导孩子观察生活中的立体物品。
  • 空间方位游戏:“寻宝游戏”——给孩子一张简单的房间地图,用方位词指令引导他找到“宝藏”。

3. 逻辑与规律

  • 培养核心能力:这部分不直接涉及计算,但对于培养孩子的观察力、分析能力和逻辑推理能力至关重要,是未来学习应用题的基石。

实践小贴士

  1. 生活即数学:将数学融入日常。比如:“我们今天有4个人吃饭,需要拿几个碗几双筷子?”(乘法的萌芽);“把这个蛋糕切成8份,我们每人一份”(除法的萌芽)。

  2. 游戏是王道

    • 扑克牌:玩“比大小”、“钓鱼”(练习凑十)、“24点”初级版(用4张牌做加减法)。
    • 桌游:如蛇棋、飞行棋,在玩中练习数数和点数。
    • 买卖游戏:最好的综合实践,融合了认钱、计算和沟通。
  3. 多问“为什么”:当孩子做对一道题时,可以问他“你是怎么想的?”。这能让你了解他的思维过程,比结果更重要。

  4. 允许使用工具:在初期,允许孩子掰手指、摆弄积木来帮助计算。这是他将抽象数字具象化的必经过程,随着熟练度增加,他会逐渐摆脱这些工具。

超市教学计划

一、 行前准备:制定“寻宝任务单”

和孩子一起制作或画一张任务单,把学习目标巧妙融入其中。这能让购物变得有目的、有秩序。

任务类别任务内容(请家长这样引导)核心能力培养
【数学·寻宝】1. 数感与计数:“请找到5盒牛奶放进购物车。”
2. 数与运算:“我们买了3个苹果,又买了2个梨,一共是几个水果?”
3. 量与比较:“请对比一下,哪包薯片更重?哪瓶饮料更便宜?”(认识价签)
4. 图形与几何:“快看!这个罐头是圆柱体,那个盒子是长方体。”
点数、加减法、比较、认识图形
【中文·探险】1. 识字:“宝贝,帮忙找找带 ‘牛’ 字、‘果’ 字的东西在哪里?”(指认商品名)
2. 表达:“我们来形容一下这个水果,它是什么颜色?什么形状?”
复习核心汉字、练习口语表达
【英文·发现】1. 词汇:“看到牛奶了,它的英文是 milk!跟妈妈念,mil~k。”
2. 句型:“What’s this?” - “It’s a banana.”
积累场景词汇、练习简单对话
【综合·任务】1. 预算管理:“我们今天有20元钱,你可以选一样自己喜欢的零食,但要看看价格,不能超支哦。”
2. 社交礼仪:学习在称重台前排队,并对收银员阿姨说“谢谢”。
财商启蒙、社交能力

二、 现场教学实战指南

第一站:果蔬区 (最理想的起点)

  • 数学课
    • 数数与分类:“我们一起来数数,要买几个西红柿?1, 2, 3, 4, 5…”
    • 比较与测量:“这个西瓜重,还是那个柚子重?我们来掂一掂。”
    • 简单加减:“购物车里有2根黄瓜,我们再放1根,现在有几根?”
  • 中文课
    • 识字:指认“苹果”、“西瓜”、“菜”等标签上的大字。
    • 表达与观察:“这个胡萝卜是什么颜色的?摸起来感觉怎么样?”
  • 英文课
    • 词汇apple, banana, orange, green, red, yellow

第二站:零食饮料区 (孩子兴趣高涨区)

  • 数学课
    • 认识价签:这是最好的“数与量”结合教学。“看,这包饼干5元,那包8元。”
    • 理解贵与便宜:“5元和8元,哪个更贵?”
    • 预算实践:给孩子一个小额度(如10元),让他自己选择一两种商品,并确保总价不超支。
  • 中文/英文课
    • 识字与词汇:指认“奶”、“干”,学习 milk, cookie, juice

第三站:日用品区 (图形与逻辑教室)

  • 数学课
    • 图形认知:“哇,你看这个纸巾盒是长方体,这个球是球体!”
    • 逻辑分类:“为什么碗和盘子要放在一起?因为它们都是餐具。”
  • 中文课
    • 复杂汉字:尝试指认“刷”、“巾”等。

第四站:收银台 (终极考核与礼仪课堂)

  • 数学总复习
    • 结算:“我们一共买了6样东西。”
    • 付款:给孩子现金,让他参与付款过程,亲眼看到“钱”与“商品”的交换。
  • 社交礼仪
    • 学习排队等待。
    • 鼓励孩子自己将商品放到收银台上。
    • 引导他对收银员说“谢谢”和“再见”。

三、 给家长的温馨提示

  1. 安全第一:全程看护好孩子,教育他遵守公共场所的规则。
  2. 兴趣优先:如果孩子对某个任务不感兴趣,不要强求。跟随他的注意力,捕捉即时的教学机会。
  3. 多鼓励,少纠错:当孩子认错字或算错数时,温和地告诉他正确答案即可,保护他的尝试勇气。
  4. 善用“购物激励”:事先约定好,认真完成“寻宝任务”后,他可以获得一个小的奖励(如选择一盒喜欢的酸奶),这能有效维持他的积极性。

桐庐三日游

2025年9月22日 11:30

上周四公司组织团建,目的地是桐庐,团建计划做的不错,现在体验下来,除了最后一天的行程上有槽点之外,其他的时间安排,与活动的丰富程度上来说都是不错的,每个景点都有大巴接送,累了就回车上吹空调。出行每个景点走的路程也不算多。

由于隐私保护,本篇就没放关于同事们的正脸了,放了一些好看的景点图。

第一天 虎啸峡漂流

没法拍照,手机都没拿出来,全在打水仗了,还好同事拍了很多图,拿来一用。
对了,十月份一过漂流就要关停了,明年再开放,想玩的话要抓紧时间了。
前半程是比较刺激的,后半程,主要时间都花在了各个停留的平台上,有卖烤肠的,也有卖水枪的。
3000111aedd5162aa921c3a55516d781

第二天 瑶琳仙境与心跳乐园

瑶琳仙境

瑶林玉峰全景

瑶林玉峰解说

钟乳石

钟乳石

钟乳石

洞顶

灯光

灯光

灯光

OMG心跳乐园

距离瑶琳仙境距离大概在五公里左右,属于毗邻的必玩景点。

OMG心跳乐园

OMG心跳乐园是建设在山上的,最费力的运动就是爬9层楼那么高的楼梯,除此之外,就没有费力的运动了。
爬楼梯的原因是,入景点的时候要坐船,先游览洞穴景观(主要是人造灯光和包装的西游故事),从洞穴出来就要上山,这一段没法避免还是要走上去的。

这边的景区开发程度非常高,基本实现了上山坐履带传送,下山坐卡丁车,小木马,漂流下山,属于轻松游的上乘景点之一。

乘船入洞穴参观

OMG

漂流下山

卡丁车

木马

咕咕鸡

锦鲤

金鱼

行程结束,在附近吃的农家乐,外面刚好就是富春江,一些同事在江边玩。
饭后运动

第三天 马岭古道

最后一天,也就是上周六去的是 马岭古道 ,是个徒步的景点,中午吃好午饭就坐大巴回了。
这个景点我们只走了中间的一段,导游和精力充沛的同事卯足劲竞走,导致队伍开始了急行军,一小时不到就走完了,中途没有休息时间,所以也没有拍到很好的图,都是游客照。

马岭古道

出口集合

以上,桐庐三日游(两日半),不知不觉又水了一篇游记。

9月15日起,租房新规正式实施!居住安全、费用明细、租金调整与权益保障全面解读

2025年9月12日 14:08

9月15日起,《住房租赁条例》将正式施行。这项新规关系到每一位租房人的权益,可能有些朋友还对内容不太熟悉,别着急,本文将用通俗的语言为大家梳理清楚——新规究竟带来了哪些变化?租房过程中需要注意哪些费用?租金会不会涨、怎么涨?中介服务有哪些新约束?尤其值得关注的是,“租购同权”背景下,租房家庭孩子入学政策究竟如何适用?你要知道的都在这里。

居住更安全,租住关系更稳定

以往租房,最怕遇到“奇葩”房源,比如由厨房、阳台改建的隔断房,不仅拥挤,还存在安全隐患。新规明确,这类非居住空间不得单独出租用于居住。同时,各地也将对单间租住人数和人均租住面积制定标准,告别“鸽子笼”,居住舒适度和安全性有了切实保障。依据《住房租赁条例》第七条规定:“厨房、卫生间、阳台、过道、地下储藏室、车库等非居住空间,不得单独出租用于居住。租赁住房单间租住人数上限和人均最低租住面积,应当符合设区的市级以上地方人民政府规定的标准。”

此外,租赁关系也更加稳定。以往有些房东随意解约,甚至采用强制手段要求租客搬离,这类情况将成为历史。新规强调,租房需签订正规合同,并按规定向房产管理部门备案,等于有了“官方认证”。即使房东要解约,也必须提前通知,为租客留出合理的找房时间,严禁使用暴力、威胁等非法手段。如《条例》第八条和第十二条分别指出,“出租人和承租人应当使用实名签订住房租赁合同”,“出租人依法解除住房租赁合同的,应当通知承租人,并为承租人腾退租赁住房留出合理时间。出租人不得采取暴力、威胁或者其他非法方式迫使承租人解除住房租赁合同或者腾退租赁住房”。

中介服务更规范:资金监管、信息透明成重点

新规对房产中介机构提出明确要求,租赁服务走向规范化。《条例》第二十五条强调,“住房租赁企业、房地产经纪机构应当依法经营,诚实守信,明确提示租赁风险,不得发布虚假房源信息,不得强制代办服务或者捆绑收费”。这意味着,中介发布假房源、乱收费等行为将受到严格约束。

特别值得注意的是,《条例》首次提出建立租金监管制度。第三十二条要求,“住房租赁企业收取租金的,应当设立租金专用账户,由商业银行进行监管,做到专款专用”。这将有效防范“长租公寓爆雷”、中介挪用资金等风险,为租客资金安全增加一道防护锁。

费用更透明:押金、租金有章可循

租房过程中,押金和租金是最受关注的费用,新规对此作出了明确约束,更好地保障租客权益。

押金:退还机制更清晰,杜绝随意扣款

交押金是常规操作,但以往部分房东会以“墙面污渍”“家具磨损”等模糊理由克扣押金。新规施行后,押金的数额、返还时间以及可扣减的具体情形,都必须在合同中明确约定。只要不属于约定情形,房东就无权扣留押金。租期结束后若房屋及设施完好、租金无拖欠,押金应全额退还,租客无需再与房东反复纠缠。这一点在《住房租赁条例》第十条中有清晰规定。

租金:短期或微调,长期趋稳

租金是租房的主要支出,新规落地后是否会引发租金上涨?短期来看,不排除局部波动。一方面,部分房东因需办理合同备案、加强房屋安全措施等,可能将新增成本转嫁至租金;另一方面,一些操作不规范的“二房东”和小中介因监管趋严(如设立资金监管账户等要求)可能退出市场,导致某些区域房源暂时减少,租金或有小幅上涨。

但从长远看,租金水平将趋于稳定。新规要求市级以上政府建立租金监测机制,定期公布各区域、各类型住房的市场租金,相当于给出“官方参考价”。随着租赁市场逐渐规范,专业住房租赁企业凭借规模化运营优势,有望提供更稳定的租金水平。《条例》第二十九条明确指出:“设区的市级以上地方人民政府应当建立住房租金监测机制,定期公布本行政区域内不同区域、不同类型住房的租金水平信息。”

另外值得一提的是,房东出租房屋通常需缴纳相关税费,如房产税、个人所得税等。虽然按规定应由房东承担,但不排除少数房东试图将税负转嫁至租金中。建议大家租房时多比较、多沟通,理性判断市场行情。

租住同权与子女入学:权利落地还需看地方细则

《住房租赁条例》第十九条规定:“承租人可以持依法签订的住房租赁合同,按照规定申领居住证、办理居住登记,并依法享受基本公共服务和便利。”这一条款被视为“租购同权”原则的重要体现,意味着租房者也有权享受当地公共服务,包括子女义务教育就近入学。

但需要注意的是,实际操作中仍要遵循地方具体政策。例如,一些教育资源紧张的地区和热门学区,往往设置了更严格的入学条件。如北京、上海、深圳等多地规定,通过租房申请入学的家庭,除需提供备案的租赁合同外,还可能要求提供社保缴纳证明、实际居住证明等材料。尤其是一些热门对口小学,还设置了“居住年限”门槛,例如须在同一地址连续居住满3年甚至5年,且中途不得变更,才具备入学资格。

因此,租房家庭若有子女入学需求,务必提前了解所在城区及心仪学校的入学政策,尽早办理租赁备案并稳定居住,同时关注当地义务教育阶段入学实施细则,做好充分准备。

租金怎么涨?虽然没有“一口价”,但有据可依

很多租客关心:新规是否对租金涨幅设定了上限?实际上,全国并未出台统一标准,但租金调整需遵循以下几点原则:

第一,以合同约定为准。如合同中已明确租金调整幅度(例如“每年涨幅不高于5%”),则双方应遵守约定,房东不得随意加价。

第二,尊重市场规律。若合同未明确约定,房东调整租金也应符合当前市场水平。如周边同类型房屋租金普遍上涨100元,而某房东单方面涨500元,则明显有失公平。同时,租金调整必须提前充分告知,给租客留出决策时间。

第三,遵守地方政策。部分地区会发布租金指导价或调控政策,尤其在租金过快上涨时,可能实施涨幅限制,房东须严格执行。

总而言之,9月15日实施的《住房租赁条例》为租房群体带来了更多保障,有助于实现更安全、稳定、透明的租住环境。建议大家租房时务必签订正规合同,密切关注本地租金信息,遇到权益受损情况要勇于依法维权。

如需查阅《住房租赁条例》全文,可点击中华人民共和国国务院令第812号详细了解各项条款。

游泳与羽毛球

2025年9月8日 14:07

上周四,我去了公司附近别墅区里的金大元游泳馆。游泳不方便带手机进去,所以没有拍照,倒也让我更专注地享受了一段安静的运动时光。场馆人不多,水质非常清澈,体验相当不错。停车也很方便,从地库可以直接进入泳池区域。听说这里原本只对别墅区业主开放,疫情之后开始对外经营——估计是业主来得少,索性开放了,倒也成了我们周边上班族的一个福利。

我掌握的蛙泳姿势比较特别,是“抬头蛙”——一种头部始终露出水面的泳姿。说起来,这个技能还是在梦里学会的。小时候去了不下百次游泳馆,始终没学会游泳,直到有一次做梦,梦到自己用抬头的方式游起了蛙泳,醒来居然还留着那种身体记忆。隔天我特意去试了试,竟然真的游起来了!这种泳姿虽然让我不再怕水,但长距离游泳效率很低,体力和颈椎的负担也都比较大。于是最近下定决心,要把标准的蛙泳学会,也认真做了一番功课,整理出一套从“抬头蛙”过渡到“标准蛙”的教程。

从抬头蛙到标准蛙泳

抬头蛙泳,也常被叫做“生存蛙”或“侦查蛙”,最大的优点在于实用性:头部一直保持在水面上,方便观察四周、换气自由,也适合水上交流或救援,在很多开放水域或应急场景中非常有用。但因为身体阻力大、动作效率低,并不适合长距离游泳或日常锻炼,对颈椎和腰部的压力也更明显。

如果你已经能轻松游抬头蛙,说明你对蛙泳的蹬腿和划手已有基本感知,转换到标准蛙泳会更容易——重点只在于调整呼吸与身体的配合方式:从“一直抬着头”转变为“顺势抬头换气”。

第一步:陆上模仿练习(建立换气节奏)

站立姿势:身体站立,弯腰前倾,模拟水中俯卧的流线型姿势。

练习节奏:口中默念“划手-抬头-吸气-伸手-低头-呼气”的节奏。

手臂前伸时,低头,用嘴匀速、有力地向水中“哈气”(发出“哈”的声音),想象把气吐进水里。

手臂向外划水时,顺势抬头,当嘴露出水面时,迅速用嘴吸一大口气。

手臂向前伸直的同时,头随之埋入水中,开始下一个呼气循环。

目标:将这个节奏变成肌肉记忆,确保“呼气”是在水中完成的,而不是在抬头时才呼气。

第二步:水中扶池边/扶板练习(专注呼吸)

扶池边练习:双手轻扶池边,脸埋入水中,身体漂浮打平。

水中用嘴匀速呼气 -> 头部侧转或抬头 -> 嘴出水面吸气 -> 埋头继续呼气。这个练习专注于呼吸本身,不涉及动作。

扶板练习:双手扶住浮板,仅用腿部蹬夹前进。

蹬腿后,身体滑行时在水中呼气。

感觉气快呼完时,划手顺势抬头吸气(此时腿是收好的),然后迅速低头,手臂前伸,再蹬腿,进入滑行呼气阶段。

关键点:抬头吸气是靠划手产生的 lift(升力)自然完成的,而不是僵硬地用力抬头。

第三步:完整配合练习(慢节奏分解)

口诀牢记:“划手腿不动,收手再收腿,先伸胳膊后蹬腿,并拢伸直漂一会儿”。

重点攻克:

必须在水中呼气:这是你从抬头蛙转变的最大习惯突破。强迫自己在头入水的那一刻就开始呼气,直到下次抬头前几乎呼尽。

低头要彻底:吸气完成后,头要随着手臂前伸而积极埋入水中, forehead(前额)要低于水面,使身体恢复水平的流线型,这是减小阻力、省力前进的关键。

利用滑行:在“伸手蹬腿”后,会有一个短暂的滑行阶段,这是休息和呼气的时刻。

羽毛球运动

上周日,我跟老婆一起参加了线上运动群组织的羽毛球活动,地点就在静安区的VJump运动街区——没错,就是那家因为摆放着巨型EVA初号机模型而爆红的网红运动馆。

微信图片_20250908112118_23

好久没有这样畅快地挥拍跑动了。一场球打下来,汗流浃背,整个人都通透了许多。不过晚上回到家,果然还是迎来了“运动后遗症”:大腿和手臂有些酸胀,尤其是肩膀,举起手来都略带沉重感。这些都是长时间缺乏锻炼后突然激烈运动的正常反应,说明肌肉正在悄悄修复和成长。

如果你也像我一样,偶尔“暴汗”一次之后容易肌肉酸痛,不妨试试这几个小方法:运动结束后不要马上停下来,适当做一些拉伸动作,重点放松肩部、大腿和手臂,能非常有效地缓解第二天的僵硬与不适。另外,及时补充水分和蛋白质也很重要。

微信图片_20250908112118_22

最后附上一张大合影~感谢队友们带飞,下次继续约球!

微信图片_20250908112118_24

以上,上周运动总结。

8月生活碎片

2025年9月4日 19:44

8月份感觉是一年中最热的月份了,每天都是小黄小橙轮流上班,白天都无法出门,火热的阳光炙烤在身上感觉都快熟了,只能躲在室内空调间,但是傍晚的时候,红温的太阳也会带来美丽的晚霞

然而,我就出生在这炎炎夏日,以至于每年生日都只能玩点室内项目,先在周五的中午和肖师傅去附近商场吃了顿日料,为了消耗我抽中的餐饮券,这是一家烧鸟点,我第一次吃提灯,还好就是蛋液的味道,不是很腥还能接受,整体吃完以后的感觉就是非常腻,虽然之前已经心心念念好久三文鱼了,但是每次吃了2-3块就不行了,还点了鳗鱼,让我觉得更加腻了,肖师傅吃了一整碗拉面还喝了汤,他说撑得快要吐出来了(最后没吐,不然白吃了)

今年和小姐妹们约了玩桌游,在桌游店把蛋糕吃了,选了一个好吃不腻的蛋糕,颜值一般但是胜在好吃啊!教她们玩了三国杀,4个人可以玩2v2,三国杀肖师傅是老手,结果一共玩了4把我赢了3把,肖师傅输了3把哈哈哈,肯定是寿星幸运加持了,还玩了一把卡坦岛,是一个建造类游戏,在前面的文章中有介绍

晚上去吃了一家粤菜必吃榜:任兴记,味道还不错,两个姐妹不吃的东西有点多,粤菜的接受程度比较好,提前就选定了店家,我们本来预定的6点半但是玩桌游去晚了人很多,没有位置了,等到了7点多,小伙伴都饿的不行了,点了一桌子菜一起大快朵颐,老板娘人很好,每个人还送了一份甜品,最后大众点评折扣下来一共也就吃了400多,不算贵

七夕节那天项目组又举办了7.8.9月同事的生日会,没想到又过了一次生日,每个人一杯奶茶,还有蛋糕、炸鸡、饮料,炸鸡还分肯德基和麦当劳,属于是相当丰富了,还有小礼炮可以玩,仪式感很足,结果撒了一地的亮片,保洁阿姨实惨(当然桌子上的垃圾还是同事们一起收拾掉了)

最后你问我七夕怎么过的,和肖师傅去吃了好久没吃又想念的高老九,然后逛名创优品买了一双库洛米筷子,颜值挺高的,是我喜欢的紫色,我两天天在一起,不需要很隆重的过节,也不用互送礼物,只要吃一顿好吃的,想吃的,毕竟还有什么比吃饭还重要呢?现在乱七八糟的节日太多了,过日子嘛就是要实在点,当感情脱离了物质,又是学生时代美好的样子了,自然纯粹。

以上,8月生活小记。

卡坦岛桌游玩法

2025年9月1日 17:05

前段时间和朋友们一起玩桌游《卡坦岛》,我觉得这类型的桌游还挺好玩的,这边记录一些网络上可能没有的技巧与简明扼要的规则,以备不时之需,下次玩如果忘记了就再回来看看,这些规则与说明文档的来源是将卡坦岛官方说明书喂给deekseek出来的,所以还是很官方的🤪。
对了,文末附加了线上版的卡坦岛游戏地址,感兴趣的可以去玩玩。

游戏概述 (GAME OVERVIEW)

  1. 卡坦岛展现在您面前。该岛由 19 块地形板块组成,四周环绕着海洋。您的目标是在卡坦岛上定居,并扩展您的领土,直到它成为卡坦岛上最大、最辉煌的领土。
  2. 卡坦岛上有五种生产性地形类型和一片沙漠。每种地形类型生产不同类型的资源(沙漠不生产任何东西)。您收到的每种资源都由一张卡牌代表。以下是每种地形的产出:
    • 丘陵 (Hills) - 生产砖块 (Brick)
    • 森林 (Forest) - 生产木材 (Lumber)
    • 山脉 (Mountains) - 生产矿石 (Ore)
    • 田野 (Fields) - 生产谷物 (Grain)
    • 牧场 (Pasture) - 生产羊毛 (Wool)
    • 沙漠 (Desert) - 不生产任何资源 (Produces Nothing)
  3. 您以 2 个定居点和 2 条道路开始游戏。每个定居点价值 1 个胜利点。因此您在游戏开始时拥有 2 个胜利点!第一位在其回合中获得 10 个胜利点的玩家赢得游戏。
  4. 要获得更多胜利点,您必须建造新的道路和定居点,并将您的定居点升级为城市。每座城市价值 2 个胜利点。要建造或升级,您需要获取资源。
  5. 如何获取资源?很简单。每回合,您掷 2 个骰子以确定哪些地形六边形生产资源。每个地形六边形都标有一个圆形数字标记。例如,如果掷出“10”,所有标有“10”数字标记的地形六边形都会生产资源——在右图中,这些地形六边形是一个山脉六边形(矿石)和一个丘陵六边形(砖块)。
  6. 只有当您拥有与这些地形六边形相邻的定居点或城市时,您才会收集资源。在图中,红色定居点 [A] 与“10”山脉相邻,橙色定居点 [B] 与“10”丘陵相邻。如果掷出“10”,红色玩家获得 1 张矿石卡,橙色玩家获得 1 张砖块卡。
  7. 由于定居点和城市通常与 2-3 种地形类型相邻,它们可以根据掷骰结果“收获”多达 3 种不同的资源。在这里,白色定居点 [C] 与森林、山脉和牧场相邻。位于 [D] 的定居点只能收获 2 个地形六边形(丘陵和山脉)的产出。最后,位于 [E] 的定居点只能收获 1 个地形六边形(牧场)的产出。然而,[E] 也位于一个羊毛港口上。
  8. 由于您不可能让定居点与所有地形六边形和数字标记都相邻,您可能只在很少的情况下获得某些资源——或者永远得不到。这很困难,因为建造需要特定的资源组合。
  9. 因此,您可以与其他玩家进行交易。向他们提出报价!一次成功的交易可能会让您完成一次大建造!
  10. 您只能在未被占据的交点上建造新的定居点,前提是您有一条道路通向该交点,并且最近的定居点至少相隔两个交点。
  11. 仔细考虑您在哪里建造定居点。圆形标记上的数字以不同大小显示。它们下方还有圆点(圆点)。显示的数字越高,圆点越多,掷出该数字的可能性就越大。红色的数字 6 和 8 是最高、圆点最多的数字;它们最有可能被频繁掷出。
    底线:一个数字被掷出的频率越高,带有该数字的六边形生产资源的频率就越高。您应该考虑在具有良好生产潜力的六边形(即 6 和 8 对比 2 和 12)上定居。然而,这些高产出的六边形也常常是强盗的主要目标。

20250901165625_30

《卡坦岛》基础版游戏规则总结

游戏目标:

  • 成为第一位在自己回合中拥有 10 个或更多胜利点 (VP) 的玩家。

胜利点来源:

  1. 定居点 (Settlement): 每个价值 1 VP(初始每人有 2 个)。
  2. 城市 (City): 每个价值 2 VP(通过升级定居点获得)。
  3. 最长道路卡 (Longest Road Card): 持有者获得 2 VP(授予建造连续 5+ 段道路的第一位玩家)。
  4. 最大军队卡 (Largest Army Card): 持有者获得 2 VP(授予打出 3+ 张骑士卡的第一位玩家)。
  5. 胜利点卡 (Victory Point Card): 每张价值 1 VP(从发展卡牌库随机抽取,需隐藏到游戏结束)。

游戏流程:

  1. 设置 (Set-up):
    • 使用初学者固定地图(推荐第一次玩)或可变地图(洗匀地形板块和数字标记随机放置,注意红数字 6/8 不能相邻)。
    • 每位玩家选择颜色,拿取:5 个定居点、4 座城市、15 条道路、1 张建筑成本卡。
    • 将资源卡分类叠放(正面朝上),发展卡洗匀(正面朝下),特殊卡和骰子放一旁,强盗放沙漠。
    • 设置阶段 (Set-up Phase): 分两轮,玩家按顺序(第一轮顺时针,第二轮逆时针)各放置 1 个定居点和 1 条相邻道路。
    • 放置第二个定居点后,立即获得该点相邻地形六边形的资源卡(起始资源)。
  2. 回合进行 (Turn Sequence):
    玩家按顺时针顺序轮流进行自己的回合。每回合包含 3 个阶段
    • (1) 资源生产 (Resource Production):
      • 2 个骰子,加总点数。
      • 所有与点数对应数字标记的六边形相邻定居点城市的所有者获得资源卡。
      • 每个相邻的定居点获得 1 张该六边形类型的资源卡。
      • 每个相邻的城市获得 2 张该六边形类型的资源卡。
      • 例外 (Rolling a 7):
        • 没人获得资源。
        • 所有手牌超过 7 张的玩家必须丢弃一半(向下取整)。
        • 掷出 7 的玩家移动强盗到任意其他地形六边形(或沙漠)上,并随机偷取 1 张资源卡(从该六边形相邻建筑的一个玩家手中)。
        • 强盗会阻止其所在六边形的资源生产。
    • (2) 交易 (Trade):
      • 玩家可以同时分别进行两种交易:
        • 国内贸易 (Domestic Trade): 与其他玩家自由谈判交易内容(卡换卡)。只有当前回合玩家可以参与交易。
        • 海上贸易 (Maritime Trade): 与银行交易。
          • 基本汇率: 4:1 (4张相同资源换1张任意资源)。无需港口
          • 港口优势:
            • 通用港口 (3:1): 控制该港口的玩家可以用 3 张相同资源1 张任意资源
            • 特殊港口 (2:1): 控制该港口的玩家可以用 2 张港口指定资源1 张任意资源
    • (3) 建造 (Build):
      • 玩家可以支付资源(按建筑成本卡),建造以下项目:
        • 道路 (Road): 成本=1 砖块 + 1 木材。必须连接到已有的道路/定居点/城市。每条边只能有一条路。
        • 定居点 (Settlement): 成本=1 砖块 + 1 木材 + 1 羊毛 + 1 谷物。必须建在空交点,且满足距离规则(相邻 3 个交点必须为空),必须连接到自己的一条路。
        • 城市 (City): 成本=3 矿石 + 2 谷物。只能通过升级已有定居点获得。移除定居点,放上城市。
        • 购买发展卡 (Development Card): 成本=1 矿石 + 1 羊毛 + 1 谷物。从牌库顶抽一张(骑士卡 / 进程卡 / 胜利点卡),隐藏在手牌中。
      • 打出发展卡 (Playing Development Cards): 玩家在自己的回合中任何时候(包括掷骰前)可以打出 1 张发展卡(不能是当回合刚买的卡,胜利点卡除外)。
        • 骑士卡 (Knight): 立即移动强盗偷取 1 张资源卡(同掷出 7 的步骤 2&3)。打出后卡面朝上放面前。凑齐 3 张可抢/保“最大军队”卡(2 VP)。
        • 进程卡 (Progress): 立即执行卡牌效果(道路建设:免费放 2 条路;丰饶之年:拿银行任意 2 资源;垄断:指定一种资源,所有其他玩家必须将该资源全给你),然后弃掉
        • 胜利点卡 (Victory Point): 必须隐藏!只能在达到 10 VP 宣告胜利时(或游戏结束)揭示。当回合购买可当回合揭示(用于凑 10 VP 赢)。

游戏结束:

  • 当有玩家在其回合中(任何阶段结束后)拥有 10 个或更多胜利点时,游戏立即结束,该玩家获胜。
  • 胜利点卡只在此时(或游戏结束后)揭示。
  • 如果在他人回合达到 10 VP,游戏继续,直到有玩家在其回合中拥有 10 VP。

关键策略提示:

  • 早期核心资源: 砖块和木材(用于建造道路和定居点)。
  • 港口价值: 控制特殊港口(2:1)可极大优化资源转换,尤其是当您大量产出某种资源时。
  • 选址: 优先选择数字标记为 6 和 8(概率最高)的六边形旁定居,但同时要警惕成为强盗目标。为扩张留空间,避免被对手道路包围。
  • 交易: 积极交易(国内和海上)是获取所需资源、加速发展的关键。
  • 升级城市: 是获得更高 VP 和资源产出的必经之路(最多 5 个定居点,必须升级才能建新定居点)。
  • 发展卡: 骑士卡是移动强盗、干扰对手、争夺“最大军队”的主要手段;进程卡提供强力一次性效果;胜利点卡是隐藏的 VP 来源。

相关链接🔗

https://zh-cn.boardgamearena.com/ 桌游站
https://www.gcores.com/articles/23675 机核

当时间戳“捣乱”时,互联网会发生什么?

2025年8月22日 16:40

“ 时间戳,这个看似不起眼的数字,其实是互联网世界里最重要的“秩序守护者”之一。无论是你在朋友圈点了个赞,还是在电商平台下了一单,后台系统都会给它盖上一个时间戳,告诉全世界——“这件事发生在某个时刻”。然而,正是这样一个简单的数字,曾经引发过不少“历史级事故”。”

时间戳的“祖宗”——Unix Epoch

大多数编程语言在处理时间戳时,都会遵循同一个标准:
1970年1月1日 00:00:00 UTC,也叫 Unix Epoch(纪元)。

从那一刻开始,系统通过“数秒数”的方式来记录时间,得到的就是我们常说的 Unix 时间戳。

比如:

1724313600 代表 2024-08-22 00:00:00 UTC
0 则代表 1970-01-01 00:00:00 UTC
是不是感觉跟倒计时差不多,只不过这个“计时器”已经走了五十多年。

各种编程语言怎么拿时间戳?

虽然 Java、Python、Go、PHP 这些语言平时吵得厉害,但在“报时”这件事上,倒是非常一致:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Java
System.currentTimeMillis() / 1000

JavaScript
Math.floor(Date.now() / 1000)

Python
int(time.time())

C#
DateTimeOffset.UtcNow.ToUnixTimeSeconds()

Go
time.Now().Unix()

Shell
date +%s

乍一看挺和谐,但实际使用的时候,经常会有“精度不一样”“时区乱套”的小坑。

当时间戳“捣乱”时,互联网会发生什么?

1. 2038年问题:真正的“末日”警告还未来到

技术原理
许多系统使用 32 位有符号整数(signed int32)存储 Unix 时间戳,最多只能表示到 2038-01-19 03:14:07 UTC,一秒之后会“翻车”回 1901 年 12 月 13 日,导致系统混乱 (维基百科, 维基百科)。

关注点
虽然尚未发生不可逆事故,但它影响广泛,尤其是那些从不更新的嵌入式设备、老旧数据库或使用 time_t 类型的软件 (WIRED, 维基百科)。

解决方案
行业建议全面迁移至 64 位 time_t,足够支撑至约 2920 亿年后 (Musings of My Today, IFLScience)。

现实障碍
ABI(应用二进制接口)兼容问题使得从 32 位切换到 64 位并不简单,许多老系统难以统一升级 (IFLScience)。

2. Leap Second(闰秒)——每几次就出事的隐形炸弹

事故回顾
2012 年多个互联网服务因应对闰秒处理不当出现故障,如 Reddit、Mozilla、Gawker、LinkedIn 等。其中 Gawker 的 Tomcat 服务器甚至几乎完全瘫痪,重启后才恢复正常 (WIRED)。

成因解析
闰秒插入瞬间,部分系统(如 Linux、Java 应用)无法处理额外的一秒,导致时间计算异常 (WIRED)。

应对策略
Google 使用“leap smear”技术,提前微调系统时间,平滑过渡,无缝应对闰秒干扰 (WIRED)。

其他影响
闰秒还曾影响航班预订系统(Amadeus Altéa)、Cloudflare DNS 服务等,处理不善则系统崩溃或延时 (维基百科)。

3. 秒 vs 毫秒——“小数点”的灾难性误差

场景简介
Java 中 System.currentTimeMillis() 返回的是毫秒,而日志存储可能默认以秒为单位。一不小心没除以 1000,时间戳变成了“原来的 1000 倍”——结果可能是“飞到几千年后的未来” (Hacker News, n8n Community)。

现实案例
在 n8n 用户社区,有人就因为单位搞混,导致时间转换失败,还好社区提醒:“Unix timestamp 是秒,JavaScript 是毫秒,要除以 1000 才对” (n8n Community)。

4. BCD 与十六进制:曾经的“Y2K+10”奇葩案例

事故回放
2010 年,一些系统在短信时间处理上出了幺蛾子:BCD 编码里的 “10” 被误读为十六进制 “0×10”(即 16),结果 SMS 时间被显示为 2016 而不是 2010。
影响面
德国超过 2000 万张银行卡失效,PlayStation 3 渲染日期错误,银行 ATM、POS 设备大面积受影响 。

时间戳问题为何如此危险?

问题类型本质原因典型后果
2038 Bug32 位整数溢出跳回 1901 年,系统异常或崩溃
闰秒系统处理额外一秒失败各大互联网服务一阵服务异常
单位误差秒/毫秒混用时间错乱、日志错位
编码差异BCD/十六进制误解析日期错乱,设备瘫痪

这些问题告诉我们:别小看时间戳,它“面子小”,本质却关乎整个系统是否稳定。代码里多一个 /1000,一次时区转换,加一个异常判断,往往决定系统安不安全。

我们能学到什么?

永远确认时间单位
秒、毫秒、微秒、纳秒,单位不能混用。
小心时区
Unix 时间戳永远是 UTC,本地显示要显式转换。
考虑兼容性
如果要和老系统打交道,记得想想 2038 年的事。
在编程世界里,时间戳是最公平的见证人。它不管你是 Java 还是 Python,不管你在北京还是纽约,都会忠实地记录那一秒的发生。

只要我们用得小心,它就能一直帮我们维护互联网的“时间秩序”。

该如何去度过一生

2025年8月11日 13:49

总有些夜晚格外安静,那个问题便悄然浮上心头:我这一生,究竟要怎么过?生活和工作,难道注定是对立的吗?有没有可能让它们和谐共存?想得太多,难免辗转难眠,又常常感到力不从心——想做的事情那么多,什么时候才能一件件都做好呢?

焦虑最重的时候,工作和生活似乎都乱了套。后来我渐渐懂得,不必绷得太紧。放松下来,慢慢来,事情反而会逐渐理顺。人生其实有着不低的容错率。那些计划好的事情,只要心态平和,一步步去做,最终都能完成。

需要花钱的地方太多,不敢轻易辞职,不敢随便转行,更不敢凭着一腔热血就去“追梦”。于是,我学会了沉默和克制,在热闹的群里更多是安静地看着,尝试在琐碎的日常里寻找一点平衡。

生活不该仅仅是“忍耐”和“生存”。真正的活着,是“好好地活着”。比如,工作再忙,下班回家看到女儿明亮的笑容,哪怕只是陪她玩上短短一小时,一整天的疲惫似乎也消散了。再比如,偶尔在闲暇时,去旅行,学点新东西,或者玩一款新游戏。我慢慢体会到,人生的路其实比想象中宽,容错的空间也很大。很多当时以为无法承受的改变,最终都适应了,有时甚至带来意想不到的惊喜。

生活需要现实的根基,也需要精神的向往。体谅他人、照顾他人情绪固然重要,但也不能因此忽略了自己内心的声音。把自己的感受放在重要的位置,不是自私,而是学着与自己好好相处,这是为长久的身心健康打基础。一个能理解自己、照顾好自己的人,才更有力量去温暖地对待他人。

工作与生活,并非水火不容。它们更像是一种配合,像两个人共同完成的舞蹈,需要节奏与旋律的协调。我们终究要学会在忙碌中寻找意义,在琐碎里发现温柔,在感到疲惫时,重新点燃心中的那份热爱。

那么,我该如何度过这一生呢?

也许没有标准答案,但方向是清晰的:不逃避现实,不麻木内心,不放弃热爱;脚踏实地做好眼前的事,同时心怀热望,永远记得仰望那片星空。

在Lua中循环Require是如何处理的?

2025年8月7日 11:38

在 Lua 中,当多个脚本文件循环 require 时(例如 A 依赖 B,B 又依赖 A),最后 require 的值为 true 是由于 Lua 的 模块加载机制避免无限循环 的设计导致的:

  1. 模块加载状态跟踪:Lua 使用 package.loaded 表跟踪已加载的模块。
  2. 占位符机制:当开始加载模块 A 时,会先在 package.loaded 中设置 A = true(临时占位符)。
  3. 循环检测:若在加载 A 的过程中遇到 require B,而 B 又尝试 require A
    • 此时 package.loaded[A] 已存在(值为 true)。
    • Lua 会直接返回这个占位符值 true,避免无限循环。
  4. 最终值替换:当 A 完全加载后,其返回值会替换占位符(但循环依赖的模块已获取了占位值 true)。

在lua5.1中,出现循环require会直接报错(这边我们不讨论在5.1下的情况),如果报错是非常容易排查的,如下图:

lua5dot1error

代码案例演示

假设有两个文件互相依赖:
test_script

执行结果:
1
2
3
4
5
Start loading A
Start loading B
In B, a = true <-- 循环 require 导致值为 true
In A, b = Module B <-- B 正常加载完成
In main, a = Module A

关键点说明

  1. 加载流程
    • main.lua 执行 require "a",开始加载 A。
    • A 执行 require "b",开始加载 B。
    • B 执行 require "a",此时 A 正在加载中(package.loaded[a] = true),直接返回 true
  2. 值的变化
    • B 中的 a 获取到占位符 true
    • A 加载完成后,package.loaded["a"] 被替换为 "Module A"
    • 但 B 中已获取的 a 值不会更新(仍是 true)。

Lua 源码分析(以 Lua 5.4 为例)

关键函数在 loadlib.c 中的 ll_require 函数:

核心逻辑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
static int ll_require (lua_State *L) {
const char *name = luaL_checkstring(L, 1);

// 1. 检查模块是否已加载
lua_settop(L, 1);
lua_getfield(L, LUA_REGISTRYINDEX, LUA_LOADED_TABLE);
if (lua_getfield(L, 2, name) != LUA_TNIL) { // 已存在
if (lua_toboolean(L, -1) == 0) // 值为 false 表示加载失败
luaL_error(L, "module '%s' not found", name);
return 1;
}

// 2. 设置临时占位符 true
lua_pushboolean(L, 1);
lua_setfield(L, 2, name); // package.loaded[name] = true

// 3. 加载模块代码...
// ...(此处调用加载器执行文件内容)

// 4. 如果模块未返回值,则保持 true 不变
if (lua_getfield(L, 2, name) == LUA_TNIL) {
lua_pushboolean(L, 1);
lua_pushvalue(L, -1);
lua_setfield(L, 2, name); // 无返回值时设为 true
}
return 1;
}

关键步骤:

  1. **检查 package.loaded**:若模块已存在,直接返回其值。
  2. 设置占位符:在加载前设置 package.loaded[name] = true,标记模块正在加载。
  3. 处理循环依赖:当依赖模块尝试 require 当前模块时,直接返回占位符 true
  4. 替换最终值:模块加载完成后,用返回值替换占位符(若未返回值,则保持 true)。

解决方案:避免循环依赖

  1. 重构代码:解耦模块间的双向依赖。
  2. 延迟加载:在需要时再 require(例如在函数内部调用)。
    1
    2
    3
    4
    5
    6
    -- b.lua 修复版
    local a
    function get_a()
    if not a then a = require "a" end
    return a
    end
  3. 显式传递依赖:通过参数传递避免 require

最佳实践:模块设计应遵循 单向依赖 原则,避免循环 require。若无法避免,需明确处理占位值 true 的情况。

小木子与空船

2025年8月6日 11:40

一个童话故事,讲给每一个曾经皱眉的小孩听

在很远很远的地方,有一座云朵缠绕的森林,森林的中心有一面湖,湖的水清得能照出星星的影子。

湖边住着一个小孩,他叫小木子。

小木子不太像别的小孩。他不是特别爱吃糖,也不特别喜欢捉迷藏。他最喜欢的事情,是坐在湖边发呆,或者,拿着他的小本子,问别人问题。

他的朋友们都知道,小木子是一个会思考的小孩。

“为什么大树要掉叶子?”
“为什么刺猬不能抱抱?”
“你为什么今天心情不好?”

他问的问题总是让别人有点困扰,因为他的问题背后,常常藏着一个“已经想好的答案”。

有一次,小木子问山羊老师:“你是不是不喜欢我提问?”

山羊老师沉吟了很久,说:“你的问题,不是为了了解答案,而是为了验证你的猜测。”

小木子歪了歪头,没听懂。但那一天,他还是悄悄生了气。

于是他一个人去了湖边。那天风很大,湖水晃啊晃,小木子心里的情绪也像水波一样打转。

他正想把石头踢进水里,突然,“啪”的一声——

一艘小木船撞到了他的脚边。

他皱起眉头:“谁这么没礼貌?”

可他走近一看,那是一艘空船。

“哦,没人。”他说。于是,他没生气。

这时,一只灰色的老猫慢悠悠地从树林里走出来,坐在小木子身边,舔着爪子说:

“如果船里有个人,你是不是就要生气了?”

“那当然。”小木子点点头,“如果是狐狸撞了我,我会让他赔我一个苹果。”

“可你看,”老猫说,“船还是那艘船,撞的力气也一样。你不生气,只是因为它是空的。”

小木子一愣。

“你明白了吗?”老猫看着他,“你不是因为被撞而生气,而是因为你以为那是别人不该那样做,才生气的。”

小木子咬着唇,没说话。

老猫继续说:“你心里早就装着一张地图——别人该怎么说话,怎么做事,什么时候道歉,什么时候微笑。只要有人偏离了你的地图,你就不高兴了。”

小木子红着脸低下头,小声说:“可要是别人真的做错了呢?比如——插队。”

“那你当然会生气,”老猫说,“但你是在生他没有按你的地图来的气。你觉得:大家都该排队,他却没有。”

“对呀!”

“那如果是一个三岁的小兔子插队呢?”

“那……那我大概不会生气。”

老猫眯着眼睛:“所以你看,并不是因为‘插队’这件事让你生气,而是你用你自己的标准去判断那个人应不应该那样做。”

小木子一言不发。风吹乱了他的头发,湖面也起了小小的涟漪。

“那……道德有什么用?”他小声问。

“束己。”老猫说得干脆,“不是责人。”

“可是大家都乱来怎么办?”

“你可以提醒,但不能期待他们都听你的话。”

“我不能期待他们做好人吗?”

“你可以希望他们是,但不能要求他们是。”老猫温柔地看着他,“就像你不能要求云朵每天都是晴天。”

小木子望着湖面出神。他想起好多件事——
那次乌龟慢慢吞吞地来迟了,他不高兴;
那次小鹿说了他一句“多事”,他生气了;
那次猫头鹰拒绝回答他的问题,他整晚没睡好。

可他从来没告诉他们他心里的那张“地图”。

他一直拿着地图,走在森林里,一边走一边生气:
“为什么你不按路走?”
“你为什么不向左拐?”
“你为什么不早说一声?”

可他们根本不知道他心里的地图。

于是,小木子坐下来,在湖边轻轻地把那张“地图”拿出来,折成一只纸船。

“你要放弃它吗?”老猫问。

“不,我要把它放在心里。”小木子笑了,“但我不会再用它去要求别人。”

他把纸船放进水里,看着它一圈一圈地漂走。

那天晚上,森林的风特别安静,星星特别亮。

第二天,小木子仍然问问题,但他不那么着急得到答案了。

他问乌龟先生:“今天路上风大吗?”

乌龟笑了:“不大,但我在看天上的云,走得慢了些。”

小木子点点头,没有生气。

他问刺猬:“你今天为什么没有跟我打招呼?”

刺猬不好意思地说:“我怕扎到你。”

小木子笑了:“那你可以点头,我就知道你在跟我打招呼了。”

他的朋友们发现,小木子变了。他不再拎着“正确答案”来提问,他学会了听,也学会了原谅。

他心里还有地图,但他不再拿它当尺子去量别人。

他学会了,生气的时候,先看看那是不是一艘“空船”。

🕊️ 尾声

如果你也常常生气,那也许你是像小木子一样,早早就写好了一份“别人应该怎样”的剧本。

如果你把这份剧本收起来,世界也许不会更完美,但你会轻松很多。

毕竟,道德是用来约束自己的,不是用来裁判别人的。

——在每个安静的湖边,总会有一艘空船正向你漂来。

从双人成行到双影奇境

2025年7月31日 14:04

距离上次和老婆一起玩《双人成行》,不知不觉已经过去三年了。那会儿上海正因为口罩的事儿封着小区,大家都窝在家里远程办公,每天对着电脑屏幕敲敲打打,日子过得难免有些沉闷。就是在那段时间,朋友圈几乎被《双人成行》刷屏了,不管是平时爱打游戏的朋友,还是很少碰游戏的同事,都在晒和搭档通关的截图,配文里满是玩游戏时的欢笑与吐槽。我俩也跟风买了一份,想着正好能给宅家的日子添点乐子。

说真的,这游戏是真的好玩。作为一款双人协作类的动作游戏,它对操作有一定要求,像有时候需要两个人配合着跳平台,或者一个人负责吸引敌人,另一个人趁机输出,手速慢了或者没配合好,就很容易掉链子。但它又不只是靠操作,里面还有不少烧脑的环节,比如有些关卡需要解开机关谜题,得两个人分别观察不同的线索,然后凑到一起才能想明白怎么弄,有时候我俩能对着一个谜题琢磨半天,你一言我一语地争论,最后突然想通了,那种成就感特别足。

那时候我俩白天忙完工作,晚上十点准时开玩,常常一玩就到凌晨两点多。有时候因为我操作失误导致闯关失败,她还会假装生气地拍我一下,然后又笑着说 “再来一次”。就这么连玩了一周多,终于打通了最后一关,那种好兄弟(手动滑稽)咱们又一起攻克难关的感觉,到现在想起来都印象深刻。

其实我们做游戏行业的,对家里小孩玩游戏这事并不排斥,只是会更用心地筛选适合他们的游戏。比如《塞尔达》系列,里面的世界特别开阔,充满了各种奇妙的探索元素,小孩在里面能尽情发挥想象力,而且没有太多暴力元素,特别适合。还有《马里奥》系列,画风可爱,玩法轻松又有趣,闯关过程能锻炼反应能力,也很受小朋友喜欢。另外像一些解谜类游戏也不错,能培养逻辑思维。

相对来说,我们更推荐主机游戏,因为主机游戏大多有明确的年龄分级,内容上会更贴合不同年龄段的孩子。而网游一般就不太推荐了,主要是网游的环境太复杂,里面什么样的人都有,有时候还会遇到奇怪的玩家,对小孩的影响不太好。而且网游的社交属性太重,很容易让小孩沉迷其中,加上很多网游没有严格的年龄分级,有些内容可能并不适合小孩接触,这些都是我比较担心的地方。

上周家里来了小侄女,她一进门就吵着要玩双人游戏。刚好我 PS 的会员到期了,心想总算不用再玩《地球防卫军》了 —— 那游戏虽然也算双人合作,总体剧情就是装配各种意义上的枪炮,机甲,打各种外星人,但玩多了确实有点单调。没想到小家伙人不大,懂的还不少,直接说想玩 Switch 上的《Overcook》(胡闹厨房)或者《路易吉洋馆 3》。

可这俩游戏我是真有点犯怵。《Overcook》那简直是 “友尽神器”,特别考验配合,两个人得在厨房里手忙脚乱地做菜,一会儿要切菜,一会儿要洗碗,还得注意别撞到对方,稍微有点疏忽就会搞砸,我俩之前玩的时候,就因为配合不好,常常一关要重试好多次,到大关基本就卡关过不去,实在不想再受那份 “折磨” 了。而《路易吉洋馆 3》呢,我和老婆通关过一次,后来小侄女来玩,又陪她通了两次,里面的每个角落、每个谜题我都快背下来了,实在提不起兴趣再打一遍。

hazelight.se 宣传海报

最后我只好给她安利《双影奇境》,跟她说这游戏有多好玩,画面多精致,谜题多有趣,好不容易才把她劝动,成功买了下来。其实买游戏是小事,主要是得让小孩玩得开心,安抚好她的情绪才最重要。

我跟老婆说这是《双人成行》的续作时,立马说 “买买买”,看来她对当年一起玩《双人成行》的经历也念念不忘。那天晚上 11 点多才下单,结果这游戏足足有 74G,下载要两个小时左右,只能是第二天玩了。

可不巧的是,第二天中午前要送小侄女回家了,我俩抓紧时间玩了一个多小时,才打到第一章节的支线任务。临走的时候,小侄女还恋恋不舍地说这游戏太好玩了,下次还要玩。

下面是双影奇境的一些故事背景

hazelight.se 宣传海报

《双影奇境》讲述的是两位风格大相径庭的作家 —— 米欧与佐伊的奇妙冒险。米欧是个在城市里摸爬滚打、为生计发愁的科幻小说作家,作品里满是霓虹闪烁的未来都市、冰冷机械的太空基地;

佐伊则是来自乡下,怀揣梦想,渴望证明自己的奇幻故事写手,笔下是巨龙翱翔、魔法四溢的神秘世界 。

两人为了出版作品,走进了神秘的雷德出版社,这家出版社声称能用先进机器帮她们实现梦想,却没料到,这竟是一场创意窃取的阴谋。

当米欧察觉到异样想要退出时,阴差阳错被卷入了佐伊的奇幻模拟场景,自此,两人被困在这个光怪陆离、由各自作品交织而成的虚拟世界,被迫携手合作,寻找逃离的办法,同时挫败出版社的险恶计划。

在游戏进程中,玩家会跟着她们在科幻与奇幻场景里来回穿梭。在米欧构建的科幻世界中,有时会置身于车水马龙的未来都市,化身拥有反重力技能的赛博忍者,在高楼间飞檐走壁,或是来到濒死恒星旁的空间综合体,躲避恒星脉冲爆炸,还得应对机器人停车管理员这类奇特角色 ;

而佐伊的奇幻世界里,既有被巨魔肆虐的古老城镇,需要踩着随风摆动的旗子跳跃前行,又有神秘的塔楼,要巧妙利用机关躲避食人魔的看守。每个场景都伴随着独特的谜题与挑战,像在某个科幻关卡,需要一人操控程序,另一人破解机械机关;奇幻关卡中,可能要交替施展元素魔法,触发连锁反应来通关 。​

以上一些关于有趣的游戏推荐和体验。

❌