Liuw's Thinkpad

想要赢就先学会输,想要成功就先学会失败

还没有年轻,就已经老去

with 2 comments

去年这个时候,我过着很规律的生活,白天在实验室干活,写GSoC的代码,下班后和同学一起打羽毛球,晚上有兴致还会跑个五千米。实验室事情不多,大家也就自由自在地想干嘛就干嘛。日子过得很充实,虽然收入微薄,但是大家却有着最单纯的快乐。

可是从下半年开始,大家就好像到了另外一个世界一样。未来的规划、人生的抉择,一下把很多人从甜梦中惊醒了。期间我离开了学校一段时间,回来发现,很多东西都已经物是人非。最明显的变化,就是大家的话题变化得很大。

未近毕业之时,大家喜欢讨论去哪吃喝玩乐,自己有什么理想梦想,要做点什么什么事情以免留下遗憾。而现在,更多的是哪个单位好,哪个工作有前途,哪里的房价可以承受,啥时候找对象结婚,之类之类。少不更事的小朋友都成了深谋远虑的中年人,在还没有真正享受“社会人”的新身份时,就已经迅速老去;还没有机会去探索这个世界,就已经开始固步自封。

这样的变化,是谓“成熟”与“担当”,还是称作“圆滑”与“世故”?水平有限,实在看不透。这个社会对特定的角色有特定的期望。有人主动寻求这样的变化,也有人虽不情愿但是不得不变化。无论如何,社会与历史的车轮都不会停下。

Written by liuw

May 4th, 2012 at 5:05 pm

Posted in 生活

Xen和KVM的一些胡扯

without comments

我始终是一个相信阳谋多过阴谋的人。在工程至上的开源软件世界,所有策略都是可以预知和分析出来的。

“开源”二字,对于不同的人来说可能有不同的理解。对于某些国内的公司、高校来说,国外“开源”就意味着国内的“自主创新”。对于个人开发者,“开源”也许意味着搞个github、google code、bitbucket之类的账号,把自己的一些成熟或者不成熟的代码放到网上与大家共享。对于依赖开源软件的公司或者社区,“开源”最主要的作用就是构建经营生态圈,为自己的生存和发展打下基础。

在开源软件的世界,有着同样的目的的几个产品互相竞争是很正常的事情,比如Xen和KVM就是如此。首要条件是产品能够达到基本的标准,产品本身是基础,不好后面就没有戏。构建经营生态圈是非常费时费力的一个事情。

Xen在过去几年在社区方面失去了很多阵地,究其原因就是公司方面对于社区不够重视(以前都忙着赚真金白银了)。比如说在Ubuntu 8.04的时候Xen是被直接打包到系统中的,但是9.x版本到11.x版本里面,由于公司方面没有专门聘请packager,没有人去维护这个package,它就被移除了。而最近的一个Ubuntu的survey也反映了这一点(虽然platform team内部对于统计方式有点疑问),Xen的占有率不是很高(其实我个人觉得数据已经比预想的要高了)。可以说,前几年的疏忽造成的影响现在开始慢慢浮出水面了。

而现在公司的策略已经转变了,准备以开源产品为基础吸引用户,然后为有需求的用户提供高阶的商业版本产品。我觉得这个套路倒是很正常,RedHat其实就是一直这样发展的,而这个非常传统的软件公司好像一开始不大转得过弯来。现在还不算晚,开始统一产品线,也开始在社区方面加大力量。比如说现在开始和一些开源云计算平台互通、聘请一些开发人员专门为主要发行版打包软件、专门成立团队来经营社区、放出商业产品的社区版本等等。

在开源软件界,Xen的最主要竞争者是由RedHat支持的KVM。但是Xen和KVM又不完全是一个层面上的产品。Xen本身只是一个hypervisor,实际的驱动放在Linux内核中,有自己完整的工具栈(libxc和libxl都是Xen的一部分),还有QEMU等用户空间程序,还有第三方支持的如Remus、XSM等扩展功能,所以Xen是一个很庞大的“东西”。而KVM则相对简单,只有内核部分以及作为模拟器的QEMU。KVM工具栈常见的是libvirt,它不属于KVM的一部分,其他的什么扩展功能也不是很多。打个不大恰当的比方,Xen就像FreeBSD,而KVM就像Linux。

