阅读视图

发现新文章,点击刷新页面。
🔲 ⭐

History Setting in Zsh

If you’re using zsh, you’ve probably bundled it with oh-my-zsh, which does a lot of zsh configs underneath. In my case, it has worked well for a pretty long time until I switched to starship, yet it took me a while to figure out how to properly set up history in zsh without it. First of all, if you’re using MacOS, you’ll notice things still work fine, this is because there is a system-wide history setting in /etc/zshrc.
🔲 ☆

奶奶

奶奶走了。 一切发生得太过突然,远在异国他乡的我迟迟不知道作何反应。也许是事发仓促,也许是相隔太远,也或许是从小没有经历过失去亲人的我,第一次面对,还没有办法意识到这真正意味着什么。 同样,我也无法想象现在的老爸是什么感觉。他是个大孝子,每年春节都会回老家过年。这次回去还跟我提到,奶奶现在身体大不如前,看着她一天天老去,心里不是滋味。初一那天给我拍了视频,里面还看到奶奶坐在椅子和别人聊天,第二天便出了事。老人是突然陷入昏迷,后面也没再醒来。我想那会不会就像做梦,希望梦里没有病痛,她只是轻轻地看着自己的儿女孙辈们,挥手告别,然后迎着光来的方向,去和爷爷团聚了。 说实话,我对奶奶的记忆不多。但出国之前,我专程去看了她,那一天的场景,不断地浮现在我的脑海里。我们一起吃了午饭,又看电视,说了很多很多话,还合了影。我很庆幸,也很感恩这半天的团聚,回忆起来都是开心的样子,我告诉她未来的打算,她高兴地听,又提醒我该早点成家。这一切是如此地历历在目,让我仍然觉得奶奶还在杭州等着我,而不是已经离开了。 再回想起那个下午,我和奶奶说,想出去走走,其实是顺便到附近的水果店转转,看看有没有不那么甜的水果可以买给她。天气有些热,但我跑了几家之后还是有不少收获。回去时还在楼下遇见了奶奶,她是担心我不识路下来找我的。后来我们一起吃了水果,那时我感到很满足,她也一定一定很开心吧。我想我会永远记得那个午后,杭州的初夏,街边的水果店,我们一起看的电视,以及奶奶的笑声。 亲爱的奶奶,一路走好。
🔲 ☆

读《近距离看美国》

《近距离看美国》是套系列丛书。前两年我早早地读完了前两本,第三本却拖延至今。然而落笔之际又发现还存在第四本,这感觉就像写完作业之后发现书包里还有张空白卷子,经历过的人一定能体会,那就是无论如何也要先缓缓了。所以我必须先写点什么,一吐为快。 书的主题明确,就是以外乡人的视角看待另一个国家的来龙去脉。作者笔名林达,实际上是一对作家夫妇。可以看出来,他们很好地融入了美国社会,也肯定经历了从质疑到理解再到成为的过程。而这几本书对我的最大意义,就是探索一个重要问题的答案:为什么来到北美? 作为中国人,世界总显得很遥远。虽然早就不再是天朝上国,我们仿佛很难摈弃以自我为中心的宇宙模型。同时,过于信赖直觉让结果大于一切的想法盛行,也导致了很多很多缺失的为什么。就像现在,无数人想润,美国、欧洲、日本、新加坡,因为那里光明,此处黑暗,很少人会过多在乎原因。上清华还是北大?好好学习,别老想些没用的。 可是再次来到北美生活,我的感受已经大不相同。也许是有能力静下心来想更多,也或许是年龄让我自然地开始关注人生的重点。我想很明确的是,无论处境如何,搞清楚情况至关重要。说回丛书,前两本讲了很多美国的宪政,三权分立,总统选举,让人印象深刻的是法治的深入人心。第三本集中在奴隶制的废除,从建国到南北战争再到后来,无数的血泪史让人无法不关注种族问题带来的深远影响,尤其是很多问题仍在继续,并且可能会永远存在。但不管怎么说,美国文化对人性的尊重确实让我印象深刻,无论真相多么惨烈,这些老外们依然会选择脚踏实地地面对。相比革命带来的打倒与翻身,这种做法莫名地让人感到安全,如同书中所说: 这并不是说,这里的人们不懂得正义必须得到伸张,更不是他们不关心正义伸张。而是他们理解,历史的前进、制度的完善、人性的醒悟都是渐进的。对一个在人道原则上建立起来的公众契约,对它所包含的制度、游戏规则和运作方式的尊重,是共同推进一个人道社会的基本保障。 还有,就是对待一个具体事件的处理,它的整个过程是向全体人民公开的,是在新闻监督之下的,很难有一手遮天的私藏猫腻。只有这样,人们才可能对一个尚不完美的制度仍然持有信心。假如人们发现,有一个足以超越制度的、凌驾在上的力量在暗中操纵的话,那么,这个社会的整个基础和信心就会在顷刻之间灰飞烟灭了。 这让我想起了童年。一个场景是小时候在家,父母一方面以大道理施加教育,比如好好学习、诚实守信等等,一方面又会在情况对(他们)自己不利的时候找补,比如大人的事小孩子莫管,或者干脆一通训斥了之。另一个场景则是和小伙伴们一起玩,大家年龄相仿,地位相当,没有谁给谁当家做主,也没有什么值得藏着掖着。现在想想,那可能是我的民主启蒙。 最后,如果你真的对移民(北美)感到好奇,那么《近距离看美国》值得一读。这里的移民指的是一种真正的身份认同,而这种认同少不了对一个新的国家以及这个国家不同种族群体的好奇与了解。当有一天我可以坦然地面对"洋鬼子们"而又不那么自以为是的时候,心里应该会轻松许多吧。 P.S. 2024是个闰年,估计也是个润年,希望所有在路上的人都能够得偿所愿,平安喜乐。
🔲 ⭐

