最近我在干些啥

Chrome 转向 Firefox 的失败经历

某天我登陆学校邮箱,回邮件时,发现自己在 Chrome 中竟然无法直接回复邮件。于是我打开 Firefox Quantum,发现能够回复。由于之后一段时间是申请季,可能需要频繁使用邮件,而我又感觉同时打开两个浏览器好烦,于是我打算把主力浏览器从 Chrome 换成 Firefox。

  • 首先是转移书签。Chrome 中的密码是不能够转到别的浏览器里的,于是剩下来能转移的只有我的 cookie 和书签。我直接导入,然后申请了 Firefox 账号,这样就能多平台同步啦。

  • 其次是安装插件。Chrome 上面的adblock真的是太好用了,是保持注意力的神器。这段时间,我在 bilibili 上看 David Silver 的强化学习课,发现自己的注意力被分散太多了:顶部的推送通知、旁边的视频推荐、右上角的up主链接、底部的评论大楼…… 然后我用adblock,一个个地屏蔽了相应的 html 元素,界面清净了许多。

    于是在 Firefox 上,我也装了类似 adblock 的 uBlock Origin,也找到了类似的下载视频的 Video DownloadHelper,SimpleBlock 的代替品 LeechBlock NG,当然还有最爱的快捷键神器 Vimium。

  • 同时,脑中某个量子群提出了这样一个自然的疑问:是什么原因导致我没法在邮箱界面上回复呢?具体来说,当我阅读某个邮件,并点击上方的 Reply All 按钮时,按钮按下去没有反应,不会跳出回复界面。我决定跟踪鼠标的 click 事件,看看 js 代码的执行流。我打开开发者工具中 Source 模块的事件监听器断点,在 Mouse - click 处设置了断点。断点到了,开始一步步执行 js 代码。执行到最后的函数名为 VM3。这是啥?肯定不是 VMWare,我电脑上根本没有。我怀疑可能是插件的原因,因为之前测试的 Firefox 和 Chrome的区别就在于 Chrome 装了很多插件,而之前 Firefox 还没装插件。难道跟哪一款插件的名字有关系?哦哦,Vimium!然后我尝试在邮箱界面上暂停 Vimium,居然按键真的有反应了。当然,这都是 debug 的基本操作了。

  • 原问题解决了,那么还要使用 Firefox 吗?回过头去看看网上对于 Firefox 和 Chrome 的争论,发现一些人说 Chrome 简洁,Firefox 插件多。但是也有一些人说,Firefox 在 Quantum 版本之后便不再支持许多原先的强力插件,比如 DownThemAll。有一些人说,即使 Quantum 版本之后火狐快了很多,但 Chrome 仍然比 Firefox 快一点点,虽然 Firefox 占内存少一点。我决定先用火狐一段时间,看看其能不能满足我的使用习惯,毕竟这两款浏览器在我的电脑上都不是很卡,此外我也喜欢非商业的东西。

  • 然而,用了 Firefox 一段时间之后,电脑发热了,且我发现电量掉得飞快。我打开活动监视器,发现火狐掉的平均电量比 Chrome 高。很奇怪啊,明明网上说 Chrome 更加耗电的。我仍然认为是插件导致的原因,毕竟测评用的是不带插件的浏览器。那么就可能有两点:1. 火狐的插件耗电快。这可能性很低,因为我在两个爱妾身上用的插件功能、数量都能相互对应上。 2. Chrome 的某插件省电。我觉得这是主要的因素,因为 Chrome 上有插件叫做 The Great Suspender,它能够在浏览页被放置一段时间后将其悬挂起来,不再运行页面上的任何脚本。

  • 基于上面的理由,最后我回到了 Chrome 的怀抱。当然你可以说插上电源线之后,用哪款浏览器都差不多,但我的笔记本散起热来,是真的令人难受。Firefox 上确实也有类似 The Great Suspender 的插件,叫 Auto Tab Discard,但用起来效果并不是很好。如果有比较好的火狐省电插件,please don’t hesitate to let me know.

  • 向这些伟大的插件开发者,致以令我腰弯得最低、低到膝盖后面抽筋的敬意。

狐狸的故事

