
开发
文章平均质量分 52
g9yuayon
姓名:g9yuayon
前世:夜郎国厚脸皮神棍
魅力指数:0
名气:1
宠物:一只从来不对生人叫的看门狗
展开
-
吃了大力丸的Ruby
嗯,我们的功能测试代码常有个小小的需求:当测试代码里的某一个函数抛出异常,系统自动弹出一个调试窗口。调试窗口应该已经包含异常抛出时的上下文信息,以便测试员进行调试。"靠,还以为什么新鲜玩意儿,原来不过是Ruby On Rails玩儿得不爱的breakpoint!“,看贴的老大们开始不屑地评论。呵呵,老大们的话自然不会错,的确是RoR里常用的 breakpoint。但在俺讨论新东西前,先让小的稍稍介原创 2006-07-07 14:24:00 · 3631 阅读 · 2 评论 -
排列组合算法1:生成全部有序列b
对推导不感兴趣的老大们可以通过搜索”def”直接跳到代码实现部分。不过有闲心还是瞧瞧推导过程的好。我们可以看见好的算法并非无迹可寻,完全依赖某位大牛的灵光闪现,而是通过观察、归纳、试验、迭代改进,逐步雕琢而成。另外,我们时常感叹,要是有时间学习算法就好了。要是有时间仔细读读TAOCP就好了。其实呢,读TAOCP也不是抢鸡蛋的大事。想读了,就备好纸笔,调出趁手的编辑器,打开书,翻到自己感兴趣的章节。原创 2007-04-10 04:16:00 · 10572 阅读 · 1 评论 -
Ruby做纯计算还是太慢
写正题前先罗嗦一句:Google的字库没有校对么?,那么多低级错别字,还不让人删除。至于哪些错别字,三表的文章里有很多搜狗的例子。Google做的改进就是把正确的词排在错误的词前面。我靠,删除缺省词库很难啊?通过统计用户删除的字词不能学到点东西啊?逼良为娼不够厚道,有失和谐吧?说正题:这段时间的工作琐碎繁杂。我不胜其烦,工作间隙便在www.projecteuler.net上做题,权当透气换原创 2007-04-08 04:11:00 · 5346 阅读 · 11 评论 -
Bjarne Stroustrup关于C++的讲座
想知道细节的,可以直接到wg21的网站上看论文。这里是零散的笔记。今天Bjarne Stroustrup到公司来做关于C++ 0x泛型编程的讲座。秉着不吃鸡蛋也可以看看母鸡的原则,我还是提前20分钟去前排占了个位子 —— 虽 说我们实验室除了编译器部门和数据库部门狂用C++外,主要还是Java作坊,我还是不能低估了这群老大赏鸡的好奇心。虽说有了心理准备,大家热情之高还是吓了俺一跳:讲座开始前原创 2007-07-17 13:28:00 · 11903 阅读 · 6 评论 -
诡异的JavaScript Closure
出来混,迟早要还。今天写JavaScript代码,才知道一个循环里的函数共享同一闭包 三个闭包共享一个变量。比如下面的代码是错的,不能正确报告每个事件对应的描述:var div = document.getElementById("testDiv");var events = {onclick: "clicked", onchange: "changed", onmouseover: "原创 2007-04-18 13:43:00 · 10495 阅读 · 9 评论 -
为什么程序员总加班?
刚加完班,就看到这个。笑死。 测算项目周期…就好像有条小鱼向你游过来.小鱼来了看这条小鱼!那么小一条鱼我可以把它吞了。一口就行!是不是哦?真那么容易?当然!这条鱼那么小!但你以前就错过闭嘴(脑子里说的)。这条鱼那么小。我正盯着它看呢。一口咬下去就没了。还不够我塞牙缝的。这算鱼么转载 2007-04-19 11:52:00 · 10475 阅读 · 3 评论 -
翠花儿,上代码
上篇帖子里聊到Sussman认为构造出健壮软件需要我们的系统支持continuation, 回溯,和生成-测试的方法。生成-测试最直观简单的方式是为系统提供多项结果。系统一个一个地测试这些结果,并接受符合要求的一个。Sussman举了一个例子:平方根函数通常返回正根,而抛弃那个负根。那按照生成-测试的方法,一个平方根函数应该将负根和正根一起返回,然后由系统决定到底哪个根更好。后来他进一步提到(第2原创 2007-04-23 14:00:00 · 8983 阅读 · 9 评论 -
跳棋被搞定了
从Reddit看到的。BBC报道Alberta大学的一个研究小组号称解决了双陆棋(跳棋)(checker, 又叫draught),他们的程序可以保证每盘棋是胜局或者平局。值得注意的是,这个研究小组用的方法相当“粗暴”:计算机集群遍历所有的可能对局(一局棋大概有1020种可能性)后,存下对局过程备查。程序在实际对局时,根据局面选择最佳步骤,并且预测并证明可能的结局。有兴趣的老大可以到这里实时体原创 2007-07-20 05:58:00 · 6810 阅读 · 8 评论 -
推荐一篇文章:构造健壮系统
有时无知是福。俺看到一点新鲜的科普也能觉得造化神奇。刚才读Gerald Jay Sussman(SICP作者)的文章,Building Robust Systems – an essay,竟然心如小鹿乱撞,手心湿润,仿佛第一次握住初恋情人温柔的手。这篇文章主旨明了:构造复杂的健壮系统非常困难。我们的软件能够有效完成某件具体任务,却不能适应业务领域的变化。一点细微的需求或部署的改动都能让我们的系原创 2007-04-22 13:35:00 · 10535 阅读 · 7 评论 -
与Scheme共舞
发表在《程序员》2007年7月刊上。不log上写帖子不用考虑版面限制,所以这里的帖子比发表的啰嗦点。赵健平编辑,Jacky,和刘未鹏都给了我很多帮助,在这里一并谢了。免费的Scheme实现很多。我用的是PLT Scheme,可以到这里下载。PLT Scheme的IDE(Dr. Scheme)支持Emacs的键盘绑定,用emacs的老大们应该喜欢。Dr.Scheme内置中文支持:下面是原创 2007-07-03 13:49:00 · 52882 阅读 · 18 评论 -
活用regex的例子
在reddit推荐的文章上看到的。下面的代码在CMD窗口下运行通过。如果在BASH下面运行,单引号和双引号要对调。perl -wle "print prime if (1 x shift) !~ /^1?$|^(11+?)/1+$/" 任意一个数>Python的代码是:import redef is_prime(num): return not re.match(原创 2007-03-19 15:36:00 · 4834 阅读 · 0 评论 -
吃了大力丸的Ruby 2
Whys Lucky Stiff 上看来的。俺只是搬运工。能读原文的老大们不用往下看了。嗯,假如一个类里有个实例方法。我们希望这个方法只运行一次。”切,我还以为是抢鸡蛋呢“,熟读铁撬书的老大们开始嗤之以鼻,”不就是第391页里Tadayoshi Funaba的once么?就连上一篇《吃了大力丸的Ruby》也有类似的实现”:01: def once(*ids)02: for id in转载 2006-07-13 14:12:00 · 2841 阅读 · 1 评论 -
继续讨论Java里的closure
本来是这篇帖子里孟岩老大的评论。因为在评论里不好加链接和格式,就贴在这里了。不错,语言设计不光是提供一堆功能。设计语言的时候我们得仔细细考必须舍弃什么功能,以便用户们轻易地理解语言的设计思路。一门语言不仅帮助用户解决问题,也引导用户沿着某种统一的思路或风格来运用这门语言。从这个角度来说,孟岩老大担心“面对同一个问题的可能方案越来越多,彼此差异越来越大。。。共同价值观消失”是非常有道理的。不过我原创 2006-08-20 11:48:00 · 5101 阅读 · 0 评论 -
我的常用开发工具
呵呵,大部分是免费的。现在好的工具满天飞。TC2.0还是不要拿来说事了吧?误人子弟呐!没必要满世界找VS企业版。满世界找VSE的都是菜鸟。菜鸟用企业版,光看那么多菜单就眼晕,浪费时间在河学习编程无关的功能上,何苦呢?跑题了。还是说常用工具: 编辑器。我向来主张什么趁手用什么。所以我的编辑器也不止一个: VIM7。用Emacs的老大不用来教训俺了。俺用惯了原创 2006-08-15 13:37:00 · 7568 阅读 · 7 评论 -
Java7要支持closure了?
当然,不是代数里那个针对操作的closure,而是函数编程里的closure。这里 是提议的PDF。从PDF来看,Java准备支持通行的lexical scoped closure。也就是说,一个函数对象读取的自由变量必须由源代码的结构决定。看例子吧:public static void main(String[] args){ int plus2(int x){ return原创 2006-08-20 03:33:00 · 9381 阅读 · 31 评论 -
回答张孝祥老师的问题:Java里UTF-8的编码和解码
回答张老师的一个问题。下面的回答虽然油嘴滑舌,但我承认这个问题本身比较有趣,属于有关UTF-8的基础知识,值得掌握。人家布老大都说了,如果你想请教他怎么写处理32位的编码解码程序,得交钱,还是美元。可见这个知识还是很有用的。 下面是回答:困扰大半年?是看了Bruce Eckel的帖子后来考您的吧?连测试的例子都和布老大的一模一样。 功夫在诗外啊。与其说是Java问题,不如说是UTF-8编原创 2006-08-23 04:34:00 · 6312 阅读 · 9 评论 -
重搞(refuctoring) - 因为职位稳固的关键是代码不可维护
PDF文件。从programming.reddit.com 看到的。没有耐心的话,一定要看11页到第13页。笑死了。作者其实也没有多夸张。有人就这么玩儿的。摘一段把职业道德当放P还理直气壮的2B言论:I also believe we have two vastly deferent mentalities in terms of our perspective of the job we d转载 2007-02-17 07:37:00 · 3459 阅读 · 0 评论 -
差点被dojo搞死
做WEB界面编程很痛苦。菜鸟做WEB界面编程比黄连还苦。 Dojo 提供了一个Tooltip Widget。当我们的鼠标移到指定的地方时,一个提示框就弹出来了。 再把Tooltip稍稍扩展一下,就可以在弹出来的Tooltip里放任意HTML代码。加上一点AJAX调用,一个内容丰富的提示框就做出来了: 鼠标可以在tooltip里自由移动。鼠标移出tooltip,原创 2007-03-02 11:02:00 · 5817 阅读 · 6 评论 -
排列组合算法1:生成全部有序列
生成长度为N的全部有序列(n-tuples) 在QQ群上和朋友聊天(嗯,我还在用QQ,尽情鄙视我吧。什么时候MSN支持像QQ那样任意添加表情,任意贴图,而不是把我添加的表情图压缩得面目全非,我再放弃QQ不迟。连“彻底地全身心地毫无保留地崇拜你”都不能用,MSN my ass。QQ上的表情:同样的图添加到MSN后: 。什么世道!),常遇到的话题之一是怎么生成一个有序列的所有组合,一个集合原创 2007-03-06 15:17:00 · 11483 阅读 · 5 评论 -
关于C++ 0x 里垃圾收集器的讲座
好像最近C++标准地下工会在公司附近开会,所以我们上班时偶尔可以看到工会成员矫健的身影。我们也近水楼台,得以听到关于C++0x进展的一些科普报告。上次Bjarne Stroustrup做了关于泛型编程的讲座后,Symantec实验室的Michael Spertus也做了一个关于C++ 0x里垃圾收集的讲座。Michael Spertus当年写出了IBM PC上最早的C编译器,也是C++ 0x里垃圾原创 2007-07-23 11:56:00 · 13198 阅读 · 9 评论 -
残酷的语言兴亡
今年OSCON的幻灯片出来了。个别讲座还有录像。可以到这里下载。 正在看Simon Peyton Jones关于Haskell的讲座幻灯片。开头四张编程语言生命周期的曲线很有意思。血淋淋的啊。大部分研究型语言三年内夭折,用户不超过50人。大部分成功的研究型语言8年内寿终正寝,用户不超过100人。100万用户数是语言不朽的底线。Haskell度过了差不多10年的漫长平台期。现在好像焕发了第二春(总觉转载 2007-07-28 13:53:00 · 7426 阅读 · 1 评论 -
那就推荐一本消遣书吧
上学最宝贵的收获之一是结交学识过人的朋友。自己闷头学得山穷水尽时,高手轻轻一句点拨,眼前便峰回路转,柳暗花明。每次上完课,有幸和朋友小聚,请教弱智问题,听朋友妙语解惑,实在是难得的人生乐事。读The Little Schemer,也有同样的感受。读The Little Schemer的过程,就是被良师引导的过程。 用作者的话说,The Little Schemer是一本教人理解计算本质的书原创 2007-07-27 15:01:00 · 18525 阅读 · 8 评论 -
八卦一下模型验证(一)
先穿渔网袜从珠穆朗玛峰上滚下来哭求优快云的大大们看一下优快云博客插件不能自动上传图片和排版的问题。人肉上传图片和排版真地很痛苦呐! 2007图灵奖和模型检验不知道长达半年的疯狂加班是否损害了自己的心理健康。回顾过去几个月,似乎除了工作嘛都没干。人仿佛颓了,觉得时光了无意义地飞逝,过去半年的泰半记忆好像盛夏阳光里的冰块,蒸发得不剩一丝水汽。幸好不是全无亮点,比如看到好原创 2008-03-03 11:00:00 · 20319 阅读 · 9 评论 -
JavaScript这浓眉大眼的也背叛革命了(一)
更新:忘记加入对generic function的概述了。刚才补上。另外chenxiaoshun老大提了个很好的问题:generic function和function overloading有什么区别?区别就是,调用哪个generic function是在运行时决定的,同调用虚函数实现多态一致。而重载函数是在编译时确定的。补充的内容是:Generic function就是用来解决这类多分原创 2007-12-13 13:48:00 · 16618 阅读 · 24 评论 -
谁说内存管理不重要来着?
前俩儿Java进程是咱内旮旯的IDE和测试服务器。IE上就一页面儿,运行咱的WEB应用。FireFox上就Google Reader,供开小差用。照这玩儿法,多少内存也得玩儿残了。原创 2007-12-11 04:21:00 · 5858 阅读 · 2 评论 -
八卦一下模型检验(二)
接着八卦前先回答老大们直指灵魂的问题。不就是系统状态遍历的问题么?干嘛非得用什么时序逻辑、模型一类的形式化手段啊?搞得比陈凯歌还深沉。做人不能这么无耻不是?找个真正的程序员,放出手里的蝴蝶不就搞定了?嗯,很多程序的确可以靠程序达人强大的自觉和天才的排错能力搞定。问题是,模型检验的对象是高并发复杂系统(比如说1020个状态),目标是绝对可靠地查出系统的错误,既不错杀三千,也不放过一个。这些系原创 2008-03-18 10:34:00 · 18463 阅读 · 13 评论 -
采访Joe Armstrong的podcast
早上上班,听Software Engineering Radio对Joe Armstrong的访谈。Software Engineering Radio办得真不错。请来业界风云人物娱乐大众。访谈前主持人做了功课,提的问题颇为有趣,引得被采访着侃侃而谈。上期对Galen Hunt的访谈也挺精彩,把Singularity OS吹得比Singularity还有卖点。Joe在谈到并发编程对程序员冲击时原创 2008-03-21 02:03:00 · 23440 阅读 · 6 评论 -
程序员的效率
Steve McConnell的博客帖子。详述了程序员产率相差10倍的来历。插草标 卖身推荐。引用一段:80年代中期,波音上了一坨重要项目。80枚程序员参与其中。项目不顺利,眼看要错过一坨不容错过的最后期限。为了保证该项目成功,波音调走了这80枚老大,请来一个人。于是这枚老大以一人之力,按时按量交割项目。剩下的问题是:我们怎么才能培养出这种一击必杀的能力?转载 2008-03-28 21:42:00 · 30883 阅读 · 3 评论 -
电话面试经历
出来混,迟早要还。也有了人生第一次电话面试。没有签NDA,所以在这里分享一下。但愿对各位大佬有帮助。职位是架构。要求是对Java和J2EE熟,能编程,熟悉OO设计。有架构经验,等等等等,都是大路货,没什么出奇的。再说出奇的我也不行啊。 总的感受:用自己的话总结对方的话挺有用。表明了你在积极思考,理解了对方的意思,并且避免了双方的误解。关键是要加上自己的理解、延伸,和追加问题。面试官原创 2008-07-20 00:23:00 · 163460 阅读 · 43 评论 -
八卦一下模型验证(三)
优快云的大大们啊,求求你们了啊。修复这坨不能自动上传图片的错误啊。好像已经三个月了啊。图多的时候发文章真地很痛苦啊。Orz Orz Orz准备八卦Edmund等人算法时才想起,人1986年成名作是讨论用CTL (Computational Tree Logic) 作规范语言的模型验证算法,而第一篇八卦失心疯只介绍了LTL。虽说也有算法对付Kripke结构上的LTL模型验证,原创 2008-06-14 15:58:00 · 127539 阅读 · 8 评论 -
吃了大力丸的Ruby:unfold的实现
最近奇忙。从早到晚工作。别说写博客,连读博客都 没有时间。虽然一直想八卦一下JavaScript那浓眉大眼的也背叛革命了这件大事,却抽不出空。不过看到这么精彩的代码,还是忍不住转载。起因是这样的:大家都熟悉fold函数,也就是Ruby里常用的inject()函数:给出起始值,把某个Collection里的值叠加上去。比如说,给出起始值0,累加数组[1, 2, 3, 4, 5]: [1, 2转载 2007-11-08 14:52:00 · 4070 阅读 · 7 评论 -
用SQL求解数独(Sudoku)
看来用XSLT解数独已经没有挑战性了, 因为XSLT是披着XML外衣的函数编程语言。所以闲人中的闲人们用新时代的汇编--SQL,来解决数独问题。当然不是SQL 92了,而是用了Oracle10g里介绍的MODEL语句。这么看来,邹键老大用SQL解简单算法题也不算离谱。:-DOracle的MODEL语句允许我们创建多维数组,并通过设定规则来处理数组,得到新的结果。规则本身可以递归。计算后数组本身转载 2007-06-10 14:36:00 · 4922 阅读 · 1 评论 -
Orz oz
为了读Concepts, Techniques, and Models of Computer Programming这本书,去下了Mozart,一个支持编程语言Oz的开发系统。照这书里的指点,运行Oz.exe,居然看到Emacs窗口弹出来。瀑布汗。。。这就是Mozart编程界面啊。怪不得只要8MB的安装空间。这时才注意到书里直接就用Emacs的黑话了,什么编辑器分成两个frames。我就纳原创 2007-07-28 07:17:00 · 5127 阅读 · 6 评论 -
微软推出DLR, Silverlight,和IronRuby了
MiX07上宣布的。DLR = Dynamic Language Runtime。DLR和IronPython全部开源,可以到codeplex下载。有了DLR,在.NET上开发动态语言的工作可以简化许多。目前DLR支持Python, Ruby, JavaScript,和VB,只能在Silverlight下运行。不过把支持面扩展到普通CLR运行时应该只是时间问题。微软的CLR已是牛B的运行时,有原创 2007-05-01 13:31:00 · 7934 阅读 · 1 评论 -
贝叶斯理论
为什么大家一放假(还不是我放), 俺就跟打了鸡血一样兴奋,拼命灌水嗫?Coding Horror(这哥们儿惊人高产,估计每天直接向血管注射Espresso)的新帖子科普了一把贝叶斯理论和Markov链。这两年机器学习的成功应用越来越多,人们对它的依赖也越来越重。毕竟现在信息太多,而我们真正需要的是知识。让程序帮我们发现知识自然成为应用热点。一微软高官跳槽到Google后说,相比微软,Google在原创 2007-05-02 01:13:00 · 10305 阅读 · 11 评论 -
Design Patterns
Apache XML-RPC。石化中。。。转载 2007-08-02 00:55:00 · 5213 阅读 · 5 评论 -
Lisp for Small Prices
通过programming reddit,从这里看到的。Amazon.ca果然发飙了,软皮本才3.95加元。对比一下amazon.com上同样的书,50美元。怪不得冲到amazon.ca排行榜的第二。顺便扫了一眼排行榜,看到那本龌龊的The Secret居然排名第7,和amazon.com上一样。看来在心想事成不劳而获这坨美梦面前,南北同心。这本The Secret一度在amazon.com原创 2007-08-09 07:55:00 · 7711 阅读 · 5 评论 -
Prolog小程序
坚决鄙视一介绍Prolog就用家谱树做例子的帖子/教材/指南。跟我八辈子不搭界的某银的家谱关我P事啊?就算自己的家谱。我爷爷的姑姑的侄儿的表姐的大舅子关我P事啊?和朋友聊到用Prolog实现上次借助amb解决的谜题。Prolog内置了搜索和裁剪。写出的代码近乎琐碎,根本不需要amb。想想看,用amb时,那些描述约束的语句(调用must()函数的那几行)在选择语句之后执行,但竟然能左右之前被执行原创 2007-05-15 13:52:00 · 9232 阅读 · 1 评论 -
漂亮代码
从 Joe Marshall论证编程是艺术的文章上看到的。编程到底是不是艺术已经快变成继编程语言和Emacs vs Vi之后另一Flame War话题。有兴趣的可以去看reddit的讨论。有意思的是一段漂亮的代码,实现SICP上一坨练习题1.3: 实现一个带三个参数的函数。这个函数返回三个参数中最大的两个参数的平方和。 题目用来训练学生对条件分支的理解。常规的解法是(迎合一下各位老大,改成转载 2007-05-16 13:33:00 · 9408 阅读 · 13 评论 -
编程范式的示意图
从LtU上看到的。这张图根据CTM的思路,勾画了不同编程范式的特性和联系。方框代表某种编程范式。箭头边的黑体字表示箭头上方编程范式的代表性语言。以“+”为前缀的斜体小字是一种编程范式过渡到另一种编程范式需要的语言特性。CTM从阳春版的核心语言(kernel language)开始,逐步解释语言不足之处,并由此加入新的语言特性,最后就得到了几乎完整的语言—Oz。这就是为什么Oz出现在多条分支的转载 2007-08-20 23:10:00 · 8227 阅读 · 3 评论