序章

写下这个标题之后,不禁看了下博客的脚注,2020-2023,再翻翻写过的东西,也有小五十篇了。可这些并不影响我归档掉所有的旧文章,重新开始,因为今早的梦。 实际上我并未入梦,而是醒得很早,身体的困倦下大脑却自动运转开来,仿佛在催促我抓紧总结即将过去的漫长的一年。然而想到的满是遗憾与愤恨,与人的误会,做事的差错,像落叶般堆上心头。恍惚间一个念头袭来,自己好像缺乏爱好,每当别人问及于此,总给不出个答案,还觉得这是不沉迷于玩乐。现在看来,也许无言以对来自于对任何事的浅尝辄止吗?人面对过错总会先试图解释,于是我努力发掘了下自己的热情所在,却发现无力辩驳,即便是写东西这件事。回想近一两年,博客几近停滞,内容也差强人意。我不禁怀疑,这真的是我的爱好吗? 思索一番后(此时仍在困眠中),我得到了一个自己较为信服的答案,那就是我确实热爱写作,而博客事业不顺另有原因。自己之所以信服,是因为爱好一件事如同喜欢一个人,偶然开始并不说明什么,但反反复复,纠缠多年仍旧放不下,便是天意在引导。至于产量及质量不佳,真相则残酷许多。少年时作文偶有佳誉,又在日志、博客得到的追捧中迷失,多年来沾沾自喜,却不肯下苦功钻研,直至今日几于荒废。少时了了,大未必佳,这是一个悲伤的故事。 忘记在哪里看到过,人们总是痴迷于自己平庸的领域,而对真正的天赋所在不屑一顾。这说法让我十分恐慌。前者尚容易安慰,因为平庸毕竟是大多数人的归宿,做自己喜欢的事情也不可谓是一种浪费;后者却更难原谅,由于无知错过可能灿烂的生命,造成的是难以忘怀的忧伤。 醒来之后,我深陷上述的疑虑中。也许是因为心里清楚,写作于我来说,既是热爱,也深信自己多少有些天赋。年关某种意义上是人生一小段旅程的终结,在这结束之际我瞥见到的是些碌碌无为的影子,这实在不太有趣。我心中极力抗拒,却又感到惊奇。每个人都局限于自我独特的命运,在这段上下文中,纵然管中窥豹,能看清自己一瞬也已是奇迹。感恩于此,我决心一定要做些什么。因此我清空以前所写,又开启这篇序章。 为了真正有所改变,我要多写几句实话。这并非说明以上全是谎言,而是我想改改矫揉造作的毛病,不想再为了装模作样堆砌空洞的文字。在我长年积灰的电子书中,有一本王小波全集,算是逢翻必读。我欣赏那样的写作方式。大胆、机智幽默、天马行空,更令我向往的是自由词句背后的真实。文采之下,我可以毫不费力地共鸣他的调皮捣蛋(对虚伪的厌恶),他的自鸣得意(确实才华横溢),他的丑脸的可爱(充满了欲望和善良)。他真的懂,真的恨,真的爱,所以他都写下来,血肉丰满。我在人群里远远望着,无比艳羡。转身看看,周围不乏如自己一样的空心人,脚不沾地,所幸骨血的根基还在,尚有复原的可能。读完三十而立,我落回地面,再读似水流年,又多了几分血气。精神输血通过阅读的针管流畅地运转,让我变得清醒。所以我记录下这一切,作为开给自己的药方。想要治愈这肤浅之症,须要深入到骨髓,一点一点地观察,一步一步地行动,打破虚妄。 想来想去,结尾还差喊几句口号。可是怎么写都觉得不如摘录几句人家得好。那是三十而立里面我第一次看到就做了笔记的: 以后我要真诚地做一切事情,我要像笛卡尔一样思辨,像堂吉诃德一样攻击风车。无论写诗还是做爱,都要以极大的真诚完成。眼前就是罗得岛,我就在这里跳跃—我这么做什么都不为,这就是存在本身。
🔲 ☆

