Shell's Home

Mar 26, 2009 - 1 minute read - Comments

夜飞临北京有感

我不是第一次在夜间坐飞机,但,我是头一次在夜间坐飞机的时候在窗口俯瞰中国的大地。不得不说,我彻底被惊呆了。 开始的一段时间,天上有云,黑漆漆的什么也看不见。但当飞过一段时间后,我在机舱里百无聊赖中随意向外一瞥,眼前却展现出一副瑰丽的景色。飞机不知道什么时候从云层中穿了出去,大地清晰可见。一条条的街道和街灯蜿蜒纵横,将黑色的大地切割成各种形状。有的地方灯光尤其密集,有的地方则疏散一些。远远望去,好似大地上的一块块斑纹。在一块一块的斑纹中,零星点缀着白色的灯光。虽然云层已经过去,但是下面仍有少量的薄雾笼罩在天上。薄雾散射灯光,仿佛在水面上倒映了天上的银河。我凝神细看,依稀可以看到一个街道上的街灯,映照在街道上的影像。这段道路前后都没有灯,不知道是坏了,还是根本就在山中。但是三两盏灯映照在道上,形成一个独立的,小小的天地。也许这是某个少年回家必经的道路,也许这是某个老人天天散步的场所。但是,无人知晓,我,这样一个天上客,在3000米以上的高空,偷窥着这个小小的世界。

Mar 22, 2009 - 1 minute read - Comments

三月西湖游记

