圆周率节转圆周

上帝啊。。。我终于复活了!(是我家CQ…|||)
本来3.14节想出了一个挺好玩的想法,想实现一下,结果准备重启进入linux的时候机器就挂了orz|||
反复重启。光驱引导不能。
是BIOS病毒吗?

已经是晚上了,等不及送修,居然真的自己动手拆起机器来了!

真可惜啊,心情太焦急了居然没有心情拍照。人生第一次推倒啊(compaq娘|||

拆掉屏幕,拉下键盘,掀开后盖。取下风扇,拿掉散热片。CPU和显卡明晃晃地立着。为什么就是找不到CMOS线啊。。。
找到了个形似开关的东西按了几按。这样好像跟重置BIOS毫不相关吧。。
拆得这么零碎,真的还能组回去吗?组回去真的还能用吗?

还好。网上的攻略很给力……除了多出几个螺丝不知往哪里按,基本上都装回去了。尽管。。尽管原本的开机重启的问题完全没有解决。。
本来绝望的心冷静下来反而清醒了。重启或许只是硬盘本身的故障呢?光盘引导不能或许只是因为光盘没有读出来,所以又默认从硬盘引导,然后又重启了而已呢?
拔掉硬盘后再试光盘引导,果然不是反复重启的症状了。所以。。所以到头来无非是。。光盘太脏这个缘故吗。。多吐两口涂抹擦擦干净。。居然真的就进了live CD了。。。

转了一大圈,又回到原地。果然只不过是硬盘分区表损坏而已,什么BIOS病毒的。。都是自己胡诌啊胡诌。
或许。。或许我只是想找个借口拆拆本子吧。从来还没拆过本本的人。。

可惜这不明情况的分区表故障,貌似导致了grub无法识别硬盘,所以最后还是不得不重装系统了。。
所以本来圆周率节那个挺好的想法,只好留到其他节日再做咯。。。|||

啊哈哈凑足30小时无睡眠时间,好啦洗澡爬床~~

车窗上的雨滴

最近以来困扰我的一个物理小问题是如何通过车窗上的雨滴滑落的角度来估计车行速度。因为很不巧的是似乎每次我要旅行,就一定会下雨。所以我总是盯着这些斜斜落下的雨滴,困扰着。

我最初的想法很简单。就是考虑受力情况。水滴受到的重力和迎风力的合力,一定是沿着水滴滑落的方向。当然要考虑车窗的摩擦力,但是由于那个力一定跟合力的方向相反,所以不会影响夹角。也就是说,当水滴沿着45度滑落的时候,迎风力刚好等于重力。接着考虑动量和冲量关系。假设空气在时间t内撞击水滴的动量mv全都转化为推动水滴的冲量Ft。其实不然,因为空气推动水滴后会随水滴一同移动,而非耗尽全部动量。但是由于水滴在玻璃上的滑动速度非常慢,而空气的推动速度很快(这里是以车为参考系所以空气速度就是车速),我想即使忽略之也不会有太大的误差。然后我再近似认为水滴是长a宽b高c的长方体。其迎风面积为b·c。则方程如下,发现t正好可以消去。

    Ma = Va·ρa·t·b·c
    Ma·Va = F·t
    =>
    Va2·ρa·b·c = F

我们又假设F是水受到的重力

    F = Mw·g = a·b·c·ρw·g
    a·b·c·ρw·g = Va2·ρa·b·c
    Va2 = a·ρw·g / ρa

其中除了水滴的长度a只能猜测外,其他都是常量。水的密度差不多是空气的1000倍。g估算为10。水滴的长度估计为0.5cm也就是0.005m。则这个Va差不多是25km/h。

这个数值这么低,是因为我取的角度是45度。实际行驶的时候,雨滴几乎是横着划过玻璃。可惜我没有测量他的tan值。下次旅行假如我又遇到下雨就可以通过实际测量检验我的理论是否正确啦~

编程艺术之文本加工

最近在推上跟人吵编辑器什么什么的,加上最近看的几本书也都提到了文本处理的一些原则和技巧,这里把我的一些观点罗列出来,同时也作为自省的一个途径。

最近读到的书籍,主要就是《程序员修炼之道》(pragmatic programmer)和《Unix编程艺术》。另外值得提及的就是《C专家编程》。凡是讨论到这个话题,这些书都无一例外的表现出他们的黑客情结,即那种恪守清规的苦行僧般的程序大师。这种恪守清规的殉道精神纵然值得敬佩,但施用于工业则未免可笑。

编辑器的争吵已经经历了几十年,作为一个无名小辈我没有必要再跳进这个泥潭了。这里推荐的是《Unix编程艺术》中对5个Unix通用文本编辑器的讨论,虽然作者本人崇尚黑客精神,但讨论时及其严谨客观,对从精简的无可挑剔的神级编辑器ed到vi到复杂到无以附加的emacs等等,都做了及其客观的评价。并根据前文提出的十几条Unix程序设计原则以及一些程序复杂度的标准,对这些项目的设计目标和崎岖的发展历程做了总结。后文对多种编程语言的评论和分析,以及使用场合介绍,同样严谨客观,推荐诸位语言死忠阅读。

无论是语言,编辑器还是任何工具,都没有绝对的好与坏的争斗。必然在其使用范围和适用条件下有其可取之处。真正的程序员不应该抱定某种特定的环境不放,而应自如的运用任何一种工具,并将其威力发挥到极致。如同武林大师,任何武器都可手到擒来,随手抄起身边板砖菜刀,都能发挥出神入化的境界。

然而说到我本人的观点,仍难以克制心中对MS visual studio系列工具的鄙夷。首先MS这种封闭的文化确实难令人苟同,再加上他着力培养初级程序员,并通过繁杂的IDE环境来潜在的支配奴役程序员的做法更是让人感到仇恨。许多通过VB入门的人都感到自己算不上程序员,或者说难以学习其他程序。许多通过VC入门的程序员都感到VC和(不使用VC的)C++简直就是两门语言。我相信离开VS,大多数C#程序员都无法工作。我想这样的例子在编程论坛的新手区,可以找到极多例子。Apple是培养傻瓜用户,MS是培养傻瓜程序员。或许商业意义上他是对的。但作为程序员则绝无法忍受。

这也是我仇恨框架的理由。程序员不应被框架所奴役,而应随心所欲的使用程序库提供的便利。程序框架(Framework)给人的感觉就是,根本就是框架在编程序,而把你程序员当成是一个函数库。是他在调用你。作为一个程序员被程序戏耍的滋味绝不好受。这也是我对java没有好感的理由。一个程序要限定好他的界限范围,而这个要求对于一个框架来说太难做到了。一个大而全的东西总想做得更大更全,最后包罗万象,然后无可避免的走向毁灭。

最后谈一谈Unix编程思想中的“懒惰原则:宁多机器一分勿多程序员一秒”以及“生成原则:让代码生成代码”。这点在《程序员修炼之道》中也有不少论述。yacc和lex可能过于复杂了,但一些简单的脚本至少是很容易编写的。学习一门脚本语言,然后试着在C或者其他重型语言开发中使用脚本语言从旁辅助,生活会变得相当美好。在linux上cat+grep已经可以做很多事情。配合bash配合awk,或者任何其他脚本,比如流行的ruby或python,许多无意义的键盘敲击都能省却,许多依赖复杂IDE的需求,例如重构代码段,寻找函数调用和声明,检查编码规范等等,都可利用脚本完成。我之所以喜欢emacs一个重要原因就是自己写的这些脚本还可链接到一个键盘快捷键上,调用更加方便。

当然所有这些话题都是见仁见智了。或许有人会认为使用IDE正是符合了“宁多机器一分无多程序员一秒”的精神。假如确定这增加了的机器的一分钟确确实实能减少程序员一秒钟的开销的话,那也确实是值得的。

年度读书计划-总结

去年11月份给自己定了一年的读书计划,结果可以说实现得非常糟糕。

决定当年读完的《linux内核》和《编译原理》两部书,都没有认真看完。只是概略翻了翻。

不过也不是说自己一点书都没有读。

图书馆借到的两本书,就看得津津有味。

一部是《linux设备驱动程序》,我一直都没找到合适的学习linux内核的书籍,才发现学习驱动是认识内核的一个非常好的切入点。而这一部书原理介绍的非常清晰,更容易从学习中抓到内核脉络。

另一部是《C专家编程》。年少无知的我一直认为自己对C语言了解已经足够了,接下来不再需要阅读语言相关的书籍了。看了这部书之后我的看法大大转变。可以说学无止境这句话用不能忘吧。这部书是Solaris系统程序员所写,风趣生动,包含大量系统开发过程中遇到的实际案例,同时介绍了C 语言标准、编译链接等等众多细节和trick。看这本书那两天,我几乎一直在捧腹大笑。实在是好书。尤其这本书言谈中吐露出的黑客文化,对我也是再一次的激励。

说到黑客文化,这里强烈推荐的是emacs中附带的advanture文字冒险游戏。相信喜欢tbbt的同志们应该已经看到Sheldon玩过了,“动用全球最先进的图形渲染引擎,AKA 大脑”,;)