游扬州

和之前的习惯一样,这次去扬州也是期待了很久,然后来了一场说走就走的旅行。 故人西辞黄鹤楼,烟花三月下扬州。 孤帆远影碧空尽,唯见长江天际流。 – 李白 遥在疫情之前就向往在三月游玩扬州,却一直拖到了现在。不过最近才知道,古人说的烟花三月其实是四月份,避开凉意尚存的四月和拥挤的五一假期,我总算得以在夏天来临之际前往这座心系已久的小城。 出发时苏州正好下雨,凉快得很,坐高铁一个多小时便到了。订的民宿位置很便利,在彩衣街,邻着有名的东关街。安顿好已经是晚上了,民宿老板推荐了附近的蒋家桥饺面,据说这是当地有名的老店,随意点了三丁包、烫干丝和干拌面,价格都很便宜。其中三丁包肥而不腻,烫干丝微甜爽口,吃得非常满足。随后便顺道逛了逛旁边的东关街。这里可以类比北京的南锣鼓巷,这时候游客不算多,街道干净,也不吵闹,很适合雨后的晚上漫步。 位于街角的老店 三丁包 烫干丝 东关街尽头的城楼 第一天 瘦西湖是我的第一站。早饭本打算就近去怡园,这其实是个酒店的餐厅,听说口碑不错,但到了才发现十分拥挤,服务员也顾不上招呼。我不喜欢扎堆,便随意找了个小店,感觉更贴近当地人的生活。 碳水满满的饺面 到了瘦西湖,已经有不少人在排队了。可能因为前一天刚下过雨,天气很凉爽。买票进去的时候撞见了热闹,前面的两个阿姨用的证件同名同姓,工作人员起了疑心,便要求出示身份证,双方僵持不下。估计就是为了省钱做的手脚,但说实话门票确实不便宜,白天100,夜场120,不过逛了一圈下来我觉得还是很划算的,瘦西湖的美景名不虚传。 整个景区还是很大的 因为我家 KIDDO 不舒服,索性给她来了个直播游览。从南大门开始,一路向北,第一次体验到了网红博主的感觉,原来远程的陪伴也可以很温暖。虽然是工作日,也躲开了假期,游客仍然不少,大部分是跟团旅游的大爷大妈,想来这种 5A 级景区什么时候人都不会少的。从北门出去之后还有大明寺可以逛,但已经临近中午,我便直奔饭馆了。 我的 KIDDO 说拍得很好 随后又来到了个园,这里号称是中国四大名园之一。好奇上网查了一下,有说其实没有个园,而是苏州的留园,但是后来又有了个园的说法,总之都是为了吸引游客,对我来说欣赏美景才是最重要的。个园的名字出处很有意思,园主人好竹,所以栽种了各类竹子,而竹便是个字组成的。 竹林一瞥 此朴树非彼朴树 中间的石头貌似很有讲究 从个园出来又是东关街,看了眼手环已经走了两万多步,着实有点儿累,便直接回去补了个觉。路上还买了扬大酸奶,据说是扬州大学研发的,已经成为本地的网红美食了。有很多种口味,我买了茉莉花和芒果的,前者的花香搭配酸奶的浓稠口感尤其好喝,推荐。 只要 3.5,很实惠 一觉醒来,该吃晚饭了。本来有个红星餐厅想打卡的,可惜已经打烊了,于是又去了蒋家桥。这次点了锅贴和馄饨,再配上醋和辣椒,吃得不亦乐乎。 笋肉锅贴,鲜嫩多汁 虾籽馄饨,量大份足 吃完决定去试试扬州搓澡。聊天之间感受到了扬州师傅的热情,还尝试了烫背,非常解乏。这才是真正的洗澡呀。结束之后天已经黑透,便直接回去睡觉了。 第二天 昨天走得有点儿累,今天就打算悠闲一些。出门先买了个街边的青稞馍,刚出炉的,清甜可口。然后便来到了仁丰里,这条小街和北京的五道营胡同很像,呈现出的都是市井生活与现代美感的交融。 外酥里嫩 仁丰里 竹林,还有鲜花 前面好像是个民族建筑 走到尽头,是一家网红的小吃店,叫做樊记火烧。他们家的烧饼夹鸡蛋油香四溢,层次分明。后来我发现里面还加了五花肉来增加口感,怪不得味道如此诱人。 据说到了下午就会人满为患 一个字,香 一边吃着一边往何园走,路上突然收到了 OPR 的邮件,心情大好,没想到在扬州收获了意外之喜。阳光明媚,在何园里和我家 KIDDO 畅想未来,甚至无暇顾及园内的美景。这里不负晚清第一园的盛名,构思精巧,相比个园更加引人入胜。另外,我发现欣赏景点还是需要导游的讲解才能理解其中的奥妙,不然很容易走马观花。比如片石山房的水中月,以假山堆叠出来的圆洞映射在湖面,既精巧又隐蔽。 假山上的亭子 倚南窗以寄傲,审容膝之易安。登东皋以抒啸,临清流而赋诗。取自陶渊明的归去来兮辞 相映成趣 心中若无烦恼事,便是人生好时节 月牙形的小门 之后来到皮市街,进了一家日式小店,环境不错,安静优雅。点了个手作芝士豆腐,浇上蜂蜜,清甜细腻,比冰激凌更解暑。室内的空调有点儿凉,我便又换到了二楼的阳台,在一片树荫下,偶尔有微风吹过,稍作小憩,又看了会儿书,最后心满意足地离开了。 细腻爽滑,胜似冰激凌 室外比室内更舒服 晚饭本来想去前一天没赶上的红星,却正好路过了之前在小红书看到的狮子楼,于是便改了主意。这家是主打淮扬菜的老店,除了招牌的极品狮子头,我还点了大煮干丝和扬州炒饭。狮子头口感细腻,里面还藏了个蛋黄,可惜口味太淡了,就像没放盐一样,实在喜欢不起来,还是挺遗憾的。大煮干丝和扬州炒饭很棒,吃了个肚儿圆。饭后顺着一条小巷慢悠悠地溜达回去,心里还在因为 OPR 激动不已,很美好的一天。 极品狮子头 大煮干丝 扬州炒饭 喜欢这座小城,也喜欢这种随性的旅行,没有固定行程,也不用为了打卡匆忙赶路。虽然还有很多地方没去,比如大明寺,还有大运河博物馆,但这也让我对下一次的扬州之行充满了期待。 希望早日和我家 KIDDO 团聚,也希望下次再来扬州就是两个人一起啦。
🔲 ⭐

