做次乖用户,在点评写了个评论

为了实现人肉推荐引擎,好的我不写评论罢了,差的我还不写个评论?所以我只得给昨天吃饭坏了胃口的望京“喜多方”写个评论了。

昨天和老婆去星美看完电影下来看到这家日式,门口写着4种特价的乌冬面,都是二十多,天冷,想吃个乌冬面就进去了。
进去以后发现这里还有自助,自助的种类挺丰富的,价格是138每人,看似应该还不错。可是我俩当时只是想吃顿简餐,所以就去单点了。

喜多方这里的装修还是不错的,很干净,日式的感觉也到位。这里有不少韩国人在吃饭。

然后开始了比较不愉快的就餐经历:

  1. 点餐的时候我们发现菜单上的拉面、乌冬面都是四十多起,没有见到外面所说的二十多的面。问服务员,服务员解释是临时的特价菜,所以菜单上没有,还提醒我们那些面不是骨汤的,份非常小,面和这里的也不一样,我们问配菜如何,服务员说他们没见过这些面,所以也不知道。到这里我们基本上知道外面的特价是个“假广告”或者说“商业欺诈”,服务员压根就不希望你点那些面。所以我们知趣的点了骨汤拉面(这是我们来日式餐馆的必点),还有鸡肉串和亲子井(肌肉鸡蛋盖饭)。
  2. 上菜很慢。而且不像其它日式店,这里的服务员上茶必须要你按钮才来(桌上没有茶壶,一般日式都这样)。而我们去的其它一些日式都是服务员巡视,发现茶少了就会给续。所以这段体验很差。
  3. 亲子井先上来。这个饭应该有很浓的鸡蛋香味,但是这里的没有特别的鸡蛋香味。吃起来感觉有点油油的,米饭的口感也是有些粘。我和老婆不是非常满意。附赠味增汤还不错。
  4. 然后等了很久,骨汤拉面和鸡肉串上来了。先说骨汤拉面,这个让人比较失望。原因是骨汤味道不好,一是骨汤的酱油太多了,已经严重了盖过了骨汤的醇厚味道,二是骨汤味道很肥腻,感觉是骨汤里面加的肥肉太多了。面条本身还凑合,配料也够,只是这个汤头不好就妄称“骨汤拉面”了。
  5. 最差的是鸡肉串,上来的时候就已经有些凉了。而且浇汁比鸡肉串还热一点,说明汁是后浇上去的。之所以说鸡肉串非常差,原因是鸡肉串外面已经干了,但是里面的肌肉居然还是生的!老婆看着里面还发红的生鸡肉很不爽,基本上是我吃掉了两串鸡肉串。肌肉中间的大葱居然没有烤熟,虽然外面已经糊了。我严重怀疑这里的鸡肉串是微波炉叮出来的,因为微波炉烤肉串才会“外干里生”。其中几块鸡肉我直接吐掉了
  6. 我们只能非常不愉快的结账,结束这顿饭。这三样东西的价格是93。我觉得很不划算,我和服务员抱怨了肉串的质量(她说要给我重做,我拒绝了)。我只能说这样的质量下次不来了
  7. 这里的骨汤拉面和鸡肉串要明显比“松子”差。我看点评的其它评论说这里的寿司还不错。所以我看想吃飞寿司的朋友还是不要来这个店了。这里的骨汤拉面甚至比元绿的还要差,因为元绿的骨汤比这里味道好。