新的一年一定要努力读书了,否则书架上书看不完也带不走,那就太浪费了!!

关于生存还是死亡这个热门问题的讨论

今天突如其来的在推上聊了些或许旁人会认为是无趣的事情。。
其实缘起自@rainux的一些及其严肃的问题们。或许虚大大只是扔了这么块板砖进TL的池塘然后在一旁偷笑吧。总之大家都很有劲头地摆出了严肃的哲学家的脸谱认真论战了一番。值得记录,值得记录。

总之,虚黍熟在一番委婉之后,在推上抛出了他宿构已久的这个问题:

@rainux: 所以本来还打算找天晚上在 Twitter 上跟大家讨论死亡的问题,结果都不知道该不该说了。
@pipitu: 没关系吧。。。
@littlepush: 连结婚生子都还没想好要怎么做的某只表示死不死的这种问题不在考虑范围内…虽然说死掉了就死掉了,不管活着的人有什么看法、感想、感情,对于死人来说没有任何意义
@rainux: 虽然我也没想好结婚生子的问题但真是越来越觉得时光飞逝如电,死亡越来越近了,我甚至经常想象哪天自己回过神来突然发现生命之火已经快要熄灭时的状态。无论如何也不知道应该如何面对自己的死亡。

对于这个问题,当然每个人的看法都是不一样的。

