Apr 24
IUSR咿咿呀呀 golf, volkswagen

1000km, 1st
一不留神,买到这台高6也已经一个月了,在上下班往返才14km的情况下楞是一个月蹓跶出这1000km,可想而知为大气制造出多少CO2了…
先上几张外观照片好了,内饰一直没照,也没什么太特殊的布置,只是换掉了原先山寨感十足的机头。

前脸

侧面

头顶

光芒啊光芒

臀部
前面一篇blog里也提到了,买这车的时候很是费劲,哪里都没有现车,甚至去的第一家4S店里连试驾车都没有(被试驾者毁灭掉了),索性也不加钱了,认头排队。结果交了订金没几天,老爹收到消息说另外一家4S店里可能有活动,过去一看,活动是没有,加价倒是比第一家4S那里少很多,强制装具的价钱虽然稍多一些,但是因为要装GPS,也比较合适。于是就顶着被爱卡论坛里无数不加价排队等车人问候十八代祖宗的压力交了加价的5000块钱,那帮人可是隔一段时间就要聚集到某个或新或老的帖子下骂一通加价夹塞儿的人的,以后碰见这种帖和回复时始终是别扭。
大概的价格是:1.4TSI + DSG舒适版裸车14.98万,加价5000,强制1万块钱装具,必须通过4S店验车并上保险。装具最后搞到1万4千块钱,主要花在机头、贴膜,美代子的座椅套也够贵的;保险没有把所有的都上齐,不过对新车来说也比较齐全了,为了躲GTI自燃的闹心还上了个自燃险,加一起大概是6500元左右。最终累计车全款是18.6万,一个让父辈人士们比较惊异的两厢车的花销
因为加了价,等车时间自然是大幅度缩减,最后只等了大概6天就被告知车已经到货。其实4S自己对什么时候车可以到货也是没谱得很,只能碰运气看能不能搞来几辆,否则肯定就要被加价的车主骂死。只不过,提车当天稍微有些后悔,原因有二:一是没选豪华版,因为泡论坛时看到一个流传着的一汽大众2010年产量计划,豪华版的计划产量很低,而且有传言说GTI和豪华版会发生“抢”零件的问题,更加影响豪华版的提车速度,但实际上豪华版在两家4S里到货都比我的舒适版还快,也许是退订的人比较多吧,毕竟豪华版大多是加了氙灯和GPS的;二是在为期一周的等车期间内GTI也正式发布了,*整车*价钱预计最终会比我这普通的1.4T舒适版贵10w,不过那可是GTI,虽说国产版做了一些阉割,这价钱倒也在心理承受范围之内,想想进口5代GTI的价格吧,二手的还能卖到30万强。一想到自己再换车的时候可能已经不再适合开GTI了,难免有些要碎碎念。
车到手开了一个月了,整体感觉还是很满意的:1.4升的经济小排量,人肉计算以及车载电脑计算的平均百公里油耗在7.0L到7.5L之间,目前还未出磨合期,这个油耗应该还算不错,市内跑的比较多,频繁起步提速造成的油耗还是不可小觑的;涡轮介入后的猛烈提速,开在市内的快速路上很爽,经常看到飙过120kmph吓了一跳赶紧松油门减速,80kmph到120kmph的加速基本没有感觉就瞬间的上去了,不过目前还不算出磨合期,不能开太快了;DSG那让人基本没有感觉的快速换档动作,使得起步后加速很快速;加装的机头功能也很完备,加上倒车影像以后大部分时间里倒车都更有把握了,有时间再想想加装一个胎压检测。总而言之真的是应了那句老话:一分钱一分货,当然,是和价位更低一些的车型相比,要是和日系车比的话还需要一定的汽车解剖学方面的比较。
缺点嘛也是有的,比如我很衰地随机到4枚著名要命品牌的锦湖轮胎,胎噪大得很,不过全部改充氮气之后有了一些细微的改进,也不排除是心理作用;怠速的时候有时可以感觉到明显的震动,幅度很小,肉眼是肯定不可见的,据说是TSI发动机的爆震现象,基本是无法避免的,也有人说是DSG的问题,私以为是胡扯,N档和P档时都会发生震动;底盘低,至今为止已经拖过两次底了,好在装了发动机护甲;悬挂很软,这个比较郁闷,又是本土化的结果,昨天在路上模拟绕桩——我是在比较僻静的路上绕井盖儿,点头和侧倾还是能感觉出来的。怎么说乜,还是说一分钱一分货吧,相信GTI会好很多。
话说当初选DSG自动档还是需要咬牙跺脚的,因为很多人质疑这个7速DSG变速箱在市内的表现,更不用提爱卡论坛里一个老大已经换了一个DSG变速箱——好在还在首保内,而且一汽认定是变速箱的问题,否则换那个变速箱要人民币8万…我也算开了快2年的车了,知道市内堵车的时候摘挡->1档->2档是多末的乏味以及让人火大,还是买个自动档的省点心吧,而且老婆考下来驾照以后也基本没怎么碰车,买个自动档的她开起来也少忙活一些。就现在的体验来说,开市内以及碰到堵车的时候,DSG真的是如我所愿的省心,可是渐渐地我看着它忙活来忙活去的升档降档反倒心疼了,结果就是现在基本还是像当初一样宁可绕道走比较好走的路线也不愿在市内冒堵车的风险。当然,心疼归一方面,另一方面也是不想在DSG变速箱大规模国产化以前就把它用坏掉——我知道这几乎是自相矛盾,用着质量更好的进口的变速箱反而希望国产化以后价格降下来以便更换质量差的国产版,其实这也算是很实际的考虑,自动档车的变速箱几乎是一定会比手动档变速箱短命的,很多自动档车的变速箱在车的有生之年基本都被更换过,假如这个7速DSG真是个不成熟的产品的话,那就没什么必要追进口的变速箱了,还是简单地拿国产的撑下去吧。
逛爱卡论坛的时候,看到有个网友写了一个比较悬的帖子,很是同意:如果是发自内心地喜欢自己的车的话,车是能感受到的。这么多年,不管用什么东西,我都算是很小心很仔细地用的,最后几乎所有我用的东西都不会坏。豪华版也好,GTI也罢,都不是自己的,都比不上在自己手里刚刚跑过1000公里的普普通通的舒适版,所以,祝我的高6和它的DSG变速箱长命百岁!
Feb 20
IUSR补充两句 linux, mac
已经犹豫了很久要不要买个Mac Book Pro来用,恰好今天又看到了tinyfool的这篇《为什么我认为每个程序员都应该用Mac OS X?》,索性让纠结来的更猛烈一些吧~
tiny的这篇文章,给我的感觉是阐述Mac OS X对于一个独立开发者的重要性,牵扯了很多为Mac、iPhone及iPad*用户*开发软件的“愿景”,基于浏览器的也好,客户端软件也好。也因为tiny和我的经历和从业背景相差太多,使得我倒不认为Mac OS X真的就是程序员的不二之选。对于我来说,选择一个OS,首要目的不是为了在它上面开发然后卖软件养活自己,而是为了使用,提高自己的工作效率。首先需要把自己定位成它的小白用户,考察它的界面外观和易用性;然后需要摇身一变成一个Power User,看看这个OS是否让我方便地定制、配置它以便适合我的需要,考察这个OS周边的生态环境,它之上是否存在很多不错的软件厂商提供了很多能提升我自己工作效率的软件;最后,需要自命不凡一些,把自己作为一个得道了的开发人员,检查这个系统是否提供了让我继续开发的底层基础设施,以便在我做Power User做的不爽的时候可以自己动手干或者憋出一个程序来方便自己。
作为一个(服务器端)Java开发人员,我更多的时候还是作为一个Power User在使用OS。Windows XP我用的时间最长(公司需要),也积攒了一些在它之上构建一个提升工作效率的工具集,可是很多时候还是觉得Explorer这么个shell限制了很多,如果切换到blackbox及其fork或者SharpEnvironment,又会出现一些形形色色的小问题。非服务器版Windows作为通用OS虽然不必提供一个很完善的工作环境,可我不得不说在它之上配置出一个高可用的有效率的环境并非易事。Windows 7似乎也注意到一些易用性和友好性的问题,至少这段时间在家用Windows 7的时候我的体验没XP那么糟。反观Linux,实际上我也算一个时间很久的Linux用户,资深算不上,只是比一般用户更了解一些东西,也明白怎么配置它从而让自己的开发效率能更高一些。Linux之上的黑客氛围应该是最最浓厚的,此外就是各种用户社区和开源项目提供的便利。作为一个开发人员,能够和众多黑客使用同一种内核的OS真是一种幸事,不仅因为黑客们都是高超的开发人员,通过各种开源项目为这个OS贡献真正有意义的软件,也因为可以向这些黑客学习而提升自己的功力。举个小例子,X下的窗口管理器可以说是洋洋大观了,可以说每一种窗口管理器都有不同的诉求,我最喜欢的窗口管理器,awesome,就是一个可以大幅度提升自己工作效率的平铺式wm,绝大部分功能都可以全靠键盘操作来完成,配置文件也是直接采用lua脚本,极大程度满足个性化要求。至今在XP下束手束脚地干活的时候,总是会回想起年前用awesome开发另外一套服务器端产品时的畅快淋漓。不过黑客们开发的随意性也比较高,所以追git HEAD拿来做日常用途的话还是有一定风险的;好在有社区作为补偿,偌大一个社区里总会有能人来满足其他人的日常用途。至于Java开发方面的工具集,好在很多还都是很注重跨平台工作的java程序,又有eclipse这么一个IDE作为核心,加上vim、P4V这种有N多不同OS版本支持的软件,开发工具方面倒是很少会操心。
作为一个服务器端(Java)开发人员,我又不得不必须熟悉常见的服务器OS,最常见的就是各种Linux了。我不敢认同tiny所说的“学习Linux是为了学习服务器管理的人们,真玩转了Mac OS X,Linux有什么区别?” 常见的一些操作、管理和概念等等可能绝大部分都是可以在常见的诸多发行版中通用的,可是为了严谨起见,那一小撮不通用的东西也是绝对不能忽视的。身在一个(曾经的)美国乡镇企业工作多年,我对老外的严谨的工作和开发态度印象深刻,而且也确实被一些我自己开发机器的Ubuntu和公司跑服务用的做过一些裁剪和配置的Linux服务器之间的差异着实折腾过几次,于是乎我是万万不敢因为都是Linux就觉得可以无痛运行所有的应用。Java是compile once run anywhere不错,不过有些时候为了更好地发挥服务器性能也会基于服务器运行环境来做一些hack,忽视这些hack有些时候是真能死人的。更何况如果我没记错的话,Mac OS X怎么说也是基于一版BSD做的fork,作为一个伪Linux用户我还是不敢忽视Linux和BSD之间的差异。
而说到Mac OS X以及iPhone、iPad,tiny似乎也非常欣赏以App Store为核心的这套苹果平台上的生态系统。不过我还是觉得一个过于封闭和独裁的平台是无法长远发展下去的,即使App Store刚出现的时候给人感觉似乎是独立开发者的救世主降临了。苹果的App Store绝对是个创举,但是它建立在一系列苹果家的封闭平台和渠道之上,我觉得长远看来Android App Store应该更有未来,至少不会再有一个苹果Inc.禁止你发布一些和它利益冲突的应用程序。
再者就是大家都很看中的用户体验了。这方面大家都承认Mac——以及iPhone/iPod Touch/iPad——及其之上的很多应用程序,历来都是优秀用户体验的代名词,无论外观还是操作都是一流的。不过我还是认为,这么一个东西,只不过是一个适合人类的OS,不是适合*我*的OS。很多时候我还是希望能折腾出来一个最适合自己的OS——也许这些不能算是OS的功能,在linux下尤甚,基本上就是OS和运行在其上的各种应用程序的一个综合。这样一个*我*的OS,虽然不敢保证随便谁都能拿来就无障碍使用,但对我来说却能在一定程度上保障自己保持一个合理的工作效率。没有使用过Mac OS X,不知道在它下面能不能像在linux下一样地自由折腾,不过,Linux即使不是最能让用户折腾的OS,也肯定是能让用户使劲儿折腾的OS之一。
聒噪这许多,发现似乎自己的犹豫也渐渐解开了,还是买台ThinkPad好了,继续走Linux的路子,也许外加一个Windows 7方便VPN干活。只不过说到笔记本硬件的话,17寸Mac Book Pro的性价比感觉还是很高的,更何况还有那么好的外观,买完了ThinkPad我想我也还是会继续惦记着Mac Book Pro…
More
Feb 14
IUSR咿咿呀呀
碎碎念 & 流水账文警告。
早上起床以后跟老婆又把昨天没有完成的一些家务干完,洗了N多衣物,草草吃了顿担担面当午饭:本来真是不想吃这个,无奈何今天卖主食的店全部歇业,包子铺都关门了,只好自己煮面拌酱。
午饭后老爸开车来接我和老婆。今年是结婚后第一次过春节,和往年比起来,感觉上是有些奇怪的。快速路上很清净,路遇一四代高尔夫,北京牌照,1.8L,速度慢的让人发指,失望。
妈妈照例忙活了满满一桌子的饭菜,不少菜今年是创新。举杯的时候我说了一句:“今年多了一个人来过年了啊~”
春晚愈发无聊,除了王菲以外没有一个节目能看——哦,也许还要除了那段舞蹈,12:00AM之后不久的那个,twitter上众神纷纷抛出电视上的裙底照,直看得人捶胸顿足。挑这么个时间放这么火爆的节目,导演肯定是故意的。
在老婆笔记本上干活不太顺手,遂下载了一个支持windows 7的cygwin 1.7.1的安装文件,结果该程序获取镜像列表时壮烈被墙,MD,遂请出VPN。所以本文也是为了纪念虎年除夕之后我的第一次被墙。
Feb 08
IUSR补充两句
前几天和某前辈MSN聊天,聒噪了几句,前辈说应该保存下来,于是:
IUSR: (工作)哪儿不这样啊。
IUSR: 都是政治。
前辈老大: 江 湖啊
IUSR: yes
IUSR: 中国公司里面能看见的直接就是人和人斗,太明显了,让人觉得没意思。
IUSR: 跨国公司乜,先是分舵之间斗,再内斗。有分舵之间的斗充当buffer,就稍微好接受一些。怎么搞都是阶级矛盾居多,也更关乎生死,人民内部矛盾看起来就少了。
前辈老大: orz
IUSR: 而且是职位越高,眼里越是阶级矛盾,职位低的看到的人民内部矛盾才多。
前辈老大: 这 个你要发到blog上,永存于internet
IUSR: 老大们首先想到的肯定不是怎么折腾小弟给小弟穿小鞋,而是怎么折腾其他阶级敌人,让自己的话语权更NB一些。
所以说,只要不是单打独斗,情商这个东西都是很重要的因素。技术水平怎么样放一边,公司运转需要大家合力做事情,为人处事的道就很重要了。怎么让一个team的人工作起来都开心融洽和睦(恶心一点地说:相亲相爱),绝对不只是这个team的leader或者manager需要考虑的事情。退一万步说,本地的圈子都不会太大,总不要做到臭名昭彰打了饭碗吧。
说归说,“为人处事”四个字真不是一般的困难。理解别人进而让别人理解自己,真是需要功力的,也是无法从Google、网页、书本或者man pages里获得的技能,大家有技能点的时候也别忘了升级一下这个技能,别一个劲儿地升技术、英语之类的。
Feb 01
IUSR补充两句 life, volkswagen
关注高尔夫6是很早了,不过直到现在还没有下订金。本来冲着高尔夫这个品牌,可以完全不操任何心地直接订购的,可惜啊…
转了转爱卡和汽车之家,大家似乎对一汽大众这种饥饿营销策略厌恶至极了,不断有人在等候了3、4个月以后决定退出等候的队伍,转而去买其他的车。似乎之前高尔夫3代、4代销售都比较艰难,早先的时候很少有人认这么个售价很高的两厢车,现在高尔夫6高调出厂,体验、试驾、预订搞了半天,实际产量却没有多少,完全指望着年后的上量生产,现在已经预订了的客户只能眼巴巴等着人家美滋滋地过完年。
厂家的不急不慢已经让人不能忍受,全国范围内一汽大众4S店的趁火打劫就更让人恨不得揭竿而起。加5000至10000元可以提前提车基本就是通用的做法,外加号称强奸包的GPS和/或氙气大灯,整车价格直奔20w就去了,更不用说指导价格标了16万8的自动豪华版已经涨价到18万1(天津)。4S店销售人员的牛气哄哄也很让人受不了,以前是售楼小姐的鼻孔越抬越高,现在换成他们。加价提车和强奸包还没完,还必须在人家4S店里安装几千块钱的配具…否则您就慢慢排队等着去吧,号称已经排到5、6月份了。
虽说已经开始出现不少问题了吧,还是觉得高尔夫6是辆好车,只可惜销售被TM一汽和众4S搞成这么个局面。周六去一家4S试驾,也是没有现车试驾,只能用辆速腾1.4TSi+DSG体验一下。回到家和老婆讨论了半天,觉得要么就认头加钱提前提车好了,回头和4S聊一下过年前提车还有没有希望,没有希望的话就先交个订金排队好了。老婆经过半天的思想斗争也总算是同意了。
同样经历了半天的思想斗争,现在换成我不同意了。年前提车基本是没戏的,加价可以提的车只有一辆黑色的,而一辆价格149900的自动舒适版在附加提前提车、强奸包和配具以后,加上保险和牌照费等等,最终价格已然是192000左右了。忽然觉得早上真是太冲动了,这4万多块钱也不是大风刮来的,真要是能大风刮这钱出来的话,谁还陪一汽玩这游戏,直接去搞进口的GTI好了。
我真的不是个有耐性的人,看了个把月爱卡,又去4S实地了解一下销售情况,现在已经感觉像某同事形容的那样似的,已经疲塌了,过些日子这款车估计对我就没什么吸引力了。本来想着赶紧买完了过年期间串亲戚时能有得开,现在得到爸妈支援的老车,这个需求也不那么强烈了。也不打算下周翘班去订了,就周末吧,去4S再转一圈,或者排队等,或者就跟高尔夫说拜拜了。
妈的,不知道跟德国大众反映反映会不会有效果。跟一汽这种官办背景的大爷公司合资还是有风险的,别回头把牌子做砸喽。
Jan 28
IUSR咿咿呀呀
公司要扩张,人员配置当然是第一位的,21世纪嘛。
然后我光荣地与另外一同事被拍去做第一轮电话技术面试,Java服务器端高级工程师职位。很惶恐。已经N久没面试过谁了,自从上次和HR因为面试安排搞得不太愉快以来。
因为东家这儿的业务领域挺特别的,所以服务器端Java开发人员一直难招,来的一队队J2EE/Java EE资深工程师们排着队一样被面试的人儿毙掉。当然不是说我们多装13,业务不对口,就算您一个月给现在的公司赚10个M的USD,招来了也是白瞎着从头做起不是。以前面试的J2EE/Java EE人士多到让我觉得做EE开发的人似乎组成了Java开发阵营里很特别的一个团体,这个团体的特点就是不了解底层——说底层都是吓人,这里这个底层离真正的底层还远了去了。
也许因为咱祖国这里的软件行业目前还是做项目的公司多吧,Java EE是个做项目的好平台,不用关心太多细节,开源组件量又大价格又实惠,遇到有些简单的项目几个开源项目/库/组件/软件直接拿过来定制化一下再做些胶合就可以扔给客户了,实在是杀人越货的好东西。所以说,很多Java EE的开发人员,甭管关心不关心底层,能拉得下脸面出来让别人面试的,兴许在现任/前任公司里还都是高官厚禄牛人待遇活着很滋润,回头开恩一般驾临我们这儿面试来了,还被我们给鄙视了,还真不知道人家心里是个啥滋味——至少原先看某IT公司红黑榜,上面有一个老大在被我们这儿的面试官毙掉以后忿忿不平地说自己是盛装而来给猪看了。
所以说这扩张还真挺难开展的。可是话也说回来了,基础类库不熟悉,Java 5这种老东西上的“新”特性还不知道(实在是和工作性质无关,很多日常只用J2SDK1.4的程序员还都会因为好奇和好学去用JDK 1.5、1.6、1.7了),多线程解释得和超自然现象一样,这样的凳次,任谁就算放水招进来了,心里终究还是不会安稳的吧。
P.S.,跑个题:昨天的娱乐是这个:http://www.douban.com/review/2949973/,某大牛为某烂书(前三章)写的书评。书评的作者真是位技术和人品都在很高层次的香港同胞,而反观该书的作者,就很具娱乐精神了。可惜,刚刚又过去想看一下有没有后续,似乎我是转载晚了一些,丫已经把自己拉的屎又都坐回去了,不过还是可以从广大眼睛雪亮的人民群众的回帖引用中看出个中娱乐性的。昨天看丫回复的时候,觉得那很口语化的文字很有我上一个东家当年的神韵。
Jan 01
IUSR补充两句 crack
提前声明一下,这篇绝对非技术,现在破解个iPhone/iPod Touch应该是件不费吹灰之力的事儿了吧。
只不过正巧刚和某同事提起这个事儿,发表几点感想,都是因为买了个iPod Touch。
如果是iPhone的话,不破解或许没法正常使用中国的移动网络,可是我的iPod Touch完全没有这方面的需要,仍然不止一次的有人惊讶地问我:“你怎么不破解?!”或者慷慨地说:“我帮你破解了吧。”
似乎我还没有到奥特曼的地步,blackra1n刚能破解3.1.x版固件的时候我就已经第一时间试验了,只不过当时的Cydia之类的源里面,很多很底层的库还都没有支持3.1.x,所以在安装了某个底层库之后需要重启springboard的时候机器就卡在那里不动了。具体哪个库一时想不起来了,不过以前和人讨论一下到时有记录可查。其实刚开始时不知道是哪个库导致的springboard无法重启,只是在兴冲冲地装了openssh、gcc等等很亲切的东西之后发现机器竟然还能急需用之后,装了某个很流行的GUI程序,之后就发现了springboard无法重启然后机器死掉了——这直接导致了我激活iPod Touch之后第一次再次看到白苹果。然后依次试了那个程序依赖的几个底层库,才发现导致问题的那一个库,结果丫还是很多超流行app都依赖的那一个,也就是说基本上虽然越狱了,还是没办法自由自在地随意安装Cydia里的应用程序,真是当时最让我郁闷的一件事。除此之外性能也是一个问题,越狱后系统里会被塞进几个服务,特别是openssh-server这种必备的服务,可惜天下没有不吃草只会跑的马,一个系统服务真真地摆在那里跑着,不可能一丁点资源都不吃的吧。然后我就观察到以前一直跑得好端端的Mindjet里,拖拽一个节点时会很卡,几个无聊小游戏启动的速度也慢了,Awesome Note里面保存个记录都要3秒了…这也导致我直接用以前的一个备份重置了系统,特别是在前几次白苹果的某一次导致我几乎丢掉了所有的个人数据——很奇怪,其他几次白苹果之后我也尝试建立了一些个人数据,但是并没有每次都被恢复备份抹掉,残念。
越狱不是什么不好的事情,虽然我现在用的iPod Touch完全是一副遵纪守法的样子,我并不赞同苹果批评越狱行为的说辞,即使有EULA之类的东西。对自己的设备多一些控制力,绕过app store这个唯一渠道安装一些其他的有用的软件,对用户自己自然是很有吸引力的,不过凡事都有一个底线,而我最近越来越发现一些人的做法超越了这个底线。
这个底线很简单,就是避免使用破解版软件。
破解软件似乎是个老问题了。很多人都觉得使用破解版软件很酷,尤其是干计算机的人,好像自己干了别人都干不成的事情。很抱歉,似乎您只是找到了破解版软件而已,没有任何一个破解是您亲力亲为做出来的。在早先的时候,找破解版软件真的是很不容易很考验技能的事情,破解版软件是很敏感的东西,不可能光明正大地摆在门户网站上供大家下载,更何况一旦提供了这些东西,服务器都要不可避免地被海量的用户连接蹂躏,所以更多的盗版软件都是需要找到正确的渠道才能获得。可是现在时代不同了,互联网比以前更容易被用来发布信息,P2P下载方式也不会摧毁任何一个ftp服务器,找个把破解不成任何问题,甚至0day。
我一直认为,中国的软件行业这么萎靡,很大一部分原因是因为盗版。这不是说完全因为中国人自己的软件被自己人盗版,而是全世界范围内的盗版行为,让中国的软件用户认为软件就应该是免费的——那么那么牛X的微软做的Windows不也是4、5块钱搞定的事情么。这又是老生常谈了,不过却是让我很讨厌盗版的一个原因,软件开发人员的劳动成果没有任何人会觉得物有所值,当然也有例外,比如被娱乐至死的人们爱戴的网游,以及听起来牛13哄哄的所谓的企业应用——即使是企业应用这种动辄几十上百万的软件,我想也不会有人反对我说它们的价值基本都存在被严重低估的情况。盗版对此有不可推卸的责任。
然后,我们当中的某个人,作为一个计算机从业人员,却“帮助”其他的普通计算机用户使用盗版,我是真的无法理解这种行为的动机的。是不是认为反正没盗我自己的版,随便?其实有个很简单的办法检验一下这种行为的后果:找一个一直不用盗版的用户——虽然相当难找吧,问问他愿不愿意买你做的一个很便宜的软件,然后再找一个一直用盗版的用户,问问他是愿意从你这里堂堂正正地购买一个你做的9毛钱的软件,还是愿意打开浏览器从某个网页下载一份盗版。
曾经我也是非常厌恶商业行为的人,不过在从业这些年以后,总算是至少不再厌恶商业了。很多事情离开了市场离开了商业确实是无法有进展的,或者很困难。App Store成功地为很多开发人员找到了赚钱的新大陆,想想以前举步维艰的共享软件开发人员,不得不说App Store是一个福音。举个简单的例子:现在Cydia里照样有很多需要付费购买才能安装的很不错的软件。开发人员不是不食人间烟火的神仙,也不是所有开发人员都是传说中用个把业余时间就养活了全世界N多需要这个软件才能生活的人。当开发人员找个方式寻求用户的支持的时候,或者说白了想让你花钱购买他的软件的时候,难道就不能以花钱购买这个最直接的方式表示支持么?而非要自己找破解版,或者拜托一个所谓的“电脑高手”搞定,然后花钱请客还人情债。更不要说就App Store来说,很多应用程序都是只有$0.99、$1.99这种不到一顿饭的价格的。
为了堵上某些人的嘴,还是表个态吧。从买这个iPod Touch并且注册了iTunes帐号开始,就没有用过盗版,包括越狱后的短暂时间。平时用PandoraBox和BargainBin淘便宜货的时候,也会有一些不错的收获,尤其是最近这种过节的日子。盗版真的不是使用软件的唯一途径。
Dec 24
IUSR咿咿呀呀 gadget, linkedin