Tin’s tweets on 2009-11-08

  • RT @CNBorn: 今天参加 #OpenParty 的朋友们,总结一下自己的感想和体会发在自己的Blog上面吧,交流的时间总是不够多的,期待看到大家的文字,迸发出更多思想的火花。我正在记录,预计这两天就可以出炉了。 #
  • RT @CNBorn: 那么就联想到这样一个疑问:Night Build 是否也需要经过测试呢? //NB至少要通过所有自动化测试和编译静态检查,如果有自动化验收测试NB会更加可靠。 #
  • RT @taiwen: 谁认识doit.im的朋友,想采访一下这个用AIR做的东西,蛮有意思 //我认识,请 fo @xli。 #
  • RT @khsing: Practice Of System And Network Administration 是一本非常好的书!!!强推!!! //你看的是纸版还是电子版涅? #
  • RT @qingfeng: RT @icejmx: 家里最受宠的大黄猫丢了!!!!!!!!!!!!!!!!在天通中苑西区49号楼院内,照片 http://is.gd/4KK0s 请各位帮助转发! #
  • @jjgod 的这篇博文记录的方法果真有效,明显改善了Dell显示器在Snow leopar对下面满是锯齿的文字显示问题,原来是驱动列表不够新的问题。 #
  • @jjgod 的这篇博文记录的方法果真有效,明显改善了Dell显示器在Snow leopar对下面满是锯齿的文字显示问题,原来是驱动列表不够新的问题。http://is.gd/4Lzsu #
  • 升级了一下mac下的flash插件,感觉Firefox 3.5快了不少。 #
  • 我的Nikon 18-70上周末参加婚礼使用,那天下雪,可能受潮了,现在对焦经常咔咔响,拉风箱2-3次才能对焦,看起来像马达损坏了?不知道使用干燥剂存放一段时间能否好转?有对此有经验的朋友么? #
  • 为什么公司的指纹刷卡系统总是抽风呀,明明都显示指纹识别成功了,结果第二天一看还是“未刷卡”,真TMD SB。看整天大家被交通郁闷,迟到那么几分钟还要扣钱,真是感觉公司把我们当奴隶用。 #
  • 为什么公司的指纹刷卡系统总是抽风呀,明明都显示指纹识别成功了,结果第二天一看还是“未刷卡”,真TMD SB。看整天大家被交通郁闷,迟到那么几分钟还要扣钱,真是感觉公司把我们当奴隶用。 #
  • 从阳光间望过去,北京很多平顶楼的楼顶还有完整的积雪,是太阳不够强烈呢,还是冷风太强劲了呢? #
  • RT @CNBorn: @diamondtin 我出去玩时镜头也是这种受潮情况,最严重时根本无法自动对焦。后来干燥一段时间后基本好转。状况还在持续观察中…… //好吧,希望如此。我开始躁动是否血拼一个16-85 VR顶替老态龙钟的18-70呢。 #
  • RT @googollee: @diamondtin 應該沒問題,你沒泡水里就對電機影響不大。先涼一段時間吧 //你说的有道理,可是镜头泡水那基本上就毁了…… #
  • RT @googollee: @diamondtin 應該沒問題,你沒泡水里就對電機影響不大。先涼一段時間吧 //你说的有道理,可是镜头泡水那基本上就毁了…… #
  • 不知道 @icejmx 兄弟的大黄猫找到没有,今早还在天同源看到不少在积雪中流浪的小狗…… 希望你家爱宠早点回家。 #
  • RT @cleverpig: RT @CNBorn 早上RT: http://is.gd/4M2d0 #OpenParty "秋色连波"活动报告出炉,欢迎大家赏阅 || 顶推!超经典活动回放啊~"一个国家没有纪录片,就好像一个家庭没有相册"、"创业的顾问团队非常重要,有.." #
  • RT @anchuan: 周末在家看了《AI人工智能》感动的想啃桌子 //我看你是寂寞的,太孤独了吧? #
  • RT @wickedwukong: #photography Photos by my friend Travelight: http://tr.im/E4TI //I like it very much. #
  • 今天和团队的朋友作了一个DDD workshop,把系统的领域模型交互梳理了一遍,用了3个小时。一片迷雾的逻辑清楚了很多,我们一共找到了6个领域模型,下面的重构就变得清晰了。大家感觉很不错。 #
  • RT @phoenixchu: RT @diamondtin: RT @anchuan: 周末在家看了《AI人工智能》感动的想啃桌子 //我看你是寂寞的,太孤独了吧?//人家有女朋友的好吧 //唉,怪你消息不灵通吧……你去问问他。 #
  • 上次 @openparty 上 @dreamcog 同学讲的css字体声明中使用justify比较好。justify是inline模型中的一种对齐方式,解决inline模型每行长度不同的问题,它会根据行宽度调整字间距和词间距(对于英文来说)保证每行的inline box等宽。 #
  • 我靠,幸亏 @nasili 和 @nicholasdsj 同学,我才知道我的Snow Leopard的难看中文字体是因为使用英文为默认语言的时候,日文紧跟其后,中文在最下面,所以显示中文网站的时候Mac居然会优先用日文字体渲染中文,很难看。 #
  • My Blog post – 在Mac下使用脚本重载proxy自动配置脚本(pac)- script to reload pac proxy config in Mac : http://is.gd/4NvDr #
  • RT @hengdm: @diamondtin 个人认为justify只有非常没品的M$公司才会用来做默认设置 很多场合如果为了justify而破坏了原文字之间的间隔感 是十分没品的杯具设计 //那天修源讲时你为啥不说涅?我感觉对于中文,用justify的确挺不错的。 #
  • RT @hengdm: @diamondtin 围观一下你这个火星来的。另外谁让你嘚瑟的在安装时首选语言用英语呢,简体中文在osx的语言级别时tier1,默认排在英法德日这4个tier0之后 //我的理论是,因为简中是我的母语,用英语为首选语言减少了视觉噪音(忽略了大部分英文) #
  • RT @phoenixchu: 终于还是你比较胆大,我只是想想 //嘻嘻,我非常高兴解决了它,这个方案是一位叫Dylan的网友在我的blog留言告知的。网络很伟大呀! #
  • RT @xli: awesome, Mingle integrates with Google Wave: http://is.gd/4NDbV #
  • 还在使用bit.ly作为网址缩短服务的朋友呀,能否改用没被强的其它缩短服务呢? #
  • RT @LinYang: RT @anchuan: 自从迟到同事买零食之后,我们的生活质量有了大幅度的提供 // 自从迟到的同事用屁股比划自己的名字给大家看以后, 我们的生活多了很多欢乐 🙂 #swinging_butt //是谁的屁股比划谁的名字涅? #
  • RT @stainless: http://zfs.macosforge.org/ The ZFS project has been discontinued. The mailing list and repository will also be removed shortl #
  • RT @huaxlee & @lucifr: 关键是学会低成本、方便 地翻墙。自由上网的人越多,GFW越无效。 //翻墙不难,,我觉问题在于网址转换服务是否必须翻墙?我在系统级使用pac配置翻墙规则,但是dns默认不走代理,为它用ff翻墙成本还是很高的。举手之劳,何乐而不为? #
  • RT @BeijingAir: 11-6-2009 ; 03:00 ; Latest Hour ; 0.440 ; 500 ; Hazardous ; Today's Avg ; 0.472 ; 500 ; Hazardous //我靠!猛。 #
  • RT @dlee_cn: 使用简单实用,易于理解的建模工具,对于保证项目的敏捷性是非常重要的。//其实我觉得如何保证建模与代码的同步是个难题,与其把纸上可以画好的UML图弄到电脑里,还不如把建模的东西用DSL描述,如Rails的migration、Django的syncdb一类 #
  • RT @twinsant: 伟大就是每天做好一些不伟大的事,用时间熬出来的一个称赞。理想要用时间去实现,不执行的理想是空想。 //哈哈,蚂蚁,你每次说的都很经典。 #
  • RT @LinYang: RT @xli: RT @LinYang 自从迟到的同事用屁股比划自己的名字给大家看以后, 我们的生活多了很多欢乐 🙂 #swinging_butt // PC 不是很惨? bonna 怎么办?// PC 表演的是"WPC"… //强烈要求录像! #
  • RT @turingbook: 好像圈子里已经流传了。是的,我将于下周开始担任CSDN总编,帮忙负责网站和《程序员》杂志的内容。同时,我仍将继续担任图灵的总编。//你真牛,身兼数职呀,我说上次咋没空参加 @openparty 了涅。 #
  • RT @turingbook: 谢谢大家对我的支持。大家对CSDN和《程序员》杂志有何意见?可以尽管说说啦。用 #CSDN 这个标签吧。//我有个意见,大街报摊买不到。而且,最近质量让人没有多走几个报摊去寻找的动力。 #
  • 悲剧……IKEA的一个Lack茶几在装完最后一只腿后翻过来,发现桌面有三个很大的洼陷。MD,浪费了25分钟,那几条腿为了稳固我调整了好几次呢。教训是下次一定检查平面,不能相信IKEA的品质。倒霉,还要去退换。 #

