清晨上班路上的风景

墨尔本的清晨,总有一种恰到好处的安静。 上班路上,街道还未完全苏醒。咖啡馆刚刚拉开卷帘门,空气里飘散着第一缕咖啡香;电车缓缓驶过轨道,发出熟悉而轻柔的声响;晨光从树梢间洒落,在人行道上投下斑驳的光影。就在这样寻常的时刻,我习惯放慢脚步,留意街道两旁那些静静伫立的居民住宅。 它们不像市中心的摩天大楼那样引人注目,却以另一种方式讲述着这座城市的故事。 最先映入眼帘的,往往是独立屋精心打理的前院。 墨尔本人似乎格外珍惜家门前这一方小天地。即便面积不大,也总能被主人经营得井井有条。有的种满玫瑰与薰衣草,晨露还停留在花瓣上;有的以本土植物为主,银灰色的叶片在阳光下泛着柔和的光泽;还有的摆放着精致的花盆、木制长椅和小巧的装饰物,仿佛一个缩小版的私人花园。 每一处前院都像是一幅独立的小景。无需言语,人们便能从中感受到主人的性格与审美:有人偏爱自然随意的风格,让植物自由生长;有人追求几何般的秩序感,草坪修剪得一丝不苟;也有人热衷于四季更替带来的色彩变化,让庭院随着时光不断呈现新的面貌。 这些细节,让街道有了温度,也让住宅不仅仅是一处居所,更成为生活态度的表达。 继续向前,联排屋整齐地排列在道路两侧。 相似的屋顶线条、统一的建筑尺度,让整条街呈现出和谐有序的节奏感。远远望去,它们仿佛遵循着同一种语言,却又在细微之处保留着各自的个性。 有的门廊漆成鲜艳的蓝色或墨绿色,有的窗框保留着古典装饰线条;有的门前摆放着盛开的花篮,有的则以简洁现代的设计取胜。相同的建筑形式,因为居住者不同而呈现出丰富的变化。 这种统一与多样并存的景象,正是墨尔本街区最迷人的地方之一。它没有刻意追求张扬,却在细节中展现出生活的层次感。 而在一些新兴社区里,现代感十足的公寓建筑也逐渐成为街景的一部分。 与人们印象中的高密度城市住宅不同,墨尔本许多公寓并不追求高耸入云的气势。它们往往保持着适中的高度,在现代设计语言中融入当地建筑传统。大面积玻璃带来通透的采光,木材、砖石和金属元素则延续着城市一贯的质感。 这些新建筑并没有与周围环境形成突兀的对立,而是在更新与传承之间寻找平衡。它们既回应了城市发展的需求,也尊重着原有街区的尺度与气质。 这种克制与融合,或许正是墨尔本建筑最值得欣赏的地方。 当然,最令人驻足的,还是那些历经岁月洗礼的维多利亚时期排屋。它们拥有精美的铸铁花饰阳台、优雅的立面装饰和细长高挑的窗户。即使经历了百余年的风雨,依然保留着昔日的风采。晨光照在斑驳的砖墙上,仿佛为建筑镀上一层柔和的金色。 站在这样的街道上,很容易产生一种时光交错的感觉。那些老房子像是从十九世纪缓缓走来,见证过马车经过的年代,也目睹了现代城市的成长。它们安静地守望着街道,记录着一代又一代居民的生活故事。 在墨尔本,历史并未被封存在博物馆里,而是自然地融入日常生活。人们每天经过这些建筑,与它们共同呼吸、共同生活。过去与现在,在这里并非彼此割裂,而是温和地连接在一起。 或许,一座城市真正的魅力,并不只存在于著名地标和繁华商业区。更多时候,它隐藏在这些平凡却真实的街道之中。那些住宅的门窗、庭院、阳台和砖墙,构成了城市最细腻的纹理;而居住其中的人们,则赋予了这些建筑鲜活的生命力。 清晨行走其间,我常常觉得自己仿佛正在阅读一本没有文字的书。每一栋房屋都是一个章节,每一条街道都是一个段落。它们共同讲述着墨尔本的历史、文化与生活方式,也展现着这座城市独有的层次与呼吸。 当阳光渐渐明亮,街道开始热闹起来,我也继续朝着工作的方向前行。而那些静静伫立的住宅,依然留在身后,在晨光里守护着属于这座城市的日常风景。 墨尔本的美,或许正藏在这些不经意的瞬间里。只要愿意放慢脚步,便会发现,这座城市最动人的故事,往往就写在寻常人家的门前。

