Javascript库的“实现模式编程(Programming to patterns)”

今天看到了一篇很好的讲Javascript Library的文章:http://www.clientcide.com/best-practices/jquery-and-the-ajax-experience-programming-to-the-pattern-and-what-really-makes-one-framework-different-from-another/
作者是一位MooTools开发者,他写了对实现模式编程(programming to the patterns)进行了阐述。告诉我们像Prototype、MooTools这样模拟类继承并鼓励使用OO的方式组织你的代码对于你的好处。而对比的对象就是红火的JQuery。他的观点我举双手双脚同意。

JS的通用库最基本的目的是给你解决浏览器兼容性差异,让你在与浏览器兼容性的战争中给你一个巨大的后援保证。但是只提供浏览器兼容性的JS库是不会流行的,你还需要在编程模式和代码效率(Code efficiency)上提供帮助。对于我个人来讲,对语言的流畅性改造最好的就是Prototype这个库,因为它营造了一个“最小惊讶”的Ruby语言环境,让你几乎感觉到是在编写流畅的Ruby,尤其在Rails项目里面使用更让你感觉到Ruby和Javascript结合的流畅。(此处我想到了上周Cat Chen同学和我提起的“Language Oriented Programming”的概念,也许这就是它的表现吧,扩展语言减小编程中的“惊讶”)相比之下JQuery则在代码效率上做了很大功夫,这个代码效率不是指运行速度,而是单位代码完成的功能。JQuery对Dom的DSL化封装,还有对method chain的大量使用,几乎让你感觉在声明行为,所以它让非常多的对啰嗦的Dom编程厌烦的前端程序员迅速“上瘾”。但是,我们知道DSL化的JQuery还不够,因为它很好的解决了可读,但是并不一定容易维护(尤其是过度使用method chaning)。另外一个原因就是习惯使用“声明化”以后会让一些程序员忘记“抽象”和“封装”,很多JQuery都没有使用面向对象OO的方式去组织自己的代码,而是拥抱了面向过程编程,而很多人却还自我安慰说自己使用的是“函数式编程”。如果你没有做好函数抽象,那么绝大多数情况下你的JQuery code都不符合函数式编程的本意,此时你也就离抽象出可复用的“模式”越来越远了。

其实JQuery的很多UI plugins是很好的例子,尤其是支持Progressive Enhancement的JQuery UI插件,它们都很好的规定了自己的micro formats,然后根据dom的模式来组织自己的行为模式(Behavior and Patterns)。它们才是很好的对实现模式编程(programming to the patterns)的例子。缺少了对模式的抽象也就失去了在大的项目中实现代码效率(Code efficiency)的优势(因为代码复用度会下降),这对于JQuery这样一个以“Write less, Do more”为口号的库来说就失去了它最大的卖点。

所以,实际上关键的问题就是,用哪个JS库都没错,但是如何使用和形成模式才是关键。每个库组织自己的“模式化代码”的风格不一样。但是像MooTools和Prototype(还有YUI)这类基于类去组织代码的库的源代码本身就已经告诉了你如何组织你的代码,而且它们的OO实现对于任何一个熟悉OO的程序员来说都“没有惊讶”,那么你就很容易吸取他们所推荐的代码组织风格了。

最开始所引用的文章归纳了几个不面向“模式”组织代码的坏处:

  • 缺少抽象,缺少复用
  • 会形成零散的代码,修改起来成本会比较高,维护成本也就增高了
  • 不OO,不容易组织扩展

我补充一点:

  • 过程化的代码不容易测试,不使用模式的代码也会造成测试的零散,造成浪费

更新:有一点不准确,就是关于复用,其实Javascript的各种Widget库(如ExtJS、Dojo和YUI的widget库)都做到更好的复用。缺点是目前的widget库中的高级控件都严重的绑架了Dom结构,造成自己修改Dom结构比较麻烦。而没有使用Micro Formats这样的基于标准的弱耦合,这是一个很大的问题。所以由于这样的实现绑架的问题,这些Widget库不包括在上面所述的框架对比中。

Tin’s tweets on 2009-09-06

  • Snow leopard的Finder居然有可能起不来?killall Dock以后居然报告一个错误说起不来。Leopard似乎没有出过这样的问题。 #
  • RT @quakelee: 开学果然不一样,我一开始还纳闷礼拜三怎么这么堵车 //今天礼拜二吧? #
  • We are isolated by GFW deeply. The invisible pressure is gathering. When it will explode? #
  • RT @turingbook: 这次 #openparty 上演讲的 @jiakuan 同学用wxPython所做的理财软件看上去不错啊 http://jiakuan.net/zh_CN/ //它们那天一直聊到6:30,相当high #
  • RT @twinsant: 都都小孩开始幼儿园生活,对他来说,人生新的阶段。祝好运吧。//燕同,你的新生活也开始了木? #
  • 刚才看到一个应聘者的前端code写的真好。从html、css、js都都相当棒,使用的是yui的css和js库,代码相当精致明晰,所有的‘意图’都非常明显。真是惊艳呀! #
  • RT @chenillen: RT: @ashchan: RT @chenillen: RT @blogkid 用北京网通adsl上传文件到linode,居然有200k/s || 那就准备换,今年11月份换了 //注意,虽然带宽高,但是延迟还是挺大的。 #
  • RT @qingfeng 开复老师最好还是回美国创业,在中国创业他会死的更惨的 #
  • RT @chenillen: 你说traceroute的时候还是ping的时候 //Ping的时候。但是要看机房位置,我这个是NJ的Neward机房。带宽很好,ping不好。 #
  • 为了验证一下无端的猜测,买了一个功率计。MBP的电脑功率是30W,单位用的HP w2408h显示器功率70W,而飞利浦的24是38W。家里的46寸LCD电视功率270W。而我一直怀疑是巨大电老虎的老Athlon XP 2500+/Nf2/ATI X800台式机功率实际是90W。 #
  • RT @zhmocean: 各位有入5900转硬盘的吗?//希捷的5900的系列价格没有竞争力。否则我觉得是做外置硬盘的理想选择。 #
  • @chenillen 我当初就是受@blogkid的忽悠选择了linode。在北京网通的情况实测是Newark速度最快,且我当时购买的时候Fremont机房没有可用的VPS了。张磊列的那个141k实际上是它上网的速度上限,我在单位测试Newark机房下载速度在300k-500k。 in reply to chenillen #
  • RT @turingbook: 著名的程序员领袖Joel Spolsky谈软件开发的新书More Joel on Software中文版即将出版,征名活动开始啦 // 《更多的桥在软件上》 #
  • RT @qingfeng: 芯片intel了,考虑是不是用Fink //为啥不用更加活跃的macports呢? #

Powered by Twitter Tools.

Tin’s tweets on 2009-08-30

  • I like this slide "The fast and the fabulous" http://bit.ly/jwoWY #
  • @alex_hall9000 WPC同学刚才说“你的字体设的越大,你的方法就越短。” 经典 #
  • 谁知道twitter现在还有没有被GFW的https的ip么?原生客户端都不能用真烦人呀。如果有请D一下。 #
  • 谴责一下TwitterGadget的设计。那个小铅笔居然是Clear text,害我删了一个写好的tweet。而那个看似回复的按钮居然是submit。 #
  • RT @nicholasdsj: 果然 twhirl 在 Mac 上选择 Verdana 12 号字是看得最舒服的 //你咋还可以用客户段呢⋯⋯快D一下秘密。BTW:你的google attitude让我有买些G1给家人的冲动。 #
  • RT @mijia: 有没有啥优化方案呢 //exclude 一些 folders,或者换更大硬盘 #
  • RT @Fenng: Sina的所谓架构还是脱胎于Livejournal的东西 //业务决定的架构,Sina的业务到现在也没什么创新,所以,当然架构也不需要什么大的变化了。 #
  • RT @tirsen: Wow, JQuery really sucks! RT @david_j_rice: http://bit.ly/943IJ #
  • RT @fire9: 哈哈,提问者居然跟黄冬说的一样。//HD也去啦?你们怎么都有机会参加这样的大会呀:D #
  • 意外发现在公司的网络条件下我也可以播米国的VPN了,内外网都可以用(除了个别内外网DNS解析不同的需要自己hosts)。不过我发现twitter上的中文更新少了很多,没有客户端的帮助,写tweets还是比较麻烦的。 #

Powered by Twitter Tools.