Powered by Twitter Tools.

在Mac下使用脚本重载proxy自动配置脚本(pac)

Mac下对网络设备使用proxy自动配置脚本可以透明使用代理穿墙(可以配合ssh tunnel和tor)。但是我一直不知道如何用脚本让系统重新载入pac文件(在更新了pac的规则时我们需要重载配置)。昨天一位叫做Dylan的网友留言告诉了我如何做,我在此记录一下。在命令行下面:

networksetup listallnetworkservices

然后会会返回一个网络连接服务的列表:


An asterisk (*) denotes that a network service is disabled.
Bluetooth DUN
ADSL
Ethernet
FireWire
AirPort
Bluetooth PAN

我一般需要配置pac文件的是Ethernet和AirPort,那么相应的重载命令是:


sudo networksetup -setautoproxystate 'AirPort' off
sudo networksetup -setautoproxyurl 'AirPort' 'file://localhost/Users/tin/pac/tin.pac'
sudo networksetup -setautoproxystate 'AirPort' on
sudo networksetup -setautoproxystate 'Ethernet' off
sudo networksetup -setautoproxyurl 'Ethernet' 'file://localhost/Users/tin/pac/tin.pac'
sudo networksetup -setautoproxystate 'Ethernet' on

然后pac文件就已经被重载完毕啦!在此感谢Dylan。

顺便共享一下我在bash下的alias:


alias px='ssh -qTfnNC -D 7777 tin@zztin.com'
alias rpx="sudo networksetup -setautoproxystate 'AirPort' off;sudo networksetup -setautoproxyurl 'AirPort' 'file://localhost/Users/tin/pac/tin .pac';sudo networksetup -setautoproxystate 'AirPort' on;sudo networksetup -setautoproxystate 'Ethernet' off;sudo networksetup -setautoproxyurl 'Ethernet' 'file://localhost/Users/tin/pac/tin.pac';sudo networksetup -setautoproxystate 'Ethernet' on"

DDD重构初步

所做的系统是一个连接到外部信息发送和搜索引擎调用服务的Web前端系统。系统与外部的接口使用的是一层Service外观进行包装,原先的设计目的是使用服务层剥离对外部系统的强依赖──解耦,同时还希望使用Service将系统的商业逻辑集中存放──提高复用的可能。但是实际上我们发现Service这样的抽取方法并没有提高代码的复用度,反而造成数据结构和其算法的大量重复。经过分析,发现由于使用了大量的Hash结构存放接口间的返回结果,造成数据与其Service内部的行为分离,传递后商业逻辑就出现了重复(这样的结果是引入大量Quick but dirty的解决方案所欠下的技术债造成的)。所以我和我的Pair绝对对其进行DDD(领域模型驱动设计)的重构。

领域模型驱动设计和面向对象设计在代码的抽象上很相似,它们都推荐让数据结构(状态)与商业逻辑(行为)统一管理。这样数据的状态与行为就不会分离,这样可以很大的减少由于商业逻辑分散造成的代码重复。这可以让我们实现我们非常重视的DRY(Don’t repeat yourself)。
一开始我们尝试的是找到重复的商业逻辑和其对应的数据结构,然后尝试让它们映射到我们的领域模型。这样的效果还不错,但是经过了一天的工作,我们发现我们对领域模型的理解有问题,我们居然抽取出了重复的领域模型类。这个时候暴露的问题是我们对系统的领域模型没有统一和深入的认识。