Panasonic BL-C131A Network Camera Wireless 802.11
入手了大约一个星期了,目前感觉良好。
其实一直以来想要的都是Wowwee的Rovio,1、2年前就知道Rovio了,视频什么的也看了不少,觉得很cool很有用的一个东西,不过鉴于一直要存钱娶媳妇儿,不能买这种大玩具,只好吞了吞口水。现在也变成已婚人士了,家里又是传说中的双职工,有时离开家后还会惦记着煤水电是不是都关好了,Rovio逐渐变成了我眼中的必需品。
最近这次出差时,心想总算有机会可以买Rovio了吧,不料丫还卖断货了,官网提示Amazon上可能还有货,遂去看了看,天,已然从以前的$229、$239飙升至$299,完全就是一个iPod Touch的价码。考虑到当时买新上市的iPod Touch 3GS 32GB才同样的价格,还能打折便宜一些,而且相比之下iPod Touch还算对工作学习有帮助,干脆就放弃了Rovio,和同事一起组团儿买了iPod Touch。出差回来以后,虽说iPod Touch玩的很欢,可一上班了又会隐约觉得家里没人不放心,于是又动起Rovio的脑筋。
终于!感恩节期间,Rovio官网总算又有货了,而且降价到$229.99,还可以选择UPS并且免运费,最走运的是当时还有同事在美国出差,也答应了帮我带回来这个尺寸稍大的玩意儿,当时感动得真是觉得…要是每天都过节就好了啊!
下单之前忽然想起来去Amazon看了一下别人的评论,结果…忽然觉得Rovio这东西不靠谱起来…比如有人说它经常无故无法进入dock,导致没法充电,本身因为电池又要负责Wi-Fi又要负责丫四处转悠,顶多撑一个小时就没电了;有人说摄像头的远程遥控基本就是个笑话,只有3档:看地板,高一些,看天花板;有人说太阳刚开始下山的时候屋里不开灯的话就什么都看不清楚了;等等等等。一下子看的我的心都凉了,也骂自己在Web 2.0的年代网上购物却没有想起来查看别人对这产品的评价,一直对着官网的正面宣传流口水。看来这玩意儿还不是太成熟,或者按某些人说的,这个价格这种质量已经不错了,追求高清晰度成像的话还是花个一千多刀买专门的安全摄像机好了。
随即打消了买Rovio的念头,抄起来1000多RMB,总不能拿来远程检查地板擦没擦干净吧。在Amazon上又转了转家庭安全保障方面的设备,发现了这个价格不高评价却很不错的Panasonic BL-C131A Network Camera Wireless 802.11,价格是$249.99,比当时Rovio的价格贵一些,不过功能似乎更多一些。综合一下其他用户的评价和买家的review,最终下单。顺便利用了一下当时的Amazon Prime一个月试用,搞了个免费的2个工作日送货,免得同事都回国了东西还没到。
等同事终于出差归来,把Amazon的箱子交给我的时候,实际上我几乎已经要在公司就插上电源开机了,更别提旁边一大票电子玩具爱好者一直在撺掇。不过,谁叫咱专业呢,我决定继续吞口水,回家再说,不给起哄的看~