Tin’s tweets on 2009-08-23

  • 亲爱的爸爸今天做了脊髓血管瘤切除手术,我在手术室外面从早九点一直等到了晚上五点,爸爸才出来,在切除了脊髓内一个1立方厘米的海绵状血管瘤。好漫长的一天呀!希望他能够早日恢复! #
  • 上周日从五棵松摄影器材城购入港版黑色LX3,终于补上了LX2丢失造成的空缺。LX3的做工感觉更精致,屏幕也更细腻。是在艺联购买,3350带膜和一破包。 #
  • 在五棵松购买相机真是心力憔悴,松下LX3一个真的行货没有,可都报行货价格。还凑合说自己是水的商家:锐意的机器是日文包装未刷机(繁体,品相也差)要3380,最低一家要3300是简体包装刷简体固件的日机(可惜自定义模式花屏),所以才选择了艺联3350的英文包装港货。 #
  • 上周日还把玩了一下奥林巴斯的EP-1,样机是用的原装mini 3/4转换3/4的转接口,配合奥林巴斯45mm定焦。直接预览感觉很好,这么薄的机器实现浅景深已经挺不错了。可惜这个机器从便携角度来说还是太重了,转环也很重,失去了便携的优势,我感觉一点购买欲望都木有。 #
  • 我今看到大家对我爸爸的祝福,真心谢谢大家!@fire9 @mingjin @zhmocean @quakelee @underone @Tigren @tangzhehao @gttnnn @onejeans @baiyi @catitude @lordhong @enboga #
  • 我今看到大家对我爸爸的祝福,真心谢谢大家! @zizi731 @wx8600 @gfrog @BenMQ @wxzbb @qiuzhangst @CycloneWalter @yangtao100 @kxboy @fp3cby @lanwuyou @lnsoso @Qahagin #
  • 我今看到大家对我爸爸的祝福,真心谢谢大家!@qiheizhiya @qingyinzi @zhanlu @kiki8380 @yd613 @rainystar @panlilu @zhangwei @vastgemini @hho1118 @okmaxi @YoyooGat #
  • 我今看到大家对我爸爸的祝福,真心谢谢大家!@icanithin @iHeroin @1988ljn @babywyvern @humantt @Free2E @sevewn @faytoday @RyanBJF @felixonmars @icanithin @srb1999 #
  • 我今看到大家对我爸爸的祝福,真心谢谢大家!@nasiless @andylin12 @sogook @cipcsl @leiguo @fhwick @hipda_d @tonyseven @qingfeng @justsmile4u @delphij #
  • RT @xuweio: @diamondtin 现在 LX3还需要3350吗?不是说3000以下吗?你买的是行货还是水货?//淘宝价格不准确,一般都是3k以上成交。我推上面说了是港水,有简体菜单的。 #
  • RT @qingfeng: 新浪微博 http://t.sina.com.cn/ //注册错误提示很不好,而且注册以后还不让我们登陆…… 这个产品是你们部门开发的? #
  • RT @yonglin_young: 我们开发的。 //作为前端,下面你需要补补设计的common sense了。:D #
  • RT @kevinyang1981: MobileRSS – a google reader client for iPhone .上线拉,我们将保持高频率高质量持续升级,有iphone/itouch的同学们捧个钱场哇 http://tr.im/wEzq (via @Drxu) #
  • Thoughtworks Studios Releases Adaptive ALM, it’s designed to “work as you like”. http://bit.ly/q59I5 #
  • RT 麦同学: @KentBeck ‘s talk for #AgileChina on 11 Sep: “Pragmatic Idealism: when is idealism the most pragmatic approach?” http://bit.ly/Hfj2o #

Powered by Twitter Tools.

Tin’s tweets on 2009-08-16

  • RT @SnaiX: @diamondtin 我一直盯着一款叫NZXT的whisper的机箱,16块硬盘。不过需要一千左右。也有山寨的。机箱大和功耗关系不大吧。//我是说装满大的机箱,机器功耗就大了。这个说法也不一定,一块硬盘才5W的待机功率。16块也没一块外置显卡费电。 #
  • RT @zhmocean: RT: @diamondtin: Sun的工程师真有趣,这个是节能的家用服务器搭建的文章:http://bit.ly/OGKEM //咦?我刚刚攒一台这样的机器,不错不错!//拍些照片秀一秀。虚拟化和绿色计算去年大家就说是next big thing。 #
  • RT @quakelee: @diamondtin 那些机箱都太笨重了,家里实在没地方放。而且噪音也受不了 //你说以后装修智能家庭是否都会有一个隔音的服务器储藏柜?那样就可以在家托管这些大家伙,而夫人也不会反对了。昨天看G4 Space博客上面说无线的智能家庭的博文也令我鸡冻。 #
  • 装在墙里面的水管早晚是要漏的,昨天回家老婆发现了漏水。那么今天就交待在家里面暗管换明管了,八成是没法去享受《UP》了。可耻,可耻。 #
  • RT @quakelee: 待机5W,可是16块硬盘如果是3个RaidZ,一次如果只访问一个结点4块硬盘同时工作,100W。待机80W。应该还行。Atom 330 8W,NV ION的北桥好像比945省电不少。但此平台不一定能应付16硬盘的并发吧?听说4块硬盘就吃满2G内存了。 #
  • RT @quakelee: 同志啊,人家说了要用sil或者highpoint的SATA卡的。4口PCI or PCI-x卡250就OK了。 #
  • RT @quakelee: @diamondtin 你对IDC设计真是一点都不了解。// 是呀,的确不了解。智能家庭如果走无线可能比较灵活,否则走电力线可靠性会更好。家里面如果储存一个NAS的话放热还凑合,给他排风扇就好了,不需要更强排风和空调了。现在一个趋势是更耐热的元器件。 #
  • RT @quakelee: 4+2=6,另外10个你要插到那里去?//SATA卡不可以接多个呀?我只用过单块。不过目前2TB x 4对于我足够了,我家现在是1.5 + 1 X 3 的状态。不过全部用的是WD Mybook。 #
  • 终于修好了家里的水管,累死了,不知道一会儿是否有机会去星美看UP。 #
  • 刚才发现打开Caffeine以后EasyMule的090706版本运行8小时还没有死机,这么说顽固的CrashReport死机问题和休眠有关系。大家可以试验一下。 #
  • 被北苑到五环路上的严重积水阻断,最终没有看成《UP》,好遗憾呀。只能开车回家吃牛肉面了,好凄凉呀。 #
  • RT @quakelee: 嘻嘻,其实ICH7-M(就是945GSE的南桥)是支持一个PCI-E 4X和6个PCI的,只是因为是移动芯片组,厂商生产的M-ATX大都是单PCI而已。理论上还是可以支持16硬盘的。4个PCI 4口SATA。 #
  • 问万能的Twitter:谁知道购买一套犬夜叉的最佳途径是什么?我在淘宝发现国内引进版本有1-47册,大概300元。48-56需要买台湾青文的版本,要22一册。我想知道两种版本的单行本的情节切分是否一致。还有就是谁认识靠谱的台湾原版漫画卖家? #
  • RT @quakelee: @SnaiX 我们在讨论从理想到现实的距离有多远 //这年头我也就YY一下,顺便Orz一下众位神仙。我现在越来越崇拜当兵打过仗的哥们了,那才叫真刀真枪实践过。 #
  • RT @SnaiX: twitter这种消息更新的频率一般远低于IM,是否可以替代经常打断你,占用你时间的IM呢? //除了工作,我基本已经不IM了。 #
  • RT @turingbook: RT @cleverpig: JSF这个东西,我看还是早点散了回家喝喝茶吧。 #
  • RT @turingbook: RT @tianyi: Microformats是Web的Convension,帮助我们让HTML包含更多元信息,帮助渐进是增强的实施。它真的是个基础,不过出书还是困难。成为RFC规范的就那寥寥2个……我觉得出基本关于渐进式增强的书才能推动MF。 #
  • RT @lordhong: 看墙内的推友天天爬墙改hosts用ssh穿越折腾得不亦乐乎… 这是一种什么样的追求啊~~~~ //你说谁没事抽风翻墙呀,还不是逼的。生活这么点乐趣非被人家河蟹掉。我们老外同事来北京出差个两周一般就被网络搞疯了。 #
  • RT @heqian: @diamondtin 貌似你要买来送MM… //送我和我老婆,她快要生日了 😀 #
  • 中午听Semantic Web的Session,语意网的目的还是在于查询,数据在产生了自然的联系以后,人们就可以在产生的网络上进行更有意义的查询。 #
  • 但是Semantic Web与语意化的HTML是两个发展方向。语意网是一个数据库系统。而语意化HTML是为了基于HTML上面的一些技术优化的一个最佳实践。Micro Formats是帮助它们相交的一个结合处,让HTML上面的元信息更容易被转化为语意网中的数据。 #
  • RT @SnaiX: @diamondtin 话说,这期的#openparty有啥预告么?// follow @cleverpig 同学吧,他已经预报了不少话题了。 #
  • RT @turingbook: RT @diamondtin: ……我觉得出几本关于渐进式增强的书才能推动MF。//渐进增强的书有啥推荐? //说实话我还真不知道。也许渐进式增强本身每个准确概念,而且涉及技术层面很多,出书的化内容太庞杂了。微格式估计很多书就是介绍规范,没大意思。 #
  • RT @virushuo: RT @turingbook: RT @diamondtin: ……我觉得出几本关于渐进式增强的书才能推动MF。//渐进增强的书有啥推荐? //吓死我了,我还以为是MainFrame… //推特字数限制,下次我不乱写缩写了。似乎合理的写法是µF。 #
  • 今天维护我和同事挖的坑,我把它挖的更深了,希望不要有人掉下去。回家估计要还债了,把这个坑填一下。今天面对这个坑的时候我自己都寒的厉害。技术债呀,早还比较好。 #
  • RT @icecloud: 意外惊喜啊,正想着买个DisplayPort转HDMI的线,就有人送了一个,哈哈 //谁这么好心呀?你的Dell也是mini-display port接口么? #
  • 刚才修好了我的C&C box耳放,爽歪歪。原来是元件虚焊了。 #
  • RT @ouspec: lordhong: mobile is the future.移动开发的前景很快会超越桌面开发这部分. 欢迎follow @lordhong http://bit.ly/12LZq7 #
  • 听说9月份《犬夜叉》的动画会续拍,爽啦。 #
  • RT @robbinfan: VMware4.2亿美元收购SpringSource,构建PAAS平台梦想 http://www.javaeye.com/news/9682 #
  • RT @qingfeng: FriendFeed居然把自己卖了 //而且是非死不可?今天买卖新闻好多呀。 #
  • 懂日文的 @qingfeng 同学帮看看websunday.net上面的犬夜叉的新闻是不是说完结篇十月上映呀?我用google translate搞不清楚具体意思…… #
  • RT @lifesinger: 如果textarea是空的,那么应该得不到什么好处。否则如果传量大的js字面量可以省去转义的痛苦,尤其是存储html模版的时候,Trimpath一直这样做。 #
  • CSS3 “rem” unit (landed in FF3.6) is the one relative to the font size of root element http://bit.ly/6aUkf (via @dalmaer @kangax @joshprice) #
  • ThoughtWorks中国区总经理郭晓谈实效敏捷和敏捷在中国的发展:http://bit.ly/nbFWm #
  • RT @yonglin_young: 好久不用这种技术了,总觉得前台的模板引擎有些鸡肋。//我只是觉得从关注点分离的情况考虑还是不错的,代码比较容易懂,容易维护。性能关键的地方可能不需要它。你发现没有?京东用的就是Trimpath template。 #
  • RT @nasiless: 早起,弹了弹琴,看了看漫画,一会儿再去吃个早饭,能悠然的去上班,这种幸福感真棒 //你丫真的是个大忽悠!我看你是忽忽悠悠的去上班 ^__^ #
  • RT @b0rder: RT: @qingfeng: 再次声明一下,新的BPUG聚会是2009.9.5(日),报名地址: http://bit.ly/DoGMi #
  • RT @laoxiong: RT @mikespook: 觉得哲思还是有点意思的,最起码,组织形式等,和其他SNS不同 // 我不喜欢越来越多的SNS。链接朋友还是使用FOAF或者XFN这样的开放约定比较好。 #
  • RT @yonglin_young: 你把我搞糊涂了。HTML是结构化数据,用文本表示数据结构。模版引擎是字符串转换规则,帮助你生成文本结构。它们是不同层面,帮助你映射你的领域模型(数据)和它的结构,没有冲突。所以模版引擎与文本打交道一点问题都没有。 #
  • RT @yonglin_young: 通过传json在前端组织模板和直接传递html到前端并没有什么本质的区别。//对,区别不大,可测试性有点差距。模版放在前后都可以,不过要保证不重复,只存一份就好。jsonp的流行让前端模版有了点回春的机会。 #
  • RT @gfrog: 其实大众的那些持股人老早就有很多保时捷家族的人。保时捷是个姓。 #
  • RT @coldmontis: 玩CS的时候,大家明显都比较安静,强调技术性和策略性。Quake就不一样了,玩起来热情奔放,一场玩下来都很HIGH。//Quick也很策略的,而且快! #