@pipitu: 不会啊,会很平静的,一辈子下来什么都经历过了,有什么好痛苦的,人总归要死的
@littlepush: 活着和死了的唯一区别就是体内的C14含量… 感觉我好冷血,不过生和死,对于自身来说并没有什么差异,因为死了你自己也不会有感觉。而对于身边的人来说,是你认为他们会在乎还是他们自己认为会在乎?时间是一切的良药,而已。
@yamimasho: 所以死了之后的事情,都是还活着时候的一种期望呀。。。
@hawkwithwind: 这就我前面说的生死由自己决定的意思,你还不想放弃人生,其实就说明生命力强,(除非意外)不会离开这个世界,反之,假如对人生失去了兴趣,意志消沉,那么死亡就在眼前了。
@rainux: 大概是我太自私?虽然亲人朋友的死也难面对,但应该说自己的死才是最在乎的吧?就是很不愿意接受死亡这件事,虽然很理性地清楚这是毫无悬念不得不接受的。

接下来,@rainux着重定义了自己对生命的眷恋,其强度和其范围。

@rainux: 其实在我看来与其说是能真的想开,不如说是到了那个时候不得不接受而已。
@rainux: 在我最痛苦,觉得生活毫无色彩的时候,我也一样贪恋生命站在18楼窗前也不敢再往前。
@rainux: 孤独痛苦我已经习惯了,但失去意识是如论如何也不能接受的。

@hawkwithwind: 都说了没有高低之分了。。||假如说秦始皇唐太宗也贪恋人生,那说明贪恋人生是伟人气质,我们都比不上你呢。。
@rainux: 不,我觉得我只是单纯地贪恋生命而已。就算是生命力强我也没什么强大的毅力成为什么强人,而且就算是强人又如何,对死亡的恐惧丝毫不能减轻。

@pipitu: 说到底还是不能接受自己的存在被时间抹杀不留痕迹:没有人记得我,没有人能证明我在这个世界上存在过,有过什么样的经历和感情,那些记得我的人记得的也只是他们脑海中的我,并不是真正的我,他们也将死亡,就更没有人记得我了,就和我从未来到过这个世上一样[之前GT你跟我说的一些话的感受]
@rainux: @pipitu 完全不对。我不能接受的仅仅是自我意识的消失,是“我”的消失,而非存在的证据之类无聊的东西。名垂青史或者遗臭万年对我来说都毫无意义,我只是想要“我”能继续存在继续感知世界感受自己的存在。