KVM是一个很优秀的产品,它的设计非常简洁,概念相对Xen来说少很多,组件少开发维护起来方便,使用起来也方便(直接加载模块即可)。现在有RedHat的支持,发展起来顺风顺水。那么Xen能在什么方面与KVM竞争呢?所谓“成也萧何,败也萧何”,“十年河东十年河西”,Xen的复杂架构,让它在前硬件虚拟化时代领先,硬件虚拟化时代落后,也许在将来还是有机会反戈一击的,但处理不好,那也是无翻身之可能了。

先退一步来观察一下Xen虚拟化系统。整个系统由hypervisor、Dom0以及其上运行的DomU组成。hypervisor负责所有特权操作,Dom0负责管理和驱动硬件,DomU运行用户的任务。不特意提及的话,也许基本没有人会想到“微内核”这个词吧。实际上Xen系统可以看作一个比较实用化的微内核系统。今后Xen将有可能把一些关键的组件从Dom0中分离到各自的独立虚拟机中,这就更像一个微内核系统了。分解之后的好处就是隔离性更加好,关键组件可以独立重启。想想Dom0重启而DomU还可以正常运行,有趣,哈哈。网卡驱动有bug崩溃?反正在独立Domain里面,不会把整个系统搞垮。在公有云环境下,这样就意味着各个租客之间有更加好的独立性,服务可靠性会高点。也许——仅仅是也许——这样也意味着可以得到更好的安全性——Xen hypervisor的code base比起KVM用到的一整个Linux系统还是小很多的。(微内核的曲线逆袭?)

而Xen现在面临的问题,也是和架构有关。由于组件多,各个组件分属不同的社区,所以开发起来反而有点掣肘的感觉。而Xen最要警惕的就是复杂度问题。前面提到的分解,总有一个限度,不能无限制的随意分解。现在各个组件之间的兼容、上下游之间的兼容已经很让人头痛,若以后处理不好,只会更加恶化。而现在公司针对这个问题的策略就是组建platform team,在Linux Kernel和QEMU社区里加大影响,及时把Xen的一些变化反馈到上游。

而Xen的另外一个优势,就是产品的完整度比较高,从安全框架到高可用方案,从hypervisor到完整的云计算平台都有。而KVM多是通过libvirt接入到第三方云计算平台,一些增强功能从Linux系统中得到,更高级的需要RedHat来提供支持。这个点最后结果如何,还有待观察。

现在Xen正在社区方面发力,KVM也在高速发展,这一年将是很有趣的一年。

Written by liuw

February 22nd, 2012 at 9:34 pm

Posted in 戏言

惨痛教训一则

without comments

这几天都在装机器,开发机、测试机、测试服务器,费了不少时间。

代码原来就是在测试机上的,所以先git clone到开发机上来,然后把测试机重新格掉了,然后再clone回去。

然后发现我新写的代码都不见了,这才想起来那些代码都只是git stash掉,没有真正commit,所以clone的时候是没有备份的。

老老实实重新写了,又费了一个半小时。

吃一堑长一智。以后一定注意。

Written by liuw

January 29th, 2012 at 5:27 pm

Posted in UNIX-like

Tagged with , ,

一个简单的AHK脚本

without comments

#IfWinActive ahk_class Emacs
Capslock::Control
Control::Capslock
#IfWinActive

假如当前的ahk_class是Emacs,那么交换Ctrl和Caps,否则不交换。

Written by liuw

January 22nd, 2012 at 4:21 pm

Posted in 分享

Tagged with , , ,

Emacs里面的MiniMap

without comments

Sublime Text的MiniMap比较有特色,正在想是不是能为Emacs也搞一个类似的东西,没想到已经有了。(不知道MiniMap是啥的,请移步Sublime Text的网站)