April 30, 2026

高行健:《一个人的圣经》

前阵子看到一个“乌龙”:真以为86岁的高行健先生过世了,老人家还在法国活得好好的。之前只读过他的《灵山》,前阵子就捡起《一个人的圣经》来读,居然被深深地震撼。如果说《灵山》是在寻找,那么《一个人的圣经》是在审判——审判历史,也审判自己。 《灵山》还保留着一种漫游者的视角,重心是任何在压抑的社会和集体下寻找消极的自由和活着的意义;《一个人的圣经》则把目光集中到一个更尖锐的问题:当一个人被卷入巨大的政治狂热和历史运动时,他究竟变成了什么?这对于曾经经历另一个疯狂三年的我们依然产生巨大共鸣。这本书最震撼的地方往往不是对迫害的描写,而是对人的复杂性的描写。小说不断揭示一个令人不舒服的事实:受害者可能参与过伤害别人;告密者未必天生邪恶;顺从常常出于恐惧;很多人是在自保中逐渐失去自己。 高行健似乎不满足于控诉某段历史。他更想追问:为什么普通人会被卷入?为什么人会主动相信荒谬的东西?为什么人会在压力下背叛自己?这种追问让作品具有超越特定时代的力量,最沉重的是“记忆”。书里反复出现一个主题:忘记容易,记住困难。很多人经历过重大历史事件后,会选择遗忘、合理化或者重构记忆。而小说主人公不断逼迫自己回忆。回忆并不是为了获得正义感,而是为了避免自我欺骗、防止悲剧重演。 这让我想到了王小波的伤痕文学。两人都经历了相似时代背景,但文学选择很不同。王小波经常通过荒诞和幽默来拆解宏大叙事。比如在《黄金时代》中,你会感受到一种近乎顽强的生命力:世界很荒唐,但我仍然可以嘲笑它。高行健则更冷峻,因此《一个人的圣经》有一种近乎残酷的诚实:它不仅揭露历史,也揭露回忆者自己。

April 8, 2026

移民的融入感悟和体会

我们来澳洲之前看到很多人讨论的一个问题:移民之后“如何融入”,总会担心“孩子能不能融入”、“自己能不能融入”。我先说自己的结论:这其实是个伪命题——至少在澳洲,根本不存在融入问题。 澳洲是一个真正的移民国家,最大的优势就在于不同国家、不同文化背景的人能够和谐共处。你可以跟邻里热情互动,也可以独来独往,而且大家依然会互相帮助。只要遵守法律,你完全可以按照自己的方式生活,保持自己的语言和文化,没人会干涉你。澳洲政府甚至有意识地保护和鼓励这种文化多样性:比如一些原产国的传统在澳洲比在原地还能得到更好的保存和传承;很多移民餐馆不仅正宗,还充满创新,甚至比原产国更吸引人;广东话、普通话和各国语言一样都受到同等尊重,甚至学界已经发现,粤语在海外保留了更传统的形态。 孩子们在这样的环境中成长,更是天然地融入了社会,我们完全不担心他们的英语能力或社交能力。姐弟俩几乎是用“吸收式学习”掌握英语,相较于担心孩子融入,我们更关注下一代能保留多少自己的文化和语言。我们在家里都是讲汉语,偶尔会教他们一些方言;出门在外,家人内部也用汉语交流。我们并不奢望能完全改变他们的语言选择,只是希望这种文化根脉至少能有一些延续,我能预见后代们肯定会越来越澳洲,这是一个自然的趋势,也没必要强行改变。说句实话,长久的文化和语言传承,最终依赖庞大的社区,幸运的是:这里的华人文化因自由而蓬勃发展。 当然了,移民就像一棵大树被移栽,而且澳洲一直就有强势的英语文化和习惯,个人难免会经历不适、焦虑与彷徨,甚至产生内在的冲突。关键在于保持包容与开放的心态,彼此尊重,愿意进行坦诚而开放的对话,愿意与这里产生真实的连接(任何形式都可以),只要如此,问题终究是可以慢慢化解。 总的来说,澳洲给移民提供了一个极其自由且包容的环境:你可以全身心地保留自己的文化,同时孩子们也可以顺利融入本地社会。这种自由和多样性,正是澳洲作为移民国家最令人欣赏的地方。 图片拍摄于首都堪培拉:澳大利亚国家美术馆的镇馆雕塑《Ouroboros》,由著名澳大利亚华裔艺术家李琳迪(Lindy Lee)创作,用13吨青铜纯手工铸造,以“衔尾蛇”意象呼应佛学中的轮回观与哲学中的自我更新,它象征多元文化的循环与共生,提醒人在差异中保持包容,在变化中寻找统一。