狐狸的故事,有着森见登美彦少见的文风。之前我对于其作品的印象,是:大家一起好好玩耍吧!这样的感受。看过《四叠半神话大系》和《有顶天家族》、读过《春宵苦短,少女前进吧!》的我觉得,这家伙是个话唠,而且是一个京都迷。当然这只是中性的评价,其作品给人带来的印象就很深刻了:看过之后,会对于书中人物过的生活非常地向往。他们的生活充斥着有趣的、青春的元素。当然,他的这种神仙打架的风格,其实在每一部作品里是有差异的。四叠半,强调的是青春的横冲直撞,夏日的弹珠汽水,波光粼粼的琵琶湖,朝着对岸的情侣发射烟火大炮。有顶天,肚子里憋的更多的是一股喝多了的豪气,变成电车在商店街里乱冲的狸猫,作成旋风在空中乱舞的天狗,还有在蔚蓝的水与蔚蓝的天交界处穿梭的牟财天。春宵苦短,令人感受到了在生活中点滴的小确幸,情侣眼中对方头上跳动的苹果,万年不换内裤的同学,以及在大家都一个个传染到感冒的冬日、居然飞起到蓝天中的男主女主。

《狐狸的故事》与以上三者完全不一样,它文风的明暗向幽暗凝滞的水底散去。它更多像是四个传统怪异故事的集合,但放到了现代的聚光灯下,却变得更加离奇。首篇《狐狸的故事》与书同名,就是主打篇。看到文末,才会发觉之前对于文物的详细描写是有作用的。天城先生嘴中金鱼的蹦哒令人印象深刻。《果实中的龙》没有刻意对鬼怪作较深的描述,它更侧重人与人日常交往的复杂,是在整本中最积极的故事。虽然文末含着淡淡的忧伤,但也让人感受到了离别时、学姐对于学长的难以言语的情绪。《魔》这一篇比较晦涩,我主要关注了主人公的学生与夏实之间的关系,却没怎么察觉魔的产生与影响。所以,最后剧情的转折确实把我惊到了。《水神》是我最喜欢的故事,在看完全文后再看标题会觉得恍然大悟,此外,文中对于各种水的描写真的太精致了:千盏盛满水的碟子在日光下的波光,远处莫名嘀嗒的水声,最后逆着坡势、向着琵琶湖奔流而上、竭尽全力也没有抵达故乡的浪潮。

森见登美彦故事很大的特点就是让你看完书很久之后可能会忘掉剧情,但不会忘掉当时的阅读对于读者心情的冲击。《狐狸的故事》也做到了这一点,且拓宽了我对于这个作者的看法:他富有才华,心中有景物,且不拘泥于校园的青春题材,也能写出这样令人毛骨悚然的文章。我很期待马上剧场版的《企鹅高速公路》,不知道这位作者又能给我们什么样的冲击呢。

图形学与编译原理

这个学期一共就上了三门课,其中有图形学和编译原理。图形学教的东西挺基础的,基本上是上个世纪的概念,跟回来的洛神讲了一下教了写什么,然后被洛神可怜了:「真遗憾,浪费了这么多时间。」他给我看了看伯克利教图形学教出来的结果,那真的是炫酷到彩虹小马国度去了:模拟的球体在展览室中的反射材质惟妙惟肖。此外,他好像也没写多少的代码,整个过程,是自己学习在相应的位置实现相应功能的代码,根本不需要设计整个系统的继承结构,助教批起来也有统一的标准,这让我很是羡慕和嫉妒。

图形学的课上得也是死气沉沉的,基本上就是老师在对着 ppt 念经,而且声音贼小。我发现上课其实还是老师在掌握主导权,虽然说学生认真听也会反过来调动老师的积极性,但是在整个调动气氛的游戏中,老师是占先手的。老师先讲笑话,或者声音有磁性,ppt 还做得好,有条理,有故事,学生自然而然就会听了。(要求是不是太多了啊!)老师给学生的第一印象很重要,反之,每年的学生给老师的第一印象是大致不变的,至少平均积极性不会有变。当然偶尔图形学老师也会提一些问题,把我从小南极或者骨王的世界中拉回来。但事实上大家都没有预料到他会突然问问题,所以在谁都没认真听的情况下,谁也不会认真回答。我只能使用普通模式,回一些蠢答案,然后就被白眼一顿。编译原理,虽然低头的人也挺多的,但个人感觉并不是因为老师讲得没啥意思,反而是他讲得太快了,有时一些概念还来不及反应就过去了。所以很多人会选择低头,因为独自看书更容易把握住学习的节奏。