http://www.emacswiki.org/emacs/MiniMap

Emacs MiniMap的tricky之处在于,它并没有实现什么新的GUI控件,而是直接新开一个buffer,把font face缩小一下,达到MiniMap的类似效果。想出这法子的哥们可真行。

不过这也意味着MiniMap在字符界面是下不可用的——不过这谁又在乎呢,毕竟Sublime Text连CUI的版本都没有。在Emacs里面用这么小的代价实现相似的功能,一方面是Emacs这货实现是强大,另外一方面是写这东西的哥们实在也挺有想法的。

不过目前看来这个MiniMap功能是有了,但是体验不算特别好。用vertical split开的window在C-x 1之后就不见了,这可是很不爽的。依我的想法来看,能不能想办法让minimap window比较特殊一点,于是自己fork了一个别人已经做了修改的版本hack了一下。目前我主要hack了三个小地方:

1. 为delete-other-windows做了advice,总是保留MiniMap window;
2. 修正了make-overlay的一个错误参数,不改的话为空文件生成的overlay是不对的;
3. 只为图形界面的Emacs创建MiniMap,毕竟用了font face,在字符界面下意义不大。

随便改了一下,感兴趣的就拿走。

https://github.com/liuw/emacs-minimap

MiniMap的实现也不算特别稳定,有时会让Emacs死掉的。但是我没有那个水平,也懒得去debug了——说实话我还是用CUI的Emacs比较多点,看这东西单纯是觉得新奇而已。废话少说了,上图。

MiniMap效果图

Written by liuw

January 15th, 2012 at 6:15 pm

Posted in 分享

Tagged with , ,

Can’t help writing this down: is it really so hard to find a buzheteng Linux distro?

without comments

It’s SUNDAY! Time for ranting!

It may seem weired that I rant in English — anyway I’m not a native English speaker and the best rant always comes from one’s mother tongue. BUT there is no Chinese input method on this system, so I have to writing this down in English.

You can bet I’m on Linux now, yes, you’re right. I’m playing with Fedora 16 in a live USB key. The default desktop is Gnome 3 — another disaster for a long time Gnome 2 user. It seems that the Unity-like UI is getting more and more popular. Well, I can adapt myself to new UI. However, PLEASE do better design. The new UI is driving both ordinary users and developers (who use Linux as developing platform) away IMHO.

For new users / Linux noobs: Configuration ability is very weak — look at those few icons in the control panel. What’s worse, the default style of the desktop sucks — large portion of my screen is occupied by useless window frame and menu (take firefox as an example). I wish I could tweak font size to make it not so ugly, but I just can’t find a tool to do that. This will eventually lead to comments like “Linux is ugly and difficult to use”.

For developers: How can I tweak this system? I need my menu back! Those visual effects are good, but they don’t add up productivity. Grouping appications is a good move, but the big icons scattering all over the screen makes me feel bad. Searching applications? That works on the basis that your application shows up in the groups. In a word, they are not helping at all. My observation is that few of my friend (low level) developers will use either Unity or Gnome 3.

Well, some other suggestions include switching to Arch or Gentoo. But I’m not very into those two distros. My principle is “buzheteng”. I would rather focus on my job. I’m really tired of writing configurations line by line with my bare hands. I need a out-of-the-box distro.

How about switching to other desktop environment? KDE? No, I had very bad experience long time ago which effectively shadows me nowadays. LXDE and XFCE? They are just too light-weighted, I need full featured desktop.

Linux desktop is evolving, that’s good. I’m just too out-dated to catch up with its pace. I can not appreciate the new changes due to my out-dated tastes. I’m considering buying a Macbook now, seriously.

UPDATED:
To my surprise, KDE works much better than Gnome 3 for me. The UI is smoother than I expected. But (well, there is always a “but”) the concept of “activity” is driving me mad (What? I need to switch “desktop icons” activity to view my icons? Then switch back to “desktop” activity to see my applications?). Grouping applications is one thing, grouping activities is another. I don’t like the idea of switching among different activities just to separate what you’re doing, I would rather use different workspaces to achieve the same goal.