所以下一步我们计划进行领域模型语言的讨论会,目的就是使用自己的“领域语言”描述系统的所有行为,从这样的领域故事中找到我们的领域模型(领域概念模型,不是具体编程的时候的类)。

领域模型讨论会最好由最熟悉领域模型的人起草,可以由这个人把它写在白板上。领域的故事最好能够涵盖系统的主要行为,描述要使用简练的语言。一般来说IT系统的内部行为可能很复杂,但是到了领域高度还是可以用比较简单的语言描述的,如果遇到一块白板不够的话最好首先考虑提高观察的高度,让领域的描述简练一些,其次再考虑扩展到第二块白板。在这个过程中我们要注意消除歧义,比如同样一个“术语”在两个功能区域中出现,那我们就要妥善的给他们各自取一个容易区分的“领域术语”作为名字。还有就是我们应该在写领域故事的时候考虑领域模型(或者理解为系统模块的抽象)之间的交互关系,最好在写领域故事的时候对行为的归属(它会指导行为到底会被建模在哪个领域模型中,可以体现为类的调用关系,哪个类持有交互逻辑)达成共识,这个时候达成的共识比在做具体的OO设计时候分辨商业逻辑归属要更体现商业价值。完成领域故事后我们要找到其中的所有领域模型(也就是前面说的领域对象和领域中的术语)。然后团队最好一起通读这个用户故事,一起讨论是否通顺(行为是否完备,抽象是否合理),是否有遗漏(遗失的领域模型或行为)。对于有外部系统的情况下,即使外部系统是面向消息的(或者说是没有使用领域模型驱动的SOA接口),那么团队最好对消息的内容有一个讨论,对其中设计到本系统和外不系统的领域模型进行认领,然后使用一个适配器来保证数据到达系统后就使用领域模型表示,外不系统的数据(一般没有行为)最好也使用一个领域模型进行约定。

完成了上面这一步后,DDD最重要的一部分就完成了,它可以实现系统领域模型自顶向下的“名正言顺”,减少在自底向上的重构过程中产生的大量重复领域模型。下面的重构过程就是给领域模型写测试,使用TDD(或者也可以用BDD的方式提早对行为做验收测试,用它们来驱动对领域模型的实现,其实对领域模型的TDD和BDD是殊路同归)的方式逐一实现领域模型。而后争取给系统写一些验收测试或者高级别的集成测试,再逐一替换这些领域模型。这样就达到了DDD重构的效果。

