123
 123

Mon 17 September, 2007

Click here to bookmark this link.Channel Image19:08 Who chose this face for me?» Projectionist
Click here to bookmark this link.Channel Image17:48 闲聊C++单元测试框架» 梦想风暴
今天下午,和Darwin聊了一下C++单元测试框架,主要参考对象是CppUnit和CxxTest。

表现形式
因为C++不支持reflection,所以,必须要做一些额外的工作,让框架知道相关内容的存在。CppUnit的做法是用宏进行注册。这种做法要求我们每添加一个测试,就要考虑用相应的宏进行注册,这种做法很繁琐,最大的问题在于由于疏忽而遗漏,这种靠人工保证的东西不可靠。在这点上,CxxTest做得要好一些,有一个专门的脚本做这件事。通过这个脚本扫描这个自己编写的文件,生成一些新的文件,完成这个工作。从代码的表现力和可靠度来说,要好得多。唯一的问题是引入了一个脚本,而且这个脚本一般是由某些动态语言写成的(目前的CxxTest有Perl和Python的脚本),从而引入了对这种语言的依赖。不过,由于C++语言本身的限制,从接口的角度来看,这种做法已经很不错了。

语法
有一种C++的单元测试框架叫TUT,Template Unit Test的缩写。顾名思义,它是用模板完成的(其实,CppUnit和CxxTest都有模板的部分)。随着C++编译器的进步,在大多数情况下,模板都是可以顺利通过编译的。但是,不要忘了,还有一种环境叫嵌入式,那里的编译器基本上还是很原始的,模板并不见得能够顺利的通过编译。

此外,模板还会带来另外一个问题,编译时间的增长,相信有过模板编程经验的人都会对此深有体会。编译时间增长意味着什么?我们接下来讨论。

编译时间
有一种敏捷实践叫做测试驱动开发(Test Driven Development)。测试驱动开发的基础是单元测试。测试驱动开发希望达成的一个目标是快速反馈,所以,站在C++语言的角度,如果执行时间受限于代码本身无法缩短,那么我们希望编译时间尽可能短,这样,才不会把生命都浪费在等待代码编译上。

除了刚才提到的模板问题之外,CppUnit会把所有测试编译生成一个可执行文件,这意味着什么?几乎修改任何一个文件都会造成这个文件的重新生成。随着目标文件的增加,这个过程时间就会增长。相对于修改范围(可能只是某一个文件),还是显得有些长了。为什么Java语言不会存在这种现象?因为Java是动态连接的,所以,Java生成.class就结束了。对应到C++上,这只是完成了目标文件的生成,而在C++我们不得不再进一步生成可执行文件。从道理上,CxxTest可以为不同的测试文件生成不同的可执行文件,不过这么做又少了总体的过程,统计起来又显得心有余力不足了,而且通常不会这么做。

个人而言,对这几个单元测试框架都不是非常了解,如果前面的讨论存在谬误,欢迎有识之士指出。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image14:50 uxorial: Of or pertaining t...» Projectionist
ux•o•ri•al
[uhk-sawr-ee-uhl]adjective
Of or pertaining to a wife; typical of or befitting a wife; wifely.

add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image14:17 REST on Rails之资源嵌套» LetRails
REST认为一切都是资源(Resource),但并不是所有资源都是平行对等的,资源之间也有从属关系,要建立这种资源的层次关系,就必须将资源进行嵌套(nested resource)。 以Blog系统为例,假设每个...
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image01:32 Ruby → Erlang ?» 青木日記
あー……そうでもないか。俺がいまやりたいのは 2000 万プロセスとかじゃなくて、CPUときっかり同じ数のプロセスを作ってすべてのプロセスを CPU 使用率 100% で動かし続けることだ。それならせいぜい 100 プロセスあれば済むんだから、なにも Erlang を持ち出さなくたって、素の Ruby を fork すればいい。 そもそも Ruby で解決すべきは別のところのような気もするしなあ。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image01:32 Ruby → Erlang» 青木日記
Ruby 内 DSL を Erlang のコードジェネレータ として使ったら幸せになれるかもー。 (23:48)
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl

Sun 16 September, 2007

Click here to bookmark this link.Channel Image06:49 How to get a patch into Rails» Riding Rails - home

For a while, the patch queue was getting badly out of hand. The flood of new entries was simply too great to be reasonably managed by a small group of people. Too much got stuff got stale and their creators got disillusioned, understandably so. But for a while now, we’ve been running with a new policy on patches, which seems to be working a lot better for those who’ve been following it.