但讲实在的,我倒是挺喜欢图形学和编译原理这两门课的。与其说喜欢这两个老师的授课风格,不如说是喜欢自己耗尽心血、爆肝写出来的大作业。

个人觉得自己写的图形学的作业是极其完整的系统,图元生成、变换操作、撤销回复、3D 支持…… 响应速度也非常地快。还给它配了超级详细的使用手册,放在了 GitHub 上。除去注释,总代码量在五千行左右。

图形学作业

图形学的程序也不是一开始就运行很快的。大幅度的优化都是基本上通过调用系统的 API,以代替原先的自己造出来的轮子而实现的。比如说 javafx.scene.canvas 这个库,我之前都不知道,于是自己用 Pane 写了一个画板类,重新实现了和 canvas 类似的功能,结果就是贼几把慢。最后还是在葛傻的提醒下,发现了这个类,替代好之后程序运行得行云流水,皮得一批,大大缩短了调试时间,也大大平息了我心中猛虎由于操作太慢而发出的咆哮。

编译原理的实验也挺酷的,如果要实现基本要求的话,并不是很难;但在这以上,就要花很多时间了。花在哪里?花在生成代码的优化上,主要是减少生成出来的代码长度。这里就要动许多小脑筋,我还是花了很多时间在代码优化上的。最后一次实验是将中间代码生成到 Mips 格式的伪汇编代码,我使用了数据流方程和图染色方法来全局分配寄存器,写爆天际,写了一千两百多行。这可是 C 语言啊,每申请一块空间就要头疼指针何时回收。总代码量也在五千多。这套实验流程非常完整,从词法分析、语法分析、语义分析、中间代码生成与优化、目标代码生成与优化,规规矩矩,跟课上讲得很配套,我很喜欢这种边做能边复习,还能练习 debug 技巧的实验。

编译原理让我头疼的地方是它不支持面向对象的编程方式。于是我只好在尚不知道未来需要哪些函数的情况下写当前的函数。然后我就发现这居然是一个挺好的习惯,也就是 Duvall 说的在开始实现之前就写测试函数。这种自顶向下、用需求定义函数,而非从底到顶一步步地叠金字塔的过程,确实很带感,写出来所耗费的力气也比较小,但是需要编程者还记得哪些函数还未实现,以及未实现的函数需要实现哪些功能。当然这些东西都可以通过文档和工作日志得到补充,省去了记忆的麻烦。

以上便是我这学期的代码心得。这学期确实码了许多行代码,忙碌让我觉得又踏实又烦躁。踏实在于自己正解决一个个 bug,烦躁于可能世界上正发生着我需要争取的比码代码更重要的机会。

DitF

DitF 的剧情其实很不令人震惊,或者说令人吐槽的欲望不大,因此说不上什么剧情的缺点。即便如此,观众们还是会觉得自己被喂了〇〇。为什么呢?个人觉得它的节奏把握得不到位,也就是说制作组并没有很好地分配宝贵的镜头资源,不知道要花多少镜头在重要的、或者琐碎的场景里。故事引导观众预期的一个重要方式,就是要把合适的镜头放在合适的位置。

举个例子:为什么要把镜头放给零二画册的人?这个人在剧情中并没有出现。个人认为紧凑的剧情的特点就是没有废笔,着重描写的地方一定在全文会有它的作用,会与其他的意象产生关联。

另外一个令人遗憾的地方,就是埋伏笔的能力。一开始的作品基调让我觉得主人公会带着他的小伙伴们去用自己的力量推翻整个统治体系,然而最后我们发现,其实是第三方势力来完成对权威的打倒。这让人感觉很难受,因为观众一开始是将自己带入了这几个驾驶员的群体之中,而完成观众愿望的是第三方力量,没有太多的煎熬便迎来了胜利,仿佛这并不是属于自己的胜利,自然也不会有喜悦的感情。