Tin’s tweets on 2009-11-01

  • Do not show .pyc in netbeans: Preference -> Miscellaneous -> Files -> Files Ignored by the IDE Ignored Files Pattern: +|.pyc #
  • RT @zwws: @diamondtin Netbeans for Python现在不还是EA吗? 这么快就用上了? //我在试验,因为我感觉Eclipse + PyDev不是很好用,也不算稳定。 #
  • 养成了使用命令行用SVN后切换到Eclipse,团队里面的人都非常喜欢图形界面的SVN(subclipse和eclipse team svn support),我觉得都挺难用的,简单的事情做了一大堆累赘的图形表示。可是让我说服团队使用命令行需要理由,那么理由在哪里呢? #
  • Dell出品的叫做One的一体机真的很像iMac,可是感觉设计夸张了,有点别扭。而且19寸的就要6k-7k的价格感觉和iMac比就更没有可比性了,Vista的附加价值低。 #
  • 如配合快捷键,的确不违背刘江老师引用的内容。修改团队习惯的代价很高,入乡随俗吧。争取推一下Git,让团队回归命令行。RT @buttonwang: 给提交和更新都配上快捷键,IDE的好处就是集成 RT @turingbook: “键盘输入总比导航快”——《卓有成效的程序员》22页 #
  • 图形话界面没啥脚本可写,我们只能争取设置统一的快捷键。我能想到的理由就是熟练命令行对无图形界面的服务器环境部署有帮助,但是这个过程可以通过自动化脚本解决。 RT @mingjin: 这个没有是非之分吧,选择适合团队的工具不是光看易用性的。或者你编写同类的脚本替代之 #
  • 同俗,这个月婚礼的邀请太多了,这次没法按时去 @openparty 了。可能要3点多才能感到,希望少错过关键的Topic和与朋友会面的机会。 #
  • @SnaiX 朱小胖你来参加 @openparty 吗? RT: @heqian: @CNBorn @twinsant @kcome 三位老师本周末在 #BeijingOpenParty 会有话题分享~ #
  • RT @blogkid: @Fenng 直接使linode吧,肯定比dh靠谱,而且也比别的vps便宜。 //slicehost.com 看来似乎也不错,背后是Rackspace。 #
  • RT @rlazy: 阿捷的《网站重构》竟能荼毒腾讯前端如此之久,直至今天还把制作页面的叫“页面重构”。//挺好,和保持其它代码健康一样,持续保持页面各种标记和声明的健康,说明页面是一个持续负责的过程。没有了持续责任,那么重构也就无从谈起了。我喜欢禁得起重构的前端代码。 #
  • RT @fire9: 我对linode好感不是太大。居然不让我搞openvpn //不知你所说的不让搞是什么意思?我一直使用我在linode上面配的openvpn。 #
  • RT @lclok: 吃饭八成饱是最健康的生活方式. //你的名字太猛了,我看成“吃人参吃八成饱是最健康的生活方式”了。 #
  • RT @cleverpig: #OpenSourceCamp#2009年活动(暗号:美味夹心饼)!年度开源盛会,Apache和Eclipse基金会联合路演,今年11月28日璀璨呈现:详情:http://bit.ly/10aVLw #
  • RT @cleverpig: #openparty# 10月活动动态:这周组织人员奇缺,貌似有出差、出国的,急得洒家脱了外套自己上?跪邀众志愿者:主持、唱票、场记、拍照。 //哎,就怕这情况。这次是老婆伴娘的婚礼,我就没法子了。希望小刀、默默、钱钱再努努力。 #
  • RT @kejunz: RT @turingbook: 这样的虚拟座谈很棒,众JS框架代表谈HTML 5: http://bit.ly/17axx8 //可惜缺了JQuery的JR。HTML 5很大的一个困难是微软的态度吧?还有,我也非常期盼js能提供method_missing #
  • RT @turingbook: 目前在互动排行榜Top40的图灵新书:《领域驱动设计与模式实战》、《软件开发沉思录》、《黑客攻防技术宝典:Web 实战篇》、《Spring揭秘》、《程序设计中常用的解题策略》、《.NET软件架构之美(英文影印版)》 #
  • RT @derekhyang: 我发现在星巴克里挑座位真是门学问,要考虑到位置的安全性、周围是否有声音美妙的中年人士、周围是否有电源、电源是否稳定(西安某星巴克的电源会不定期地提示你它的存在)、自己的MBP是否能“不小心”地被别人羡慕到等等 //羡慕你在星巴克Happy Hack #
  • 学JQuery是非常简单的,以至于那些纸质书籍大都可以扔掉,一个Cheet Sheet搞定。可是如何组织你的JQuery based js代码就是学问了,这个事情没有Cheet Sheet。 #
  • RT @Fenng: 写绩效评语一直写到现在。头昏眼花。 //为啥要有绩效考核呢?弄得大家跟奴隶似的,还要巴结着主人搞政治,这纸枷锁还要劳烦自己来粘。这东西真TM烦人! #
  • RT @alex_hal9000: RT @turingbook: 这样的虚拟座谈很棒,众JS框架代表谈HTML 5: http://bit.ly/17axx8 //木有John Resig. //我确实很想听JR说如何组织和测试js代码 😀 #
  • RT @dlee_cn: @diamondtin 视野放宽一些,我到时觉得HTML5有可能先在移动平台上普及开。 //你说的对,智能手机的移动平台目前基本上被webkit占了,所以html5、css3的众多特性在移动平台的使用非常舒适。但是移动非移动平台的隔阂会越来越深么? #
  • The MVC Web testing Strategies is not so good http://is.gd/4GwB7 , I think you should create micro format, then test it by css selector. #
  • RT @SnaiX: RT @turingbook: @SnaiX @delphij @virushuo 是在想出些历史书呢。Coders at Work算是第一本。// 期待,这类书不会像技术书籍那么严肃,有畅销书潜质,期待大卖,;) //要看翻译是否靠谱了,这类书不好翻。 #
  • RT @twinsant: "The tragedy of life is not that it ends so soon, but that we wait so long to begin it." -W.M. Lewis (via @tinybuddha) #
  • 前天 @nemoliu 同学等黑恶势力非说我的头像恶心,所以换个远一点的看看是否减少他们的不适。 #
  • 我发现eric mayer的reset css中的一些致命的冲突,造成在项目中期引用它风险太大。今天在IE下吃它的亏了。下次还是老实用yui的reset吧。 #
  • 一个ubuntu server发现大量/usr/sbin/console-kit-daemon进程,几十个,每个占120MB内存。赶紧killall,然后卸载掉consolekit。不知道哪个包按依赖把它装了,脚本似乎有bug,会无故吃掉服务器大把内存。 #
  • 好凶险呀,赶快睡觉觉去…… #
  • Getting to No: Never-ending contract revisonist, Giant project team, Mr. or Mrs. Vague, vanishing boss… : http://is.gd/4Idpa #
  • 刚才 @twinsant 演示了一下使用Gmail + GTD box做GTD,看似效果不错,但是需要一个手机作为半离线情况下察看GTD列表的工具。总体效果似乎比Things粒度可以细很多。 #
  • 当当网的朋友的话题是关于个性化推荐的,它说这个技术每年给当当带来两千万的收益。在关注这个话题的朋友很多。#openparty #
  • 当当的朋友说购买图书页面上“一起购买几本相关的书,一共优惠xxx“按钮购买图书的比例在15-16%左右,虽然实际上购买多本只是把购买折扣相加,没有额外折扣,但是实际上它的确带来了实际的购买量的增加。#openparty #
  • @twinsant 说:“一个人稀缺的是钱和时间……” #
  • 刚才和 @twinsant 同学聊“个性推荐”这个问题,它实际还是个加法。信息饱和后,加法就没用了。那么,要做一个大的减法,从零开始,从一个信任点做信任推荐,重新加法形成信息源。Google Reader在订阅足够RSS后,信息过载,大家开始关注朋友的共享,重新做加法,收效很好。 #
  • 在 @openparty 的推友都出现一下吧,很能推的 @hengdm 正在大厅,请来瞻仰。 #
  • RT @petercheng: 一个MM在讲道与医 //此人是咖啡屋的鼠标在 @openparty 认识到的老婆…… #