February 1, 2026

养育儿子

儿子估计是一个高敏感、高自主、语言认知发展超前的那一类小孩。这种孩子太早有自己的想法,所以听到的每一句话,他都会迅速判断、回应,甚至反驳;如果用指令压,他第一反应就是对抗,除非真的讲到他的点上,他才会认真听。 其实我们知道他从很早就不太“按常规来”,在娘胎里听到洗衣机声音会乱踢,最后还把羊水踢破提前了一周出生。出生第一天晚上,我哄他,他不如意就直接抓脸“抗议”,把我吓得紧急呼叫护士。给他换尿布,手稍微冷点他马上大哭抗议。 满月前就会用眼神和咿呀语跟我们交流,对声音极度敏感;一岁多开始说话,带他去看姐姐跳舞,老师看着他说“那边的小朋友要安静”,他来了一句:“不听话、搞破坏。”大部分靠自己掌握了纯正的英语和汉语,两岁开始用点读笔自学,一读就是一个小时,反复读红火箭、牛津树和DK幼儿百科。国内上托幼的时候,老师就很惊讶他怎么能讲那么多、知道那么多知识。 非常幸运,他有个性格好的姐姐,积极影响了他的成长,我们也不是那种会压制孩子的家长,一直都是慢慢引导、解释和商量,算是纠正了他的性格上的偏差。这边的教育环境非常宽容,都是鼓励和引导为主,能让孩子扬长避短。

January 1, 2026

南半球最大的购物中心逛了一圈,我们最终还是去了Bunnings