广和零二的定位更多像是杨过和小龙女,而非郭靖与黄蓉;他们对于传统爱情的反叛使得观众对于他们拥有不一样的实现目标:他们只需要自由,世界毁灭其实跟他们无关。杨过只要跟姑姑好就够了,也不管天下大乱。但结尾主人公们却因为零二是叫龙的克隆体的宿命,而不得不出去打仗 —— 他们仍然没有得到自由,仍然因身上的种族属性而被命运束缚,全剧的宗旨也没有体现;虽然作品最后却给出了重逢般的喜悦基调,然而现实中的敌人仍然存活着,给人一种在读小学生春游流水账、无法探寻主题的迷茫。

以上是我对于 DitF 的看法。总得来说,第十三话是感情和画面的至高点,是我非常喜欢、深受感动的一话,反复看了好几次。其余的,就随它去吧哈哈哈。

我们的未来

大三下是十字路口。我们必须决定是留在国内,还是出国;是工作,还是深造。核心就是,不要做让自己后悔的事情!

俍俍和小灰灰决定去计算机系读硕,俍俍虽然五月份被刷了下来,但最后他还是怀着勇气找到了导师,是他上数据课时的老师,我听到觉得也很开心。cyx 虽然也跟我说想转计算机,但后来我就没怎么听见他的情况。葛傻挺惨的,五月份的时候也被刷了下来,虽然他和目标导师处得也挺好的。很大一个原因就是 GPA。这不得不让人吐槽国内和国外的冰火两重天,两个地方都貌似走极端了:国内,包括香港,录取学生,非常注重 GPA;国外,录取博士,主要看推荐信和论文,GPA 的存在貌似非常地渺小。要是录取标准能够多元化就好了。我当然知道,这在录取人数这么多的情况下,是不可能的;所以我只能被逼着,从懒羊羊,到成为一头披着羊皮的狼。节操暑假也出去补金融的课了,尧尧也打算转金融。bz 暑假在金融机构实习,bzh 好像也去美国搞微观物理的暑研了。翟神问过我一些编程的问题,但我也没好意思问他想转哪边,他虽然跟我说想工作,但我觉得工作就有点太可惜了,三年前我们都是高考的血海里杀出来的。令我感觉挺可惜还有妹妹,他这么聪明,应该尝试出国去吸收先进文化。当然,我也不能强行改变他人的意愿,毕竟他们自身才是对他们自己最负责的人。

读北大的一个同学,降转到了数学班,去读统计。另外一个北大同学,听说他现在也对理论数学不太感兴趣了。世界上只剩下了两个专业:统计,或计算机。这是学校专业课程设置的错误,是院系定位失常的错误,是社会风气导向的错误,也是每个人初心丧失的错误。如果每个人都能掌握将日常生活自动化的方法,如编程,哪来这么多财富累积导致的反常!中产和上流越拉越大,中产和贫困线也越拉越大,仿佛和共产主义的目标越来越远。整个社会疯了一样,挤破了头想往几个巨头里面钻。我们可能更需要的,是开源,是让每个人都拥有掌握自己日常生活的能力。每个院系都应该开编程和写作课,降低巨头们的技术门槛,回馈社会,集中人们的自主管理意识,调整注意力在蓝光屏幕以外的「他人」而非「卖点」上。此外,应该更加细化计算机专业的种类,扩招幅度还不够,应该引进更多的好老师,更多的好学生,缺口这么大,全被巨头堵上了,那就看不到创新了。不要让院里死气沉沉,应该竞争多一点,合作多一点,每个人都是孤岛、默默倒腾的状态,我真的不想看到。

我嘛,这几年水涨船高,企业用人,越来越挑,最好还是要去国外读个博士。现在确实有一些我感兴趣的问题,比如说知识与推理,诠释黑盒,自动化调优等等。那我只能保持绝对透明,绝对开放,不断地尝试、失败、总结,最后走上一条不归路吧。Rainorangelemon,全力全开desu!

PS

数代码的指令:(后缀格式根据语言而定)

1
find . -name "*.java"|xargs cat|grep -v -e ^$ -e ^\s*\/\/.*$|wc -l

打鸡血的大实话。