没有来得及给产品包装盒拍照,因为我已经迫不及待地拆开了…
打开包装,第一感觉是…这摄像头还真小…本以为可以大一些的。电源的变压器还不错,最高可以接240V 60Hz的电源,网络方面支持有线和无线802.11b/g,视频拍摄的最高分辨率640×480,水平视野49°(最大149°),垂直视野37°(最大87°),etc.,更多的就不说了,在松下官网的产品页面上有详细的技术参数。照说明书的提示,把包装里带着的螺丝拍进墙里——说到这就要赞一下松下还在说明书的边缘画了一下螺丝钉的间距,比较细心,想以前往墙上固定点儿什么时一不小心距离没掌握好就要恶心地左右微调——不怪我不专业,当初上门装空调的师傅也是凭感觉的,最后还是免不了手动调整一下的。然后首先需要用网线把摄像头连在路由器上——总不可能靠喊的来告诉摄像头家里Wi-Fi的密码吧,再用随机光盘中的管理工具在本地LAN里搜索出这个摄像头,进入它的web管理页面,配置一些最基本的选项,比如管理员的用户名和密码,Wi-Fi热点的SSID和密码,做完这些基本配置以后,重启并拔掉网线,把网络接入方式的开关拨到无线方式,这个摄像头就算基本设置好了可以工作了。最后自然是毕恭毕敬地把它安在墙上拍好的螺丝钉上挂住。