今天带着家人在南半球最大的购物中心里溜达了一圈。宽阔的停车场几乎停满了车,商场里人流如织。推着婴儿车的年轻父母、拎着购物袋的情侣、三五成群的朋友,还有趁着周末出来消遣的老人们,汇聚成一幅热闹的生活图景。对于习惯了平日街道宁静的我们来说,这是最近很长一段时间里见到人和车最多的地方。巨大的商场里汇集了各种品牌和店铺,从时尚服饰到电子产品,从家居用品到美食广场,应有尽有。人们穿梭其间,享受购物带来的乐趣。然而,逛着逛着,我们一家人却不约而同地朝着另一个方向走去。 最后,我们还是在Bunnings和Nursery里找到了真正的归属感。或许在很多游客眼中,这些地方远不如购物中心光鲜亮丽。没有琳琅满目的奢侈品牌,也没有令人眼花缭乱的橱窗陈列。但在我看来,这里恰恰是最能体现澳洲家庭生活方式的地方。 走进Bunnings会有一种特别的感觉。高高的货架一直延伸到视线尽头,空气中混杂着木材、泥土和金属的味道。这里粗犷而务实,却又在细节中体现出对生活的认真。园艺工具整齐排列,木材和五金配件堆满货架;各种尺寸的螺丝、油漆、花盆、种子、肥料一应俱全。从搭建一个后院凉亭,到制作孩子的小木屋;从铺设菜园围栏,到修剪玫瑰花枝,人们几乎能在这里找到完成所有家庭项目所需要的东西。 对于很多澳洲家庭来说,Bunnings不仅是一家商店,更像是一个周末目的地。你会看到一家老小推着购物车慢慢挑选。父亲研究着木工工具,母亲比较着不同品种的花苗,孩子则兴奋地坐在购物车里四处张望。购物本身似乎已经不是重点,重要的是一家人共同参与、共同创造的过程。 这种文化背后,其实是一种根深蒂固的DIY精神。许多人愿意亲自动手修理、改造和建设自己的家。他们享受的不只是最终成果,更是亲手完成一件事情带来的满足感。 而离开Bunnings之后,人们往往还会顺路去Nursery看看。如果说Bunnings代表的是澳洲家庭的动手能力,那么苗圃则体现着他们对自然和生活品质的热爱。在澳洲,苗圃的普及程度几乎和生活超市一样。无论城市还是郊区,总能找到各具特色的Nursery。有些已经由同一个家族经营了数十年;有些专门培育本土植物;有些则因为拥有丰富的玫瑰品种而远近闻名。 每一家苗圃都有自己的个性。有人专门为了寻找一棵带有独特香味的玫瑰,驱车几十公里前往另一座小镇;有人每年都会关注新品种月季上市;还有人乐于与苗圃老板交流种植经验,只为让自家的花开得更好一些。这样的场景,常常让我觉得十分有趣。 在许多地方,人们习惯比较学历、职位、收入、汽车品牌或者最新潮流;而在澳洲,至少在普通Local的日常生活里,似乎很少感受到这种外在竞争的压力。当然,他们也会“卷”。只是卷的方向有些不同。有人会默默比较谁家的草坪更整齐;谁家的玫瑰开得更旺盛;谁家的前院设计得更有层次感;谁能把一块普通的土地打造成四季有景的小花园。 这种竞争没有喧闹的张扬,却充满生活气息。每一座精心维护的前院,其实都是一个家庭的“生活作品”。修剪整齐的绿篱、盛开的茶花、攀爬在围栏上的藤本月季、铺设得恰到好处的小径,以及角落里那把历经风吹日晒的木椅——这些看似普通的元素背后,投入的是时间、耐心和持续不断的照料。植物不会因为一次浇水就长大,也不会因为一次施肥就繁花满枝。 它需要等待。需要观察。需要一年又一年地投入心思。而这种耐心,恰恰也是一种生活智慧。 很多澳洲人从父母那里学会种花,从祖父母那里学会修剪果树。园艺不仅是一项爱好,更像是一种代代相传的家庭文化。孩子们从小就在后院奔跑,在花园里观察昆虫和四季变化,在耳濡目染中理解什么叫做耕耘与收获。或许正因为如此,这里的花园总是带着一种特别的温度。它不是为了展示给别人看,而是真正属于家庭生活的一部分。 傍晚离开的时候,我们的购物车里没有昂贵的奢侈品,也没有最新款的电子产品。几包土壤、几株植物、一些园艺小工具,却让人感到格外满足。 回家的路上,我一直在想,也许理想生活从来不是拥有多少东西,而是愿意花多少时间去经营自己热爱的事物。一座房子、一片草坪、一株玫瑰、一棵茶花,看似微不足道,却承载着一个家庭最真实的生活痕迹。这种生活方式,不张扬,不急躁。 它不追求立刻得到结果,而相信时间会让一切慢慢生长。 这让我越来越深刻地体会到:我们所向往的理想生活,或许并不遥远。它不在繁华商场的橱窗里,而是在周末的Bunnings,在街角的Nursery,在家门前那块亲手打理的小花园里。那里种下的不只是植物,更是一种对生活的热爱,以及对岁月最温柔的回应。

November 12, 2025

横跨大半个地球,从北京海运搬家到墨尔本

