负暄琐话

我的email: rot47('649@ 6(hF+`hd"w=92vhG{>}G3"@l M >:>6?4@56 \F')

囧囧ID:g9yuayon
[修改头像]
776957次访问,排名36好友9人,关注者11
g9yuayon的文章
原创 238 篇
翻译 4 篇
转载 48 篇
评论 790 篇
g9的公告
最近评论
alextooter:ff可是用的完全的自己内存管理。。

最近ff3非常好,值得试试看。
fferror:无比期待g9老大的model checking续集。
sprhawk:哈哈,太强了,最近刚听说有Erlang,了解一下。
看一下历史,比看语法有意思得多嘿嘿
lordchl:后面提示下不动点好了,跳得太大
lbaby:Do you mind if I jot down some notes on your chests ??


猛到无以复加
文章分类
收藏
    相册
    旅游
    计算机科学
    Lambda the Ultimate
    软件开发
    Reddit编程专栏(RSS)
    正在读的书
    存档
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes
    2007年03月

    原创 为什么Use Case很重要

    I rest my case. 不,不是我找茬。在mitbbs上看来的。 阅读全文>

    发表于 @ 2007年03月22日 06:56:00|评论(loading...)|编辑

    原创 Fortran的发明人John W. Backus过世了

    上周六过世的。终年82岁。当年John在IBM大型机上用机器语言编程,累得半死。一怒之下组建了一支10人的研发队伍,开发出了Fortran。我们常用的BNF语法也是他的手笔。//sigh...不知不觉已经到了心目中的英雄们渐行渐远的年纪。 纽约时报有报道。想不到John W Backus当年也有那么多传奇故事。摘他的话自勉:你得愿意不断失败。。。你得产生很多主意并刻苦工作,最后不过发现这些点子其实没用。你就这样一次又一次地尝试,直到你找到真正可行的想法。 “You need the willingness to fail all the time,” he said. “You have to generate many ideas and then you have to work very hard only to discover that they don’t work. And you keep doing that over and over until you find one that does work.” 阅读全文>

    发表于 @ 2007年03月20日 12:20:00|评论(loading...)|编辑

    原创 活用regex的例子

    在reddit推荐的文章上看到的。下面的代码在CMD窗口下运行通过。如果在BASH下面运行,单引号和双引号要对调。 perl -wle "print 'prime' if (1 x shift) !~ /^1?$|^(11+?)\1+$/" Python的代码是: import re def is_prime(num): return not re.match(r"^1?$|^(11+?)\1+$", "1" * num) Ruby有Perl的血脉,所以代码和Perl版本几乎一样(其实无所谓,反正关键都是同样一段regex): ruby -e "puts 'prime' if ('1' * ARGV.shift.to_i) !~ /^1?$|^(11+?)\1+$/" 判断方法很有意思。把给出的数用一进制表示。比如5就是11111。然后从2开始一个数一个数地看这段表示中1的数目是否是其中任意一个的数的倍数。比如说当给出的数是4,则对应的表示是1111。那么1111匹配^11\1,也就是说它匹配^(11+?)\1+$。那么它是2的倍数。所以4不是质阅读全文>

    发表于 @ 2007年03月19日 15:36:00|评论(loading...)|编辑

    原创 一本书和阅读代码

    很难想象钢琴家不用聆听大师的作品;诗人不用揣摩传世的经典;画家不用体会前辈的佳作;拳手不用参详高人的示范。那我们怎么能想象程序员不用仔细学习性感的代码?可惜的是,美妙的代码往往有如像Shrek,乍一看也就是面目丑陋的庞然大物。没有Fionna的聪慧,我们也难欣赏Shrek洋葱一般层次丰富的心灵。再说,代码一旦写成,我们看到的也就是一段神来之笔。再难体会到作者在难题前内心有如困兽般地冲撞,面临多种选择时精神的激荡。我们也再难追溯每个数据结构背后的理念,每段算法成型过程中每一步的由来(顺便说一句。这也是为什么Knuth的书引人入胜的原因。每段算法怎么从无到有,自粗而细,由慢转快,通通脉络清晰)。就算是理解代码本身,想来每人的体会也有深有浅。不知道多少老大因为这些困难没能体会到阅读代码时心头肿胀(乱用冯唐语)的快感?除非,除非有高手引领我们入门,给我们细述经典代码如何玲珑浮屠,如何眼波婉转。 IBM的Grady Booch也强力推荐程序员大量阅读代码,认为这是从新手到高手的必要手段。如果喜欢软件开发老大还没有订阅Grady Booch的博客的话,现在是时候了。G老大的私人项目Archi阅读全文>

    发表于 @ 2007年03月13日 01:32:00|评论(loading...)|编辑

    原创 图灵机和NP

    有朋友问什么是图灵机以及NP。理论界的老大们都喜欢云山雾罩公式套公式,圆环套圆环,不diao骂人不吐脏字、讲题不带公式的娱乐界原则。搞得很多人提到图灵机和NP时表情就跟广西来宾市的老大们一样诡异。 其实呢,图灵机的来历忒单纯。以前一个叫图灵的闲人养了只无所事事的小母鸡。图灵成天忙着跑马拉松,懒得照顾它,就装了条在鸡看来无限长分格的传送带,定时传送食物和水。而鸡闲来无聊,便走来走去,在带子上摆放物事,权作耍子。郁闷时在格子里放根树枝。兴奋了在某个格子里下个蛋。想起了还可以把蛋换成树枝,或者把树枝换成蛋。不高兴了在传送带上扔颗石头,于是传送带就卡住了。某天小母鸡不小心把一株野生大麻当鸡骨草吞了,high得不行,绕着传送带发疯: 在传送带靠左的地方放下一根树枝一个蛋:10 在传送带靠右的地方放下两根树枝:11 回到左边,把树枝拣起来,再把蛋换成树枝:1 回到右边,把两根树枝换成一根树枝两个蛋:100 回到左边,把树枝拣起来 回到右边,把最右边的蛋换成树枝:101 这下左边的树枝和蛋都没了。小母鸡意兴索然,一怒之下扔颗石头卡死机器。 刚从杂货店阅读全文>

    发表于 @ 2007年03月10日 15:20:00|评论(loading...)|编辑

    原创 排列组合算法1:生成全部有序列

    在QQ群上和朋友聊天(嗯,我还在用QQ,尽情鄙视我吧。什么时候MSN支持像QQ那样任意添加表情,任意贴图,而不是把我添加的表情图压缩得面目全非,我再放弃QQ不迟。连“彻底地全身心地毫无保留地崇拜你”都不能用,MSN my ass。QQ上的表情: 同样的图添加到MSN后: 。什么世道!),常遇到的话题之一是怎么生成一个有序列的所有组合,一个集合的所有子集(幂集),或者所有的全排列。一些论坛上也常出现类似的问题。很有意思的话题。在编程中时不时要遇到之外,也是锻炼大脑防止老年痴呆的上佳练习材料,尤其适合好静坐,喜油条, 30岁以上从不上健身房的程序员。不用左右看了。就是老大您!做这类题目还有个好处:重温当年写小程序的快乐。不知道多少人会享受搭建工资管理系统的全过程,津津有味地调试奇形怪状的API,反复修改庞杂的XML配置文件。反正我不会。写小程序就不同了。没有最后期限的压力,不用担心系统的羁绊,无需顾虑程序的架构。可以纠缠算法的每一个细节,也可以执着于提高代码的每一分性能。施主随喜。心智澄明,目光通透,心随意动,运指如飞。敲阅读全文>

    发表于 @ 2007年03月06日 15:17:00|评论(loading...)|编辑

    原创 emacs入门技巧:常用定制函数

    用Emacs的乐趣之一就是亲眼看到自己的编辑效率随使用时间的累积而增长。而且有了elisp的帮助,可以将其它编辑器的优秀功能”拷贝”过来,大有海纳百川的壮阔感觉。Babar K. Zafar的网页上有篇汇集Emacs技巧的文章。非常有用。我尤其喜欢里面实现常用VI功能的函数:这样我就不用丢掉以前用惯的编辑功能了。什么时候Elicpse也支持自己的脚本语言就好了。让我们轻易地读取和操纵Eclipse Runtime以及Java AST,不用为了在console里加上文件链接都要创建N个类。Wiki的创造人Ward Cunningham正在做这项工作。但愿他快点搞定。 下面解释一下自己常用的几则技巧。原文还有更多技巧,强烈推荐。 先说说怎么试用这些技巧。Emacs根本就是elisp的解释环境,碰巧实现了编辑器而已。所以和elisp的函数勾兑再容易不过。假设我们打开一个Emacs的缓冲: 现在c-x 2, 增加新的缓冲 接着c-x o, 把光标切换到新增的缓冲里: 再切换到*scratch*缓冲就行了。Emacs提供的*scratch*缓阅读全文>

    发表于 @ 2007年03月04日 16:52:00|评论(loading...)|编辑

    原创 Wordpress支持LaTex了

    从reddit.com上看到的。Wordpress.com的博客支持了。Wordpress.com碰到$latex的字样就进入inline math模式,自动把$latex $间的语句按 语法翻译,生成相应的图像。比如下面的公式 $latex i\hbar\frac{\partial}{\partial }\left|\Psi(t)\right>=H\left|\Psi(t)\right>$ 就被翻译成 从来没用过wordpress.com,不过为了试一下的功能,去注册了一个帐号。该功能挺好用。保存自己的帖子时,wordpress.com自动转换所有的inline math mode里的语句。下面是我第一个latex帖子的截图。公式图像的质量明显好过latex2html生成的图像。也许是我没有配置好latex2html? Wordpress只提供LaTeX内联翻译,并不支持语法分析。如果LaTeX公式有错,我们只能看到一条黄底红字的简单错误信息: 。所以对复杂的公式,最好在自己的LaTeX编辑器上编辑好,用本机的latex软件验证公式正确,再拷贝阅读全文>

    发表于 @ 2007年03月03日 20:59:00|评论(loading...)|编辑

    原创 差点被dojo搞死

    做WEB界面编程很痛苦。菜鸟做WEB界面编程比黄连还苦。 Dojo 提供了一个Tooltip Widget。当我们的鼠标移到指定的地方时,一个提示框就弹出来了。 再把Tooltip稍稍扩展一下,就可以在弹出来的Tooltip里放任意HTML代码。加上一点AJAX调用,一个内容丰富的提示框就做出来了: 鼠标可以在tooltip里自由移动。鼠标移出tooltip,该tooltip自动消失。够简单吧?可惜接着我就被dojo玩儿死了。 展开任何一个的下拉框,把鼠标移进下拉框。Tooltip立刻消失。难道Ellen Ullman的The Bug这一刻灵魂附体? 顺藤摸瓜到dojo.widgets.tooltip的代码里。既然跟鼠标移动有关,就找和事件onmousemove有关的代码。很容易地找到了dojo.widgets.tooltip._onMouseMove = function(e){…}。代码很简单,靠一个帮助函数dojo.html.isOnElement(element, e)来判断鼠标的位置是否在Tooltip内。加上一行d阅读全文>

    发表于 @ 2007年03月02日 11:02:00|评论(loading...)|编辑

    Csdn Blog version 3.1a
    Copyright © g9