But I’m sensing that a fair number of people are not aware of those changes in policy, so I thought best to bring them up again here.

Step 1: Raise the barriers of quality

Part of the reason that the original patch queue got out of hand was due to the large number of patches coming in that lacked essential qualities of a good patch. They were either missing a good rationale (why am I doing this? what’s the benefits?), good test cases, or didn’t update the relevant documentation. To apply such a patch meant that this work had to be shouldered by someone else, usually the guy who wanted to apply the patch.

Now the barriers of quality are more apparent. Your patch will simply not be considered for inclusion before it has all those elements. It’ll live with the “unverified” keyword until you or someone else that cares especially deeply about the patch (like someone else having the same problem) gets the quality up to par. Then the patch moves on to step 2.

Step 2: Get the community engaged to review your patch

The last step before your patch is ready to be put in the queue for inclusion is to get community support round up. We now require that three different people must review your patch, apply it, run the tests, read your documentation, and like what it does and how it’s implemented. When they do, they’ll make a comment on the ticket with a “+1”.

Get three such +1s and you can tag your patch with the “verified” keyword. That’ll make the patch appear in Report #12: Verified Patches, which is a bell telling the core team that you patch is baked and ready to be included (barring a final review).

The core team is trying to keep report #12 empty at all times. There shouldn’t be a big lag time between getting to “verified” and getting a final review of your patch, which will either send it back to unverified (because the implementation is deemed in need of work or because there’s some fundemental disagreement over whether or how this patch goes about its business) or it’ll be applied and available in edge.

So if you have a patch that you still care about sitting in the queue, dust it off, and put it through these two simple steps and you’ll be back on the road to glory. There are still no guarantees that your patch will receive immediate attention, but so far we’ve managed to keep report #12 moving very nicely. It’s all empty as of today!