嘿嘿,跑来跑去做项目虽然辛苦,但是有一个好处,那就是有空的时候可以按照当地情况跑出去旅游。贝壳今天稍稍有空,出去西湖逛了一圈。 说到西湖,其实贝壳跑了无数次了。不过住的虽然近,但是岳庙和苏堤还都没去过。没去过苏堤和三潭映月,怎么能叫去过西湖呢?贝壳今天特意去了一次岳庙和苏堤。岳庙没什么好说的,只是门票稍稍有点不爽。25,说贵倒是不贵。不过我们来接受爱国主义教育还要自己买单,这个——倒置了吧? 苏堤就在岳庙的正门过去。贝壳刚上苏堤,就有人叫。今天真够凑巧,是贝壳在浙报的一个客户,今天也是陪人出来走走,正好碰到。杭州这个地方真的不大,今天就碰到了三个缘分。今天的风景果然应了某人的话,西湖美景三月天,春雨如酒柳如烟。按照此人说法,如果今天突然下雨,我就应该碰到一位姓白的女生借伞—— 问题是,我有伞阿。幸好今天没有下雨,否则就不是西湖美景,而是计算机产品的末日了。贝壳今天出门,就带了那台HPmini1017。不是多心哦,下面就用上了。 问题,苏堤中间有个醉什么亭,是醉什么呢?那个字很像是书字,贝壳没仔细看,差点还以为真的是醉书亭。后来有位老人就着话题讲起了古,这个字不是书字,而是春字。哦?贝壳掏出HPmini,架上蓝牙和GPRS,上网一查。这位老先生还非常有名(http://talkdream.blogbus.com/logs/3839413.html),在google上找"苏堤醉春亭",有至少两篇关于这位先生的blog。不过贝壳就着往下一看,差点笑喷出来。这个blog是06年写的,到现在已经有两年半了。这位老先生的讲话线索一点都没有变。浪漫的情人堤后面果然是关于矿泉水的问题,大家还是一如既往的一哄而散。贝壳凑上去,问问这位老先生的底细。他应当是住在西湖附近,以前经常跑到苏东坡纪念馆去看。后来扩建,原来的介绍内容全都变了。于是跑到苏堤上给人科普,顺便讨点矿泉水费。据说03年非典事发前还上过中央4套的节目。难怪他讲的都是苏堤,醉春亭,三潭映月呢。要跑上来一个阿炳,别说记得年代,就是阿炳的原名都未必记得。不过这位老先生毕竟是免费科普,矿泉水费也不是强要,也不是天天来。有缘的碰到没缘的拉到,碰到也算是个缘分吧。 贝壳在听完科普后,立刻上推,更新推,然后再上gtalk,散播八卦散播爱。(MSN上被我冷落的同学们,不是贝壳偏心,TMD只要用GPRS就打不开MSN) 而后,贝壳在花港观渔走了一圈,出门,发现——该死的杭州又堵车了。偏偏从苏堤南面到天目山路的所有车都会被堵,咋办呢?这个时候,贝壳就充分发挥了自己曾经被忽悠过所练出来的——地图通。查了一下google map,从龙井村过去不堵车。记得从龙井村过去是坐游三,到玉泉,玉泉坐15,到天目山回家。好,就这么决定了。 于是贝壳出了西湖,往西走。向着茫茫群山就走了进去…当然,走没多远就看到了游三车站(大家请记住,这里的度量衡是以贝壳的标准衡量的,一起走过路的同学应该深有体会,尤其是高中同学,要是您也学着走,脚抽筋贝壳恕不接待投诉)。一路上山色真好阿,路旁还有不少喝茶的茶亭,当然,价钱估计便宜不了。实话说,贝壳很想带某同学的朋友到这里,直接自己泡茶自己喝,估计也很爽吧。估计游三路是杭州所有线路中山色最好的线路,有兴趣游览的同学一定不要错过! 最后么,当然,贝壳回家了,于是有了这个blog,事情基本这样结束。 真的结束了么?第三个巧合呢? 贝壳的一个朋友和贝壳说,她的一个朋友是贝壳的blog读者!OMG,今天是什么日子?

Mar 20, 2009 - 1 minute read - Comments

要死的磁盘挂载

follow了我推的人应该都看到了,从昨天到今天,贝壳都在狂找U盘挂不上去的原因。贝壳的两个本子,一个T61一个HPmini,明明都装的Debian testing,两边的配置都一样,怎么就是一个可以挂载U盘,一个就是无权限呢? 贝壳首先进行了包检测,是否少装了包,结果没有。然后再进行了配置对比,也没有发现差异。而后,贝壳祭出了绝技,strace和dbg的调试。一跑,贝壳傻眼了。一台机器是AMD64,一台是i386。CPU和内核完全不同,导致整个行为没有一点可对比性。难道无法挂载是因为CPU的问题? 在贝壳长达10多小时的排查后,贝壳无意中打开了HPmini的fstab文件,发现一个让人绝倒的事实。贝壳的HPmini是从u-live上面镜像过来的。因此继承了u-live上面LABEL=live-ntfs /的设置。而亲爱的gnome-mount是会启用这个文件的—— 结果,这就是贝壳悲惨世界的原因——

Mar 17, 2009 - 1 minute read - Comments

上网本,UMPC,手机的混血

贝壳最近又手痒想败家了。对象是上网本,UMPC,或者HTC G1。不过以上三者都不怎么完美,要能结合起来就非常有诱惑力了。要是价格低点那就更—— 不说瞎想了,就说说上网本,UMPC,G1的概念和对应客户。以及贝壳为什么想要混合以上几个东西。 UMPC是指和电脑具有类似构架,但是更为小型的电脑设备。当然,官方有更严格的规定,例如最低分辨率,触摸屏等等。UMPC和上网本的区别主要就是官方的几个内部规定,满足就是UMPC,不满足则是上网本。但是对贝壳来说,不管这些,好用就好。贝壳希望的机器,具有7寸的触摸屏幕,对应的键盘。这样的话,贝壳可以用键盘来操作电脑(熟悉的人应该记得贝壳的快捷键使用和单手操作电脑的绝技吧),并且触摸屏可以剩下一个触摸板的空间。 但是,仅仅以上条件却不能让贝壳满意。为什么呢?首先是因为体积。现在的上网本经典大小是230x160x30,这么大的一个家伙,就算带出门也够当板砖用了。其次,这东西不支持SIM卡插槽,这造成了非常麻烦的问题(当然,支持恐怕是更麻烦的问题)。贝壳无法通过这个本来直接上网,打电话,管理电话。 其实,后者的特性主要是针对HTC G1去的。现在的手机基本已经相当的智能,但是却有两个先天的问题。一个是没有能让人用起来很爽的键盘!这样写起程序来非常费劲(旁:汗—— ..-_-||||,手机上还不忘编程,真TMD是程序员)。其次是构架不同于经典的x86构架,扩展和使用程序都非常不方便。 如果一个本子,有200x150x30的大小,0.8kg上下的重量,支持SIM卡插槽,支持触摸屏幕,使用SSD硬盘。还可以标准的安装debian,使用linux下的各种程序。那基本就是贝壳梦想中的本子。当然,如果价格能在3000以下更好….贝壳可以拿这个本子到处跑(虽然体积还是个问题),到处写程序看电影看小说都不成问题。还可以打手机(那可以直接从thunderbird中拨出阿~~),GPRS上网(TMD混蛋中国移动,现在 3G还没出来呢)。 当然,现在很多手机基本也可以实现上面的功能,除了一个标准尺寸的键盘外。但是可惜的是,这些手机的系统都不是标准的系统,一般用户是无法重写和定制的。如果按照刚刚的方案来定制,那么整个机器上跑的就是一个完整的系统,甚至可以跑一个XP起来。稍微定制一下就可以当手机专用系统用了。像贝壳这样的编程人员更可以方便的给手机编程,来扩展手机的功能。 还有更好的一个方案,就是将手机回归原始。使得整个手机除了电话和短信外,什么功能都没有。而后给手机指定一个标准接口,在需要进行复杂应用的时候,直接插在上网本的外面当外接设备使用。这样手机的屏幕和键盘都可以极度精简,体积小巧方便使用。接入电脑后,非常方便的可以浏览网页,观看电影等等。其实本质上就是一个强大的手机(当然,要用经典构架)外接一个大型(相对大型)的显示器和键盘系统。

Feb 16, 2009 - 1 minute read - Comments

Remember The Milk

这是篇广告文。 不知道你有没有听说过GTD?我长话短说介绍一下,如果你每天都有成堆的事情要做,经常忘记做什么事情,每天都在焦虑是否有什么被忘记了。或者你经常被意外的事情打断,无法顺利工作,甚至忘记正在做什么,那么你真的需要好好看一下Get Things Done这本书。这本书的主旨在于推荐你一种生活方式,一种不需要焦虑是否忘记了什么的生活方式。他的步骤很简单,最少只需要纸和笔就可以进行(当然,贝壳推荐用电脑)。如果你需要做什么,用纸记录下来。做好一件事情,用笔划掉。每隔一段时间,回顾一下,什么事情还没做,什么事情拖沓了,哪些事情应该先做,哪些事情应该后做。简单来说,就是Todo List。 那么Remember The Milk(下面简称RTM)好在哪里,值得贝壳特意推荐呢?事实上,贝壳在GTD上换过不少工具。Mozilla Sunbird,太庞大,要用的时候老去开笔记本?gtodo,很小巧,问题大同小异。Rainlendar,很漂亮,显示还不错,Todo List就碰到了一样的问题,贝壳总不能天天开着笔记本走路吧(虽然实际情况差不多)。Google Calendar,倒是非常好,行事历丰富,支持短信提醒,同步选项众多。Outlook,Sunbird,Rainlendar,甚至可以直接同步到手机上(不知道的同学,请参考GooSync)。但是有个致命缺陷,无法将事件标记为完成。这样要表示完成就只有删除事件,导致无法回顾。因此,贝壳最终选择了RTM,配合Google Calendar使用。 贝壳已经将RTM设定为主页,这是贝壳的第二个主页,头一个是iGoogle,可惜做到后来太杂乱无章,废弃。每天贝壳空下来了,跑到RTM上,看看今天需要完成什么事情。如果有突发事件(例如你在写论文的时候突然需要找一些资料,有人突然说贝壳来一下),那么评估一下突发事件的状态。一般来说,如果突发事件没有上下依赖关系,没有回顾的必要,没有突发中的突发(这是最主要的),那么完全可以不用记录。否则你需要先记录突发事件,将他标记为最优先。如果不这么做,当再次发生突发事件的时候,你要么补充记录上一个的,要么就会忘记事情。一般来说,10分钟以内可以处理掉的事情是很少被再次打断的。当然,如果可行,贝壳推荐突发-延后的处理方式。就是说,当突发发生后,将突发要处理的目标记录下来(例如,12点前去客户那里一下),标记为最优先,然后接着处理当前的事务。这样一般只会中断1分钟的思考,不会造成记忆的混乱,你的工作可以顺利的继续下去,不会受到各种因素的干扰(当然,必须先处理例外,例如:贝壳来一下),也不需要担忧忘记事情。 如果在不能开机的状况下,例如路上,贝壳优先考虑使用RTM的mobile版本。如果不行,那只有记录在写字本里面,回去补充。而后,每天晚上,贝壳会翻看一下今天的记录,看看明天有什么需要做的事情,哪些优先,哪些可以推迟。如果有空,可以做什么计划好的事情。等等等等。那么同学们会问了,Google Calendar呢? GC可以和RTM结合,从而看到RTM的事件列表(方法就自己gg吧,贝壳不废话了)。当然,这只是有限的结合,意义并不大。GC真正的意义在于方便的和手机同步,从而对固定议程,重复议程有很好的显示和提醒作用。例如记忆生日,提醒周报,记忆飞机等等。这个和RTM的GTD并不冲突和重复。

Feb 12, 2009 - 5 minute read - Comments

磁盘对倒迁移

贝壳的本本坏了。 Acer的质量真不怎么的,只是正常使用而已,买来不到一个月就返修。费时费力不说,还差点因为IWT的问题无法修理而要付钱。结果刚刚过保半年,总共买了一年半后,坏了。 趁机问老板要了一台ThinkPad,虽说联想的做工不如IBM,不过依旧非常舒服,不愧是商务王者。但是,贝壳原来在笔记本上配置的复杂到死的系统,要是在新机器上一一重装的话,费力先不说,项目肯定是无法按期完工了。 贝壳修旧机器的时候,拆下了硬盘和电池。这里顺便提醒送修笔记本的同志们,记得拆下硬盘和电池。硬盘是你机要数据的所在,将来要恢复系统就全靠他了。而电池——到时候要是发现电量少了,这种东西谁都说不清楚。所以还是拆下来的好。那么,最低限度的,要从旧硬盘上读出数据,否则很多东西完全无法运作了。所以——贝壳找人借了一个移动硬盘盒。嘿嘿,这种东西可以将笔记本的SATA转换成USB使用,从而在新电脑上直接读取旧电脑数据。 为了不重装电脑,贝壳决定在新电脑上直接使用旧电脑的系统。将旧电脑的数据整个复制到新电脑上,就是俗称的磁盘对倒。下面是一个关键的问题,是重建文件系统,然后复制数据好呢?还是直接镜像整个系统?如果是复制数据,相对的数据清晰干净,但是容易发生一些莫名其妙的错误。如果是整个镜像,对了错一并带入新系统。贝壳在这里选择比较保守的方案,镜像整个磁盘。 首先贝壳从U盘启动(刚刚做了U live debian,冲着拯救去的系统,不知道是说幸运呢,还是乌鸦嘴呢),而后删除原有磁盘的所有分区,输入dd if=/dev/sdc of=/dev/sda,将整个磁盘复制到新电脑上。这里注意,贝壳没有设定区块大小,因此速度比较慢,正确的设定大小有助于加速复制。贝壳的数据是 120G(因此向公司申请的电脑最低是120G硬盘),复制速度是10M/s多一点,复制时间大约是3小时15分钟。从晚上9点一刻一直到晚上12点半。在完成复制后,直接重启,从硬盘启动Linux,成功! 在几乎没有任何干预的情况下,Linux就可以开机成功,不得不说这给了我很大信心。然后我去启动windows——不动。 贝壳被迫回到了Linux,仔细调试驱动,设法最快的弄出一个可用的系统。下面详细记录了ThinkPadT61上安装Debian的全过程,有兴趣的可以看看。至于六牙四皂和某猫小姐就可以跳过了。 首先贝壳调整了复制后的硬盘上的分区。由于分区表是按照120G的时候计算的,因此新硬盘上的分区使用不足。启动gparted调整大小后,sda6占用了全部新增空间,暴增到200G。而后贝壳开始查看pci设备和驱动。 # lspci -nn 00:00.0 Host bridge [0600]: Intel Corporation Mobile PM965/GM965/GL960 Memory Controller Hub [8086:2a00] (rev 0c) 00:02.0 VGA compatible controller [0300]: Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller [8086:2a02] (rev 0c) 00:02.1 Display controller [0380]: Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller [8086:2a03] (rev 0c) 00:19.0 Ethernet controller [0200]: Intel Corporation 82566MM Gigabit Network Connection [8086:1049] (rev 03) 00:1a.

Feb 8, 2009 - 1 minute read - Comments

回京感想

昨天临时接到通知,贝壳周五(二月六日)要去北京出差。具体情况不多说了,不过——贝壳要回老家了。可一年半没回去了阿—— 早上5点半从杭州的宿舍出来,赶7点半的飞机。打车走了快一个小时,杭州的机场确实也够远的。师傅紧赶慢赶总算给我提前40分钟赶到了机场,离停止办理手续只有10分钟。这点住北京就很有优势,出门10分钟就到机场。6点半起床,赶8点的飞机绰绰有余。飞机很顺利,事情很顺利,贝壳就不多废话了。唯一的插曲就是贝壳的linux不支持投影仪,搞了半天总算在老板的机器上成功演示。 别的不多说了,就说说北京的风景吧。多了一堆莫名其妙的建筑,其中多数是政府机关的办公楼。贝壳原来认得的地方全都不认得了,鼓楼,宣武门,东直门,也就长安街还保持了一点原来的风景——当然,不算那个巨蛋的话。东直门改的面目全非,斜街那里完全看不到了,建了一个什么汽车中心。西单图书大厦已经快7年没去了,门口那堆书的摆设还在,但是被围起来不能坐了。西单文化广场被修的光怪陆离,完全看不出原来的样子。灵镜胡同没去,不过想必也不复旧观。 贝壳干完事情,被放到了丽都。本来准备和几个高中同学聚聚,可无奈前天才刚刚接到通知。刘江陵同学和佟国美同学非常义气的回了消息,不过很遗憾的,都没赶上机会。李鸿国比较忙,就不说了。老猫直到贝壳快闪了才有反应,够迟钝的。贝壳最后无奈的决定,不去顺义了,直接去机场,第二天可是8点的飞机。丽都旁边贝壳只认得915,那是去顺义的。所以贝壳弄了部车去机场,走的是附路。 机场附路,算算可是有年头没走了。自从在牛栏山上学以后,京顺路通了,附路修路。贝壳就主要坐915去北京,很少走附路了。现在的附路路面都翻修过,比原来顺了很多。运河上的桥还是那个老样子,不过有一段因为要修轻轨,因此被重修了。到了机场,贝壳碰到了一件非常囧的事情,贝壳被锁在家门外了。算算都26的人了,居然还会碰到这种问题。家门口等家长回家,又不是小学生。不过无奈的,贝壳就碰到了这种事情。老妈去上海探亲,老爹上班。大老远的从上海来北京出一次差,居然被锁在了自己家门口。无奈,贝壳出门转一圈吧。 从家里出来,贝壳绕着机场走了一圈。发现机场多了很多小店,建筑也被翻修过了。想必是为了迎奥吧,机场这里是最敏感的地方。唯一没变的就是机场高速的收费站和贝壳的破窝。呆在小时候常爬的假山旁边,不出意外的发现当初奋斗(真的是奋斗,贝壳小时候很胖)很久才能爬上去的山顶差不多就是一伸手的距离。公园的松树还在,前面的大广场却没人跳舞了。工人文化俱乐部(原来唯一的作用就是放电影,我们过去常常在这里看)被改成了XX货真价实的俱乐部,上了金色的招牌,不过恐怕就和工人无关了。最大的变化是贝壳的小学,机场二小,永远的消失了,变成了94中机场分校。估计是机场这里去94中的太多了,干脆弄个分校过来,省得费力。家后面的一排树全推了,改成了通向三号航站楼的大道。 坐在家门口的公园旁边,贝壳感觉五味沉杂。这么多年在外面,始终觉得自己是个过客。没想到到了自己家,才发现家已经不再是从前的样子,自己还是过客。上次出差,呆了两个月。这次出差,呆24小时。贝壳始终来来去去,来了又走走了又来,到底哪里才能停下呢?

Jan 30, 2009 - 1 minute read - Comments

MSN Space可以通过邮件创建

听说MSN Space Blog可以通过邮件创建,今天测试一下。 如果大家正确的看到了这段内容和前面的缩进,可以试试通过邮件编写blog。对于经常出差离线写东西的人很有效哦。

Jan 26, 2009 - 1 minute read - Comments

牛年快乐

过年了过年了 祝大家牛年快乐,万事如意 贝壳敬上

Jan 20, 2009 - 1 minute read - Comments

24点计算原理和程序

最近开心上狂算24点,于是贝壳搞了一个24点计算程序,并且说明原理。 我们将24点问题一般化,变成一个搜索问题。假定从一个初始表开始,里面有一些原子。我们定义一个操作,结合。每次操作任意从中选择出两个(或者以上)原子,使用算符连接,成为一个新的原子。那么,一般来说,24点就是计算所有可能的路径,从初始表开始,持续进行结合,直到只剩下一个原子,并且对这个原子求值得24。 有人可能在算符优先级上想不开,其实不用考虑这个问题,每次求值的时候,按照求值顺序优先就可以。你想到的另外一种优先级可能,会在穷举的时候被列举出来算掉,不用担心遗漏。 同时,算子必须是两目以上算子,因为单目算子可以持续作用于同一个对象,因此原子表中的原子个数并不严格单调减少,造成无法肯定路径收敛于有限步骤上。并且,如果允许单目算子,那么我只需要求导和阶乘就可以对任何数字求24点。 ((a')!+(b')!+(c')!+(d')!)!=24 因此,单目算符是没有意义的。 另外,注意算符分可交换和非可交换的。例如:a+b=b+a,但是a-b!=b-a。如果不注意这点,倒是不会漏算,但是会造成搜索空间增大,并且有重复结果。 以下是24点计算程序,python版本的。有兴趣的朋友可以用scheme重写,相信会更简洁有效。回头会用django封装一下,做成网页给大家玩玩。 #!/usr/bin/python import sys symbol_list = [ ("%s+%s", True), ("%s-%s", False), ("%s*%s", True), ("%s/%s", False), ("%s**%s", False), ] def diff_seq(length): for i in range(0, length): for j in range(i + 1, length): yield (i, j) def get_less_state(input_state): for i, j in diff_seq(len(input_state)): temp = input_state[:] del temp[j] del temp[i] for s in symbol_list: rslt = s[0] % (input_state[i], input_state[j]) rslt = "(%s)" % rslt temp.