近况

实在是没啥好些了,就写些最近的情况吧。

PhD 最后还是毕业了。一月份搞了答辩,二月份就开始上班了。感觉最后毕业很匆忙,拿着两个论文拼了拼,就这么弄出来了毕业论文…… 幸好第二篇论文后来还是中了,否则不知道要拖到什么时候去…… 至于PhD的感想么,还是以后再写个文章吧。

工作已经有半年多了,感觉基本的事情倒是都熟悉了,可以说跟上了队伍里其他人的节奏?Q4也要负责一些小项目了,只能说希望能够顺利…… 毕竟不是啥都可控的,能不能做出来很多时候不取决于你……

当然另一方面,工作里面的deadline倒不是那么死。比如说某些项目,如果发现结果不够好,那是断然不可能让你进生产系统的。一般来说每个项目都有一个完整的进生产的计划,一步一步来,保证没有问题。当然,可能其它的产品部门并不是这样,但是基础设施(infrastructure,搞网络/存储/硬件/数据中心/计算之类)这块,基本上安全还是第一位的,速度倒不是最重要的。想想搞研究的时候为了赶deadline可能搞出来的系统还有很多bug一样跑实验,觉得还是业界这种模式更靠谱一些……

当然,研究界也有一个项目搞很久,等到搞好了再找个会投的,或者像LLVM那样5年就搞一个东西的, 当然也可以。或许本来就应该是那样的,而不是每年都想着在今年顶会投个什么东西……

在公司的一个兴趣爱好就是看各种错误总结报告。这方面公司里倒是有专人做,每周都有人总结本周又出了啥问题。观察这些东西,其实还是能想出一些想法来可以解决一些问题的,只是不知道啥时候有空做。

另一方面,在公司低级别想自己搞个东西那基本上只有可能你一个人搞。之前和同事讨论这个问题,觉得也很简单,其实就是有很多东西预先是说不准的,需要依赖个人的经验的估计。如果你级别低,别人就未必会相信你的估计和经验,另一方面你也未必能把道理说清楚,这样就没法说服老板之类给你一些人力来干这个事情。这个当然是正常现象,但是也意味着想搞什么只能自己搞搞。当然或许可以说服其它和你有类似兴趣的人一起来弄一些东西…… 最后用结果说服别人之类的。

工作了当然不能每天睡到自然醒(可能研究也不应该?……),每天还是有点困。这个其实就逼着你早睡,但有时候自然而然就一点多了…… 以后还是尽可能避免吧,否则白天真是困得没法干活。既然那么说了,今天还是早点睡吧……

Firefox 57: 丢了啥

最近各个Firefox都升级到了57…… 用了一段时间还是有若干丢失的功能没找回来。

× 滚轮切换标签页