值得一提的是这个摄像头的“软”功能真是比较丰富:最基本的远程遥控摄像头移动就不说了,输出方面视浏览器的支持可以用静态图片、MJPEG和MPEG-4视频,用IE访问的话还可以单向输出从摄像头内置麦克风输入的音频(当然需要先装个把ActiveX控件),可以预设几个常用的摄像头移动位置以方便直接转向;支持运动检测并连续拍照缓存——这可是防贼必备,虽说我家的小区是这块治安最好的——以及定时拍照缓存,缓存中的照片可以通过FTP、HTTP和SMTP方式发送;网络方面支持通过UPnP自动配置同样支持UPnP的路由器的端口映射配置,直接通过动态DNS服务发布服务——虽说比较危险,为了安全考虑,支持配置多个权限不同的用户,并为用户设置允许的和默认的图像输出格式,以及允许查看的时间,这样出门在外的话不是必需的话可以用低权限用户远程查看,避免不必要地暴露管理员帐号;如果买了N个同系列产品,还可以配置多台摄像头的图像输出,有点保安监控电视的感觉。最贴心的感觉还是那个Privacy模式的大按钮,一按下去以后,镜头就会向上移动然后被覆盖住,同时web界面也会禁止管理员之外的用户访问,当然管理员还是可以远程解除Privacy模式让镜头再转出来的,但是有这么个大按钮就能保证即使使用这个摄像头的人是个计算机白痴,也能毫不犹豫地按下这个按钮保护自己的隐私——要是不懂“privacy”这个单词的话就另说了。
比较不舒服的是web管理界面不支持SSL连接,而且是做HTTP Basic认证校验用户名和密码,当然要这么个小设备做太多的运算还是有些强人所难,只好尽量用最低权限的用户登录,并且隔一段时间就修改用户名和密码。
有了这个小家电,上班终于放心了。就算我有些偏执吧,谁不稀罕自己家乜?至于为啥不在国内买,我琢磨着但凡有些生活经验阅历的人都能明白吧~