Written by liuw

January 8th, 2012 at 4:29 pm

Posted in 戏言

Tagged with , , ,

Emacs中的Rectangle

without comments

记一下Emacs里面的rectangle相关的操作。

Emacs的rectangle概念,就是你mark的起点和终点之间围起来的区域。由于rectangle没有专门的模式去select,所以在显示方面,transient-mark-mode不能只高亮这个rectangle。像在Vim里面,可以用C-v启用Visual mode blockwise,看起来会漂亮点。不过,看不看得清楚并不影响操作。

在Emacs中输入C-h a,然后输入rectangle就可以得到一些相关的函数。

比较有用的是对rectangle的delete、kill、yank操作。

然后还有replace-rectangle、string-insert-rectangle、string-rectangle。

shortcut就不写了,我是M-x党。

Written by liuw

January 7th, 2012 at 6:32 pm

Posted in UNIX-like

Tagged with ,

Oops debug小经验

without comments

常在河边走哪能不湿脚,写程序没有遇到bug那是不可能的。内核菜鸟写代码,出个kernel oops那更是家常便饭。

从我目前遇到的各种oops来看,debug首先要检验能否稳定重现bug。

若不能稳定重现(触发条件不一,Oops信息不一),那么恭喜了,基本是出现竞态了。这种问题可大可小,当然最后的问题肯定是在自己的代码里面的(前提是其他模块都是稳定的)。这个时候当然是得先把code path都走一遍,检查是不是逻辑有问题;之后就是检查各种锁了。

若能稳定重现,那么相对好办点。慢慢用printk定位到出问题的语句就可以了。objdump反汇编一下,配合oops里面的stack trace信息看看大概是哪个语句出问题了,不过个人觉得帮助不大。更加高级点的工具我基本不会用,囧。

最NB的debug工具还是printk,因为它在任何上下文都是健壮的,这是一个多么伟大的特性啊!(囧)

什么?没有stack trace?你没有开内核的debug功能?当我啥都没说吧。

Written by liuw

January 6th, 2012 at 3:37 pm

Posted in Programming

Tagged with , ,

高雅是装不出来的

with one comment

选了这么奇怪的一个题目,我想写啥?其实也没啥,也就年末随便写点东西纪念一下快要过去的一年。

在真正开始敲键盘之前,我的脑子里面还是有很东西想写下来的;但是真正开始敲键盘,又觉得好像没什么好说的了,刚才的妙语连珠(脑子里的)突然变成了理屈词穷。再扯就远了,打住。假如我在写高考作文,还没看到这里阅卷老师大概就已经把我弊掉了。

回归主题,高雅是装不出来的。就像我,下了这么多贝多芬的交响乐打算陶冶情操,最后却还是听你爱我爱的流行歌比较多点;买了这么多管理学、心理学的书打算充实自己,最后还是看刘慈欣、王晋康的科幻小说看到不能自拔;下了这么多BBC的记录片打算练练听力,最后还是每天端着饭碗流着哈喇子到优酷上看Dota视频;收藏了不少有趣的网站,最后还是每天刷CB、人人。种种的决心、愿望,最后都是尘归尘土归土,平时该干嘛还干嘛,吃了玩,玩了睡,睡了吃,永堕轮回。

老大不小了,再想着去改变点什么,总是觉得心有余力不足。种种装逼的冲动,最后也都慢慢地消磨干净直到灰飞烟灭。还有什么意思?还有什么意思?好吧,既然装不成高雅,能不能让自己真的高雅起来。想透了,有时候就会觉得所有的外在表象都是那么的无趣,原来一个人只要思想自由,那么真的没有什么东西可以阻挡。装逼装出来的,是假高雅;看透世情,回归本心,才是真高雅。只有从内心真正开始追求一个更好的自我,外在的行动才有意义。