有个firefox的feature request (https://bugzilla.mozilla.org/show_bug.cgi?id=1285812),好像已经很久了,到现在也没搞定。因为57的关系,好像最近有些动静。

有段脚本在 Console 跑一跑就能有这个功能,但是总不能每次都跑一跑……

× keyconfig

没法重新定义各种按键了…… 比如要在各处都用Alt+<num>切标签就不行了……

× HttpFox / Mason / RefControl / UAControl

反正各种篡改HTTP的插件都不好使了。不过Chrome下好像是有类似插件的,所以应该会有替代品……

× Tab Mix Plus

TMP 的很多功能都还没替代的,比如多行标签页,比如滚轮切换,比如双击关闭,……

我估计多行标签页是很难出来了……

 

已经搞定的替换品:

× VimFx -> Vimium

× 地址栏开新标签 -> New Tab From Location Bar

本来是 Tab Mix Plus 的一个小功能,现在单独弄出来……

× Google Similar Images -> Search by Image

× Zoom Page -> Zoom Page WE

× FireGesture -> Gesturefy

还不能完全替代……

 

所以为了快一点非要车掉插件接口么…… 很多插件也就是改改浏览器外壳,和里面渲染也没啥关系啊……

不过毕竟是开源组织,人手不足么,没功夫搞后向兼容……

Pidgin 的回归?

从前啥IM都用 Pidgin 挂着,包括MSN啦,GTalk啦,人人啦,QQ啦,……

后来发现用 Pidgin挂的话总有些问题,比如人人的XMPP接口会自动发状态啦,QQ时常不能用啦,GTalk 变成 Hangouts 之后干脆要干掉XMPP啦,就渐渐不用 Pidgin了……

最近天天看着那个工作得不是很靠谱的Telegram客户端 (Linux版在BSD跑当然不靠谱),再看看那个卡得不行的 Hangout 网页版,突然想到是不是 Pidgin 现在可以搞这些了,于是去看了眼……

虽然 Pidgin 那个难产的3到现在还没出来,界面和从前一模一样 (这几年到底在干嘛……),支持各种协议的插件倒是都有了。

Telegram: telegram-purple https://github.com/majn/telegram-purple

Hangouts: purple-hangouts https://bitbucket.org/EionRobb/purple-hangouts

Facebook: purple-facebook https://github.com/dequis/purple-facebook

试了试看上去都还工作得不错,终于可以摆脱 Hangouts 那个卡卡的网页版了……

这三个里面嘛,Telegram和Facebook Messenger的协议都是公开的,所以应该是可以很好支持的。Hangouts 应该是人们自己分析出来的,所以可能时不时需要更新一下。不管怎么说,至少现在都能用,图片啥的也能看见 (虽然Telegram的动画表情还不行……)。

至于 QQ 嘛,还是去 Windows 上挂着比较靠谱……

FreeBSD 的中文console

其实 FreeBSD 的 console 早就支持中文了,问题是默认没装中文字体,所以显示出来都是方块……
系统提供了 vtfontcvt 工具,用来转换字体到系统需要的fnt格式。它吃俩格式,bdf和hex,我只认识bdf……
于是尝试转换 wenquanyi 的位图字体。源文件是pcf的,先要找个东西转换成bdf,姑且在github找了个:
https://github.com/ganaware/pcf2bdf
(刚看了眼原来有port,当初搜pcftobdf没搜到……)

转完之后用vtfontcvt,冒出来了各种错误。先是说字符宽度不支持。
打开文件一看,这货好像对字体有很多假设,比如所有字符宽度不是目标宽度的2倍就是和目标一样(等宽字体?)。 wenquanyi 里面虽然中文都是一样的,但是其他英文什么的有各种宽度,比如10pt的字体,pixel宽度有2-13不等……
于是先修vtfontcvt才行。这个vtfontcvt问题还真不少…… 除了前面那个假设之外,他还假设每个字符都和目标一样高,是不是写的时候连bdf格式描述都没读过,拿个样例文件就开搞了…… 他还忽略了字符的偏移位置……

修完的vtfontcvt干了这么几个事情:

× 读取FONTBOUNDINGBOX信息,了解全局的基线位置

× 读取字符的BBX信息,这个包括了这个字符多大和应该放哪儿

× 干掉了那个宽度假设。当然,太宽还是不行的……

打算提交这个修改的时候,发现有个PR已经管了一部分问题:

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=205707

但是这个PR修的东西略少,也没管位置偏移之类的问题,于是还是把我修的版本交了上去(一开始还弄错一个版本……)。

之后在这个PR和我的patch的基础上又搞了搞,于是支持多字体叠起来了(wenquanyi的英文太丑了,还不等宽……)。

完整版patch:http://www.henryhu.net/vtfontcvt_full.patch

最后转了个Terminus+wenquanyi的字体出来,用vidcontrol -f弄进去,现在控制台终于可以原生显示中文啦!

转完的字体(Terminus 14pt + wenquanyi 10pt): http://www.henryhu.net/ter-wqy-8×14.fnt