Powered by Twitter Tools.

Tin’s tweets on 2009-08-09

  • 爸爸妈妈和老婆正在给我做馅饼,犒劳我昨天装了两个IKEA的Billy玻璃门书柜还有两个全高CD架,好幸福呀! #
  • Hi Apple Inc, can you remove the ‘Cmd + Shift + I’ short cut for iDisk in Finder? I hate it, it conflict with my habit. #
  • RT @DashHuang: http://vimeo.com/5758269 好牛B的动画,国人也可以做出那么出色的3D动画,期待伯乐投资作者拍成长篇啊! //superb! You should go and see. #
  • RT @GolYang: RT @icebenny: @GolYang 用openvpn ,但不是牛人。//请问在ubuntu下,如何不把openvpn当作网关使用? //openvpn配置里面有个push “redirect-gateway def1″,这个会修改网关。 #
  • @delphij 大神Orz 我想问openvpn里面那些push修改网关、DNS服务和路由信息的配置在断开VPN的时候会自动修改回来么?我经常遇到断线后路由没有改回来,结果要手动修改路由的情况。 #
  • RT @SnaiX: 你知道这个组织么:The International Obfuscated C Code Contest(国际混乱C代码竞赛),参见http://www.ioccc.org/ //这个很有趣。 #
  • @icecloud 同学结婚了,戴了一个明晃晃的戒指给我们送喜糖来了,号称这喜糖是批发市场里面最高档的了!恭喜恭喜,有人成絭了。 #
  • 今天好忙呀,为了赶发布,产生了大量技术债。即使赶进度也要先重构,否则就会落下一个混乱的局面,即使在结对的情况下。发誓明天就去重构出来。前端的问题很多邪恶都是从错误的HTML开始的,而你却不知道,等你发现走错了路,却还有终点不远了的错觉,殊不知其实越走越远了。 #
  • 无聊一个,我也492 follower了,啥时500呢?刷牙睡。 #
  • http://is.gd/21jJ1 Fixing Twitter, nice to lear. Monitoring is eye of SA. And then I know Whale means 500 and 503 response 😀 #
  • Campfire非常好用么?国内有没有用它们做团队沟通工具的呢? #
  • Twitter’s engineer said : “Switching from AMD to Intel Xeon = 30% gain “. Is that true? #
  • Google Quick Search ‘s short cut is lovely. I can use double click ‘Command’ to trigger it, that save the precious ‘Cmd + Space’ to me. #
  • RT @quakelee: RT @diamondtin “Switching from AMD to Intel Xeon = 30% gain “. Is that true? //这个说法本身就是背书,太不专业了 //后边有一句解释是从单位性能的电力消耗上面来说。 #
  • RT @cread: Part two of my chat with the @builddoctor and @yrnclndymn about Cruise is up at http://bit.ly/dehkd #
  • RT @adammonago: life without email access can be peaceful // I’m imagining stay with family and friends without anxious, peaceful ^_______^ #
  • RT @heqian: actually, I use quicksilver as luncher, after some training it works well. GQS can works in that way smoothly. #
  • RT @cleverpig: 对了,有人思忖着想听汇编吗?咔咔。。绝对黑客级的!如何找到暗门、破解软件、做keygen?汗,可以在活动时放到游戏室讲讲。貌似 #openparty 有如此的人才,骚一下如何? //顶 #
  • RT @quakelee: @nicholasdsj 我是为了试试好不好用。发现我确实不适合用那玩意,另外没空研究objective-c所以先送给我老婆大人用去了。我老婆一直都是用Powerbook的 //所以你老婆选了你做管理员么? #
  • RT @nasiless: @quakelee : 我不说全部,但很大部分用麦克书和爱疯的人,只是为了显示自己。他们并不真觉得他们好用 // 我不说iPhone,但是确实开发者们最喜欢的就是Mac,有图为证 http://is.gd/23mZz //有大量装逼的开发者呢。 #
  • RT @arthur369: 今天北京的天气真是太舒服了,清凉有小风。我们躺在床上写程序或翻译文章。这时空气里飘来浓郁的卤肉香味~~~馋死人了 //我很好奇,躺着写程序是如何实现的呢?投影到房顶上去么? #
  • RT @lifesinger: http://bit.ly/14KyKU
    CSS Expression 很好很强大,就是看起来别扭,囧 //上帝呀,这么丑陋的技术居然还好和强大?上帝呀。 #
  • 对Cruise感兴趣的朋友可以看看Julian Simpson采访我的同事Chris和Andy:http://bit.ly/dehkd #
  • 这两天easyMule升级以后真要命,每天晚上都死掉,原因是CrashReport进程也死掉了,顺便还牵连我的Tweetie、Safari、Activity Monitor、QSB,用kill -9也杀不死,状态是UE,只能长按电源关闭系统。郁闷,有同病相怜的人不? #
  • RT @icecloud: RT @vincentxu: 徐慎思明,a candidate for the name of my baby // 不错啊,抢注域名。。//Q慎思明也不错 #
  • RT @suavesu: 国内第一本OSGi书《OSGi原理与最佳实践》即将上市,作者林昊 曾宪杰http://www.douban.com/subject/3843896/ (via @yeka52) #
  • RT @nasiless: RT @nemoliu: RT @virushuo: @delphij 我一直尊重的delphij大神怎么能被叫做三胖子呢,我愤怒了!// 他就是个胖子 …… (via @nicholasdsj) // 和  @Snaix 那种虚胖还是有区别的 #
  • RT @CNBorn: 就着半瓶大桶红茶喝下了近一个月前买的廉价小瓶白兰地,38%的劣质酒,我已经晕了…… //张裕吧?烈酒,很劣。兑着喝也难入口。 #
  • RT @fire9: @DavidFeng 是北麦(BeiMac)的老大,也姓冯,据称会n多种语言,可不是山寨大辉。 #
  • ZT: 用OpenSolaris和ZFS搭建家用NAS:http://bit.ly/NDt2T
    ,看得我很鸡冻。谁知道OpenSolaris和FreeNAS哪个更适合家用NAS? #
  • RT @delphij: RT: @quakelee: @diamondtin 这个是一个sun的家伙做的,要不是因为觉得机箱太贵,我就买一个装freebsd了 // 我还是想找个能装6块盘+1个SSD的配置…… // 可以装12+硬盘的机箱不是很多么?可惜体积大,功耗大。 #
  • Sun的工程师真有趣,这个是节能的家用服务器搭建的文章:http://bit.ly/OGKEM #