长登墨尔本有一段时间,前阵子顺利收到了海运搬家的物品,所有的行李和钢琴都整整齐齐完好地送达,包括日常使用的瓷器,看到曾经的家具物品呈现在异国他乡,倍感亲切。我们是租到房子后才让海运公司发货,不过他们的速度也非常快,海上时间25天,抵达墨尔本一周内就送货上门了。 这次横跨大半个地球的搬家,我们非常忐忑,也非常谨慎,搬家前做了很多调查,最终选择熙浦搬家,他们的售前服务非常好,每一个问题有问必答,耐心负责地解答。上门取货的师傅打包非常专业,特别是那位包装钢琴和家具的师傅,动作干脆麻利,包装细心。 物品从国内发出之后可以线上追踪船舶的实时位置和路线,墨尔本这边的对接很很顺利,每个阶段都有邮件通知,清关也是邮件沟通,非常顺畅。送货前提示有必要的话要通知邻居会有货物达到,送货的本地师傅很友好,大件的包装协助拆除后清运垃圾。看得出来,他们在墨尔本这边合作的公司非常专业靠谱。 可能对比别家费用略贵一点,但是我们觉得跟他们的服务匹配得上,而且取货算出立方数之后就定下价格,后面就不再有其他额外收费。本来以为墨尔本这边会抽查检疫费用和其他安检费用,可能是我们比较幸运,没有抽查到,所以没有新增费用。

May 4, 2025

委托和接口的选择

A delegate design might be a better choice than an interface design if one or more of these conditions are true: • The interface defines only a single method. • Multicast capability is needed. • The subscriber needs to implement the interface multiple times. 如果满足以下一个或多个条件,委托设计可能比接口设计更好: • 接口仅定义一个方法。 • 需要多播功能。 • 订阅者需要多次实现该接口。

March 31, 2025

回顾我和编程之缘

回顾自己十六年来的编程经历,我很乐意分享我和计算机编程结缘的过程。 高中毕业的时候,我从邻居家借到一本Basic语言的书籍,我被它迷住了,那时候我没有计算机,只是在草稿纸上模仿书本上的例子进行四则运算和解方程运算。事实上我从小梦想是做一名数学家,所以我大学专业是数学与应用数学。那时候计算机在中国是热门专业,所以数学系也开了很多计算机的课程,我认真学了一个学期的C语言程序设计,我一直被计算机编程的能力震撼,那时候我知道Matlab和Mathematica可以调用C语言的类库进行非常复杂的数值运行,我在大学参加数学建模比赛就是用计算机算法去验证数学模型。 大二的时候我第一次接触Delphi,第一次接触Pascal语言,被它的简洁语法吸引,不过Delphi那时候已经走下坡路,微软的MFC已经蚕食它的市场份额,而Delphi的创始人安德斯海尔斯伯格也被比尔盖茨挖到微软。大二结束的时候我参加学校编程社团,第一次学习C#并且使用ASP.NET WebForm开发网站,从同学那里,我也了解C#的创始人海尔斯伯格的传奇经历,我被两者深刻吸引。 大学毕业的时候我很幸运加入一家有名的软件公司方正集团,我继续使用C#和.NET开发网站,那时候我独立开发了一个CMS系统,虽然很简单但是非常实用,后来我深入参与电子报纸和电子图书的算法设计和软件开发。移动互联网刚刚诞生的时候,我和另外一位工程师基于Mac版本的FBReader开发了ios版本的图书阅读器,那时候我第一次接触object-c。 我也喜欢linux,自己会安装linux操作系统来学习,所以我在工作之余自学了php语言,但是我更喜欢C#这门语言,所以我一直没有转移到其他开发语言。微软和我Windows的闭源一直是我心疼之痛,后来我接触开源Mono,这是.NET在linux的一个实现,但是Mono的重点在桌面和游戏开发。 我加入百度公司之后有机会在linux生态系统下进行软件开发,我们使用php语言和mysql,这段经历扩宽了我的技术视野,让我对编程语言有了更深刻的理解:语言大同小异,最核心的还是算法和数据结构,以为优秀的开发人员应该能同时使用多种编程语言。 离开百度之后,我加入一家初创企业,我负责组建团队并开发互联网产品和软件,选择公司技术栈的时候我面临在php和c#之间二选一。那时候.NET已经开源,Mono的作者也创立了新公司Xamarin,专注于使用C#开发跨平台的移动应用。加上结合公司的情况,我继续选择使用C#作为主开发语言,但是我们也使用mysql、memcached和Redis等技术。我们的第一个移动应用也用C#来开发,那时候是属于很前卫的选择,还好我们坚持了下来,因为到了2016年微软换CTO了,开始拥抱开源,紧接着是收购Xamarin,还有筹划.NET Core的开发。我一直关注.NET Core的进展,后来看到StackOverflow使用.NET Core2.1,他们极大提升了性能,于是我开始在我们的新开发产品中使用.NET Core,到了.NET Core3.1的时候开始将legacy code迁移到.NET Core。 这里不得不提一段我学习深度学习的插曲,2018年左右我认真学习了Michael A. Nielsen的《神经网络与深度学习》,并熟读第二章的多元微积分公式和证明,我甚至在纸上推导了全过程,这是我再次接触神经网络算法(大学数学建模的时候我学习过)。我似乎又回到了大学学习数学分析的时候,这本书写得非常好,作者从最根本最朴素的思想开始,结合实践进入深度神经网络,我认为这本书堪称神经网络的几何原本。我没有继续深入到深度学习中去,但是我认为它最根本的核心还在这本书里。也许哪一天,我还会重新捡回这段技术经历。

