透明思考


Transparent Thoughts


  1. rake stats (again)

    用Ruby翻新一个Java的系统。原来系统功能代码47311行,测试代码13440行(都只计算Java代码)。还没翻完。

    +———————-+——-+——-+———+———+—–+——-+| Name | Lines | LOC | Classes | Methods | M/C | LOC/M |+———————-+——-+——-+———+———+—–+——-+| Controllers | 1403 | 1188 | 31 | 131 | 4 | 7 || Helpers | 361 | 311 | 0 | 52 | 0 | 3 || Models | 2236 | 1837 | 77 | 270 | 3 | 4 || Libraries | 2115 | 1740 | 30 | 156 | 5 | 9 || Model specs | 2443 | 2022 | 0 | 18 | 0 | 110 || View specs | 0 | 0 | 0 | 0 | 0 | 0 || Controller specs | 3315 | 2716 | 0 | 2 | 0 | 1356 || Helper specs | 374 | 310 | 0 | 0 | 0 | 0 || Library specs | 822 | 708 | 0 | 3 | 0 | 234 |+———————-+——-+——-+———+———+—–+——-+| Total | 13069 | 10832 | 138 | 632 | 4 | 15 |+———————-+——-+——-+———+———+—–+——-+Code LOC: 5076 Test LOC: 5756 Code to Test Ratio: 1:1.1

    这次是JRuby on Rails。我特别喜欢它的部署脚本。


  2. Love Me Or Hate Me

    Love me or hate me, it’s one or the other.Always has been.Hate my game.My swagger.Hate my fadeaway.My hunger.Hate that I’m a veteran.A champion.Hate that.Hate it with all your heart.And hate that I’m loved, for the exact same reasons.


  3. 每年的那几天

    又来了。

    好吧,Flickr我已经不大用了,Twitter…虽然让我生活很闷…

    但WorldPay也干掉可算怎么回事涅?

    害我们的build一下午就没绿过。嗯,这是个好例子,告诉我们,Testability Driven Design是很重要的。

    娘希匹。


  4. 刻鹄不成尚类骛

    又来了深圳。还是为那个著名的客户。

    飞机上读《胡适传》,觉得罗老师一半在讲胡适,一半在讲自己的治学观念。“种不亡之远因”这话多次重复以后,扼腕之情,自勉之意,跃然纸上矣。

    打破一种旧体系,唤起一种新希望,固非易事。然则,风也说过多次,革命第二天该当何如,恐怕是一个更难、更实在、更不浪漫、却也更要紧的问题。邯郸学步失其故行。在其本身恐怕当时的念头只是“不论这新的是什么,总不能比旧的更坏了”,而在推动者而言,不当不为这“下一步”有所打算。

    越当其变化激越之时,越有正本清源的诉求,本是人之常情。只是,如果只把自己看作一介匠人,终归刻鹄不成尚类骛,不得其本犹可得其末,也算不无裨益;倘若硬要存作圣之心,唯恐画虎不成反类犬,便只剩这日见激越的革命热情了。

    所以读坛经却偏爱神秀者,自知愚钝,能时时勤拂拭便已。何况是面对着成千上万亟求助者,哪来这许多慧根能幡然醒悟?

    能做一点事就是好的。至于能否“必以正名”,于我何有哉?


  5. ThoughtWorks文集:介绍

    (摘自《ThoughtWorks文集》,第1章。)

    作为一家公司,ThoughtWorks汇聚了一批热情洋溢、积极主动、才智过人的员工,他们为客户提供定制软件开发以及切合实际的咨询服务。如果你问一个ThoughtWorker,这家公司最让他最喜欢的是什么,他很有可能会告诉你:正是那些朝夕相处、并肩工作、彼此学习的同事们。在这个群体里融合了技术极客、管理者、分析师、程序员、测试员和行政人员,他们有着不同的种族、文化和教育背景。这种背景和视角的多样性,再加上坚持正确观点的热情,引发了很多活跃的讨论。

    如今ThoughtWorks拥有近千名聪明而有见地的员工,在全球6个国家设有分支机构,组织内部几乎没有任何层级,并且一以贯之地坚持信息透明。可以说,我们已经创造了一家成功的企业。但我们对“成功”的定义远不止于此:一家企业的成功不仅意味着让客户满意,还应该对整个行业乃至整个社会产生正面的影响。我们有着更高的目标。

    在博客世界里,在技术大会的会场中,在互联网上,在书架上,我们都能听到ThoughtWorker的声音。在不断追求卓越的过程中,我们会近乎冷酷地剖析自己曾做过的事、以及做这些事的方法,以寻求改进之道──在这方面我们永无饗足。在上下求索之中,一旦学到了什么知识,我们就希望与他人共享。

    这本文集所收录的文章虽然各自成篇,彼此之间却有着千丝万缕的联系:它们共同展示了一片布满迷雾的IT丛林,以及一条条或显而易见、或出人意表的林间小径。文章选题跨度之宽、解决问题的办法差异之大,恰能反映众位作者所在的这个组织为各种思想的萌生营造了一个健康的环境。阅读这本文集恰如管中窥豹,让我迫不及待地想看到这些才华横溢的同事们为整个行业、整个社会创造更多。


  6. 见微知著

    一、只发小牢骚

    “Larry is more evil than Bill.” Well, they are both rich and neither of them would giveme even acent. It’s not about morality,IMHO.

    Cucumber sucks.DSLcomes from refactoring, instead of heavy up-front design.

    Selenium sucks…hard to write and take long to run.

    You just have to blame something if you don’t want to blame yourself :D

    二、Tech Lead

    As a tech lead, I want the team ignore my existence, so that they can do their best job (and I canhave arest).

    Try to prevent things from deadlocking each other.

    Martin Fowler is now following you on Twitter!

    三、见微知著

    “见微知著”这个词是见微知著的,如果用粤语来读。

    “见”,古音g声。“微”,古音m声。“知”,古音j声。“著”,入声字。

    像“见微知著”这样能描述自己的词是自指的。例如“两个字的”这个词就不是自指的。

    那么,“非自指的”这个词是不是自指的呢?

    迈出走向悖论的第一步。


  7. 学好音体美

    一、清新

    小清新最烦小清新我认为是两派文艺女青年的学术之争

    张悬的歌让我听得肠子发青嘴里淡出鸟来,就像一杯豆浆兑了五杯水

    苏打绿的歌其实…还好…在我不知道是男人唱的之前

    发现自己对新歌的接受度很低,还是听老歌吧

    加州招待所带我回家走国道

    二、同事们

    和小龙龙pair的方式是,小龙龙写很牛逼的script,我给小龙龙放歌听。

    郑胖子这个昵称如今终于没有歧义了。

    完美的黄亮,真是SUI啊~~黄凉粉团招新进行中

    路线总是容易讲的,挽起袖子做事才算专业

    Copying Java code with Ruby…

    三、Endeca

    Upgrading to 6.x

    I would be happy to stay on the existing JavaAPI. The newerRAD APIis still not widely used and will probably add more risk.

    Well, personally I’d prefer http-basedAPIthan language specificAPI. However, you know, it’s all abouttradeoff.

    四、音体美

    上学的时候老师说学好数理化走遍天下都不怕

    上学的时候老师说音体美都是副科

    于是长大了我们羡慕旁人多才多艺

    于是长大了我们也想学点音体美

    好学生们要学好音体美

    海鸥,考拉先生,大桥,教堂,桌子,椅子,手

    画素描是很好玩的事,它让人平静忘记时间


  8. 三月的最后一周

    一、书托

    《卓有成效的程序员》说穿了就四个词:快-专注-自动化-规范

    立即做你想做的事-不被其他事打断-重复的事不做-做完的事不再去解释

    然后,历史系博士也开始读这本书啦

    还有还有,亲眼见到刘慈欣和姚海军。不赞同漫画比小说更适合展现科幻内容的说法。

    小姬说,做书托我们也要做最好的。

    二、工作

    TDD: Testability Driven Design. What you can’t test easily kills youeventually.

    Iteration I, with nothing completed :

    小郭说,听说你们进展不错啊。

    都素浮云,浮云~~

    不到真正成功就不会放心。于是真正成功了也不会开心。处女座真的很无趣吧。

    三、唱歌

    小龙龙说,3月31日晚上在电话里唱哥哥的歌唱了一个小时;小胡说,太骚了。

    4月1日唱哥哥的歌,豆瓣上来的只有小强一个人,然则,这哥们唱歌真的,太猛了~~

    梦到内河风继续吹倩女幽魂深情相拥当爱已成往事一辈子失去了你我的心里只有你没有她…

    万晓利很扭捏的唱吱吱嘎嘎的床。这一切没有想象的那么糟。

    四、无害

    都以为我很坏 / 都以为我不实在 / 都以为我的心里 / 没有一点爱

    所以我变得很虚伪 / 到处在找机会 / 谁要是爱上我 / 我就让谁倒霉

    谁规定的?

    不想再趟这浑水。只想安静的呆在某个地方。

    谁规定的?


  9. 《卓有成效的程序员》作者Neal Ford致中国读者

    程序员的高产与否和地域无关。我供职的ThoughtWorks是一家素以其独特的企业文化而闻名的跨国咨询公司,当我遇到来自其他国家(包括中国)的ThoughtWorks员工时,我们之间总是相似多过差异。在我看来,不管来自哪个国家,软件开发者总是我们的第一身份,然后才是国籍和文化的区别。

    世界各地的软件开发者都大致相同,也就是说我们在尝试提高生产率时也面临同样的挑战。正因为如此,在听说《The ProductiveProgrammer》一书被翻译成其他语言(当然也包括中文)时我才会如此高兴。我希望书中所有的技巧与思考都能原汁原味地翻译给具有不同文化背景的读者,更希望这本书能帮助它的读者们变得更加卓有成效,不论他们来自哪个国家。

    Programmer productivity has no geographic boundaries. I work forThoughtWorks, an international consulting company known for its strongcorporate culture. When I meet ThoughtWorkers from other parts of theworld (including China), I’m struck more by our similarities than ourdifferences. To me, developers from other countries are developersfirst, and citizens from another culture second.

    Developers are pretty much the same all over the world, meaning thatwe face the same challenges for productivity. That’s why I was so gladwhen I heard about the translations of The Productive Programmer toother languages, including (obviously) Chinese. I hope that all thetechniques and concerns translate to another culture easily, andmostly I hope that readers from no matter what country find that thisbook makes them more productive.

    (样章试读请见《卓有成效的程序员》CSDN宣传页面


  10. JRuby/LDAP over SSL

    Integrating ActiveDirectory with JRuby on Rails. Blocked bySSLissue. (Actually not AD butADAM. Checkhow to configureADAMforSSLon Windows XP without a certificate server)

    Jeff: Here we have a question about JRuby/LDAP: how to establish SSLConn to ActiveDirectory,given wehave got the certificate file (xxx.cer)?

    Ola: Very good question. At the moment I don’t have the answer – and I’m notsure it’spossible. Have you considered using net/ldap instead? It’s pure Ruby and very nice.

    (╯﹏╰)

    And then I figured it out. What we need is (1) import the certificate to a keystore, and (2) specifythe location ofkeystore to JRuby.

    # command linekeytool -keystore “./cacerts” -import -file Authority.cer# JRubyjava.lang.System::setProperty(“javax.net.ssl.trustStore”, “/path/to/cacerts”);

    And…that’s it. Now we can connect toADAMoverSSL.

    conn = LDAP::SSLConn.new(host=LDAP_HOST, port=636)