Dec 14
IUSR技术文章 linkedin
其实一共也就才2天。
还是头儿一直张罗着要做一个设计模式的培训,因为连续2次公司技术考试里大部分人对设计模式的试题回答得都比较业余。我一直觉得这种东西是很虚的那种技术,所以一直以来不是太感冒:曾经有过N次都是看了设计模式的书就发现自己前几天在干的东西就是某模式,总觉得一帮人吹的那么神乎其神干什么。今天讲师也正好提到了Joshua Bloch大爷也有这种经历。所以说,自然而然地在不了解模式的情况下就应用了一种或N种模式也不是什么稀奇的事情,更不值得沾沾自喜,只不过不学习设计模式就能自己总结出目前流行的所有这些设计模式,那就真是神一般的存在了。
今天想记一笔,主要是因为有一个题目有点儿意思,直接就和讲师想到一起去了(过分低调了,否则可以拿个小奖品),而且应该比他想的还多一丁点。
题目很简单,设计一个logging框架,要求主要是:
- 支持同一笔log记录到不同的目的媒体,比如文件、数据库,或者通过socket传输字节流;
- 支持同一笔log记录到不同目的媒体时使用不同的格式;
- 支持log分级;
- 除了将log级别作为是否记录log的判别标准以外,要允许用户创建自己的算法逻辑决定log是否记录。
大概就是这个意思了,细节记不太清。
很多人的第一印象是:这不就是一个设计log4j么?!不过仔细考虑的话,1和4都是log4j不能直接支持的;第1个要求可以通过log4j.xml配置方式通过AsyncAppender搞定,但显然这是具体实现类的行为,没法体现框架的设计思路。