Powered by Twitter Tools.

Tin’s tweets on 2009-08-02

  • RT @rlazy: http://radar.oreilly.com/languages.png Objective-C 涨的未免快了点。iPhone 功不可没啊。 #
  • RT @fuchaoqun: @diamondtin 家里墙比较高,今天才翻过来,刚看到,不好意思,这周的topic大多听不懂,所以就没有去,在家睡大觉打游戏。//离职了你还不来参加:D 朱胖子都来了。你找好下家了么? #
  • RT @SnaiX: RT @quakelee: RT @fuwaxx RT @xiaoV: RT @hzsh 瑞典最新研究发现:喝咖啡会让女孩的乳房变小 http://bit.ly/YZ8gX // 难道说这就是为什么长混星巴克的小资女都很小的缘故?//原来你都那里蹲守的…… #
  • 写db migration一定要小心呀,一不小心就写个不可逆的错误……所以修改数据本身的migration一定要深思熟虑,最好问清楚表的来龙去脉再说。幸好我补的快,否则死定了。 #
  • RT @mijia: RT @robinlu: 现在的显示器,好像最小也十五寸了。为什么没有12或者9存的,在空间不大的桌子上做为辅显示器会很合适。//市场太小了估计 //切割不经济吧?数码相框加个vga口可能差不多,不过这个尺寸不便宜。 #
  • RT @hengdm: Spotlight located in the corner, but QuickSilver is in the center. Who will attract your attention? #
  • RT @hello_kukoo: @ouspec 我同事在新蛋上买了一个铝制的散热器,可以把本子垫高,还有两个小风扇,看上去不错,连运费只有60多,似乎挺超值 //一般风扇是摆设,主要作用是垫高。60多买个专门垫高的小桌多好? #
  • RT @cleverpig: 汗,都五点了。俺已经全日全职做 #openparty Promotion了。继续:刚刚糖醋鼻子发来了“千里人肉逐日史”的PPT:http://bit.ly/Rz6NL 里面有很深奥的日食原理和很搞的奇妙经历 //谢谢勤劳的猪 #
  • RT @hello_kukoo: 小桌什么样子?//http://is.gd/1OE1m, http://is.gd/1OE1l #
  • RT @suavesu: 我自己都是直接修改 schema.rb,数据单独用 rake task 处理 //可是那就不再是db-migration啦 😀 #
  • RT @suavesu: 我自制的小桌 http://bit.ly/UhEQf // 你的键盘手感咋样?我网上买的工包有个按键很响,非常遗憾。我的MBP是放在音箱上的,外接显示器。回家上图,这样有意思。 #
  • RT @xiaodao: 跟陶公子坐电梯,连续两次碰到有人不小心按了一堆楼层;跟陶公子坐飞机,华北地区雷暴,航空管制,害得我们直接退票回酒店;跟陶公子走在路上,一辆尾部冒着滚滚浓烟的小车在我们面前徘徊良久,让我们差点没憋死。//你对衰文华很敏感,有被迫害焦虑综合症。 #
  • RT @alex_hal9000: http://www.joelonsoftware.com/items/2007/06/12.html (via @Windyj) //可惜此文说的是Windows,扶不起来呀。 #
  • 在单位的网络环境不能VPN这个可真是麻烦了,争取有空搞定它,幸好pair就没有时间看tweets了。 #
  • RT @SnaiX: 开发呢?//那就更是了……大部分程序员选择mac就是因为它是一个开箱即用的*nix。 #
  • RT @zlopen: 刚才在洗手间清洗眼镜,出来后居然有女同事说“我还以为谁尿的这么响……”,无语 //猛男你真猛 #
  • RT @nasiless: @quakelee 不能这么说,John Carmack 是当之无愧的 //举双手双脚 #
  • RT @nemoliu: @quakelee 一周三个工作日的人怎么能了解五天工作的人的疾苦~~~ //乱了乱了,你们到底怎么工作呀?难道SA是24×3的? #
  • RT @quakelee: 乱了乱了,你们到底怎么工作呀?难道SA是24×3的?//显然是24×7的,我周末在家修机器的时候,这帮人都不知道在那儿happy呢 //喔噻,你是铁人。SA是个孤独猎手,随时等待,不过你说你们是靠one piece消磨时光,也算惬意。 #
  • Do refactory on a web page (html/css) of our studio. It’s a mess of … The bad smell drive me mad. Please stop writing evil markup!!!! #
  • Bad smell in html: Every block element is a DIV, every inline element is a span. Then you must delegate all efforts to css class. So bad. #
  • A nice summary of TLS (https use TLS) exchange: http://bit.ly/2XaAzm #
  • iTunes菜单里面没有提供添加歌曲到列表的功能么?如果我想直接把歌曲放到列表里面似乎只能从Finder托那些音乐文件到iTunes的列表页面实现这个功能。感觉iTunes的操作总是相当不自然。 #
  • RT @gmark: 真叫衰,让出租车司机在大雨夜兑了百元假钞给我. //怎么兑换出百元大钞呢?难道你用的五百元更大钞? #
  • RT @zhaozexin: http://code.google.com/p/js-mindmap/ html5+js 实现的MindMap 工具。 这是一个具体的应用: http://rt.ju690.com/rt/10947/map //牛啊牛。 #
  • RT @Lin_Cong: HTML / CSS refactory is must. But it’s hard. Because there is no way to test css, then no safe way to do refactory. #
  • code里面的大量邪恶都是拷贝粘贴产生的,初学者尤甚。读一遍就可以解决不少问题。请KISS、DIY。html/css重构很大的目标就是减少重复,简化,基于标准的转换就可以实现这些目标。 #
  • 为啥打开一个应聘的朋友的代码样例的rar包,里面是分好类的更多的rar包呢?考验耐心么? #
  • 刚才一个老同学给我来信问怎样参加 @openparty 的活动,没想到通过 #openparty 真的把靠谱的朋友又聚合起来了,可惜我们的blog还不具有SNS的能力。继哲同学的哲思SNS也是这个路子,不过最近没见线下活动。人际网络配合社区活动就是老黄说的鼠标+水泥了。 #
  • 上传了一个关于Progressive Enhancement的Slides,下周在公司内部讲一个系列的话题:http://bit.ly/jtjZP #
  • RT @chenillen: 當然有…看看help //哈哈,看看help果然有用,我终于找到了Autofill,可是它的帮助让我费解半天。一直找不到那个按钮,google下才知道必须选择manually manage music才可以。这帮助还挺废柴。 #
  • RT @chenillen @huangxin :谢谢你们的帮助。可是问题还是没有解决。我的问题是在Add to Library的同时就让这些歌曲进入一个Playlist。而不是将已添加的歌曲放到playlist。看了帮助我也没找到我这个场景除了直接拖拽还有别的法子。 #
  • RT @NicholasXYF: RT @diamondtin: 为啥打开一个应聘的朋友的代码样例的rar包,里面是分好类的更多的rar包呢?考验耐心么?// 让我想起来 送礼物 盒子套盒子。。看看里面的rar藏有什么玄机。。//问题是我讨厌rar这样的格式……还那么多层 #
  • RT @tirsen: Thinking about replacing a CSS float layout with a table. // Try css3 columns? http://is.gd/1VO5m table is only choice for IE. #
  • 哎,刚看到某笑话说电动牙刷被女孩拿来ZW(我不想冒犯谁)。其实,很正常呀,要知道超声波牙刷的确比跳蛋NB多了去了…… 就当我没说。 #
  • RT @ranxiang: 我貌似在QQ上被人骗了200块钱 //围观一下,下次介绍一下被骗的经验。 #
  • RT @Fenng: Yahoo! 与微软 “合作” ,我第一个想法是 Hadoop 项目怎么办 ?还会继续支持下去麽? //上次没被收购成了怨妇,这次破罐破摔了贝。跟上邪恶轴心,就没啥远的未来了。 #
  • RT @arthur369: 做了极为失败的口水鸡。浪费。头上还撞了一个包。太伤感了,太伤感了。 //那就去川办犒劳一下自己 😀 做饭是艺术,你自己不喜欢,别人也许很欣赏呢。 #
  • RT @delphij: 我还是得说,Dell的服务比Lenovo真是好太多了,接电话的不是讲印式英语的外行,而且当天直接就FedEx空运 //你那是美帝,国内Dell也都是一群外行。当年好看簿买服务器送过来的内存接口不对还扯了一个月呢。你气崩了人家也不认错。 #
  • RT @delphij: @hengdm 你还记得我说的冲牙机么 http://is.gd/1VQ7s //Waterpick的这个机器好用不?我前一段时间一直很想买一台的,解决补牙后的牙缝问题。 #
  • RT @zhaozexin: 标记语言之乱漫画: http://bit.ly/NF8Gh
    //挺有意思的 // 真好HTML5 follow XHMTL 1.0是个正路,这样你的web就可以同时对人和计算机都有好了。 #
  • RT @virushuo: RT @diamondtin: RT @delphij: @hengdm 这个牌子很好。就是老想不起来用 //谢谢回复。超声波电动牙刷用Sonicare的,冲牙器用Waterpick的。牙好胃口好 ^__________^ #
  • 在清理某印度合同单位所做网站的JS后发现原来108K的一个JS文件清理到8K,原先是混淆过的JS,我还重命名了更长的变量名。完全生搬硬套,服了。莫非定律又来光顾,刚要发送谴责邮件,邻居的无线就不好用了,自己拨号又发现VPN抽风半天,现在才结束重构不靠谱网站噩梦,比重写费劲多了! #
  • Lotus Notes for Mac真TMD是最难用和死慢的邮件客户端。ITABC真的是最难用的Mac输入法。诅咒你们! #
  • RT @renjunkui: 你可以使用Fun Input Toy. //刚才碰巧我的QIM崩溃了一下,twitter的时候凑合用一下ITABC。 #