Powered by Twitter Tools.

Tin’s tweets on 2009-10-25

  • 确实触目惊心: http://is.gd/4pUrI #
  • 5号线上:戴着耳机听到“尊敬的乘客,经上级指示,本次列车在和平西桥与和平里北街经过不停车。”,摘下耳机确认一下还真是这么说的。只得下车等下次……5号线很厉害,连续3辆一分钟一趟。 #
  • RT @twinsant: RT @hongqn: 就是花一分钟列个清单,花另一分钟check清单项。比如离开一个地方,逐项检查书包,外套,笔记本,手机,钱包等等是否随身。无论多忙走这个程序,生活会快乐些。//配合软木板和小纸条,经常更新checklist,减少害怕遗忘的压力 #
  • “可测试性驱动开发”还不是经典的“测试驱动开发”,http://bit.ly/oRZPY #
  • RT @Fenng: 美国的 CD/DVD 都很贵,怪不得老外来中国狂买这些玩意儿呢。这和中国人过去狂买 Levi's 的牛仔裤其实没啥区别 #USA //可惜你没去三藩的Amoeba,很多开封的CD 0.99$-2.99$,买三送一,非常牛逼! #
  • RT @phoenixchu: Formtastic is very convenient, hope we can use it soon //What's that? #
  • RT @nickf: UX is not just UCD rebranded. UCD is a process (a systematic means to an end) whereas UX is a practice (a craft and a philosophy) #
  • RT @twinsant: 人生最大的问题之一是认知自己和时间的关系。感谢我自己的程序员生涯,从个人软件过程psp,极限编程xp,7个习惯到gtd。蚂蚁最终觉得时间是我们手里的现金,不马上使用立即贬值为0。把时间当朋友是不是宣告自己丧失控制权,给自己放纵一个理由呢? #
  • Uninstalled buggy python25, python26 and mercurial installed in Macports. Go back to use native python and mercurial installer. #
  • 标题是“你绝对想不到后来发生了什么”,喷了:http://is.gd/4swvv #
  • RT @twinsant: RT @diamondtin: RT @twinsant: RT @hongqn: //配合软木板和小纸条,经常更新checklist,减少害怕遗忘的压力//啥是软木板?//把Checklist纸条用小丁丁订在软木板上,用到哪个就拿哪个,挂在家门口。 #
  • Mac又来一次全线升级呀,真是如期而至。这个节奏真是很厉害。 #
  • 如果新iMac用了IPS面板的LED LCD的话,那么它以前用的是什么?我一直以为Mac用的是S-PVA的板子涅。因为一直感觉用IPS板子的显示器颜色比较平淡。 #
  • RT @twinsant: 路上一姐们,着五分裤,掐着烟,很酷,很cool… //如果,此时来阵大风,卷着黄土沙子吹过……那就更酷了。 #
  • 以为新的Magic mouse是给鼠标增加了一个手写板的功能呢,这样就可以使用雪豹里面的手写输入法了。可惜,不是。那么给父母买iMac用手写输入还是需要购置额外硬件了。 #
  • Refactoring: Ruby Edition comes out, so when Refactoring: Python Edition will come out? #
  • 原来USB Hub还分1.0和2.0呀,1.0 USB Hub可以一下子让传输速率慢到1.5MB/s……土鳖了。 #
  • RT @fire9: 不知道Mac mini with Snow Leopard Server的io性能如何。真是一台让人有想像空间的机器。 (via @robinlu) 等三里屯到货去试试。//目的是哪它做什么呢?单位成本太贵了。 #
  • 原来现在Nginx的活跃站点数目已经是Lighttpd的15倍了,看来它的确坐稳老三的位置了。 #
  • 在BANKSY的采访中得知原来Massive Attack的一位团员居然是传奇的街头涂鸦艺人。 #
  • BANKSY的这个访问真有意思。他是涂鸦仙人呀,作品实在是太有想法了。专访中提到的在巴勒斯坦的隔离墙上的作品很让人感动:http://swindlemagazine.com/issue08/banksy/ #
  • RT @laoxiong: 老大肯定是apache,老2是?//netcraft.com,第二肯定是MS。 #
  • RT @xiaodao: 昨天早上带孩子去医院做检查,她一进儿科诊室就开始一把鼻涕一把泪。后来我拿饼干出来哄,大夫就问,“饼干给爷爷好不好啊?”欣娜立刻不哭了,清清楚楚的说,“不给!” #_欣娜//读完我以为“爷爷”是指你老呢,刚想笑,突然发现实际这不是笑话,是个温情的小品。悬念 #
  • RT @khsing: 13寸小白比小飞硬盘大了些,只是少了SD读卡器,然后就无差别了。//火线没了吧? #
  • RT @twinsant: 和 @alexdong 在雕刻时光聊他的旅行经历foocamp见闻,聊我们的价值观信仰、使命和生活。在清华走了一小圈,太阳照在身上,暖暖的。珍惜现在,努力生活。 #
  • RT @infoqchina: 迷你书:ThoughtWorks文集(精选版) http://bit.ly/4chj77 #
  • RT @derekhyang: Good bye ThoughtWorks! #
  • RT @cnhacktnt: RT: @SnaiX: 我很喜欢Massive Attack的音乐。// 同爱, 听 HOUSE 里面的 Teardrop 喜欢上的 //House我很喜欢Leftfield和Prodigy。 #
  • I like big beat artists such as The Chemical Brothers, Fatboy Slim, The Crystal Method, Propellerheads and The Prodigy: http://is.gd/4vLGd #
  • 我最喜欢的专辑"You've come a long way, baby."的名字原来是香烟Virginia Slims在1968年开始使用的一个广告口号。这种香烟定位年轻职业女性,口号暗指女人获得平等的权利是一条多么漫长而艰苦的路,是时候犒劳一下自己。(我个人反对吸烟) #
  • 赛,飞屋《UP》居然在VeryCD有BD了,居然需要登陆看到,而我居然有VeryCD的帐号,嘻嘻,谢谢以前的Q3ACN网友的赠送! #
  • 现在能吸引我用Windows的是“射手播放器”和“eMule官方版”,真是很好用的工具。 #
  • RT @zwws: @diamondtin 你说的应该不是VeryCD版的吧? 网上对这个版本的Mod非议很大. //我说emule-project官方版build,VeryCD版的确问题多多。 #
  • 是三星52A650,52B550,还是SONY的52W5500,52V5500,还是松下50G10C,还是LG 55LH45呢?这是个闹心的问题。我去卖场看三星和SONY的颜色比较合我胃口,看指标LG遥遥领先,而松下的等离子有口皆碑(虽然在卖场看起来便灰暗)。谁帮我建议一下? #
  • 看乐队介绍en.wikipedia.org比rollingstone或者last.fm强多了去了,太牛了。 #
  • @googollee 我是在无法对应你和你twitter上的头像。 #
  • RT @delphij: RT: @hengdm: @tinyfool @googollee 你们俩是怎么认识的? 股沟李同学是我的中学同学 // 很明显,这个圈子实在是太小了……//我和股沟李及端不恒同学也是中学同学……和三金师傅是新浪同事,小圈圈呀。 #
  • RT @ranxiang: 昨天听了一天#SD2China 2009。最大的感悟就是IT人士实在需要加强演讲的技巧。 #
  • RT @googollee and @hengdm 我是在无法对应你和你twitter上的头像// 嘘~ 宅男不可告人之痛~ // 恩?这个有啥不可告人的?我用这个头像有几年时间了 //负责任的说,你高中也没这么飘逸的头发和俊俏的脸庞。还是学我和端木用真面孔当头像吧。 #
  • RT @turingbook: 这就是我今晚主持的沙龙:软技能的重要组成部分啊。干什么事其实都是有学问的。 //可惜没有票去听您主持的话题。下次来 @openparty 讲一次吧。 #
  • RT @arthur369: 公奶牛?好像缺哺乳工具。@tinyfool: 奶狗 ? RT @hengdm: @virushuo @diamondtin @googollee @gokeeper 你们这帮没文化滴~ 这明明是一头奶牛!//照毕加索那套,优化的时候…如果公的不能缺… #