不知道阿虚之前经历什么样的大开大阖,居然走到了“站在18楼窗前也不敢再往前”的地步。这里先给大叔加把油!幸而现在的阿虚已经能淡定的坐在电脑前面跟我们畅谈这个话题了。无论能否看开生死,都绝不应该蔑视生命。其实惧怕死亡,是大自然深深刻在我们内心深处的对生命的敬畏之情也说不定吧。

接下来讨论支离破碎,变成了多个开放式的分支,当然,对每一个子问题,都没有人有答案。把追寻这些问题的答案变成我们生命的理由,也是个不错的主意吧~
病痛:

@hawkwithwind: 考虑一种极端的情况,假如身患重病,活着就是要被各种痛苦的治疗折磨,而没有享受思考和精神物质世界的心情,恐怕对生命的热情就大打折扣了吧。
@rainux: 这么说大多数人年老之后都要经历各种病痛然后死去其实是为了能更容易地接受死亡?
@hawkwithwind: 不知道。。生老病死。。这是大自然的鬼斧神工。。不敢揣测。。||根据道的观点,自然是无情无为的,“目的”是人后天附加上去的。

看破红尘:

@pipitu: 我不是说现在啊,我是说你确实到了油尽灯枯感觉到自己的生命快要消失于这个世界的时候,那时候应该就很坦然了,因为世间一切事物都有兴衰,死亡是必然的结局啊
@hawkwithwind: @rainux 我认为你的状态正符合我的命题。你可以设想一下自己活了几个世纪之后的状态。。
@rainux: @pipitu 以前也有不少朋友跟我说过你这样的观点(好像也是天蝎座 Orz),但我无法信服。我觉得就算那个时候还是一样会非常留恋人世,舍不得这里的精神的物质的一切。
@rainux: @hawkwithwind @pipitu 以前也看过一篇关于永生的痛苦的科幻小说,大意就是说因为有永恒的生命你终究会经历所有的事情对一切东西失去兴趣。不过普通人类有限的一生是不可能达到这种状态的,所以一定会留恋。
@yamimasho: @rainux @pipitu 即使不舍得也只能坦然接受自己快要死掉的事实 // 所以与其到时候带着遗憾离开,还不如趁早为所欲为啊。。。(啥
@hawkwithwind: @rainux 带着身边的人的祝福,带着一生美好的回忆,带着或许一丝眷恋一丝遗憾一丝牵挂,走完人生路,其实是件美好的事情。热爱生的人,不该惧怕死亡。不朽的,只有癌症。
@rainux: @hawkwithwind 很多文学或者艺术作品也都宣扬这种观点,但我大概是太懦弱了吧?与其说热爱生命不如说贪恋生命惧怕死亡。

此时之我非彼时之我(子非鱼焉知鱼之乐):

@pipitu: @rainux 我觉得你还是把现在的自己代入到那个时候了,我可以肯定的告诉你那个时候的心态是不会和你现在一样的,人老了很多事情都会看开的,包括生死
@rainux: @pipitu 你老过吗?你怎么能准确地知道年老后的心态?
@yamimasho: @rainux @pipitu 正是因为无法预测,所以你现在想的跟你几十年之后想的也可能完全不一样。到那个时候回过头来想想现在自己的态度,会觉得很可笑呢。。。
@hawkwithwind: @rainux @pipitu 跟老人聊天,尝试理解他们的心境的时候,自己猜的一些。。||其实跟你搭讪猜测女生心思可能差不多吧。。

尘归尘,土归土:

@littlepush: 你能接受别的生物吃掉你的body么? RT @pipitu: @rainux 吾已经看开了【远目
@pipitu: @littlepush @rainux 能啊,在我死后
@hawkwithwind: 其实死后被别的生物吃掉才是最自然的。烧成灰,还不是被植物吸取。生于自然,归于沃土,这是定理。
@hawkwithwind: 做成木乃伊,放在水晶棺材里,那是恶鬼。。那才是无法接受的。。

之后我们一致赞成的一点是,虚叔才不是贪生怕死呢,看开看不开,没什么好没什么不好:

@hawkwithwind: 真的,我觉得“看不开”也是好事啊~说明你活跃嘛~你看历史上的真正强人都是贪图长生不老的。这是生命力强的表现嘛
@rainux: @hawkwithwind 不,我觉得我只是单纯地贪恋生命而已。就算是生命力强我也没什么强大的毅力成为什么强人,而且就算是强人又如何,对死亡的恐惧丝毫不能减轻。
@rainux: @pipitu @hawkwithwind =_= 说来说去还是说我不如你嘛。
@pipitu: @rainux @hawkwithwind 这种事情哪有什么比较的说法。。。际遇不一样看法自然不同而已。。。
@hawkwithwind: @rainux 都说了没有高低之分了。。||假如说秦始皇唐太宗也贪恋人生,那说明贪恋人生是伟人气质,我们都比不上你呢。。
@pipitu: @rainux 阿虚你才不是这样呢, 我觉得阿虚的人生观比我强多了= =
@rainux: @littlepush 的确你的经历冷酷得多。这么说来我的经历质量还不够
@pipitu: @rainux @littlepush 不要比较这种事情啊笨蛋_,=

最后来迟的@Charseer不鸣则已一鸣惊人,拿到了本次论战最多的RT:

@CharSeer: 不就是生死嘛。。。我老了,早看开了。“我来到这个世上,就没准备活着回去”

除此之外,我和@littlepush单开线程,纠结起了生命定义这个更加无聊的问题。。虽然看似无关,但确实如果无法定义生的话,则也无法定义死。然后如何看待死亡这个问题本身也就站不住脚了。所以作为脚注这段讨论也是值得列下来的。

@littlepush: 死亡也是一种生命的表现形式,生命还在延续,只是作为载体的本身不会有任何感觉而已。
@hawkwithwind: 这条我不赞同,那我问你,在出生之前,生命是否也是存在的?
@littlepush: 如果你从纯粹的科学角度出发,把你自身分解成无数的原子/夸克和能量,你会自然的去用最基本的能量守恒定律来解释你的生命的连续性。
@hawkwithwind: 物理学解释不了生命。他能解释生命现象,却解释不了为什么我们能感知体验这一生。他能定义感情的化学反应,却定义不了什么是“我”
@littlepush: 你可以很自然的看待猪、牛、羊…因为从心底里你觉得人类比其他动物高级,那如果你从比人类高级的生物的角度来看待人类,个体的生命没有什么特殊的意义,而种族的延续性才是生命的含义。
@hawkwithwind: 那不是因为感觉“高级”,而是因为无法“同情”。人更能同情跟自己地位经历类似的人。人能同情拟人的猪,却可以随意吃猪肉。归根结底人只能了解自己,也就是“我”,除此之外只是用“设身处地”的方式同情别人而已。跟自己越近似,就越容易同情。所以人能理解人,能养宠物,却难以接受毒蛇蜥蜴之类的冷血动物。更体会不了岩石大海的感受。
@littlepush: @hawkwithwind “同情”其实是最没必要的一种情感(对我来说…我讨厌看到别人“同情”我),每种生物都有自己的感觉,可以通过其他途径来了解、实验别的物种,却无法了解“自己”,所谓“超然于世外”也仅仅只是一种逃避的借口。
@hawkwithwind: 晕。。我说的“同情”可不是替你流几滴眼泪那种“同情”,而是“以自己的经验去理解别人的处境”。相比起毒品走私贩,你更容易理解一个程序员的辛酸,因为你自己也是程序员。相比起一块岩石,你觉得猫才算是生物,因为你自己也是哺乳动物。假如你是一块岩石,说不定你觉得人类都是些无聊的跳蚤,不过我肯定错了,因为我不是岩石,也无法“同情”岩石
@littlepush: @hawkwithwind 这是毫无意义的吖…“自己的经验”就是自己的,不是“别人的”,更不会是“我的”,这是很没意义也很让人气愤的一件事情吖
@littlepush: 你不会觉得岩石是生物因为生命的定义里不包含岩石,这个比喻是不是有点问题? RT @hawkwithwind: @littlepush 相比起一块岩石,你觉得猫才算是生物,因为你自己也是哺乳动物。
@hawkwithwind: 为什么你觉得岩石不算是生命?生命的定义其实归根结底是根据“人”的状态,扩大范围决定的不是吗?假如你是一块岩石,或者说外星某种智能岩石生命吧,他们肯定觉得人类算不上生命。
@littlepush: 那你告诉我生命的定义是啥?!
@CharSeer: 我理解的生命就是能主动维持自己的状态的东西
@littlepush: @hawkwithwind 都说是“智能岩石生命”了…如果把“智能”两字去掉,那作为“岩石生命”,它的起点和终点又是如何的呢?如何定义这种生命形式的“生”和“死”?
@hawkwithwind: 在我看来,生命就是“我”,当然,这是唯心论的观点。我不想强加给别人。但是认为生命就是DNA+蛋白质则未免肤浅了一点
@hawkwithwind: @rainux @littlepush 你看,啊虚说,它可以接受肉体的毁灭,却无法接受精神的消失。这个精神,正是指的啊虚的“我”。同样用这个“我”,可以定义岩石、海洋、星河宇宙的生命。其实生命就是宇宙的律动吧。周而复始。
@rainux: @pipitu @littlepush […] 我不能接受的仅仅是自我意识的消失,是“我”的消失,而非存在的证据之类无聊的东西。名垂青史或者遗臭万年对我来说都毫无意义,我只是想要“我”能继续存在继续感知世界感受自己的存在。