The front page of http://dev.rubyonrails.org has been updated to reflect this policy.


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image02:13 言語開発合宿» 青木日記
http://wiki.fdiary.net/ldev/ いいなあー。おれもなんか言語作りたい。 いやまあC♭は新言語って言えば新言語だけど、 あれはひたすら C に似せることを目指してるから 言語としてはいまいち楽しくない。 (00:16)
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image02:13 台風襲来» Matzにっき
明日はX-Devがあるので東京なのだが、 いやがらせのように台風が東京に向かって突き進んでいる。 というわけで、予定変更して一日早く東京入り。 夕方から雨が強くなってくる。 夕食以外、ホテルに閉じこもっていたわけだが おかげで少々遅れていた原稿が片づいた。 もっとも、今月はやや減ページなのだが。 ホテルでは静かだが外では大変なことになっているらしい。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image02:13 XMLに対するXPathのように - JSON用データアクセスライブラリ「JSONPath」 | エンタープライズ | マイコミジャーナル» Matzにっき
この考えを発展させると、 任意の(Rubyの)オブジェクトをトラバースして オブジェクトを求めるXPathならぬRubyPathを作ることも可能だと 思うのだが、そんなのにニーズはあるのだろうか。 Enumerable#selectとかの代わりができて、 参照階層が深くてもいきなり取り出すことができるのだが、 それがどれだけ嬉しいかどうか、だな。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image02:13 SQLAlchemy, Declarative layers, and the ORM 'Problem'» Matzにっき
PythonのORMである、SQLAlchemyとElixirではSQLAlchemyを使うべきだ、という話 SQLAlchemyの例: from sqlalchemy import Column, ForeignKey, MetaData, Table, types from sqlalchemy.orm import mapper, relation metadata = MetaData() person_table = Table('person', metadata, Column('id', types.Integer, primary_key=True), Column('name', types.String, nullable=False), Column('age', types.String) ) group_table = Table('group', metadata, Column('id', types.Integer, primary_key=True), Column('name', types.String,..
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image02:13 RubyConf 2007 Preliminary Agenda» Matzにっき
RubyConf 2007の暫定プログラムが決まった。 今年からはマルチトラックということだ。 RubyConfの成長曲線を考えるとある意味必然なんだが、 今までのRubyConfらしさを失ってしまいそうで、 少し残念な気がする。いや、変化も当然なので、文句を言っているわけではないけど、さ。 2日目の午前中のセッションがIronRuby, JRuby, Rubiniusと来てるんで、 YARVもなにか言うべきではないのだろうか。 同じ日に予定されている私のキーノートの時間をあげようか? > ささだくん
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image02:13 Moonlight: Silverlight for Linux» Matzにっき
MicrosoftがSilverlightのLinux版であるMoonlight(Monoで動く)を 提供するという話に関するTim O'Reillyのコメント。 Microsoftがオープンソースの信奉者になったとはとても思えないが、 その重要性を理解し、場合によっては協力しようと考えていることは 素直に認めてもよいのではないか。たとえ、その裏に利用しようという魂胆があるにしても。 ま、オープンソースを利用しようとしているのは 我々も同じことなのだから。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image02:13 ITmedia +D LifeStyle:電話抜きiPhoneの「touch」、動画「nano」、大容量HDD「classic」−−iPodが全ラインアップを改訂» Matzにっき
あんまり普段から(車の中以外で)音楽を聴く習慣がない私には iPodとか欲しいと強く思うことはないんだけど、 「電話抜きiPhone」であるところのiPod touchは PDAとして欲しい気がする。 あー、でもなあ。iPhoneと同じということは(ハックしないと)野良アプリは 動かないってことだよね。PDAとして使うには向かないかなあ。 PDAじゃないもんなあ。 そんな私はいまだにVisor Edgeを使っている。 先日壊れて予備機に移行したので、 新しい予備機を購入しなくちゃ。 ヤフーオークションに出てるかなあ。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image02:13 From Rails to Django − Myles Braithwaite» Matzにっき
RailsからDjangoに移行したらCPUやメモリの使用量が激減した、という話。 しかし、コメントでは「(別の)アプリを書き換えたらRailsのままでも使用量が激減した」という 話もあるから、いつもそうなるという保証があるわけではない。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl

Sat 15 September, 2007

Click here to bookmark this link.Channel Image20:55 Off to RailsConf Europe 2007» chris blogs

Tomorrow I’ll fly to Berlin to attend RailsConf Europe 2007. There will be no mail, IRC and can’t live blog. But I wont be angry at non-working or darn expensive WLANs, either.

I have a hipster PDA with me, and an (albeit digital) camera, so don’t feel too safe.

If you’d like to meet me, feel free to contact me by mobile or txt (I will read, but not reply to tweets for chneukirchen).

I’d like to organize a BoF or similar for people interested in Rack and running Rails together with Rack. Catch me if you are curious.

chris blogs and Anarchaia will resume publishing on Friday, September 21.

Have a good time.

NP: Bob Dylan—4th Time Around


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image18:06 取材» Matzにっき
取材を二件も受ける。 主に地域振興とかそういうテーマ。 確かに話題にはなってるんだけど、本当にお役に立ってるんだろうかと 不安にならないでもない。まあ、松江市の露出という意味ではそんなに悪くないか。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image18:06 取材» Matzにっき
昨日に引き続き取材。なんでも中国地方ローカルのNHKニュースのコーナーで 取り扱ってもらえるのだそうだ。 どういう扱いになるんだか。 恥ずかしい。撮影はもうちょっと先。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image18:06 Why is X not written in Lisp? or C, man, C!» Matzにっき
Cを誉め称える記事、のように見えるが、 実際には言ってることと実際が全然違う、という記事。 ほめごろし? まあ、こういう抽象化が必要なケースでは Lispにかなう言語はなかなかないよなあ。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image18:06 Ruby needs a facelift - Blogs - Byte Club - Builder AU» Matzにっき
Rubyロゴコンテストについて。 笑っちゃうのはこのロゴ。 まあ、実際。世間的にはRailsあってのRubyとみなされていることが多いと思うので、 そうでないことを明示的に示すメッセージを発信することにはなると思う。 我々としてもRailsの知名度を利用していないとは言えないので、 あんまり突き放すのも誠実な態度ではないか。悩ましいところである。 ま、とはいえ、だからといってこのロゴを採用したりはしないけど(エントリされてないし)。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image18:06 Recording Artist: Microbenchmarking» Matzにっき
マイクロベンチマークの使い方。 マイクロベンチマークっていうのは 実際のアプリでないベンチマーク向けのプログラムによって 性能を測定すること。 言語処理系(インタプリタとかバーチャルマシンとか)の性能を測定すること になるが、実際のアプリケーションではむしろライブラリの性能の影響の方が大きい。 ので、大抵の場合、マイクロベンチマークは不適切に用いられている。 まあ、世間の誤解ってのはなかなか解けないよね。 なら、それを逆に利用してしまおう。 今回、YARVでマイクロベンチマーク性能を改善することで 実は世間の「..
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image18:06 Matasano Chargen >> Four C Programming Anti-Idioms» Matzにっき
Cのアンチ・イディオム4つ。 mallocの戻り値をチェックする failmallocの件とは正反対だが、たしかに多くのプログラムでは どうしようもないというのも事実だ。でも、例外が使えるなら raiseした方が良いと思う。 void*をキャストする キャストを強制されるC++と違ってCのvoid*はそのまま代入できる。 こっちの方が良い(と著者は思っている)。 小さな構造体を参照渡しする もうオーバーヘッドは問題ない。どんどん使おう。 mallocのsize指定 sizeofの引数に型を指定すると変更箇所が増える。 式そのものを書くと型が変わっても対応できる。..
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image11:59 Tweets on 2007-09-14» halostatue
I won’t be buying a new iPod until there’s video content here in Canada. Hurry up, Apple! # too much to do, too little motivation. # sweeping tabs in NNW. way overdue. # Powered by Twitter Tools.
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image03:56 技术信息:使用构建工具buildr可能出现的错误信息» 道喜技术日记

技术信息:构建工具buildr可能出现的错误信息

  • 构建文件Rakefile或者buildfile里面没有定义变量repositories及其值
    具体错误信息实例
    E:\work_jruby\buildr-jruby>rake -f Rakefile
    (in E:/work_jruby/buildr-jruby)
    "E:/work_jruby/buildr-jruby"
    Downloading org.apache.ant:ant:jar:1.7.0
    rake aborted!
    No remote repositories defined!
    E:/work_jruby/buildr-jruby/rakefile:14
    (See full trace by running task with --trace)
  • 构建文件Rakefile或者buildfile里面没有在开始时使用方法require 'buildr'
    具体错误信息实例 
    E:\work_jruby\buildr-jruby>rake -T
    (in E:/work_jruby/buildr-jruby)
    rake aborted!
    undefined local variable or method `repositories' for main:Object
    E:/work_jruby/buildr-jruby/rakefile:11
    (See full trace by running task with --trace)

add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl

Fri 14 September, 2007

Click here to bookmark this link.Channel Image19:19 acts_as_taggable» Ruby 语言 思想驱动生活
这个世界到处都是tag 而且这个世界上好像有两个acts_as_taggable,一个是dhh的plugin版的,一个是gem版的。 比较了半天,发现还是gem版的比较好(http://rubyforge.org/projects/taggable/)。 具体来说 1.gem对于不同的要tag的对象,可以用TagsTable1s格式的表来存tag和对象的关系,比如photo的tag用photos_tags表。 plugin版的则只用一个表taggings,用taggable_type这个字段来表示tag的对象类型。 2.可以为tag关系增加属性。 plugin版的tag关系表只有3个字段(不包括id),要想给这个tag关系加其它属性则比较困难。 gem则容易多了。 gem的tag和被tag对象之间的连接表除了tagid和被tag对象id,还可以有别的属性。 在给对象加tag的时候,可以顺便更新这些属性: # We can do some interesting things with it now   person = Person.new   person.tag "wine beer alcohol", :attributes => { :created_by_id => 1 }   Person.find_tagged_with(:any => 'wine', :condition => "tags_people.created_by_id = 1 AND tags_people.position = 1") 3.统计功能 tags_count可以统计每个tag被用了多少次 # Gets the top 10 tags for all photos   Photo.tags_count :limit => 10 # => { 'beer' => 68, 'wine' => 37, [...]
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image13:20 元麻布春男の週刊PCホットライン - DRMどころかEPNも嫌いだ» Matzにっき
(EPNを含む)DRMが存在すると、ユーザは特定のPCやハードディスクに縛られてしまう。 それらが壊れるといっきにデータを失うことになる。 これは買い替え需要を減らす結果にもなり、結果として経済に悪い影響を与えかねない。 どうしてもDRMが必要だというのなら、やはりFairPlayやEPNのような方式にならざるを得ないだろう。この場合、一定期間を経ると暗号が解除される仕組みを組み込んで欲しい。5〜10年で暗号が自動的に解除されるのであれば、それまでの5〜10年間くらいは我慢できるかもしれない。 補償金とDRM、どちらか二択と言われ..
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image13:20 Full Disclosure: World's most powerful supercomputer goes online (fwd)» Matzにっき
決してTOP500に載ったりすることはないし、 LINPACKの実行に最適化されてたりもしないけれど、 世界でもっとも強力な「スーパーコンピュータ」がまさに存在している。 その名はStorm。ワームなどで乗っ取られたコンピュータで構成される ボットネットである。 こわい、こわい。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image13:20 lanugo: A covering of fine,...» Projectionist
la•nu•go
[luh-noo-goh]noun
A covering of fine, soft hair, as on a leaf, an insect, or a newborn child.

add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image11:59 Tweets on 2007-09-13» halostatue
not watching Heroes fast enough. more more more. # Powered by Twitter Tools.
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl

Thu 13 September, 2007

Click here to bookmark this link.Channel Image21:45 marcescent: Withering but n...» Projectionist
mar•ces•cent
[mahr-ses-uhnt]adjective
Withering but not falling off, as a blossom that persists on a twig after flowering.

add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image11:59 Tweets on 2007-09-12» halostatue
@gruber I just got some staedtler .3mm triplus roller pens — how does the g3 0.38mm compare? # @ntalbott i like Adium, actually. # @ntalbott huh. I haven’t had it crash on me in … months. # @ntalbott and that’s survived several upgrades # Powered by Twitter Tools.
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image11:59 Tweets on 2007-09-12» halostatue
@gruber I just got some staedtler .3mm triplus roller pens — how does the g3 0.38mm compare? # @ntalbott i like Adium, actually. # @ntalbott huh. I haven’t had it crash on me in … months. # @ntalbott and that’s survived several upgrades # Powered by Twitter Tools.
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image01:55 I want to get a cat so I ca...» Projectionist
I want to get a cat so I can call it Kitty Couric.

Sarah Chapin


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl

Wed 12 September, 2007

Click here to bookmark this link.Channel Image16:08 Links for 2007-09-11 [del.icio.us]» John Lam on Software

add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image12:14 penetralia: 1. The innermos...» Projectionist
pen•e•tra•li•a
[pen-i-trey-lee-uh]noun
1. The innermost parts of a building, especially the sanctuary of a temple.
2. The most private or secret parts; recesses: the penetralia of the soul.

add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image11:59 Tweets on 2007-09-11» halostatue
I’m in @chadfowler’s network, too. :P # I’m finding that I’m using FFox features less and less these days… it doesn’t work well with my Mac workflow. # Powered by Twitter Tools.
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image09:30 IronRuby Libraries» John Lam on Software
The IronRuby libraries are divided into two groups: built-ins and the standard libraries. We will distribute both sets of libraries in the standard IronRuby distribution. The distinction is whether a library must be required prior to use. The code is...
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image05:08 My Desert Code Camp Haskell Talk Has Been Changed» James Britt - Code, Content, Caffiene

For all sorts of really wonderful reasons, I will not be prepared to give a proper Haskell presentation at upcoming Desert Code Camp. After speaking with Lorin, we agreed that I’ll do a Haskell thing as part of the ad-hoc BarCamp sessions that will be running throughout Code Camp.

Since my original Haskell talk was slated for 9:15 Saturday morning, that’s when I’ll be in the BarCamp section.


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image02:48 kakistocracy: Government by...» Projectionist
kak•is•toc•ra•cy
[kak-uh-stok-ruh-see]noun
Government by the least qualified or most unprincipled citizens.

add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl

Tue 11 September, 2007

Click here to bookmark this link.Channel Image14:36 Links for 2007-09-10 [del.icio.us]» John Lam on Software

add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image11:59 Tweets on 2007-09-10» halostatue
enjoying "Year Zero" # Powered by Twitter Tools.
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl

Mon 10 September, 2007

Click here to bookmark this link.Channel Image21:45 lycanthropy: 1. In folklore...» Projectionist
ly•can•thro•py
[lahy-kan-thruh-pee]noun
1. In folklore, the magical ability to assume the form and characteristics of a wolf.
2. A delusion that one has become or assumed the characteristics of a wolf or other animal.

add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image20:04 使用Flog测试你的Ruby代码复杂度» LetRails
简介 Flog是一个计算你的Ruby代码复杂度的工具,来自大牛Ryan Davis的seattle.rb项目。 安装 $ sudo gem install flog 使用 $ find . -name \*.rb | xargs flog 这条命令将会计算你当前目录下的所有.rb文件的复...
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Sources