Powered by Twitter Tools.

可测试性驱动开发还不是“测试驱动开发”

看完老赵精彩的两篇“可测试性驱动开发(上)”“可测试性驱动开发(下)”

写了篇回复

老赵,我觉得你说的“可测试性驱动开发”和“测试驱动开发”的结果是非常接近的,可是实际观察下来我觉得不是一样的。我觉得测试驱动开发的一个好处就是从外界向内部逐渐迫近,逐渐的暴露的你意图。意图其实是更接近你的商业流程和商业价值的。所以更接近与“意图驱动开发”。因为TDD鼓励从系统的外部行为向内部行为逐步细化,逐步测试-通过,循环。这样产生的结果就是方法小,方法名考究,高层的代码非常容易读懂(经常达到看起来就像文档)。

可是在“可测试性驱动开发”中,我觉得随时考虑的还是“可测试性”,但是“可测试性”本身与商业价值无关。所以驱动开发的东西就转变为程序员自己的一些“修养”问题了,你可能会倾向于使用模式来解决一些微观问题,让代码具有“可测试性”。这种做法可以产生组织良好的代码,它对于程序员来说易读(容易理解算法细节),但是这样的代码在被维护更久以后容易产生与商业价值的偏离。还有就是“测试性驱动”的经济问题,如果一个测试是纯技术意图驱动的,那么就是追本逐末了。

测试驱动开发中的ATDD(验收测试驱动开发)鼓励你将系统的流程Spec在实现前写出来作为驱动,而BDD则从微观行为上将你的领域模型的行为Spec写出来驱动,这两种方式我想才是经典TDD的“新外衣”,因为他们都继承了“意图驱动”并进化为“商业意图(价值)驱动”。

此文甚好,只是我觉得上面问题是个关键,”目标“最好还是在产生”策略“之前找到比较好,所以才写这个评论,冒犯了 ^___^