Powered by Twitter Tools.

解决Mac环境下的Java Version问题

前一段时间遇到了一个奇怪的问题:我的Mac下面的Lotus Notes 8.5和FreeMind 0.9rc4都不能工作了,它们的共同特点就是都基于Java。我试验了在Terminal里面启动/Applications/Notes/Contents/MacOS/Notes的话是可以启动的,但是会启动以前的Basic界面(后来我才知道可能它是个Cabon应用,而不是Java版本)。所以就一直凑合着用。
可是昨天我尝试运行/Applications/Utilities/Java Preference的时候它也无法启动了,我这才觉得这不是个简单问题,必须要彻底解决。

我回忆了一下,我最开始的时候尝试用Java Preference的时候修改了JDK的顺序,将JDK6放在最上方,可是在Terminal里面(java -version)依然只可以访问1.5。所以当时就手动修改了系统的指向:


/System/Library/Frameworks/JavaVM.frameworks/Versions/Current -> /System/Library/Frameworks/JavaVM.frameworks/Versions/1.6
/System/Library/Frameworks/JavaVM.frameworks/Versions/CurrentJDK -> /System/Library/Frameworks/JavaVM.frameworks/Versions/1.6

这样修改以后就工作了,命令行里面执行java -version显示:

java version "1.6.0_13"
Java(TM) SE Runtime Environment (build 1.6.0_13-b03-211)
Java HotSpot(TM) 64-Bit Server VM (build 11.3-b02-83, mixed mode)

但是大家千万不要这样做,这个其实是后面很多问题的一个重要原因。