类图,草稿,而且不规范
上面是草草画的一个类图,很草,而且也不规范,箭头的实虚都是后来看了UML类图规范又改的。
在大部分人都直接认为这就是个log4j的设计的时候,我和组里的几个哥们儿还是识别出来明显的差异,然后开始了我们自己的设计,目的很朴素:一定要和log4j不同,否则就不去演示了。
不过log4j在大部分java开发人员思维方式里的先入为主的地位还是很严重的,几个接口方法定义过来一看,还是那么地log4j。这可不行。于是先来统一一下中心思想,直接套一个大概还靠谱的模式:chain of responsibility。其实我心里完全想的是另外一个模式:J2EE核心模式里的intercepting filter。主要因为似乎chain of responsibility最原始的定义是最终链中只有一个节点被执行,而我的想法是把输出log的对象做成chain,这样肯定需要链中有0到N个对象能被执行,虽然可以说是种扩展,不过还是别在讨论严肃话题的时候捣浆糊的好,再者,借助filter就可以很容易地针对log级别和用户自定义逻辑进行过滤,只让满足所有条件的log被最终记录下来。
这个时候log4j给我们的先入为主的印象又作祟了一小下;控制输出log的被定义为类似log4j的Logger——姑且也叫做Logger吧,然后向log4j看齐一下,每个Logger都有一个名字,名字的命名规范和java的包及类名的命名规范类似,做成了树状的实现了继承的结构。这时我和另外一个老哥就有一点儿傻眼了:这成了树了,怎么搞链式调用啊?马上我想到一个补丁:生成一个广度优先遍历,哇,这样似乎又和iterator拉上关系了;并且然后允许客户代码获取没有预先配置好的Logger,默认的log行为是继承父节点的行为,这也比较类似Log4j,然后每一次客户代码获取没有预先配置好的Logger的时候,框架就在其父节点下挂接上这个新的Logger,更新广度有限遍历的iterator,etc.。如此这般,折腾了一会儿以后,我失望地发现,哎,这不还是log4j么,核心的部分基本是换汤不换药的。
好在随即马上又想到一个补丁。以上的思路的中心都是Logger们用命名规范生成出来的一个树状结构,痛苦也来源于此,但是现在已经有了filter的定义,不如换个思路,把记log时所用的Logger的名字一起作为参数传到filter中,然后做一个根据Logger名字来决定是否过滤Log消息的filter。这样一来,让我头疼的树状结构终于被干掉了,对框架来说偷了些巧,而且实现这样一个拿到Logger名字然后做一下字符串操作的filter也远比遍历、维护树状结构容易很多。至少针对这个题目看来,树状的结构没有带来更多的好处。
于是我们team就产生出了2种设计:一种是之前最终演化成和log4j基本差不多的设计,一种是我更喜欢的剥离出Logger名字管理的使用了intercepting filter模式的设计。后者明显更简单一些,没有不必要的处理。事后才反应过来,那个树状组织Logger的方式完全不是必需的,题目也根本没提到,只是作为一个需求更改验证了一下我的想法能处理这种组织方式。
讲师在看了其他team的设计之后也公布了一下他的设计,据他说那是97、98年左右的事情了,那个时候他也是刚毕业,和项目经历一起花了一个晚上重构他之前的臭代码到这个设计。98年左右,国内是肯定没有引进设计模式这本书的了。
之后也有其他很多同事“攻击”了chain of responsibility,指出这个模式和这个题目的要求似乎不太搭调,毕竟没人要求必须按照某个顺序记录同一笔log,而observer模式应该更适合一些。其实这个问题用observer的缺陷是很明显的了,filter逻辑完全要再借助其他类实现。无所谓了,好在我提到是用intercepting filter,而不是chain of responsibility,如果照讲师的说法,chain of responsibility带个filter,那observer带个filter不也可以解决同样的问题么。
是以为记。比较意识流了一些,嗯。想想这样一个logging框架,做出来应该也是有一定用途的吧。
作业是一个异常处理框架。实在有些想用上AOP,不知对付OO设计模式的题目算不算作弊乜?
Dec 01
IUSR咿咿呀呀
总算下定了决心,在linode买了一个VPS(Virtual Private Server),就要结束这N多年blog无定所的日子了。一直以来就觉得,把东西寄托在第三方的blog服务提供商处根本不算个blogging的方式,而且悉数目前的BSP们,国内的免费阉割服务严重,有独立域名的想绑定的话还要备案,国外的自由一些,发布方式也更多样一些,可惜有的已经被墙,其他的永久性拥有被墙的可能。自己搭建blog就不一样了,虽然麻烦一些,不过还好所有的事情还不是太难办。大部分人可能还是用虚拟主机服务,也有越来越多的知名blogger们不满于虚拟主机服务的束手束脚以及主机商的overselling,逐渐地转移阵地,而又以选择VPS这种方便快捷的托管方式的人居多。
虽然我完全不是什么知名blogger吧,有一个自己的VPS还是很有吸引力的,blogging的需求放一边,更是可以有一台随时待命的有独立公网IP的服务器用于实践一些自己的想法,发布一些应用和服务。于是就去linode买了最便宜的linode360,每个月$19.95,还算划算,一键安装了ubuntu karmic,内存虽然小一些,只有360M(linode*360*嘛~),跑个流量不大的没有静态化的wordpress还是没问题的。拿到手第一时间就实践了一个以前没做的事情:用nginx替代apache2跑web应用。自己的VPS就要自己照顾打理,相比发个email发布blog来说还是很锻炼人的。
兴奋的差点忘了说,blog搬家至http://blog.iusr.me/。
Older Entries Newer Entries
Recent Comments