March 25, 2025

扬帆远洋

启程之前,我们提前五天回到了北京。 南方已经有了初春的气息,路边的木棉开始抽出新芽,空气里也带着一点潮湿的暖意。而北京依然停留在冬天的尾声里,街道两旁的树木光秃秃地站着,灰白色的枝干伸向天空,远远望去似乎没有一丝生机。 但我知道,它们并没有死去。 大约二十年前,我第一次坐火车穿越华北平原。那是一个阳光灿烂的下午,车窗外的田野和村庄不断向后退去。那时候我从南方来,对北方的冬天毫无概念,看着那些光秃秃的树木,竟天真地以为它们已经死了。后来才知道,生命有时候并不表现为枝繁叶茂,而是隐藏在沉默之中,等待某一个时刻重新生长。许多事情其实都是如此。 北京于我,也是这样。这座城市有过我人生中最重要的十六年。那些奋斗、挣扎、收获与失落,都已经深深嵌入生命之中。即便离开,也不会因此消失。 这几天,我们住在亚运村附近的一家酒店,帮推行李的北京本地中年大叔说这里是陈希同的老窝。窗外不远处就是国家体育场鸟巢。夜幕降临的时候,巨大的钢结构在灯光下泛着柔和的光泽,周围则分布着这些年陆续建成的国家级场馆。这里是新北京最具时代象征意义的区域之一,也是无数人记忆中的奥运地标。而对我来说,这里还有另一层意义。 很多年前,我和爱人常常来这里放风筝。那时候刚刚毕业不久,我们租住在附近,偶尔骑车来到这片开阔地,看风筝在天空里越飞越高,也谈论那些尚未实现的梦想。后来有了自己的家,搬去了更远的地方,来的次数越来越少。再后来,孩子出生,生活被工作、家庭和责任填满,那些悠闲的下午逐渐成为记忆。 现在这里的场馆更多了,道路更宽了,周边的建筑也比从前壮观许多。可是站在那里时,我最先想起的却不是这些变化,而是当年那两个在草地上奔跑的年轻情侣。那时候的我们不会想到,二十年后自己会以这样的方式再次经过这里。 我们又去了一趟王府井,去了一趟前门,也去了附近的奥林匹克森林公园,那里曾经是我们恋爱时最常去的地方之一。很多城市都有著名景点,但真正属于一个人的城市记忆,往往不是景点本身,而是与某些人共同经历过的时光。 今天是惊蛰。按照节气,万物应当开始苏醒,可北京依旧笼罩在阴霾之下。 今天也是两会召开的时候。新闻里到处都是相关报道,街道上增加了许多安保力量,整个城市似乎都在围绕着某种宏大的叙事运转。但那种热闹属于他们,我们有自己的世界。 知道我计划的同事问过我,为什么要离开。这个问题其实很难用一句话回答。如果只是抱怨,那么任何地方都能找到无数离开的理由;如果只是留恋,那么任何地方也都有值得留下的东西。 北京如此,中国亦如此。 这里有很多让人难以理解的事情,有时甚至会让人感到无力。但与此同时,这片土地又拥有独特而深厚的文化传统。那些古老的诗歌、历史、语言和记忆,早已融入我们的血液之中。很多年前读高行健的《灵山》,书中始终在追问一个问题:人在庞大的集体叙事之中,如何寻找真正属于自己的自由和自我。 后来我慢慢明白,对于许多人来说,即便身处各种约束之中,也依然能够活出自己的精神世界。 我自己其实一直是个乐观主义者。我相信个人能够创造属于自己的生活,也相信无论身处何种环境,人都可以保留独立思考的能力。 但生命终究是有限的。而当你提前看见了一些东西,看见了更多可能存在的人生路径之后,就很难再假装自己什么都没有看见。选择本身未必意味着否定什么。很多时候,它只是承认另一种可能同样值得尝试。 这些年,我越来越认同余英时先生的一种精神态度:“我们在哪里,哪里就是中国。”对于我而言,还可以再加上一句:我们在哪里,哪里就是壮乡。故乡未必只是地图上的一个坐标。它也是一种语言、一种记忆、一种生活方式。只要这些东西还存在于我们身上,它们就不会因为地理位置的变化而消失。 吃完自助早餐,我们拖着四个超大的行李箱和两个小行李箱来到首都国际机场。大厅里依旧人潮汹涌,广播不断响起,航班信息在电子屏幕上滚动更新。孩子们显得有些兴奋,他们把这当成一次普通的旅行,不停讨论着飞机和目的地。对于他们来说,这只是一次出发;他们或许还不知道,这实际上将成为他们人生中的一个重要转折点。 而我和爱人都很安静,经历了过去将近一年漫长的准备、整理、告别与等待之后,真正走到这里时,反而没有太多情绪。 飞机开始滑行,发动机的轰鸣声越来越大,当机轮离开地面的那一刻,我看着窗外逐渐缩小的城市轮廓,内心出奇地平静,甚至没有离开故乡时那种强烈的不舍。后来我想,也许原因很简单:故乡连接的是血缘、童年和生命最初的记忆;而国家、城市、制度和时代,则终究是为具体的人而存在。 个人先于国家存在,国家是因个人而成立。 人并不是为了某种宏大的概念而活着,而是为了自己有限而珍贵的一生。 飞机穿过云层,阳光从舷窗照射进来,北京被留在了身后。前方是什么,其实谁也不知道。但人生很多重要的时刻,本来就不是因为看清了终点才出发,而是在确认方向之后,愿意扬帆远航。而此刻,漫长的旅程终于开始了。

March 5, 2025

部署NextJS到Azure WebApp Deployment Error报错: cannot find module ../server/require-hook

当我将nextjs应用程序部署到azure web应用程序的时候报错:cannot find module ../server/require-hook。 我通过github-actions构建和部署成功完成,但是部署后,我在url 中收到错误,并且在azure日志流利发现这个错误。刚刚开始我不明白是什么原因造成的,因为“npm start”在我的本地机器上使用相同的 npm 版本构建和运行。 通过网上查找,发现是因为githhb的action默认不会把.next文件夹打包加入zip并且发布到azure。所以需要在默认的工作流基础上修改: 1、adding “startAzure”: “./node_modules/next/dist/bin/next start” in package.json; 还需要在azure应用程序网站的配置立加上 the startup command of the azure web app like “npm run startAzure” 2、添加这个到azure的 pipeline (在创建 zip了之后) - name: Zip artifact for deployment run: zip release.zip ./* -r - name: Add .next folder to zip artifact for deployment run: zip -r release.zip ".next"

February 27, 2025