如果你修改了上面的指向,我推荐你unlink它们,然后下载Java for Mac OSX 10.5 Update 4 (http://www.apple.com/downloads/macosx/apple/application_updates/javaformacosx105update4.html)重新安装一下就可以重新生成这些link了。不过记得要unlink自己手工建立的符号链接(比如我的是Current, CurrentJDK, 1.6),否则升级包无法替换你建立的那些。

但是我这样做了以后还是没有解决所有问题,Java Preference可以正常启动了,不过它设置的顺序依然不管用,java -version总是返回1.5。我突然想到估计是运行我们的Ant脚本曾经提醒过JAVA_HOME的问题,我手动设置过一个,忘记去掉了。所以去查我的.profile,发现了罪魁祸首:

export JAVA_HOME='/Library/Java/Home'

这个设置是错误的,虽然它存在,可是它不会根据Java Preference修改的结果去寻找你的Java的bin和lib,也就造成了后面的一系列错误。

修改为(或者删掉JAVA_HOME声明也是安全的):
export JAVA_HOME='/System/Library/Frameworks/JavaVM.framework/Current/Home'

问题解决,教训是如果你手头有工具,应该学会使用它,如果没有耐心学习就错误的使用工具,一开始感觉能解决问题,可是后来它会造成越来越多的错误。那么决绝方案就是回到原点,恢复,学习,正确的使用工具。

Tin’s tweets on 2009-07-26

  • RT @nicholasdsj: 对于一个没接触过的东西,光看最佳实践是不能代替自己动手实践的过程的。连自己都没实践过,看最佳实践也没用。 #
  • RT @suavesu: 多背一公斤寻找用户交互设计师,劳驾推友们推荐和RT,http://bit.ly/wFoKl #
  • 今天才意识到IE7是不支持inline-block的……被自己骗了,幸好有这个trick,让生活变得简单了一些。http://bit.ly/169gjx #
  • 沈大哥的blog真风趣:《泡泡已经自暴自弃了?》http://eishn.blog.163.com/blog/static/65231820081012105137345/ 网易牛人好多呀 #
  • ipod touch 2升级3.0以后有个bug:有的时候它的扬声器不工作了,使用耳机正常,拔掉耳机以后就没有音量显示也不能外放了。重新启动以后可以解决问题,不过很麻烦。希望能早点解决这个恼人的问题。 #
  • RT @delphij: RT: @ShooterPlayer: RT @blacktulip: sign, 一问这个tun人家就知道我要做vpn了 // 做好了写个教程吧 我做openvpn 还没成功过 // 为啥不是tap?//估计因为大部分教程都教你配置为tun的…… #
  • RT : #openparty 7月活动动态,昨天接到线人暗报一个linux相关话题:日常办公电脑由Windows迁移到Gnome/Ubunu平台 by 张韡武。张韡武目前为德国商会、德外经贸新闻署、 德国技术合作公司等德国知名企业提供广受赞誉的软件咨询、培训、实施、研发服务。 #
  • RT @arthur369: 至于一瓶饮料里(450ml)还有5个半新鲜柠檬的说法更是鬼话,5个半柠檬,你早就被酸得去见阎王了。我用2个半柠檬的榨汁稀释到2.5L还是酸的跳脚。//前两天看到这个,可以洗东西还能喝的柠檬汁:http://is.gd/1FOeC #
  • RT @vincentxu: @diamondtin 这就是confirmation buyer,人家明明说是5个半柠檬的维生素C…//哎呀,我没喝过这种女孩子爱喝的饮料……昂贵。这种调和饮料太邪恶了,好像在上化学课? #
  • RT @cleverpig: @fire9 老兄,俺打听打听,谁是番茄树的创始人?俺认识一下,本期openparty请他来做话题的,因此提前和他热热身。:) //他不在北京吧?召唤一下。 #
  • 笑来老师的《把时间当作朋友》真好。这次 #openparty 的调侃3分钟要和推广一下。也谢谢 @yeka 老师促成书的出版! #
  • #openparty 7月活动话题预告完整版出炉!这次7月的OpenParty非常值得期待,已经报名的朋友请准时入场(12:30会场就open了)。以下是参加本次活动的话题清单,提前晒给大家,以期做个简单预习准备、到现场后集中火力投票!详见:http://bit.ly/7ANXs #
  • RT @fire9: 这次7月的OpenParty非常值得期待,已经报名的朋友请准时.. http://bit.ly/3Qo2Ix (via @openparty) 『我没注册,也去参加』//我觉得这其实是可行的……一起来喝啤酒 #
  • RT @vincentxu: 昨天去看Ice Age 3,旁边有个MM无论声音语气都狂像@yinluotianse //大哥你也用中文标点呀 😀 我想知道然后呢?QQ姐生气了没? #
  • 大晚上的发现break build真的是郁闷的事情,cisco的vpn偏偏还不让随便下载,从原来镜像拷贝过来还不能用。终于搞定以后才可以开始看看那个被break的build。它明明在Cruby下过的……偏偏折在Jruby下了,郁闷。 #
  • 不会把,大晚上爬上去修build。终于绿了。结果check-in的时候发现mercurial服务器挂了……MB这运气。 #
  • 为啥我这里translate.google.com抽风呀,自己总是在翻译自己的页面,然后不停的在iframe中打开自己……古怪了。 #
  • 在小黑屋里面stand up meeting,有点日食的感觉。 #
  • 北京这天气……我又看不到东直门对面那盖不完的破楼了。 #
  • 上周日:在商场做电梯去地下停车库,电梯在B1停了,一个孩子兴奋的冲他妈妈喊:“妈B1到了!“。赛,我当场血向头上涌,这么小个孩子说话就这么彪。 #
  • RT @twinsant: RT @hdcola: 7月活动话题预告完整版出炉!这次7月的OpenParty非常值得期待,已经报名的朋友请准时入场。 topic很吸引俺,没报名想去,自带饮料成不 //当然可以了……从来就没拒绝朋友参加的先例(BTW:你木有fo我,我D不了你) #
  • RT @twinsant: 设计投票( via @alexdong ): http://bit.ly/xh4NU #
  • RT @blankyao: @diamondtin 我没来得及报名,可以参加吗?//才看到,木有问题,都有站票:D #
  • RT @alex_hal9000: @diamondtin 君未尝闻office子时将断电耶? //其实我就多手运行了一次hg out一次hg in浪费了宝贵的1分钟,等我开始hg push的时候……可耻的停电鸟。 #
  • @alex_hal9000 不约而同的感冒了 #
  • 号外,巨骚的 @vincentxu 徐X同学决定在周六的 #openparty 上面携琴友献艺。大家可以享受一下顶级程序员+业余吉他教练的风采。 #
  • RT @yinluotianse: 暴动之后。新疆的旅游部门急了。。与其接下来半年都没收入。。还不如半价一下。。能收多少算多少。。。于是。。。偶家的岳母,姨妈们,朝着乌鲁木齐的方向————出发鸟!//你们家人都和你一样牛掰呀 Orz #
  • RT @robinlu: 上周在新蛋newegg订了黑彩套装墨盒,今天只送来一个黑的,打客服电话,非要我付费后走售后流程,直接打发走人.以后不会在这个有奇怪流程的网站买任何东西. //售后肯定要走,钱你还是坚持别付,维权到底。 #
  • RT @qingfeng: 加上了服务器温度的监控 //我刚才看成了湿度,一时很诧异,难道清风老师的服务器湿了…… #
  • RT @zhmocean: 在考虑OP上,搞个山寨topic来跟大家分享日食的视频和音频--虽然没有黑太阳,没有星星…当然还有很多趣闻…不知道有哪位追日成功的同好一起来搞 //支持,山寨一下,大家投票选择,很公平 #
  • 为了替换怪响的希捷1.5T硬盘,买了一只日立1TB硬盘应急。结果人品太差,到手坏(京东送货,549)。声音好像是被大象踩过,磁头咣当咣当的巨响,震得桌子嗡嗡的,盘根本认不到,我还第一次遇到运输损伤这么严重的硬盘(或者是品控差?)。 #
  • 买硬盘绝对是抽奖呀,抽到那个生产顺利,运输安全的多不容易呀。话说玻璃盘硬盘后(我坏了4块)我就没买过IBM,后来日历买过1块用了很久。这次又瞎了。去年的两块希捷(1和1.5)都时不时卡死一下,不敢买了。WD之前也坏过两块,在那两块希捷之前。已经没牌子可换了,只能回到WD试试了。 #
  • RT @anchuan: SB的政策:大学的时候拿过助学贷款,已还清,但个人征信显示的是个人经营性贷款。现在办房贷,人民银行说经营性贷款也可以买房,所以现在房贷只能算是二套房的房贷。 #
  • To ESB or not to ESB? http://bit.ly/45Eqih
    Ask yourself before action. #
  • 每次想到hg qrefresh some-not-exist-file的结果是帮助你把queue顶的修改pop为本地修改的时候,我总觉的这不是功能而是bug。但是它又是你经常用到的“错误”。这让我很不爽。 #
  • 拿到新的MBP,马上装个Win XP,多么装B的行为呀,BS。 #
  • 今天中午老黄 @hdcola 来ThoughtWorks办公室讲课,非常期待! #
  • RT @nemoliu: @gigix 确实有摄像头可以拍违反尾号限行的.. //因为我国有的是人,云计算呀 #
  • RT @RageCarrier: 交互都是吃屎长大的,关于淘宝那个臭名昭著的”你有短消息请注意查收”该怎么解决,都要投票!和这群交互一起工作的同事们太伟大了。 #
  • RT @SnaiX: RT @diamondtin @quakelee : 今天中午老黄 @hdcola 来ThoughtWorks办公室讲课,非常期待!// 老黄不是挂了么。。。哈哈 //我也意识到了,希望他安心养病。 #
  • RT @hdcola: 今天中午老黄 @hdcola 来ThoughtWorks办公室讲课,非常期待! (via @diamondtin) // 你们等着听一中午的咳嗽罢。我现在还在被窝里呢。对了有没mini displayport转vga的线?//现在八成是有了…… #
  • 老黄带病来讲课了,居然先打电话问药店在哪里。感动呀!向他学习 😀 明天我也感冒坚持 #openparty。 #
  • Ruby里面在一个String数组里面找到重复条目的最高效和最简洁算法是什么呢? #
  • RT @fuchaoqun: 中午吃散伙饭,喝酒了,头好晕。//去哪里了?明天来聚不? #
  • RT @quakelee: RT @qingfeng: RT @nicholasdsj: RT @quakelee: http://bit.ly/2Jq2N5 介个送给敬爱的严老师 @qingfeng // 是送最后一个吗?//看不到脸阿~ //这帖的主题是“背”//解开,滑落* #
  • RT @neverstopzigzag: not work. This works: a.inject(Hash.new(0)){ |hash, name| hash[name] += 1; hash }.reject{|name, value| value == 1}.keys #
  • RT @jeffz_cn: 这星期成功做到每天去健身房,隔天5000米跑步或1000米游泳。今天两者通杀,感觉良好,继续朝80kg大业迈进。 #lose-weight //加油,持之以恒 #
  • 晚九点,北京的天气状况居然是Unhealthy for sensitive Groups,已经是最近最好了?难怪刚才开车感觉那么清爽。 #
  • RT @mactanxin: 夜店报清风老师大名免费入场 //你是说要说严老师大名?还是说清风?Orz #
  • RT @aqingsao: RT @diamondtin: Ruby里面在一个String数组里面找到重复条目的最高效和最简洁算法是什么呢?// array – array.uniq //请不要想当然 😀 #
  • RT @suavesu: @diamondtin 能给twitter直播一下黄老师的传授么?//我昨天本来想转播的,可惜我无线网不好用。我做笔记了,过两天发一个。 #
  • RT @nasiless: @diamondtin words.inject(Hash.new(0)) { |c, w| c[w] += 1; c } # words是字符串数组,其实就是做了一个 Count Words #ruby //用hash这种是不是就是最高效的算法呢? #
  • #openparty 我们公司门禁有问题,一直报警,非常烦人。@mingjin同学来了,问我们:“谁能把那个音乐关了”…… #
  • RT @blankyao: @diamondtin 现在还在响。没认出来哪个是你… //我在大厅白板旁边的Macbook旁边,连接投影 #
  • 今天蒋清野先生的关于Sun的Spot这个无限传感系统的话题很有趣。我以前的同学说这些无线感器网络在实验室中很多年了,但是很少看到它们的商业产品。它的确给Geek更多DIY的空间,控制家里空调洗衣机更方便了。#openparty #
  • RT @mingjin: 始终觉得web框架应该是遵循web的本质才可能获得认可 #openparty //你是否发现Java做Web离Web本意渐行渐远? #
  • 今天 #openparty 现场因为太忙了,所以没有时间推。回味一下感觉又是一次成功的party,已经有16次了吧。大家怕Topic不够,确惊喜的发现越来越多越广的Topic。这就是开放的非会议的成功。中国开发者社区聚会会越来越活跃,那些搞了十几年技术社区的朋友感到欣慰吧 😀 #
  • RT @fire9: 最后和老黄聊python并行计算,老黄提到二郎同学有更好的实现 (via @twinsant) 『没看到黄冬啊。』//他今天听了蒋清野的那个话题,后来好像一直坐在大厅。身体不好,可能需要更多休息。 #
  • RT @heqian: 第一次参加 #openparty 感觉收获不少 找到了一帮志同道合的朋友 //下次继续拉更多靠谱的朋友来参加吧。 #
  • RT @icecloud: RT @vincentxu: launching a new programming language, hopefully I would be patient enough to finish it // 你说语言能干啥呢? #
  • RT @SnaiX: 今天的#openparty很有意思,有很多我没想到的话题和人。//你说请您这么“重量”级的人物容易么?下次拉新浪的牛人过来,我们负责挖…… #
  • RT @icecloud: RT @vincentxu: launching a new programming language// 你说语言能干啥呢?// Fred说用60种语言编程过,他想编60种语言 //可Fred是大忽悠。现实生活中,会好多语言的基本上是翻译。:D #
  • RT @taiwen: 今天去参加OpenParty,被 @diamondtin 抓过来露了一下脸,有点紧张。//假清纯……你还紧张?你每天锻炼身体不就是为了秀你的胸肌么? #
  • 睡。非常感动今天这么多朋友推了 #openparty ,有意见的也多给反馈,我们会汇总并改进的。明天别忘记参加北京的另外一个技术活动《beta技术沙龙》。 #

