2026-03-08 05:48:48
[caption id="attachment_71083" align="alignnone" width="1170"]
夫妻了解程度问卷调查[/caption]
我媳妇是基督徒,她是在疫情那一两年信主的(觉知+受洗)。她每周日都会去教堂,读经、学经、参与侍奉。虽然我不是基督徒,但我还是挺支持她的。我觉得信上帝是一种很好的信仰,只是我自己还没有到那个境界。
教会的活动我一般有时间也都会参加。作为慕道友,我加入了英国剑桥华人教会。这两年每周末都会有团契,也就是大家一起学习圣经。一周是线上,一周是线下。每隔几周,我们家还会作为线下团契的聚会地点,人多热闹,气氛很好。
前两周,线下团契有个活动:夫妻双方各自填写一份问答表,一共10个问题,既有关于自己的,也有关于配偶的。
这是个很有趣的互动。和媳妇认识已经十六年,结婚十四年,一晃两个孩子都12、13岁了。这几年大家都忙得像陀螺一样,很少真正停下来问问自己到底喜欢什么。反倒是,对另一半的喜好可能了解得更多一些。
说到我自己的兴趣,当时我卡了很久。感觉人到这个年纪,兴趣反而越来越少。很多东西在得到之前特别渴望,但真的拥有之后,好像也就没那么喜欢了。比如前两年买的卡宴,还有前几个月换的 X8 CPU 的车牌。曾经很想要,真正得到后反而没那么激动了。
后来我看了媳妇写的答案,她在“配偶的兴趣”一栏写的是“刷题”。我才恍然大悟:对对对,这确实是我众多兴趣中的一个。
有一题是“你最希望配偶为你做的一件事”。我媳妇写的是“买一束花”。对,她确实很喜欢花。而她觉得,我最希望她做的事情,是“听我讲课”。
还有一题是“你最想做但还没做的事情”。我媳妇写的是——去 Google 上班。不过这个前提是,我得先能进得去啊。
下面是这些问题,大家可以先各自写在纸上,写完再互相对一对。
这些年和媳妇也走了不少国家/地区,感谢媳妇这十几年的陪伴[/caption]
2026-03-06 02:41:58
今年是马年,弟弟12岁,也是他的本命年。正好他的生日就在农历新年的那个月。 大年初一,我带着两个孩子去了公司——微软剑桥研究院吃午饭,因为我实在懒得给他们做午饭。吃完饭后,弟弟就在大厅的钢琴上弹了一首曲子。这次他弹的是《野蜂飞舞》(Bumble Bee)。 《野蜂飞舞》是一首非常著名的钢琴炫技曲,原本出自里姆斯基-科萨科夫的歌剧《沙皇萨尔坦的故事》。整首曲子以极快的速度和密集的音符著称,听起来就像一群野蜂在空中飞舞,因此得名。 这是弟弟第一次在公共场合弹这首曲子。其实这并不是他的考试曲目——他两年前已经通过了钢琴八级,现在正在准备 Diploma 级别。这首曲子是钢琴老师给他“玩”的曲子,因为他学新曲子很快,一般两周左右就能掌握。 老师平时常说他弹得太快,不过这首《野蜂飞舞》倒是一个例外——这首曲子,越快越好。 视频:油管/Youtube | B站/小破站 | 微博视频 | 西瓜视频 | 微信视频号 | X/推特 | 小红书 | Facebook [show_file file="/var/www/wp-post-common/justyy.com/kid-learn-music.php"]
2026-03-02 19:52:52
touch 命令:当文件不存在时创建文件,存在时更新它的修改时间。PowerShell 本身并没有内置 touch 命令,但我们可以自己实现一个行为与 Unix 类似的版本(支持多个文件和通配符)。
本文提供一个实用的 touch 函数,你可以将其添加到 PowerShell Profile 中长期使用,同时包含示例和一些边界情况说明。
touch 通常具备以下特性:
*.txt
if (Test-Path .\file.txt) { (Get-Item .\file.txt).LastWriteTime = Get-Date } else { New-Item -ItemType File -Path .\file.txt | Out-Null }
function touch {
[CmdletBinding()]
param(
[Parameter(Mandatory=$true, ValueFromRemainingArguments=$true)]
[string[]] $Path,
# 可选:当父目录不存在时自动创建
[switch] $MakeDirs
)
$now = Get-Date
foreach ($p in $Path) {
# 展开通配符(例如 *.txt),若无匹配则按字面路径处理
$expanded = @(Get-ChildItem -LiteralPath $p -ErrorAction SilentlyContinue)
if ($expanded.Count -gt 0) {
foreach ($item in $expanded) {
if ($item.PSIsContainer) {
continue # 跳过目录(Unix 行为可不同,这里更安全)
}
$item.LastWriteTime = $now
}
continue
}
# 没有通配符匹配时,按普通路径处理
if (Test-Path -LiteralPath $p) {
$item = Get-Item -LiteralPath $p
if (-not $item.PSIsContainer) {
$item.LastWriteTime = $now
}
continue
}
# 创建文件(可选创建父目录)
if ($MakeDirs) {
$parent = Split-Path -Parent $p
if ($parent -and -not (Test-Path -LiteralPath $parent)) {
New-Item -ItemType Directory -Path $parent -Force | Out-Null
}
}
New-Item -ItemType File -Path $p -Force | Out-Null
}
}
touch .\hello.txt
同时操作多个文件:
touch .\a.txt .\b.txt .\c.txt
更新当前目录下所有 .log 文件:
touch *.log
在嵌套目录中创建文件,并自动创建目录:
touch .\logs\2026\app.log -MakeDirs
notepad $PROFILE
将 touch 函数粘贴进去,保存并重启 PowerShell。
如果 Profile 被禁用,可以为当前用户启用:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
Set-Alias -Name t -Value touch
也可以把这行加入 Profile。
PSIsContainer 判断。
通配符:PowerShell 使用 Get-ChildItem 处理通配符。如果通配符没有匹配结果,函数会按普通路径创建该文件(符合大多数人的预期)。
不会修改文件内容:不同于 "" >> file 的做法,本函数不会向文件追加换行或改变文件内容。
英文:The touch command in Windows Powershell
2026-03-02 07:42:49
登上欧洲之巅:我的少女峰之旅 年末瑞士行:在Jungfraujoch看见世界的高度 五天四晚,奔赴少女峰的冰雪世界 申根签证到期前的最后一站:瑞士少女峰 站在3454米的地方,和这一年告别 瑞士冬日记:从Interlaken到欧洲之巅 年终收官之旅:少女峰的白色震撼 《站在欧洲之巅,与这一年告别》 《年末瑞士行:少女峰 Jungfraujoch 全记录》去年年底,趁着申根签证还未到期,我们决定把瑞士作为这一年的收官之旅。五天四晚的行程中,最重要的一站,自然是登上少女峰——Jungfraujoch。 少女峰 Jungfraujoch 位于瑞士伯尔尼高地,海拔 3454 米,是欧洲海拔最高的火车站所在地,因此被称为“欧洲之巅”(Top of Europe)。它坐落在少女峰(Jungfrau)与僧侣峰(Mönch)之间,俯瞰壮丽的阿莱奇冰川(Aletsch Glacier)——这是阿尔卑斯山脉最长的冰川,也被列入联合国教科文组织世界自然遗产名录。游客可以搭乘齿轨火车穿越隧道直达山顶,在观景平台远眺连绵雪峰,在冰宫感受晶莹剔透的冰雪世界。这里不仅是瑞士最具代表性的地标之一,也是许多人心中一生必去的高山目的地。 上山的路线有好几种。我们选择从 Interlaken 坐火车前往 Grindelwald,然后转乘缆车,大约 15 分钟到达 Eigergletscher,再换乘齿轨火车一路攀升至 Jungfraujoch。下山时则选择直接乘火车返回,省时也更从容。 [caption id="attachment_71041" align="alignnone" width="1155"]
瑞士少女峰上山路径[/caption]
那段 15 分钟的缆车旅程其实挺刺激。车厢悬在高空,脚下是陡峭的山坡和白茫茫的雪地,偶尔缆车会轻轻晃动一下,甚至带来一瞬间微微的失重感,让人心里一紧。好在天气很好,视野开阔。透过车窗往下看,可以看到很多人在山坡上滑雪,身影在雪地上划出一道道优雅的弧线,自由又惬意。
少女峰 Jungfraujoch 被称为“欧洲之巅”(Top of Europe),海拔 3454 米,是欧洲海拔最高的火车站。这里位于阿尔卑斯山脉的核心区域,四周被冰川环绕,壮阔而纯净。站在观景平台上,远处连绵的雪峰在阳光下闪闪发亮,仿佛置身于一个巨大的冰雪王国。空气清冽,寒风凛冽,但那种辽阔与震撼,让人几乎忘记寒冷。
在冰宫里,晶莹剔透的冰雕和冰墙透出幽蓝的光;在观景台上,游客们裹着厚厚的羽绒服拍照留念,每个人脸上都带着兴奋与满足。那一刻会真正理解,为什么这么多人不远万里来到这里——并不仅仅是为了“打卡”,而是为了亲眼看看世界的高度。
五天的瑞士之行,其实并不算长,但足够让人放慢脚步。湖水像镜子一样安静,小镇干净而有秩序,远处的雪山像背景板一样永远矗立在那里。作为一年的最后一趟旅行,它既有仪式感,也带着一点对新一年的期待。站在“欧洲之巅”回望过去的一年,忽然觉得,很多烦恼都变得渺小了。
PS:山顶风很大,也非常冷,我们都裹得严严实实。听说少女峰上能遇到晴朗天气并不算常见,所以这次能看到蓝天白雪,算是相当幸运。中午我们在山顶的快餐店简单吃了点东西就准备下山了。由于海拔高、空气稀薄,稍微走几步就觉得有点累,甚至有些发晕,只能放慢节奏慢慢走。
视频:油管/Youtube | B站/小破站 | 微博视频 | 西瓜视频 | 微信视频号 | X/推特 | 小红书 | Facebook
[caption id="attachment_71049" align="alignnone" width="2048"]
瑞士雪山边上的房子/好幸福[/caption]
[caption id="attachment_71048" align="alignnone" width="2048"]
山腰上的火车站,空气有点稀薄[/caption]
[caption id="attachment_71047" align="alignnone" width="2048"]
缆车往外拍的雪山美景[/caption]
[caption id="attachment_71046" align="alignnone" width="1365"]
少女峰上风大很冷 老大包的严严实实。[/caption]
[caption id="attachment_71045" align="alignnone" width="1108"]
从缆车下来,最后一段路程我们选择火车上去。[/caption]
[caption id="attachment_71044" align="alignnone" width="2048"]
和媳妇在少女峰上合影,用AI把背景的游客删掉了[/caption]
[caption id="attachment_71043" align="alignnone" width="2048"]
很幸运,上山那一天天气晴朗。[/caption]
[caption id="attachment_70749" align="alignnone" width="2048"]
2025-12-27全家爬上了瑞士少女峰 jungfraujoch[/caption]
[caption id="attachment_71062" align="alignnone" width="864"]
登少女峰的打卡项目-盖章[/caption]
[caption id="attachment_71061" align="alignnone" width="864"]
在少女峰上的午餐,有另一个较好的餐厅,不过好多人排队,我们定了下山时间,怕错过,只能吃个简单的快餐。[/caption]
[caption id="attachment_71063" align="alignnone" width="1733"]
我看有游客直接在真的护照上盖章了,我比较保守,还是在这个小本上盖,我们一家四口一人一本留个纪念。[/caption]
[caption id="attachment_71065" align="alignnone" width="1024"]
媳妇等着上少女峰上盖章[/caption]
[caption id="attachment_71088" align="alignnone" width="2048"]
在少女峰上和媳妇合影,又冷风又大[/caption]
[show_file file="/var/www/wp-post-common/justyy.com/switzerland.php"]
2026-02-23 19:23:05
上周五中午抽空去了 Peterborough(单程开车约50分钟),参加并通过了 AI-102:Microsoft AI Engineer Associate 认证考试,中文可以理解为“微软 AI 工程师助理”。
被官网认证为AI工程师助理!
[caption id="attachment_71027" align="alignnone" width="1137"]
AI-102微软人工智能工程师/助理[/caption]
之前考过的 AI-900 属于基础级认证,没有过期时间,证书上是一颗星。
这次通过的是两颗星的中级认证(费用165美元)。中级及以上证书有效期为一年,过期前6个月可以在线免费续考。据说如果续考没通过,可以每24小时重考一次,也就是说理论上最多有大约180次续考机会。
这次的 AI-102 难度明显高于 AI-900。AI-900 主要考察对概念的理解,而 AI-102 不仅要求理解原理,还要掌握具体 API 的使用方法,以及在不同场景(Case Study)下如何选择和应用合适的 AI 模型。
考试时长大约两小时,分为两部分。
第一部分是选择题(单选、多选、下拉、排序等),可以标记(Mark for review)后面再回头检查。
第二部分是 Case Study,提交后无法返回修改。我做完第一部分并复查后,开始第二部分时只剩下大约20分钟,时间还是挺紧张的。
考过之后真的很开心。这也是获取多巴胺的一种方式吧。努力学习,卷起来,给孩子做榜样,保持持续学习的状态 💪
[show_file file="/var/www/wp-post-common/justyy.com/exams.php"]
2026-02-23 19:08:26
main() 里先写这两行:
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
}
很多新手会觉得像“祖传模板”,但它们确实能在 IO 很重的题里显著提速。原因主要有两个:同步和自动刷新。
ios::sync_with_stdio(false) 能加速?cin / cout。默认情况下,它们会和 C 的 scanf / printf 保持同步。
同步的意思是:当你用 cout 输出时,C++ 的 IO 层会和 C 的 stdio 层做额外的协调工作,确保两套机制混用时输出顺序一致。但在竞赛里我们通常只用 cin/cout,不需要这种同步,反而增加开销。
所以这一行:
ios::sync_with_stdio(false);
会解除 C++ IO 与 C IO 的同步,从而减少不必要的开销,尤其在大量读写数据时更明显。
cin.tie(nullptr) 也能加速?cout 并不会每输出一次就立刻写到终端,而是先进入缓冲区,之后再统一刷新(flush),因为频繁和操作系统交互很慢。
默认情况下,cin 会“绑定”(tie)到 cout:每次执行 cin 读取之前,都会自动把 cout 的缓冲区刷新一次,以保证交互式程序里提示信息能及时显示。
但竞赛题不是交互式程序,没必要每次读入前都 flush,于是这一行:
cin.tie(nullptr);
会解除 cin 与 cout 的绑定,避免额外的自动刷新,进一步提升 IO 性能。
main() 最开始:
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
}
scanf/printf 和 cin/cout 时(关闭同步后可能导致顺序问题)。