Tin’s tweets on 2009-10-18

  • RT @linzheming: 我记得我们公司去EPP的网站能有9.5-9折的优惠,尤其买返修产品,就更划算了…可惜中国apple store不能从网上买。 #
  • 今天和老婆去爬香山,下来吃“那家小馆”,的确非常好吃呀!尤其他们那个什么虾,让我有点第二盘的冲动。吃完老婆在人家椅子睡了一觉,我看会儿《百年孤独》折磨碰一下大脑,爽歪歪。 #
  • RT @hengdm: iTunes U的用户体验真差!搜索不完备、断点不续传、本地资源管理不便 //我觉得iTunes做得实在不用心,估计开发者自己并不常用iTunes + iPod #
  • RT @blogkid: 回来把今天买的电磁炉和电饭煲全都组装起来,非常开心 //这电器也用“组装”,你这说法也太Geeky了吧 x___x #
  • 北京哪家Pizza+啤酒好吃涅?我比较孤陋,感觉三里屯的Tree不错,工体的Nest还成。还有哪家值得试吃呢? #
  • RT @gigix: JIRA+GreenHopper,真挺好用的 //Y感觉还是挺Mingle的,遗憾呀,遗憾。 #
  • 前天被叫去给老婆的姥爷整DV,我才发现Windows Media Player对于老人是多么的恐怖(以前我觉得丫还算简洁),丫那种难以理解的UI隐喻绝B是反面典型,我废了2个小时也没有教会他老人家如何播放一个列表中的视频。而且我还发现左右键的概念对于老人简直就是胡扯,总是错乱。 #
  • RT 聪明猪:#openparty 10月话题:黄修源:全球博客数量已经超过7千万个,每两秒钟内就新增3个博客。在众多博客中我们发现有的博客很难用,如何创造一个好用而且美观的博客?什么是重要的呢?圆角,线条,logo,大字体?我作为一直以来专注研究设计的人来和同仁分享心得。 #
  • Model and Form is both Domain Model in Django? It confused me a lot. #
  • RT @robinlu: pragmatic programmers的书经常让人产生买的冲动 //是封皮好看呢?还是名字起的好呢?或者是因为字体好看? #
  • RT @fool2nd: Mac疯:Mac平台工具介绍-视频播放器篇 http://mac.linsheng.me/archives/768.html //Plex非常好用 #
  • RT @rlazy: 最近太忙,近四个月没买书了。今天一口气在 China-pub 买了 10 本,花了 330 块,涵盖计算机、设计和写作。 //设计的是那一本呢?我很感兴趣。 #
  • RT @Fenng: 看完了 Aerosmith 的演出,太牛B了! //我靠,太太太羡慕了! #
  • ZT: 通过拆解苹果的各代iPhone/iPod touch可知,其内部使用的Broadcom多功能无线网络芯片一直都可以支持WiFi、蓝牙和FM收音机。不过,iPhone OS系统却一直没有提供收音机功能。苹果终于也坐不住了。 #
  • 两个指头的窗口滚动;平滑的文字缩放。让人怎么能不喜欢Mac?缩放让网页适应窗口,然后惬意的享受Google reader带给你的快乐。 #
  • RT @CNBorn: 本月的 #OpenParty 上,会分享一下自己十余天柬埔寨之行的收获和经历,同时也和大家分享些背包独自旅行的经验谈。然后会把相关的信息在Blog上进行连载,欢迎大家关注。本期OP在本月最后一天 #

Powered by Twitter Tools.

Tin’s tweets on 2009-10-11

  • 朋友公司做的doit.im,是一个和Things很像的GTD软件,免费,基于AIR,是跨平台的。iPhone和Android平台的客户端也在开发中。推荐大家试用一下。 #
  • Be careful about default value of background-origin and background-clip. Found a Safari 4 UI bug caused by wrong default value. #
  • 告别了我的老MBP,离别一步步临近了 #
  • 才发现昨天我的pac文件由于操作失误一直是空的,但是twitter还是时不时的可以上,也许它被解封了吧? #
  • 在body使用browser type signature看来是解决safari和firefox样式差异的最优雅解决了。 #
  • RT @nasiless: 热烈庆祝尼古丁同学( @nicholasdsj ) 生日快乐 #1010 //原来是今日…祝丁同学生日快乐,早得贵子! #
  • 我才知道去三里屯水果店买产品如果是企业用户可以打折(要说出公司名称和联系人的名字)。我们应该共享一下这种资源,谁所在的公司的企业折扣比较大? #
  • RT @ranxiang: 看完这个wiki page,我一下子内牛满面了。http://bit.ly/BhEIA #
  • RT @nasiless: @diamondtin 公司这么多 Mac,应该组织一下,去跟水果店谈谈,享受个企业用户优惠啥的 //这样的大事还是要靠 @hdcola 牵头去搞,我们跟着吃果果 #
  • RT @hdcola: 我的10.6不能识别fat32的u盘,大家是否也有相同的问题。两台mbp均出现这样的问题。。。 🙁 郁闷 //你是不是有macfuse?结果错误升级或者错误配置了?我的mbp没有这个古怪问题。 #

Powered by Twitter Tools.

我想要的其实是一杯水

口渴,想要点喝的。身边有软饮料,有酒,他们口味太重了。
我想,喝杯茶吧。有陈年的绿茶,有大包的铁观音,奶茶粉,还有普尔和印度的红茶,一时犹豫我到底要喝什么茶呢?嘴里似乎不想要甜味也不想要酸味,不想要黏黏的口感也不想要苦涩的刺激。
其实,我想要的是一杯白水,它就已经足够解渴了。
真是奇怪,为什么我总是在渴了的时候迷茫于那些无聊的选择中呢?