Powered by Twitter Tools.

Tin’s tweets on 2009-07-26

  • RT @nicholasdsj: 对于一个没接触过的东西,光看最佳实践是不能代替自己动手实践的过程的。连自己都没实践过,看最佳实践也没用。 #
  • RT @suavesu: 多背一公斤寻找用户交互设计师,劳驾推友们推荐和RT,http://bit.ly/wFoKl #
  • 今天才意识到IE7是不支持inline-block的……被自己骗了,幸好有这个trick,让生活变得简单了一些。http://bit.ly/169gjx #
  • 沈大哥的blog真风趣:《泡泡已经自暴自弃了?》http://eishn.blog.163.com/blog/static/65231820081012105137345/ 网易牛人好多呀 #
  • ipod touch 2升级3.0以后有个bug:有的时候它的扬声器不工作了,使用耳机正常,拔掉耳机以后就没有音量显示也不能外放了。重新启动以后可以解决问题,不过很麻烦。希望能早点解决这个恼人的问题。 #
  • RT @delphij: RT: @ShooterPlayer: RT @blacktulip: sign, 一问这个tun人家就知道我要做vpn了 // 做好了写个教程吧 我做openvpn 还没成功过 // 为啥不是tap?//估计因为大部分教程都教你配置为tun的…… #
  • RT : #openparty 7月活动动态,昨天接到线人暗报一个linux相关话题:日常办公电脑由Windows迁移到Gnome/Ubunu平台 by 张韡武。张韡武目前为德国商会、德外经贸新闻署、 德国技术合作公司等德国知名企业提供广受赞誉的软件咨询、培训、实施、研发服务。 #
  • RT @arthur369: 至于一瓶饮料里(450ml)还有5个半新鲜柠檬的说法更是鬼话,5个半柠檬,你早就被酸得去见阎王了。我用2个半柠檬的榨汁稀释到2.5L还是酸的跳脚。//前两天看到这个,可以洗东西还能喝的柠檬汁:http://is.gd/1FOeC #
  • RT @vincentxu: @diamondtin 这就是confirmation buyer,人家明明说是5个半柠檬的维生素C…//哎呀,我没喝过这种女孩子爱喝的饮料……昂贵。这种调和饮料太邪恶了,好像在上化学课? #
  • RT @cleverpig: @fire9 老兄,俺打听打听,谁是番茄树的创始人?俺认识一下,本期openparty请他来做话题的,因此提前和他热热身。:) //他不在北京吧?召唤一下。 #
  • 笑来老师的《把时间当作朋友》真好。这次 #openparty 的调侃3分钟要和推广一下。也谢谢 @yeka 老师促成书的出版! #
  • #openparty 7月活动话题预告完整版出炉!这次7月的OpenParty非常值得期待,已经报名的朋友请准时入场(12:30会场就open了)。以下是参加本次活动的话题清单,提前晒给大家,以期做个简单预习准备、到现场后集中火力投票!详见:http://bit.ly/7ANXs #
  • RT @fire9: 这次7月的OpenParty非常值得期待,已经报名的朋友请准时.. http://bit.ly/3Qo2Ix (via @openparty) 『我没注册,也去参加』//我觉得这其实是可行的……一起来喝啤酒 #
  • RT @vincentxu: 昨天去看Ice Age 3,旁边有个MM无论声音语气都狂像@yinluotianse //大哥你也用中文标点呀 😀 我想知道然后呢?QQ姐生气了没? #
  • 大晚上的发现break build真的是郁闷的事情,cisco的vpn偏偏还不让随便下载,从原来镜像拷贝过来还不能用。终于搞定以后才可以开始看看那个被break的build。它明明在Cruby下过的……偏偏折在Jruby下了,郁闷。 #
  • 不会把,大晚上爬上去修build。终于绿了。结果check-in的时候发现mercurial服务器挂了……MB这运气。 #
  • 为啥我这里translate.google.com抽风呀,自己总是在翻译自己的页面,然后不停的在iframe中打开自己……古怪了。 #
  • 在小黑屋里面stand up meeting,有点日食的感觉。 #
  • 北京这天气……我又看不到东直门对面那盖不完的破楼了。 #
  • 上周日:在商场做电梯去地下停车库,电梯在B1停了,一个孩子兴奋的冲他妈妈喊:“妈B1到了!“。赛,我当场血向头上涌,这么小个孩子说话就这么彪。 #
  • RT @twinsant: RT @hdcola: 7月活动话题预告完整版出炉!这次7月的OpenParty非常值得期待,已经报名的朋友请准时入场。 topic很吸引俺,没报名想去,自带饮料成不 //当然可以了……从来就没拒绝朋友参加的先例(BTW:你木有fo我,我D不了你) #
  • RT @twinsant: 设计投票( via @alexdong ): http://bit.ly/xh4NU #
  • RT @blankyao: @diamondtin 我没来得及报名,可以参加吗?//才看到,木有问题,都有站票:D #
  • RT @alex_hal9000: @diamondtin 君未尝闻office子时将断电耶? //其实我就多手运行了一次hg out一次hg in浪费了宝贵的1分钟,等我开始hg push的时候……可耻的停电鸟。 #
  • @alex_hal9000 不约而同的感冒了 #
  • 号外,巨骚的 @vincentxu 徐X同学决定在周六的 #openparty 上面携琴友献艺。大家可以享受一下顶级程序员+业余吉他教练的风采。 #
  • RT @yinluotianse: 暴动之后。新疆的旅游部门急了。。与其接下来半年都没收入。。还不如半价一下。。能收多少算多少。。。于是。。。偶家的岳母,姨妈们,朝着乌鲁木齐的方向————出发鸟!//你们家人都和你一样牛掰呀 Orz #
  • RT @robinlu: 上周在新蛋newegg订了黑彩套装墨盒,今天只送来一个黑的,打客服电话,非要我付费后走售后流程,直接打发走人.以后不会在这个有奇怪流程的网站买任何东西. //售后肯定要走,钱你还是坚持别付,维权到底。 #
  • RT @qingfeng: 加上了服务器温度的监控 //我刚才看成了湿度,一时很诧异,难道清风老师的服务器湿了…… #
  • RT @zhmocean: 在考虑OP上,搞个山寨topic来跟大家分享日食的视频和音频--虽然没有黑太阳,没有星星…当然还有很多趣闻…不知道有哪位追日成功的同好一起来搞 //支持,山寨一下,大家投票选择,很公平 #
  • 为了替换怪响的希捷1.5T硬盘,买了一只日立1TB硬盘应急。结果人品太差,到手坏(京东送货,549)。声音好像是被大象踩过,磁头咣当咣当的巨响,震得桌子嗡嗡的,盘根本认不到,我还第一次遇到运输损伤这么严重的硬盘(或者是品控差?)。 #
  • 买硬盘绝对是抽奖呀,抽到那个生产顺利,运输安全的多不容易呀。话说玻璃盘硬盘后(我坏了4块)我就没买过IBM,后来日历买过1块用了很久。这次又瞎了。去年的两块希捷(1和1.5)都时不时卡死一下,不敢买了。WD之前也坏过两块,在那两块希捷之前。已经没牌子可换了,只能回到WD试试了。 #
  • RT @anchuan: SB的政策:大学的时候拿过助学贷款,已还清,但个人征信显示的是个人经营性贷款。现在办房贷,人民银行说经营性贷款也可以买房,所以现在房贷只能算是二套房的房贷。 #
  • To ESB or not to ESB? http://bit.ly/45Eqih
    Ask yourself before action. #
  • 每次想到hg qrefresh some-not-exist-file的结果是帮助你把queue顶的修改pop为本地修改的时候,我总觉的这不是功能而是bug。但是它又是你经常用到的“错误”。这让我很不爽。 #
  • 拿到新的MBP,马上装个Win XP,多么装B的行为呀,BS。 #
  • 今天中午老黄 @hdcola 来ThoughtWorks办公室讲课,非常期待! #
  • RT @nemoliu: @gigix 确实有摄像头可以拍违反尾号限行的.. //因为我国有的是人,云计算呀 #
  • RT @RageCarrier: 交互都是吃屎长大的,关于淘宝那个臭名昭著的”你有短消息请注意查收”该怎么解决,都要投票!和这群交互一起工作的同事们太伟大了。 #
  • RT @SnaiX: RT @diamondtin @quakelee : 今天中午老黄 @hdcola 来ThoughtWorks办公室讲课,非常期待!// 老黄不是挂了么。。。哈哈 //我也意识到了,希望他安心养病。 #
  • RT @hdcola: 今天中午老黄 @hdcola 来ThoughtWorks办公室讲课,非常期待! (via @diamondtin) // 你们等着听一中午的咳嗽罢。我现在还在被窝里呢。对了有没mini displayport转vga的线?//现在八成是有了…… #
  • 老黄带病来讲课了,居然先打电话问药店在哪里。感动呀!向他学习 😀 明天我也感冒坚持 #openparty。 #
  • Ruby里面在一个String数组里面找到重复条目的最高效和最简洁算法是什么呢? #
  • RT @fuchaoqun: 中午吃散伙饭,喝酒了,头好晕。//去哪里了?明天来聚不? #
  • RT @quakelee: RT @qingfeng: RT @nicholasdsj: RT @quakelee: http://bit.ly/2Jq2N5 介个送给敬爱的严老师 @qingfeng // 是送最后一个吗?//看不到脸阿~ //这帖的主题是“背”//解开,滑落* #
  • RT @neverstopzigzag: not work. This works: a.inject(Hash.new(0)){ |hash, name| hash[name] += 1; hash }.reject{|name, value| value == 1}.keys #
  • RT @jeffz_cn: 这星期成功做到每天去健身房,隔天5000米跑步或1000米游泳。今天两者通杀,感觉良好,继续朝80kg大业迈进。 #lose-weight //加油,持之以恒 #
  • 晚九点,北京的天气状况居然是Unhealthy for sensitive Groups,已经是最近最好了?难怪刚才开车感觉那么清爽。 #
  • RT @mactanxin: 夜店报清风老师大名免费入场 //你是说要说严老师大名?还是说清风?Orz #
  • RT @aqingsao: RT @diamondtin: Ruby里面在一个String数组里面找到重复条目的最高效和最简洁算法是什么呢?// array – array.uniq //请不要想当然 😀 #
  • RT @suavesu: @diamondtin 能给twitter直播一下黄老师的传授么?//我昨天本来想转播的,可惜我无线网不好用。我做笔记了,过两天发一个。 #
  • RT @nasiless: @diamondtin words.inject(Hash.new(0)) { |c, w| c[w] += 1; c } # words是字符串数组,其实就是做了一个 Count Words #ruby //用hash这种是不是就是最高效的算法呢? #
  • #openparty 我们公司门禁有问题,一直报警,非常烦人。@mingjin同学来了,问我们:“谁能把那个音乐关了”…… #
  • RT @blankyao: @diamondtin 现在还在响。没认出来哪个是你… //我在大厅白板旁边的Macbook旁边,连接投影 #
  • 今天蒋清野先生的关于Sun的Spot这个无限传感系统的话题很有趣。我以前的同学说这些无线感器网络在实验室中很多年了,但是很少看到它们的商业产品。它的确给Geek更多DIY的空间,控制家里空调洗衣机更方便了。#openparty #
  • RT @mingjin: 始终觉得web框架应该是遵循web的本质才可能获得认可 #openparty //你是否发现Java做Web离Web本意渐行渐远? #
  • 今天 #openparty 现场因为太忙了,所以没有时间推。回味一下感觉又是一次成功的party,已经有16次了吧。大家怕Topic不够,确惊喜的发现越来越多越广的Topic。这就是开放的非会议的成功。中国开发者社区聚会会越来越活跃,那些搞了十几年技术社区的朋友感到欣慰吧 😀 #
  • RT @fire9: 最后和老黄聊python并行计算,老黄提到二郎同学有更好的实现 (via @twinsant) 『没看到黄冬啊。』//他今天听了蒋清野的那个话题,后来好像一直坐在大厅。身体不好,可能需要更多休息。 #
  • RT @heqian: 第一次参加 #openparty 感觉收获不少 找到了一帮志同道合的朋友 //下次继续拉更多靠谱的朋友来参加吧。 #
  • RT @icecloud: RT @vincentxu: launching a new programming language, hopefully I would be patient enough to finish it // 你说语言能干啥呢? #
  • RT @SnaiX: 今天的#openparty很有意思,有很多我没想到的话题和人。//你说请您这么“重量”级的人物容易么?下次拉新浪的牛人过来,我们负责挖…… #
  • RT @icecloud: RT @vincentxu: launching a new programming language// 你说语言能干啥呢?// Fred说用60种语言编程过,他想编60种语言 //可Fred是大忽悠。现实生活中,会好多语言的基本上是翻译。:D #
  • RT @taiwen: 今天去参加OpenParty,被 @diamondtin 抓过来露了一下脸,有点紧张。//假清纯……你还紧张?你每天锻炼身体不就是为了秀你的胸肌么? #
  • 睡。非常感动今天这么多朋友推了 #openparty ,有意见的也多给反馈,我们会汇总并改进的。明天别忘记参加北京的另外一个技术活动《beta技术沙龙》。 #

Powered by Twitter Tools.