最后的最后,当我想要开启一个新的篇章的时候,鲸鱼出现了。大家只好无聊地退散。。

@hawkwithwind: 何妨把这宇宙看成是一部书呢?只要在这宇宙中生活过,就永远写在这部杰作当中了,在其中某个篇章中,不朽

最后的最后的最后,套用最近沉迷的wow的一句台词。。

@hawkwithwind: 敞开心胸,接受圣光吧!

其实人类只是寂寞了

把在buzz上说的话贴过来了。。

认为外星生物非得是要水要温暖要氧气才能生存实在是太幼稚了。
为什么生物一定要是碳基或者磷基的?
为什么生物一定要是高分子的?
为什么生物一定要是化学的?
为什么生物一定要是在行星上的?

其实人类只是希望在外星找到自己罢了。
其实人类只是孤独罢了。

linux发烧

最近玩linux比较hi,虽然没有什么正式的成果,但还是很开心~

先说说最近的吧,终于下定狠心把ubuntu上的gdm关掉了。以后进linux就全面进入黑屏时代。但说实话不能上网搜索材料的话,光有命令行也没什么用处。。因此找了几个重要的工具~

  • w3m 命令行下的网页浏览器 可嵌入emacs
  • freetalk 支持jabber的聊天工具~可以gtalk啦~
  • dfbsee DirectFB See 使用framebuffer的图片浏览程序,貌似还能播放视频~

基本上我对日常学习工作的需要也就是这些了。本来在emacs上配Gnus, 虽然配好了,但是很难用,尤其是似乎不是很适应gmail的标签风格,经常是显示不出来新邮件。我尝试在gmail里面设置规则,给所有邮件都加上一个inbox标签,才丑陋地解决了这个问题,但是还是很难用的一个东西。尤其是附件下载的方式也很糟糕。

现在有了w3m,可以直接访问gmail了,就没有这个问题了。w3m对下载的支持也很棒~唯一的问题就是不支持css吧。不过在命令行下面主要看的是文本,就算有css支持又怎样…反正命令行下面也没有字体字号什么的设置。

我其实最原始的在命令行下面看网页的想法是直接用wget把网页下载下来,再用脚本解析之后取出内容放纯文本里面看。可是wget只能下载,没法填写表单发送请求之类。我本以为可以直接在路径后面加?=什么的让他支持,但似乎失败了。例如尝试


wget google.com/search?q=hello

就失败了。收到403 forbidden 但是直接


wget google.com

是成功的。不知道是为什么……是google主动封锁了这样的读取方式吗?不知有没有解。。

freetalk没什么说的啦,纯粹好东西,还支持文件传输(未测试),比某些版本的gtalk客户端都好用。(不过不支持语音就是了。。)测试过聊天之后,进gmail一查,果然聊天记录也存在邮箱里了。可谓完美。加上使用@rainux同学的twitter gtalk机器人twimeido,还能发推。当然,用w3m连dabr也行。用不了web推,因为js太复杂的关系。。在命令行模式下直接ssh连上墙外的主机就可以建立tunnel,之后就在墙外了很方便。