Python 中的异常

在 Python 中,EAFP 的风格很受青睐,这种写法能让代码更加简洁,还可以避免一些重复判断和多线程竞争的问题。为此,了解并熟练使用异常是很重要的。 异常类 首先来看一下 Python 内置的异常类(有省略): BaseException +-- SystemExit +-- KeyboardInterrupt +-- GeneratorExit +-- Exception +-- StopIteration +-- StopAsyncIteration +-- ArithmeticError +-- AssertionError +-- AttributeError +-- BufferError +-- EOFError +-- ImportError +-- LookupError +-- MemoryError +-- NameError +-- OSError +-- ReferenceError +-- RuntimeError +-- SyntaxError +-- SystemError +-- TypeError +-- ValueError +-- Warning BaseException 是所有异常的老祖宗,但很少会用到,通常我们只需要 Exception,比如自定义一个错误类型: # 命名习惯一般以 Error 结尾 class CustomError(Exception): def __init__(self, message, status): # 这里最好把参数都放进去,之后会统一存在 e.
🔲 ☆

Sum of Total Strength of Wizards

前两天做了一道算法题,虽然没能成功解决,但是是一道很有意思的题目。 抛开题面的包装不谈,核心内容就是给定一个数组,计算它的所有子数组的最小值与加和的乘积的总和。 (这里要注意子数组的定义,一定是连续的,如果不连续的话叫做子序列。) 比如对于 [1, 2, 3] 来说,一共有六种情况: [1]: 1 * 1 = 1 [2]: 2 * 2 = 4 [3]: 3 * 3 = 9 [1, 2]: 1 * (1 + 2) = 3 [2, 3]: 2 * (2 + 3) = 10 [1, 2, 3]: 1 * (1 + 2 + 3) = 6 最后答案为 1 + 4 + 9 + 3 + 10 + 6 = 33。
❌