所以,现在我偶尔也听听贝多芬,但还是更喜欢流行乐;乱七八糟的书都看,不再把眼光放在那个小框框里;BBC在看,但是其他轻松点的视频也没有戒;有趣的网站看到了还是会收下来,但是CB和人人基本每天都得刷;每天都锻炼,不为什么好身材,只想要强健的体魄;技术方面也学了点东西,为社区做了微小的贡献,不算什么大事。说到底,我只是想有一个更好的自己,而不是想有一个“别人眼里”更好的自己。原来我最希望达到的境界,是看透世情,而不是阳春白雪。我慢慢修炼着我的俗人之雅,把看到的、听到的、做过的内化为己用,渐入波澜不惊之境,甚好甚好。

不用再盘点什么,一点小事不需要大肆宣扬。这一年,我有很多的遗憾,也有很多的理想。遗憾已成过往,不可再追;而理想是未竟之事,即使再远也还可盼。第天都在念一句话“人总是要死的”,望我有生之年,能够实现这么多或大或小中的理想中的一个,能够得到一个更好的自我。

最后奉送一句,大家都不用再装了,装逼是很辛苦的。哈哈哈哈哈哈哈哈。

Written by liuw

December 30th, 2011 at 8:00 pm

Posted in 生活

吐槽一下Google Group

without comments

本来这个时候我应该在写论文,但是我还是忍不住吐槽一下:我觉得Google Group真是挺奇葩的一个产品。

好话先说在前头:Google大公无私,给大家免费做论坛,免费做邮件列表,让大家在互联网上的每一个错别字,每一句吐槽都(有可能)永世长存,真是了不得。这个精神我是很赞许的。

但是,我不爽的地方就是,Google Group是一个论坛和邮件列表结合的怪胎。我相信国内很多技术人员都是从论坛起步的,所以基本上都是把Group当成论坛用(即是在网页上回复),但是这样对于我这种把Group当成邮件列表来用的人来说就比较痛苦了。

这不是大家的问题,而是Group这个产品具有双重的定位。你说是应该使用邮件列表的标准管理还是论坛的标准管理?这是一个众口难调的问题。

要是按照邮件列表的标准管理,那么就有一些基本要求:

  • 限制主题。这个自然不用多说。一些话题比较泛的Group,至少也要有对应的前缀要求(如OT)。
  • 减少无意义的发言(比如说“多谢”、“顶”之类的在论坛中的习惯)。因为每一封邮件都是实实在在发到订阅者的邮箱中的,是会占用空间的。假如一个列表订阅人数众多的话,这些邮件就会占用很多空间,不够低碳。
  • 注重线索化。只回复想要回复的邮件,而不是每次都在最后回复。随意回复造成邮件客户端线索是乱的,没办法看。这个问题在Gmail和Group的Web界面中不明显,但是对客户端是一个灾难。

就我看过的比较有限的几个中文技术相关Group来看,管理上还是比较“随意”的。当然这些Group的话题都是比较广泛的,要是以一些开源软件的development列表的要求去管理也不合适,我相信管理员也是很努力去管理。但是由于Group产品的先天定位,管理起来着实费力吧。

我每次看到一些邮件就觉得心里拔凉拔凉的,比如说:

  • “收集了XXX资料”——用论坛模式看,有sticky操作,但是邮件是不行的。
  • 带图或者其他一些不小的附件的邮件——再次强调不低碳啊。
  • “谢谢”“顶”——前面解释了。
  • 用html格式发出的邮件——个人爱好问题,但是就我经验来看,这种邮件基本上会把格式搞得乱七八糟。
  • “XXX想邀请你聊天”等等的有意无意的SPAM。

好吧,那我用论坛模式玩不就没有问题了吗?不好意思,不是我死板,而是我实在没有精力每天都去开这么多网页慢慢找有什么更新,以及这些更新中有什么是我感兴趣的内容。邮件可以用filter分类,排除不少干扰。

Group的论坛模式降低了大家交流的门槛,还是很好的。但是鱼与熊掌不可兼得。人微言轻,我想我还是老老实实潜水吧。

Written by liuw

December 30th, 2011 at 12:08 am

Posted in 戏言

Tagged with ,