dfbsee是我折腾了最久的一个东西。一直没找到好的命令行下看图工具。后来查到zgv,没来得及尝试,又发现了这个dfbsee。网上对dfbsee的评论是,因为使用splash的关系,很可能你的机器已经启用了framebuffer,那么为了看图去装另外一个图形驱动来运行zgv就不划算了。因为顾名思义,dfbsee是建立在fb上的看图工具。

ubuntu上没找到dfbsee的支持包,直接去官网下了源码。然后编译。要先编译安装DirectFB的代码库,很简单configure – make – make install就行了。然后就遇到问题了。官网下载的最新版的dfbsee源码和最新的dfb库居然是不兼容的,某个叫做DFBCardCapbilities的结构(后来发现貌似是个enum)找不到。网上搜了搜找到某个邮件列表里的讨论,原来开发人员把这个接口改名叫做DFBGraphicsDeviceDescription了,而dfbsee似乎还没来得及更新。按照他说的搞了个全文替换,要改这个结构还有一个get函数名。继续编译还有问题,有个叫做rotate.c的代码里面有很多形如


void * d;
(__u8*)d = ...;

的代码。首先那啥__u8,__u16,__u32之类的缺少定义,搞个typedef就行了,当然是对应的uchar,ushort和uint。接着那个类型强转在gcc眼里不算是lvalue,不能赋值。只好弄了个临时变量,中间倒腾了一下就行了。


void *d, __u8 *ptemp;
ptemp = (__u8*)d;
ptemp = ...;
d = (void*)ptemp;

其实也许改改编译选项也就过去了,但是实在懒得改就这么乱动代码蒙混过关了。编完了居然还不能跑,原来是某些so库它默认的路径和安装的路径不一样。用whereis找到那些库,然后ln -s 直接在对应地址下面建立符号链接,总算能跑了。其实本应该在configure的时候设置正确的路径的,但是实在懒得折腾了,就这样再次蒙混过关了。

这么折腾了半天之后这劳什字终于跑起来了。运行起来看看果然没白花时间。我的framebuffer设的1024*768*16bit,显示那些下载下来的墙纸什么的都很完美。还能一定程度地缩放。惟一缺点就是键盘处理有点问题,似乎是把按下一个键和抬起一个键当作两个事件处理了,结果按一次pagedown它要往后跳两幅图片。我一开始还以为文件夹里面有一半的图片他现实不了呢!后来用了他的slide-show功能,看到全部图片了~

不知道能不能把dfbsee设置成w3m的图片显示器,那样就太完美啦~不过这个以后再考虑吧。。

现在终极问题就是纯命令行模式下打不了中文。。这个实在不爽。看google就用英文当然也就算了,但是给人回信总不能总卖弄外国语吧囧。。。别跟我提zhcon,那东西太难用了。当然显示中文终于勉强能显示了。但是打字打不进去。打进去也是乱码。。况且现在我起zhcon只能sudo zhcon –utf8,结果是在zhcon里面搞的东西权限全是root的。这个很不爽。还要去弄那些中文字体的权限才能让zhcon不必跑在root下面,又要花时间折腾啊。。我准备再找找看有没有别的中文命令行,再试试看。最好是也是支持framebuffer的。“自己写一个”。。偶尔也会跳出这种想法。。但是最近这么忙不可能有时间折腾了。自己编译的内核还没跑成功过,正在试着写的linux驱动模块也有不少问题要调试。。所以其他想法先往后排吧。。

所以假如最近一段时间我给大家回邮件或者gt聊天总是跳英文,请不要生气。。我不是在卖弄英文。。。是懒得startx。。或者是正在备考12月底的英语机考。。妈的那玩意考不过就得明年重修。。抱歉爆粗口了囧|||

说到编译linux内核和学写linux驱动这回事,还有几句话想说。以前一直没想过要先写驱动。总觉得要先好好学会linux内核之后,在去学写驱动。结果买了些讲内核甚至讲源代码的书。不是说看不懂,而是说不知看来干嘛,有种无从下手的感觉。结果就晾在那里了。现在学写驱动,发现其实写驱动是学习内核的最佳手段,严重向大家推荐。这是一个很好的切入点,让你有事做,有一个目标,能去实践一些事情,然后你会遇到问题,就会想要做调试(当然就是内核调试),然后就会熟悉很多很多东西。现在我学的还浅,只知道些Oops啦panic啦什么的,strace也是刚刚学会用。接下来要试着弄user mode linux(这个也叫UML哈哈), 试着弄xen,还要试着弄很多好玩的东西。相信能学会更多吧。目前只能用用virtualbox,在x下是个好东西~不过既然决定要争取不进x,那还是要试着弄点更高级的!

于是自己加嘞个油吧。。(这么非主流。。。@ @)

程序员的世界

不是说把人生编成程序。只是说程序员的人生。

今天偶然看到这篇文章,21天学通C++,很有感触。

其实学通C++,这个词的含义无法准确定义。究竟什么是学通C++。如果说是要完全掌握使用C++编程的技巧的话,需要的时间是无穷的。因为难并不在于C++,而在于编程。

使用编写程序是一种生活方式。它不仅仅是工作或者学习。就像舞蹈或者作诗也是一种生活一样,一旦你进去了,就出不来了。程序员的生活沉浸在无尽的逻辑,抽象,接口,复用,通讯,数据,算法,blabla之中。。。

程序员的世界是抽象的

程序员看到的不是人,而是某一“类”人的一个“实例”。有些人是虚基类,你看到很多貌似相同的人,在某些具体的方面却有着完全不同的行为。有些人是模板类,很多貌似不同的人,却有着惊人相似的行为。有些人是单件,失去了就再也找不回来。

程序员看到的不是化学定律,不是生物学定律,不是物理学定律。程序员看到的是数学规律在各个具体场景中的表达形式。用相同的程式,程序员可以模拟桌球碰撞,可以模拟气体飞散,也可以模拟生物群落迁移,牛奶混合进咖啡,或者婚姻的结合以及破裂。

程序员的世界是定量的

程序员不理解“质变”,只理解“量变”。当别人看到悲剧,程序员看到概率。别人谈“可行性”,程序员谈“可能性”。任何东西都可以定量估计,不管是系统崩溃的概率,银河系中存在类人外星人的星球数量,还是一杯温水忽然一半结冰另一半沸腾,或者身边的椅子忽然变成一个美女的可能性。一切的一切,只要存在,就可以定量估计。

减肥的人会为少吃一块巧克力而自豪,而程序员指出其实瓶颈不是少吃了多少而是消耗了多少。排队的人为插到前面一个人而高兴,而程序员指出其中机会成本其实更高,而利益没有几秒。程序员乐于估算一辆公交车能装多少皮球,75码能把人撞飞多远,或者人一生能打多少个喷嚏。这些喷嚏造成的推力能把一架喷气飞机推进多远。

程序员的世界是协议化的

程序员调用函数,遵照函数的规格声明。程序员发送消息,遵照网络协议手册。程序员对这个世界过度“预判”,并根据这种预判作出推测和决定。程序员预判其他人也是程序员。所以大家任取1~100之间一个数,要想最接近所有数和的2/3,那答案必定是0。程序员预判其他人也会遵照协议,所以拿着用户手册去跟客户争吵那不是bug而是feature。

程序员制定协议,程序员遵照协议。然而如果事实证明协议无法实现,程序员会孜孜不倦的抛弃他,并重新创造新的协议。然而程序员不可能离开协议而存在。程序员需要protocol, 需要pattern, 需要manual  and guideline。程序员在种种规则和限制之中,找到了自由,假如失去了规则限制,程序员反被关在混乱的牢笼里,寸步难行。

程序员对程序是虔诚的

程序绝不会犯错,如果犯错一定是程序员的错。程序员一定会犯错。程序员像一群苦诵经书的狂信徒,无尽的敲出一行又一行一段又一段的咒语。据说摩西五经其实包藏了耶和华的真名,而这真名只有通过反复诵读才能体会。而代码之中也保藏了程序的真谛,无数程序员在反复敲打之中要去领悟醍醐。

公司里很多同事坐久了腰痛,干脆跪在机器前面写代码。虽则这种膜拜不能就另拙劣的代码产生灵性,然久而久之,程序说不定产生佛性,亦有可能。

一只脚已经踏入这个世界,我现在仿佛觉得这个荒谬的世界才是真实的,反倒是外面的世界是无法理解的。进入这个世界的话,就离不开了吧。