用Surface Pro 3来编程

Surface Pro 3买来这么久了,其实除了周末出去泡咖啡馆没怎么用过。作为一台咬了半天牙买来的生产工具(为此还买的i5 + 8G RAM + 256G SSD的次高配),为了不让投资沉没,感恩节期间花了两个上午在咖啡馆里折腾了一下,总算是可以用来干活了。网上有很多人问SP3体验怎么样,能不能用来替换笔记本什么的,我就来写写怎么用Surface Pro 3来编程吧。 /* 强赞一下家附近的Telegraphe Café,虽然小,但是早上人少,无线网很稳定,而且是能坐下来干活的咖啡馆里,少数咖啡和糕点都做得及格的。 */ IDE 有那么几年没接触Windows,这个系统进化了不少,但其实在开发者工具上,它也就光升级VisualStudio了,这都快Windows 10了,还什么都往C:/Program Files(x86),里放。 不过好在Visual Studio真的是最好用的IDE无疑了,怎么说呢?有人说“Xcode和Visual Studio之间隔着一万个Eclipse”, 我个人的感觉就是,VS是一个能让你感觉自己更会编程了的工具,特别是对于我这样一个完全没有C#和移动开发经验的人,写起Windows Phone应用来也感觉上手难度很低。 IntelliSense虽然是在Eclipse火起来之后才出现,但是在微软自己封闭的语言和系统库环境里表现真的是值得点赞。另外MSDN从库手册到导引性文档到范例库的一条龙服务,实在是不能要求更多了。而不知道什么时候加入的Git支持和暗色界面,都是*nix码农眼里的加分项。 当然,VS Express能做的事情有限,可以写写Windows平台的东西,但是其他的程序,还得自己折腾环境。 命令行 一般码农从Mac切换回Windows,其他还好,有两点始终没法适应, 一是少了块丝滑的触摸板,二是少了一系列*nix系列的命令行工具的整合。 触摸板是没办法了,有的时候Type Cover上那块小小的触摸板实在用的不爽了,就上手指去屏幕上划拉,好歹还是比挪手腕去找鼠标方便点,现在鼠标对我来说,真是回不去的史前了。 至于*nix系列的工具,经微软的朋友介绍,开始使用PowerShell,虽然完全不能理解这个Shell为啥要用驼峰型的命令名称,但是比起cmd.exe来说已经是跨世纪的改进了,而且我是相信它其实很强大的,当然微软算是很贴心的用一系列的alias模拟了一部分linux命令行,比如ls ,让像我这样习惯性脑子堵了就强迫症似的一直敲ls的人不会被各种报错弄到抓狂。 文本编辑器和命令行工具 当然这很不够,为了写程序,我们至少还需要一个编辑器,一系列的命令行工具进行一些网络和字符串操作。 先说编辑器,虽然我自己习惯的Vim也有Windows版本,但是大多数插件对于Windows的支持都很抱歉,而且光是改.vimrc都足够繁琐了,所以干脆转向二十一世纪的代码编辑器吧。 目前尝试了Sublime Text 3和Atom: 从速度上来说,Sublime完胜。 Atom在我看来的一大优势——Vim mode插件——在SP3上根本就不工作。 两个编辑器都支持字体缩放,Atom是Ctrl加上双手指上下滑动放大和缩小字体,Sublime是Ctrl + -/+,而且在调整了字体大小之后重启编辑器,设置依然保留。这对于SP3这种高分屏来说还是有用的,因为这俩的默认字体在SP3上都显得偏小。 综上,虽然Atom现在很火,但是Sublime Text 3依然更适合写代码。 然后是其他的命令行工具,一开始我无比想念Mac上的Homebrew,有了它,其它的什么脚本语言解释器,命令行工具什么的,分分钟就安装好,简直比Linux上的包管理还要好用。因此为了节约时间,在Windows平台上找一个类似的工具是最快的捷径,最后找到了两个: Chocolatey Scoop。 Chocolatey的特点是会打包一些图形化的应用,比如你可以使用 $ choco install atom 来安装Atom编辑器,类似的还有JDK,VirtualBox,Fiddler等应用也可以通过他来安装。 但是包装个Installer算不得好汉,从两个工具的形态来看,我更看好Scoop,因为它从各个方面都更像Homebrew,App Manifest的定义类似Homebrew的Formula,对于愿意给开源做贡献的人来说,参与其中应该能容易一些。而且它更加的关注开发工具的打包,因此它支持的*nix工具也更多一些。 所以我的开发工具包基本上都是靠它安装: $ scoop install curl coreutils less ln grep 搞定基本的网络和字符串操作。

如何四肢健全地度过黑色星期五

2014年黑色星期五的凌晨,我在推特上说,黑五了,啥也不想买,也不知道是因为挑还是因为穷。 现在虽然各种deal还在满天飞,但是星期五确实是过去了,总结一下自己,大概一半因为挑,一半因为穷吧。 其实今年的黑五有些折扣还是很给力的,比如BestBuy的iPad折扣,最新款iPad Air 2直接减100刀,苹果店自己都打不出这么大的折扣。更难得的是货源还非常充足,虽然网店早早地断货,但是我还是轻轻松松地在曼哈顿的两个实体店里帮朋友们剁了三只iPad Air 2。全程基本上都没有排队,都是进店之后问到发货的柜台,等前面正在结账的人结完账,自己走上去报完型号,刷卡,拿货走人,要不是因为限制每人一次只能买一台导致跑了两家店排了三次队,可能感恩节下午那次逛到BestBuy时就能给买齐了,那时候黑五都还没到呢,堪称史上最速剁手,怪不得这两天在BestBuy刷信用卡都还得看ID…… 不过说起来曼哈顿岛上的黑五真是比新闻上小镇里的黑五要平和多了,几乎没看见吹着冷风排队的情况,更没有什么争抢啊,黑人大妈啊,电击枪什么的。可能一是过节很多人都回老家了,二是岛上的人平时买东西也挺方便也不贪图这一时吧,比如我走路去附近的两家BestBuy,一家苹果店,都是十分钟的路程,帮人剁手真是车费都不用报。 至于自己呢,虽然知道折扣很值,但拿着手里的老iPad,想想自己可怜的积蓄和高昂的税费和房租,还是咬不下牙花几百刀更新换代,只好帮人买买干爽几把,顺便感叹一下国内朋友们真是土豪。 此谓穷之一。 而因为住在曼哈顿岛上狭窄的公寓里,一不留神就把家里填满了,bed bath & beyond黑五早上全场八折,本来就才200刀一套的Cusine Art厨具11件套简直是烂便宜了,但是无奈家里放不下,还是只能买了一点洗衣液洗手液了事…… 此谓穷之二。 至于挑呢,则是因为最近一年来养成了两个习惯:一是网购只从wish list里面下单,二是买衣服鞋子一定要先试好。 所谓网购只从wish list里面下单,是Amazon帮我养成的好习惯,为了防止冲动购物,每次需要买什么,我都习惯性把选好的商品先放入wish list,一是方便多个商品比价,二是Amazon的wish list有一个很好的功能就是帮你追踪价格,比如如果你wish list里面的商品降价了,那么查看的时候它会显示比你加入wish list时降了多少。 这一年以来,除了急需的生活用品,基本上都是从wish list里面下的单。当然更多的是加进去之后放了一段时间发现其实用不上然后就删掉了。 而买衣服鞋子先试好则是花钱买来的教训。跟所有刚来纽约的孩子一样,都觉得纽约的衣服烂便宜,110刀以下的衣服连税都不用收。特别是还有Century 21和Woodbury两大神地,突然觉得国内想都不敢想的牌子到了这边可以眼都不眨买下来,简直不能更爽了。 但结果就是为了折扣而买买买到停不下来,即使是去了C21或者Woodbury也更多地关注折扣而不是试衣服,当然这两大地方也没那么好的条件给你从容地试。最后花了不是很多的钱,买了一大堆不合身的衣服塞满了衣柜。以至于自己陷入一个奇怪的窘境:总觉得自己没什么衣服可穿,但是望一望塞得满满的衣柜,又实在说服不了自己去添置什么东西。 当然,明白那些名牌的五大道线和工厂线产品的区别又是另外一个知识点了…… 另外还有一个原因就是因为今年锻炼坚持得好,一年之间腰围小了四个号,买衣服再也不能只瞄准大号了,所以网购衣服更加变成了几乎不可能的事情。 于是近来买衣服和鞋子变得更加的慎重,结果却出奇的好。今年几次在实体店里买的衣服,包括优衣库的运动裤,Suit Supply(强推这个牌子的男装!)的风衣,Red Wing的9111靴子,虽然基本都是原价,但是买了之后都觉得相当合身也相当合用,利用率也很高,综合性价比比起那些打折买来的大牌的工厂货要“高得不知道哪里去了”。 而亲自去Jack Rabbit在跑步机上一双双试出来的Brooks Defyance 7跑鞋,虽然一分折扣没有,但是确实跑得舒服多了,膝盖也不痛了,穿着它还刷新了自己的北马半程最好成绩。 从此也明白一个道理,不管是大小还是价格,合适最重要。靠折扣去买你本来买不起的牌子的断码货,穿起来不是大了就是小了,只会让你显得更廉价。 最后总结一下自己黑五的开销: 从Amazon的wish list里面买了一条Skins的A400,折后81刀,惠惠比价显示历史最低价是79刀,但是觉得这个价能接受,也就不纠结了。(题外话,自从惠惠网支持美亚之后,真是离不开它了,而美帝自己的比价服务,自从Decide.com被ebay收购然后关停之后,真没有找到过一个合用的……未来一定是天朝的。) 趁着HappySocks全场6折还免邮费,跟老婆合买了几双袜子,反正也不用试。他们家的袜子在还没有被《来自星星的你》捧红之前,其实在Century21常年5刀一双烂便宜,质量确实也还不错。自从被全智贤穿过之后价格就格外的坚挺,我觉得全智贤真的以后拍戏不用收片酬,就收广告费好了。 跟老婆去唐人街喝了个早茶,吃了一份40刀一磅的白灼基围虾被贵哭了。谁能预料到纽约这地方龙虾烂便宜,基围虾却这么贵呢? 本文网址:http://blog.perlfect.me/2014/11/30/2014-black-friday.html

GothamGo小记

因为住在纽约的关系,所以上周六有机会去参加了纽约的 GothamGo Conference。 刨除200刀一张的门票和不提供午餐以外,这次GothamGo应该是我参加过的最好的技术会议之一。 会议议程总共一天,因为仅仅关注Golang这一个编程语言,所以其实内容已经十分充实了。 可能是因为之前已经拿Go写了一年多的程序,又是带着一些问题去的,所以上周六是我唯一一次参加整天的技术会议而没有一个Session感觉昏昏欲睡。 会议的节奏安排很不错,30分钟一个的session,不像国内的会议那样动不动45分钟到一小时跟老师上课一样,也不像很多开源社区喜欢的lightning talk那样时间太短导致很多东西都只能浅浅提及。每三个session中间有一个15-20分钟的break,既保证了紧凑,也照顾了肾虚的人。 组织者请了不少Google golang项目组的人以及开源社区的活跃分子来演讲,但是一开场却安排了个萌妹子来讲自己是怎么学习Go,而且该妹子声音还特别萌,真是开声全场静……想想不算太小的NYIT的剧场里,男性占比超过95%的技术会议,一开始来这么一招,组委会是真心机算尽拼到底了…… 演讲的内容不能说完全一点水份没有,多多少少夹杂着一些推销公司/产品/个人影响力的内容,而且不同的人的内容之间还难免有交集。不过这倒也好,反倒类似一个语言特性和槽点投票了。比如当天Go的空指针被转换成interface类型之后与nil值比较的问题就被很多人吐槽。还好前排在座的Google家的人还算比较谦虚。承认了不足也说了一些改进的计划。 另外,即使没有介绍什么新技术和新项目,光是听听别人的经验,也能学到不少Best Practice,而这个和新项目新技术一起,是我认为参加这类技术会议能得到的最大收获。 比如针对Golang,我觉得这次得到大家普遍认同的有: 不要把error当做简单的字符串,而要善用自定义错误类型来保持代码整洁,同时提供更多有用的错误信息。 善用switch: 形如 if e := functionCall(); e == ErrType1 { //… } else if e == ErrType2 { //… } 这样的代码应该用Switch来简化,例如: switch functionCall() { case nil: //… case ErrType1: //… case ErrType2: //… } 尽可能使用interface而不是具体类型,同时应该尽可能的使用narrow interface(提供较少的接口函数),使用interface的组合而不是靠定义大而全的interface来实现功能。 好好利用Go自己提供的prof和go test -cover来保证代码质量 不过Golang社区对于design decision的固执程度也真是不一般。比如我问Godep 的作者为什么”godep save” 命令不能在GOPATH以外的地方使用,结果被他羞辱说“为什么需要在GOPATH以外的地方使用呢?”,刨根问题之后他说,他觉得Go社区一开始就是默认一切都是在GOPATH下面,所以他也接受了这种设定然后觉得一切都还挺爽的。 只是如果默认不把当前路径加入GOPATH,这种设定就显得很怪了不是么? 然后还有一个体会就是,发现那些妙趣横生的演讲者,多数都是Ruby on Rails社区出身的。不得不说RoR不管技术怎样,还真是把技术演讲的水平推进了个两三年…… 最后说说比较值得关注的两个Go语言的进展: Oracle: 这个是一个Google自己做的Go代码的静态分析工具,目前还是原型阶段,但是不久的将来,应该可以提供更强大的代码分析和编辑器辅助功能。 Mobile: Google对Go有个野心就是希望Go能够用来做移动开发,目前当然还是半成品,不过预计明年能够支持用Go来编写Android程序,据说长期目标还包括iOS平台的支持。 本文网址:http://blog.perlfect.me/2014/11/17/gothamgo-2014-nov.html

Surface Pro 3

闻着Surface Pro3风扇里吹出来热风中的崭新电子设备特有的烧烤塑料和硅材料的气息,我决定写写个人的Surface Pro 3感受。 继去年入手Lumia 1020之后,我又抱着“不亲自体验就没资格使劲黑”的态度入坑了Surface Pro 3. 当然大前提还是我确实很想入手它,因为不管发布会上被人拿起来往地上丢还不坏,还是含Type Cover比13寸MBA轻这种硬货,还是手写笔一键唤出OneNote这样的机巧,都让我有一种“微软居然变得有料,变得酷了起来”的感觉。果然乔老板说得对,对自己的软件有爱的人最终都要自己做硬件。 但是,这些都不重要。 现在的我,购买电子产品其实很少关注硬件配置,因为产品的形态和花样越来越多,所以其实更重要的应该是它们跟其典型应用场景的适配度。我之前跟好几个Surface用户聊过,大家都有一个共同的感受就是:虽然没觉得这个产品有什么不好,但是就是买了不久之后就搁在那里不用了……我想大概也是因为Surface Pro 3之前微软只是想做个功能尽可能多的东西,但是应用场景不明确的原因吧。 那么之所以想买其实是基于三个典型的应用场景,而我现有的设备都无法满足我: 因为用着Window Phone,所以了解了一下WP平台的开发环境和应用商店,结果发现居然异常的顺手,以至于入手SP3之前还在自己的Mac上开虚拟机玩了一段时间,但是有个原生Windows总是更舒畅一些。 平时早上起来想看看新闻什么的,手机屏幕太小,而iPad拿着费劲,又不想开我那台2012年款的还装着机械硬盘的MacBook Pro并腾出双手去操作,所以能有个带Kick Stand的设备随便翻翻点点还挺好的。 周末去泡咖啡馆,有时候会想干点正事,而不是光读书和刷微博时,Kindle显得不够用,iPad又太玩具,15寸的MacBook Pro又会显得过于隆重而且续航堪忧。 于是咬了一番牙之后入手了单价i5 + 8G RAM + 256G SSD的版本,单价1299,加上129刀的type cover和税,即使用上了@laosong同学分享的教育折扣码之后依然花了我将近1400美元。真的比顶配的Macbook Air都要贵了。 然而,一些小细节却让我差一点第二天就退掉它…… 拿到它的当晚,我兴冲冲地给它装上了Visual Studio 2013 Express,但是却发现它在被按下电源键或者合上Type Cover之后就休眠了,再次按下电源键之后还得能十几秒才能点亮屏幕。这样的话, 根本不能当平板来用啊!更奇葩的是,再次唤醒之后,之前连上的WIFI不能用了,必须断开重新连接才能重新上网。 后来才发现原来是windows phone虚拟机需要的Hyper-V虚拟机跟自家的电源管理过不去。果然东西太复杂了就是容易被坑。关掉Hyper-V之后一切恢复了正常,只是再想拿Visual Studio写WidnowsPhone app的时候就得重新打开,并且牺牲所有的平板特性。当然,这个时候如果是乔老爷这种强势的PM一定会辩解说,如果你要做严肃的开发,你就不会把它当平板用…… 在度过了最初的危机之后,我又花了几天的时间来重新熟悉很久没有用过的Windows系统以及新的Modern UI。现在终于可以说点SP3的好与不好了。 先说不好吧。 在入手SP3之前,其实我是想等Apple的MBA更新的,我当时想的是,如果苹果能推出Retina + 触摸屏的MBA,也许SP3就没什么竞争优势了。但是在用了这几天之后,我却逐渐理解了MBA的合理性了。 首先是触摸屏,如果一个设备你只是拿它当笔记本使用,而且配备了一块像苹果这样好用的多点触摸板,你根本不需要触摸屏。自从用上了苹果的触摸板,熟悉了触控手势之后,我就再也回不去用鼠标的时代了。如果说手都不用离开键盘就能完成所有的操作,触摸屏确实是多余的,反倒是多种操作并存的情况下,会让人有些无所适从。 而SP3的新Type Cover,虽然加入了背光,手感也有了质的提升(至少不逊于Macbook的敲击手感),但是那块小小的触摸板还是差得很远,手势识别不是很精准,而且翻页操作总是做不到丝般顺滑,虽然页面滚动速度比是可以调整的,但是总是很难把握,要么就翻得太慢,手累死,要么就闪得太快,眼睛累死。 其次是Retina屏,SP3的这块3:2屏幕被各种评论家誉为良心,但是在软件没有优化的情况下(典型例子就是Chrome浏览器),显示质量其实非常令人难受,不是字体支离破碎,就是整个界面变成了微缩景观。令我直接想起了初代Retina Macbook Pro的尴尬。 所以作为一个SP3用户,如果你想把它当笔记本来使用,那就忘了它的触摸屏好了。至于超高分辨率的屏幕,还是耐心等它真正发挥优势的那天把…… 再说说好的吧。 首先是轻,对的,作为一个可以拿来编程的设备,它真的很轻!从此出门再也不用为要不要背电脑烦恼了。 然后是Window 8.1,很久没有接触Windows,现在发现这个系统已经有了一些自己的交互特色,微软在功能之外,终于有了一些自己的设计哲学。 点亮屏幕就能传递信息的动态磁贴就不说了,说些新鲜的。 比如在Modern界面上直接敲键盘就开始搜索应用和文件,回车就直接打开对应项目,直接让Everything和Alfred这样的应用下岗。 用手指从屏幕左侧边沿划入屏幕,就能切换至之前的应用,手指在屏幕左侧停住就能分屏显示,这可是我在Mac上想了很久但是只能靠第三方软件才能实现的功能,而且这个时候才能显示出SP3这块高分屏幕的优势。 如果说苹果的产品减法做得一直很好,以至于界面简洁,用起来也顺手,那么微软之前的问题就一直是过于繁复。当然繁复也有繁复的好,比如在想要的情况下,你能获得更多的信息: 所以公平的说,Windows是在另一个难度级别来尝试把软件做到易用和好用。借用《The Design of Everyday Things》里面的观点,复杂性并不是问题,因为这个世界本身就是复杂的,问题是复杂性带来的迷惑性。 类比一下,Mac OS的软件好像高中物理课本,其简洁和完美来源于对你的使用习惯的塑造和应用场景的限制,就好像高中物理里大多数定理都只能在理想情况下成立一样。而Windows软件则直接给你一个真实世界,复杂,却有着更多可能。 最初我还在想,Windows 8.1上会不会有Mac上那么多美轮美奂的软件可以使用,后来才觉得自己多虑了,Windows Phone平台的软件生态确实没法比iOS,但是Windows本身可一直是桌面软件的主流。比如最近有朋友推荐给我一款叫做Popcorn Time的软件,他在我的SP3上安装好之后说,原来Windows版的客户端比Mac版的多了这么多功能,还内置Chromecast支持,直接让我又找到一个SP3的应用场景:家用免费高清播放器.

在纽约考驾照

传说在美国人们最恨的四大机构是:有线电视公司,航空公司,移动运营商和DMV。皆因为垄断运营,效率低下,服务质量堪忧。 其中DMV,全称Department of Motor Vehicles(机动车管理局)是唯一的一个政府部门,不但掌管交通事务,还负责发放居民身份证件。这种地方放在国内就是交警大队加居委会派出所,想想也够烦的。甚至还有一部恶搞的美剧《Reaper》把DMV的窗口设定为地狱办事处。 来纽约大半年之后,终于决定要把驾照给考了,于是趁公司搬家的档口抽空去了趟纽约的DMV。 在美国,考驾照是分两步进行的,第一步是学交规,验证身份,然后过笔试。笔试之后就可以拿到一个叫做Learner‘s permit的东西,然后就可以在有经验的司机陪同下开始学习开车了。等熟练之后再去路考,考试过了之后才能把Learner's permit换成正式的驾照。 今天一大早去考Learner’s permit,之前在网上查了相关的步骤和证件需求,纽约的DMV网站还是非常不错的:比如如何拿到Learner‘s Permit。 去之前填写了一个申请表(MV-44), 除此之外就是所谓的六分证件(SSN卡3分,护照2分,信用卡或者借记卡1分)。 地点我本来选的是34街的License X-press,进去之后工作人员说考笔试不在这里,就给了我一个地址,沿着找到两个街区之外的一个新办公室,看起来是新修的,在地图上也都还没有。到了之后工作人员帮我领了号,领进去坐好,然后指示我关注哪些显示屏。感觉流程还是挺清晰的。 第一次考驾照笔试的流程包括: 检查证件。 视力检查,这个很有意思,检查方法是在一块纸版上写满字母,然后某些行用彩笔涂上底色,放在离你大概3米之外,让你按顺序读出特定颜色的字母。作为色弱患者本来有些紧张,但是最后其实还是挺简单的。 上机考交规,工作人员会让你选择考试所用的语言,然后指定一个机位号,你坐过去在触摸屏上点点点,20道题里对14道就可以过关。 拍大头照,每次拍证件照我都没穿对衣服...今天又穿了个横条纹的衣服活像囚服... 再次检查证件,确认地址姓名。刷卡交考试,拍照以及检查费一共73刀,拿到临时permit。正式的Learner’s permit会在两周内寄到之前填写的地址。 整个流程我花了约一小时,继上次办社会安全卡去了SSA之后,再次体验了一下美国政府部门的办事风格,总体来说还是觉得税没有白交的。人员都比较的和善耐心,流程标识也都比较清晰。拿到号之后,每办完一步,工作人员都会把新增的票据跟你的MV-44表格钉在一起,然后让你回去坐着等着叫号,整个流程有多个队列,但是一号到底,手里的文件也只有一份,所以很省心倒是。 剩下的就是路考了,作为国内三年多的老司机,觉得胜利在望了。 本文网址:http://blog.perlfect.me/2014/05/2/getting-learners-permit.html

理发记

天平座的码农有一个致命的问题,那就是身为天平,对审美有要求,但是作为码农,又真不怎么会审美。 具体到理发这件事情上,直到我走进这家木北造型才想起来,大概有个几年没有独自去理发过了。我总是很害怕理发,因为如果我一个人走进理发店,面对理发师想要什么发型的询问,大概我只会说一句话:给我剪短一点就好。 幸好小时候有老妈,长大了有老婆,特别是老婆还是各种美发机构的VVVIP,所以每次理发都是过去蹭她的卡,让她帮着找发型师,沟通需求,我坐着不动就好了。就连选这家木北,也是因为之前在北京生活的时候常跟她一起来。 然而这次出差的时间太短而时差又难倒,老婆拒绝陪同,老妈又远在老家,只能自己一个人来理发。 一走进这家店,就发现店里的小伙子没有一个头发是黑色的,门口的大电视正在放着欧巴国的舞曲。隐隐觉得自己打开的方式好像不太对…… 还没回过身来,小妹就热情地迎上来说我们家老师有48元,68元,120元,180元这几款您选哪一款?为了不露怯,我咬着牙选了120的首席总监。 总监老师果然不同凡响,一上来就质问我:很久没理发了吧,为什么这么久不理发,为什么这么不在乎自己的形象?! 我答:因为穷。 这个答案被忽视了,于是总监老师紧接着就开始劝我尝试新发型,无非就是烫染卷。难怪现在的理发店都已经不叫理发店了,叫造型。 可是他们得理解不是每个人都需要天天怒发冲冠头顶彩虹的呀,都掏了造型的钱了,要个简单的洗剪吹服务怎么还是这么难呢? 在一番推销未果之后,总监老师给我招呼来了一个小弟帮我洗头,完事之后坐下来,光速开剪,光速剪完。期间不管我说什么,他都能把话题向着烫染方面引导。 “给我把旁边多剪掉一点吧” “剪太短了了就会向两边扎出来,除非你烫个型,否则会很难看” “那给我把后脑勺多剪掉一点吧,我头发软,长了之后后面都塌的,扎出来还好一些……” “塌了好办啊,把发根烫一下,随便就能揪起来,有蓬松感一些……” “……” 说起来还真是怀念以前学校澡堂门口5块一个头的理发店呢。 本文网址:http://blog.perlfect.me/2014/04/21/haircut.html

改变2013

我写年终总结大概已经有几年了,去年却断了,今年眼看就要过去了,竟也是啥也没写出来。 想想看之前之所以写,其实主要是想总结经验教训,为未来做准备。然而人长着长着就会觉得未来越来越近,只是不是自己想要的那个,于是便灰心丧气。 不过今年算是值得纪念的一年,因为这一年的变化,大概是我上大学以来最巨大的,所以既然未来是一定被改变了,就接着总结展望一下吧。 去年是我在北京的第十个年头。七年求学,三年工作之后,对北京已经没有什么不切实际的梦想了,一直觉得自己是个外地人,身上唯一北京的印记,只不过是在这里患上的过敏性鼻炎。 快年底时,在到底是去谋求些改变还是继续混日子之间摇摆了很久了之后,我把我的微博签名改成了:大部分的时候,求不得只是因为不敢追求。 对于我来说,以往有太多的东西因为担心“即使努力了也得不到会伤自尊”而根本不敢去追求。又或者不知道自己应该追求什么因而没有尽全力。而等到人家得到了之后,碍于面子,就更不好意思承认自己想要。不知什么时候终于想通这是一个恶性循环,而且预感到这种畏缩的性格如果不改变过来终有一天要害死自己。我想大部分的人之所以一生碌碌无为,其实不过是因为年轻的时候没想明白自己要为什么而努力,等想明白自己要什么的时候已经老得动不了了而已。  于是今年年初就开始了一些具体的行动,谁知道真的得到了改变的机会。之后的选择倒是让我苦恼了好久,要不怎么说天平座的人选择困难呢。 在北京,三藩和纽约之间最终因为种种原因选择了现在的城市,其间把一个人能在职场上犯的错误都犯了个遍。现在想来每一次都蠢得可笑,而今反思起来,却只有一个原因——感情用事。而现今及时到来的报应就是目前大约一百万美刀的预期税前收益损失,所以说年度职场心得大概就是“谈感情伤钱”吧…… 当然也不是全无收获,虽然又重新开始了租房生涯,但是每日通勤时间从一个小时十分钟左右变成了十分钟,每日多出来这两小时,让我觉得人生突然多出了一些可能。另外因为住在岛上,空气也不错,因为雾霾停滞了一段时间的跑步也慢慢开始恢复了。更好的是,一直担心的鼻炎,居然也慢慢的减轻了症状。 工作上,2012年开始做的一个产品开始创收,但也因为各种原因被看淡了前景(此处省去吐槽若干),于是又投入了一个新产品,基本上跟去年一样,一个人吭哧吭哧琢磨一块,打算如果有机会的话在打磨和精工细作方面下点功夫。 总之,搬家算是我家2013年最大的一件事了,虽然因为这件事其他的一些事情处理得有些草率,也很对不起家人,但换个地方重新做人,感觉挺不一样。而从2014年开始,又将是新的奋斗了,新的城市,新的生活探索,新的兴趣,新的工作内容……令人激动,期待,紧张,焦虑…… 但我想我的梦想最终还是在加州,不光是事业,还有阳光,汽车,公路旅行…… 所以做一个简单的计划吧,就说三十五岁之前去加州,四十岁之前创业如何呢? 对,我现在就在这里说出来我想要!做一条鳍损鳞破的活鱼,总好过做一条标致的咸鱼。   其他的一些: 年度数码产品:Nokia Lumia 1020 今年买的数码产品不多,总的来说上半年因为觉得要搬家所以啥都没买,下半年则是因为搬完家穷到死所以啥也买不起。对Lumia 1020属于一见钟情那种,刚发布第一天就花299刀签下了两年的合约,至今觉得还是不后悔(当然可能也是因为iOS和Android是在疲劳了)。在习惯了之后,WP8的系统确实非常的流畅顺手,慢慢地应用也多了起来,最重要的是,现在出去玩,从来不用专门带相机了。 年度最投入网络社区: 知乎 其实知乎很早就开放注册了,但因为早期的邀请制和我讨厌饥饿营销和小圈子的天性就一直没有太关注,再加上要求实名,对国内互联网产品的节操的不信任又让我退避。后来作为上下班时间休闲时补充知识或看段子的渠道看了一段知乎阅读。再后来就忍不住吐槽的欲望注册了账号然后火速改了名……目前看来里面的内容还是挺丰富的,就是慢慢也有被写手占领的趋势…… 年度编程语言:Go 在邓公的推荐下开始使用Go了,写了一些代码,觉得这个语言实在是一门很学术的人做出来的,却特别适合生产的的编程语言。简而言之就是写东西不费劲,改起来灵活性很高,但是语言本身不复杂,坑少。 年度运动:慢跑 最早慢跑是我在2011为了恢复因为踢球受伤的伤腿的运动能力开始的锻炼。但跑了两年之后,球没怎么踢了,跑步却越发上瘾了,可是被北京的雾霾一干扰,锻炼得很不规律,无论是对自己的体重还是身体素质改善都不大。到了新的城市,倒是可以好好规划一下了,最近刚买了一个Endomondo的Premium,准备好好跟着训练计划练习一下,今年因为搬家错过了北马还挺可惜的,争取明年跑纽马! 年度最大生活改进:通勤时间 感觉每天一下子多出了两小时,目前这几个月还处在适应期,也许到了明年,能够好好计划利用一下。这两年比较可惜的就是是连着两年都是在跟着新产品学新东西,看标准,看文档的时间多过静下心来读书。也许可以今后每天拿出一小时读读专业书或者闲书吧。 年度最满意照片:) Happy New Year! 本文网址:http://blog.perlfect.me/2013/12/30/changes-in-2013.html

基于Vim打造一个Go开发环境

最近开始学习使用Go,真心意识到工具就是生产力,特别是对于对于一门新的语言来说。 自己琢磨了几天,又经xiaoqiang同学提点,算是折腾了一个比较顺手的环境,总结一下。 首先说,我觉得写程序需要的一个基本环境包括: 顺手的文本编辑器(语法加亮,定义跳转,语法检查,自动补全与提示) 查询方便的文档 然后为了效率,我们还需要一个方便的功能,那就是常用代码snippet的展开功能。 编辑器方面,因为一直用的Vim,自然是接着用,好在Go官方的发布包里就提供了相关的Vim插件。假设你是使用Homebrew安装的Go。 直接将插件所在路径导入Vim的run time path就行,修改~/.vimrc: set rtp+=/usr/local/Cellar/go/1.1/misc/vim au BufRead,BufNewFile *.go set filetype=go filetype plugin indent on syntax on 这样就有了语法加亮,定义跳转和文档查询的功能。但是语法检查还是比较弱的,好在go无论是编译还是运行都非常方便,只需要执行命令: $ go run xxx.go 就行,所以简单修改一下键映射: 之前写C++的时候喜欢用\rm快捷键来编译: nmap <leader>rm :!make -j4 1>/dev/null<CR> 同理映射一个go编译的快捷键\rg,只需同样在.vimrc里面加入: nmap <leader>rg :!go run %<CR> 至于代码的自动补全,我觉得对于初学者来说简直太重要了. 我之前一直使用omnicomplete,但是这货的配置实在太恶心巴拉,用上Mac和Vundle之后,经xiaoqiang同学介绍,爱上了clang_complete,安装方法如下,依旧是.vimrc配置(本文后面的代码,如果没有$符号开头,都是写在.vimrc里面的配置): "for clang_complete let g:clang_use_library=1 Bundle 'Rip-Rip/clang_complete' 可惜的是,clang_complete默认并不能支持Go语言的自动补全, 不过好在有https://github.com/nsf/gocode这个好东西。 安装起来也很方便: $ go get -u github.com/nsf/gocode 成功之后,在$GOPATH/bin下面应该会有一个叫做gocode的binary。之后再安装一个Vim的插件vim-gocode来使用他,我使用的Vim插件管理器是之前推荐过的Vundle,有了它,妈妈再也不怕我不会安装Vim插件了: Bundle 'Blackrush/vim-gocode' 然后,理论上咱们就可以使用快捷键<C-x><C-o>来进行代码补全了,但这个操作太Emacs了,小拇指要抽筋的节奏,不过我会告诉你还有supertab这个插件嘛? Bundle 'ervandew/supertab' 像bash一样直接tab代码补全,帅不帅? 然后轮到文档的查询,其实使用Go自带的Vim插件的:Godoc 命令就已经能够实现文档查询了,但是如何实现一个更好看更快的查询呢,想象一个飞速秒开的MSDN? 这里推荐一下Dash,也是xiaoqiang同学向我热力推荐,并忽悠我花50块人民币买的一个Mac软件,Dash是一个集合了非常多的语言和框架的手册的查询软件,更爽的是它可以和很多其他的软件集成使用,其中就包括Vim,配置也很方便,依然是使用Vundle: Bundle 'rizzatti/funcoo.vim' Bundle

Appstats -- 追踪appengine app的RPC使用

  因为这个小破blog老是受over quota的影响不能访问,于是就想稍微调试一下资源使用,但是micolog这一坨代码真是不知道怎么下手。于是自然的想法就是先找出最费资源的地方,于是就发现了Google官方提供的这个工具——appstats。 其实这个工具根本就不用安装,他已经存在appengine的环境里面了,需要的只是在自己的app里面打开它。 首先,需要在app根目录下添加一个appengine_config.py。 这个文件里的内容可以在app运行时对appengine的环境进行配置,是一个很早就存在但是很少有文档的玩意儿,以至于有人专门给Google提了个issue,最后才有了这份文档。 要打开appstats,需要在appengine_config.py 里添加如下代码:   def webapp_add_wsgi_middleware(app): from google.appengine.ext.appstats import recording app = recording.appstats_wsgi_middleware(app) return app   然后如果当然需要配置app.yaml让自己可以通过web访问统计数据。   - url: /stats.* script: $PYTHON_LIB/google/appengine/ext/appstats/ui.py 另外,appstats只hook了google自己提供的库,所以限制了app必须使用google的run_wsgi_app来跑,不过人家特地说明了只是需要这么启动而已,你自己用django什么的没问题。   from google.appengine.ext.webapp.util import run_wsgi_app def main(): app = ... run_wsgi_app(app)     重新部署app,在页面上点几下,然后就可以打开app_url/stats来访问app的rpc统计信息了。 打开一看,原来是各种爬虫乱爬我的blog的feed导致datastore的读操作过多... 于是简单提增加了一下Feedhandler的结果的cache TTL,又是一个一行代码的改动...希望有用。     本文网址:http://blog.perlfect.me/2013/07/5/appstats-for-appengine.html

京都大阪几日游的亮点与槽点

端午节去了趟日本,回来以后就开始拼命讨生活,连相机里的照片都来不及打理,本来想写个像样点的游记的也无力了…于是就贴些路上吐得槽和记录的一些杂七杂八吧…有空再补图…

一下飞机就被日本这个国家震惊了。

Mac下使用VIM+Taglist+Ctags

一直觉得换成Mac之后ctags就不是很好用了,结果今天终于被要读的一堆代码搞烦了于是Google了一下... 果然真理越搜越明! 在这边: http://vim-taglist.sourceforge.net/faq.html Are you using exuberant ctags version 5.0 and above? The taglist plugin relies on the features supported by exuberant ctags and will not work with GNU ctags or the Unix ctags utility. You can use the following command to determine whether the ctags installed in your system is exuberant ctags: $ ctags --version 然后google了一下,目前觉得Mac下最方便的解决方案还是用homebrew $ brew install ctags $ /usr/local/bin/ctags --version Exuberant Ctags 5.8, Copyright (C)

帝都十年

写完标题我就后悔了,一个人如果随随便便就能从自己生命里摘出十年来啰嗦,该有多老。 十年前的差不多这个时候,我是欢天喜地地跑到北京来的,而其实当时的我对于将来一点计划也没有,高兴不过是因为考上了大学,终于可以离开父母的管束而已。想想如果当初能料到现在的情况,还会来这里么? 十年里我经历了两次毕业,第一次毕业的时候,虽然并没有真的想过要在北京工作,但是倒还是对北京很有好感的,认为留在北京是找工作时的第一选择。直到第二次毕业,我才知道过去七年里北京变化了太多,才醒悟本科时根本没怎么出过校门,对它的好感无非来源于无知而已。 当你真真实实地想要在这里扎根下去,才会发现地有多硬。 或许这里曾经是逐梦的天堂,甚至曾经宜居过,但现在生活在这里本身已经成为了一种负担。 第二次毕业的时候,正是逃离北上广正轰轰烈烈的时候。可不知什么原因,还是留了下来,留在了这一个外地人无权买车买房,但却分享着一样糟糕的天气和交通的城市,还要被本地人阴阳怪气地说我们把他们的空气弄浑浊了,路弄堵了。 留在了这个权与利的中心,却没有权也没有利。也许我就只是懒,然后习惯了而已。 十年里,我眼见了帝都的大气与繁华,却没能收获哪怕一点点的归属感。偌大的城市,真正让我感觉属于我的,竟然只有郊外的家和城里的一个格子间。这城市里大圈小圈,大围墙小围墙,各种机构,最后想起来唯一感到有些温情的,也只有那个校园而已。而偶尔再回去家乡,却也已经陌生。用十年时间说服自己,这里不是你的目的地,有些残忍,但生活就是这般的善于撕磨。理想,激情,全磨了去,只剩下全力挣生活而已。 过去的十年,现在回眼望望居然都没什么值得纪念的,于是渐渐明白了为什么我的大学同学一个个都离开了这里。 而马上新的一个十年又要开始,因为生活,我却还只能从这里出发。 但我不想在这浑浊的空气里让自己的鼻炎继续严重下去; 但我不想在这里花我出不起的价格买了房却还生活得像个租客; 但我不想每天要浪费十二分之一的生命在通勤路上; 但我不想自己再努力工作,挣再多钱也只能活得像个蚂蚁; 但我不想在这里跟同样因生活所迫,拼命插队,鸡贼甚至犯罪的人一起争抢; 但我不想让自己为了生活还得低声下气地跟得势的傻逼打交道。 所以我想我下一个十年的终点,一定不是这里。 本文网址:http://blog.perlfect.me/2012/09/9/10-years-in-beijing.html

Retina Macbook Pro: YES or NO

好像自从我的Nokia E71以来,我已经很久没有如此希望入手一个电子产品了,而对于Retina Macbook Pro的感觉,倒是像极了之前入手Kindle DXG之前的纠结。虽然消费主要靠冲动,但是决定之后是否后悔的,则是理性的分析。 于是干脆听取Qinqi同学在某个别的事情上给我的一个建议,建立一个Pros vs Cons列表,自己先理性分析一下,建好之后发现自己其实有些想法都是自相矛盾的,所贴在这里,也请各位能看到这个的给我提供一些信息或建议。 Pros: 老早就想切换到Mac。一来是因为工作原因,需要经常接触Linux shell,而Windows下无论是cmd还是powershell都不好用,cygwin这种的又实在是麻烦,虽然总有人说你搞个虚拟机,弄台服务器之类的,但总好不过手边spotlight一敲就有来得方便。二来呢,自从有了iPhone之后,总是克制不住自己想往上面装点自己写的东西的欲望,碰巧公司给注册了个iOS developer,反正闲着也是闲着。 其实Retina屏并不是我所在乎的关键,但是SSD+8G内存非常的必要。曾经在Apple店里面试着在一台普通15寸MBP上和一台15寸RMBP上同时打开Adobe Illustrator CS,基本上普通版速度上完败。而我在官方网店上进行自选配置后发现,光是256G SSD + 8G 内存的升级就让一台普通的MBP折合下来的价格比一台RMBP的价格还贵200刀了。何况,人家15寸的RMBP反倒更轻薄,重量跟13寸的普通MBP一样,这样算下来,RMBP的性价比就体现出来了。 既然下决心买了,何不买个好的?总觉得自己一直都是有些不敢追求,以至于很多时候想要的东西本来可以得到的都最终没有得到,或是从了一个打了折扣的替代品,其实也挺有想法想要从这次开始改变自己的这一性格习惯。 Cons: 实在是太贵了。在我的印象中,笔记本电脑早就已经是普通消费品了,但是这次RMBP16000+的售价(即使是在美国买也要2199 + 195.16 tax ~= 15258人民币),这个价位,相当于一个人去欧洲旅游十天的费用,我的汽车大概两年的无折扣全险,实在不是随便就能消费的一笔钱。一旦真的狠下了心,就得考虑投入产出比,就好像买了Kindle DXG就得使劲读书一样。 在目前工作主要使用公司电脑的情况下,新买另一台笔记本电脑能不能获得相应的收益,甚至是能不能得到充分的利用都是个问题,更别说家里客厅里还摆着一台 Sony SZ13没处理掉……呃。 即使是真要换Mac,也有其他的选项。例如清仓的老款,新款的13寸乞丐等等,反正不就是想要个shell和xcode么?从实际使用方面来讲,如果只是写代码,其实并不需要非常高级的配置,现今的潮流是产品和代码都走向云端,其实本地处理能力反倒不一定那么重要的。 硬件方面的顾虑。按照媒体的说法,本代RMBP算是试水产品,零部件升级非常麻烦,甚至被iFixit称为最难修的电脑。以后的升级维护成本恐怕不低。另外,新款CPU所谓的turbo boost其实并没有太大作用,而且风传ivy bridge只能算是Intel的过渡产品,所以有可能一年以后就会有处理模块和制造工艺都有显著提升的新款出现。 可能还有一些想法在最近不同的时期闪现过了我的头脑,但是基本上就这些吧。各位了解Apple产品的看官们请踊跃发言,欢迎补充优缺点,欢迎逐条批驳,欢迎赞助或拍砖。 本文网址:http://blog.perlfect.me/2012/07/18/retina-macbook-book-to-buy-or-not-to-buy.html

不看电视

有研究表明,每天看电视超过三小时会导致人智商变低,我一直是相信这个研究结果的,只是最近打开电视,我总有些怀疑这里面到底谁是因,谁是果? 其实家里的电视买来之后就没怎么看过。每月给歌华有线交十八块钱也不过是为了周末看看球赛而已。然而最近家里长辈过来人生地不熟,因此主要的娱乐就是看电视,因此也陪着看了一些。这期间就感觉自己下班后效率特别低,唯一高产的,就是在微博上对这些电视节目的吐槽了。 不知道从什么时候起,电视里就充满了各式各样的真人秀,交友的,求职的,晒不幸的...五花八门,名目繁多,本质却大同小异。其实我一直觉得,求职求偶家庭生活这种东西其实是相当私人的。先不说隐私保护的问题,难道就没想过么求职仅凭几分钟面试,大部分内容还是扯淡,肯定是不靠谱的么?而把找对象弄得跟集市上卖马那样已经是对生活的不负责了。 我早期的观点一直是觉得上这种节目的人不是破罐子破摔就是脑子有病。每每看完之后都只有一个感想,就是觉得这些人找不到工作或是男女朋友都是有原因的... 后来才发现,很多人把这种节目当作炒作自己的平台,不信看看那些个天天在求职节目里装逼的老板们和那些不务正业怎么也牵不走在《非诚勿扰》里当话痨的女作家们就知道了。 至于这类节目又为什么这么红,我觉得是两方面的原因: 一方面,国内的电视节目,其实真没什么可做的。 太敏感的不能碰,太深奥的没市场,太精良的又投不起钱。歌功颂德的倒是可以自由发挥,可拍马屁谁拍得过新闻联播呢?于是就只好娱乐,于是乎前些年各种娱乐明星层出不穷,自己的不够用了还找港台借。然而,在这个没节操的年代,连妓女有了钱都能当大爷。娱乐明星们一旦脱了贫也都纷纷开始摆谱,谁还肯放低身位来娱乐你?到后来变成了各种平民选秀层出不穷,而那些有没事没本事的明星呢?都在人模人样地当评委呢! 于是人民只能自己娱乐自己,自己上台出丑给自己看。想出这些节目创意的编导们,其智可表,其心可诛。 想到这里我还真的又对《快乐大本营》这档节目刮目相看了,虽然称不上高雅,但是里面的人十年如一日,不管自己被多少人指指点点,每周登台娱乐大众,即使讨好的确实是那些品味不高的观众,但也是老老实实搞笑,不会嘲笑观众的智商,就算老不长进,也算是敬业了。 另一方面,《非诚勿扰》和《非你莫属》这类节目在底层人民中确实很有吸引力,想了好久,我还是把它归结于窥私欲。 中国人爱比较,比学历比收入比生活水平,但平时生活里的朋友又不太好问。虽然得了点什么道就忍不住想得瑟,但万一显摆不成反被显摆,自己又吃瘪不说心里还不痛快好久。而自从有了《非常勿扰》和《非你莫属》及其一众山寨,屌丝们窝在家里就可以通过对比台上的人得出自己在情场和职场上的竞争力。一般看到投入之处还容易产生代入,特别容易幻想自己如果上去会如何如何,而长辈们更是全情投入,每到抉择时刻往往激动不已,仿佛站在台上的是自己家的儿子闺女。你说真能学到点什么么?恐怕不能。世上成功的人方法各不相同,而中国人不成功的基本相同:不愿努力,而热衷于奇技淫巧,自己活得一塌糊涂,还特别爱跟人指点方法论。 说到这里,如果说中国的电视节目只是挑一些脑子不好使的人出丑给其他的傻子看也就罢了。毕竟国人素质的提高不是一朝一夕的事情,万事存在都是有其道理的,总还是有人不惜一切代价地想红的。但某天看了一眼CCTV3的一档叫做《向幸福出发》的节目,实在是突破我的底线让我不得不暗自说一句:CCTV,你总是赢! 这是一档什么节目呢?简单来说就是由李咏主持的,把全国各地各种不幸家庭找来吐苦水的节目。每每过来都让人家讲自己的辛酸史,主持人使劲煽情,搞得台上哭成一片,然后在适时地时候李咏再插科打诨一把,让人家“向幸福出发”。而自始自终不帮助人解决任何问题!我就不明白了,把这些人弄上来揭人家伤疤,疯狂锻炼主持人上春晚所必须的煽情功力,末了不痛不痒地逼人家再五音不全也上去唱首歌,美其名曰“向幸福出发”。人要多么冷血和变态才能想出这种节目创意,还让个小丑去做主持呢?难道中国人的生活已经可怜到只有观看他人的不幸才能继续相信自己的生活了么? 于是我决定再也不看电视了,其实也许这个决定早就该做了,我的Kindle里和床头上已经积累了好多书要读了呢。 本文网址:http://blog.perlfect.me/2012/06/19/giving-up-watching-tv.html

My very first pull request on github

自从某位少年表示非常鄙视到现在还没有用过github的码农之后,俺就陷入了深深地自责。 于是好久之前注册了一个github的账号,然后watch了一些,fork了少数,但多数也就是看看代码,实际上用得很少。主要是因为自己常用的语言在这上面基本上项目数都是倒数,而Ruby和JS这两只幺蛾子实在是没时间用。 只是偶尔有一天发现本blog所用的Micolog系统从google code搬家到了这里,才开始有了写代码的动力。当然,更大的动力还是因为Google Appengine自从开始收费服务之后,Free Quota变得不怎么够用…… 作为既懒又抠的一代码农,最终抠的精神还是克服了懒的虫,不想付钱,那就想想办法。怎么办?一看自己的10个app限额还没用满,那就水平扩展吧……(好吧懒虫还是没克死……) 于是就在现有的系统里hack了一下,在系统的一个model里添加了一个全局静态资源的base url,就一行代码的改动,然后就可以在模板里加入变量使得最终用户从另外的域名请求css,js之类的文件了。 改完之后资源紧张得到了立竿见影缓解,于是就想是不是可以推给xuming同学,这样我今后想要用他的新版本升级的时候也还能省点事……毕竟我现在用的版本好像已经是几年前从Google code checkout出来的一个老版本了…… 于是俺就很彪悍很无良地把这个傻但是有用的小改动发pull request了,只是十五天过去了好像没人理我-__-||。喂喂,难道没有人用Micolog了嘛? Anyway, not a git virgin anymore… 本文网址:http://blog.perlfect.me/2012/05/14/my-first-github-pull-request.html

如何做一个有节操的微博用户

写这个其实不光为了吐槽微博,虽然相比于Twitter,新浪微博无论是用户体验还是用户群体都让人有些无语,但是毕竟是自己生活的圈子,总还是希望体验能好些。 新浪微博(亦或是国内的其他微博服务)本身相比于一个纯洁的微博系统,例如Twitter,有着如下的特点: 1. 转发设计让人无语,特点就是转发的微博,转发者的评语比原微博在视觉上要更显眼,一旦被接着转发,转发者也会被不停地AT。 2. 沽名钓誉者太多,烂俗营销账号太多 3. 刷屏爱好者太多,特别是街旁网用户…… 4. 谣言和真相一样多 5. 用户过度依赖内嵌视频和长微博,忽略了短文字本身的魅力,欠缺睿智和幽默感。 所以以下是鄙人觉得作为一个有节操的微博用户,需要明白的基本礼仪(以及无节操吐槽):   秀自我的时候稍微给点信息量。 社交网络确实是一个秀生活的地方。之前还有人总结过,人们喜欢秀的无非三种:财富,经历,恩爱。 炫富嘛……不用我说估计现在微博上也没几个人敢炫富了。某美美同学你说是吧? 经历呢,自然也分有趣和无趣。微博本身算是一个信息源。除了获取新闻以外,偶尔看到好友在小众菜馆check in,秀秀奇特菜品,或者去哪里游玩,发发风景人文总是无害的。有趣的笑一笑,有信息量的顺便还可以再多打听打听。可是天天准时跑到永和大王check in,除了街旁链接外就俩字:早饭!这算是怎么个回事…… 至于恩爱嘛……回人人网去啦,微博之所以比人人受欢迎,就是因为它基本上还算是一个轻松的匿名网络,我既然不认识你,你的恩爱对我来说自然也就是浮云,夸你们一句你都不知道我是谁。除了让我的微博首页的价值变得稀薄之外不会有任何好处。   关于微博的内容,原创自然是好,但是转发更要经过脑子。 即使你再喜欢某个人的微博,也不要每条都转发,因为这样下去只会有两个结果: 1.关注你的人觉得你转发的那个人的微博很有趣,于是直接关注他了,然后因为你每次都要把他的话重发一遍,烦不胜烦,于是把你给取消关注了。 2.关注你的人觉得你转发的那个人的微博很无趣,而你还天天拿他的微博刷屏,烦不胜烦,于是把你给取消关注了。 好自为之。 好好珍惜评论功能,这点也许是新浪微博不太纯粹之处,但确实是一个防止内容水化的方法。毕竟我其实不太关心“我的朋友给我朋友的朋友的照片按了个赞”这种事情…… 好自为之。 转发的时候最好把不相关的人的内容给删除了,因为之前说过,微博的转发体验很差,经常是转发者的吐槽比原始内容醒目。而一个信息经了十手到你这里,即使你真有必要觉得要把这个老掉牙的信息再转给普罗大众,也请体谅一下那个因为不慎转了一条微博而被AT到鼻青脸肿的您的“十度好友”……反正我是已经把被关注被AT提醒都关掉了。 好自为之。 尽量少关注营销账号,关注了也别太经常转发,这些账号的共同特点是:道听途说多,内容原创度低,说的东西一般地球人都知道。实在是跟您的格调不匹配啊亲。 好自为之。   慎重选择昵称,不要改得太频繁。 虽然转发盖楼是个不怎么好的事情,但是一条140个字的转发,您一个人的昵称就要占去20个字还是不太合适吧,要是不巧您还喜欢让昵称里带点情节,看客更容易就精分了……例如: @穆里尼奥说:不会吧!// @西罗真心爱卡卡:好棒!//@巴萨威武西甲三连冠:转发微博。 {完全无关且无辜的原微博} 慎重! 之前说过,微博还算是个轻松的匿名网络,但匿名不是没名吧,人家万一想AT你一下却发现怎么也搜不到你的昵称,反而发现自己关注了一个不知所云的账号…… 慎重!   你妹的别求互粉了,粉丝就是浮云啊。 又不能拌上蒜蓉蒸龙虾吃! 本文网址:http://blog.perlfect.me/2012/04/26/how-to-be-a-decent-weibo-user.html

小米手机评测: MIUI的亲儿子

老实说,我之前对于小米手机,或者说小米以及雷军是有不好印象的。 第一次看雷军的小米手机发布会就有了这种偏见,倒不是因为雷军刻意模仿乔布斯,相反真要在用户体验上向苹果看齐的话,小米手机还是很值的期待的。 但是一款手机发布后三个月才开始销售,像我这种非米粉基本上要等到半年后才能拿到。直觉中就觉得这个人不诚恳,明显是欺负不懂摩尔定律的人: 1999元的售价搭配上小米的配置,在当时抛出时可谓震撼。可到了用户拿到手的时候呢? 虽然即使放在现在,小米在硬件方面的性价比也少有竞争对手,但是如果那台发布会放在今天,估计就没有那么令人激动万分了。想想看当初他们对比的那些机型,当时售价都是4000以上,现在无一例外的都降价了。拿半年后的价格跟现在的对手竞争,这小心思耍得有点过了。 更不用说小米的硬件实际上主打参数,从调教来说,绝对算不上优秀。最典型的就是那颗色彩极差且对焦拍照都很慢的摄像头, 而且都3G时代了,小米居然也没有为视频通话配置双摄像头,我手头的E71都有呢!   后来阴差阳错,居然最终还是随大流买了一台。主要还是因为一是2000元出手了自己玩了一年的Galaxy Tab之后,手头没有可用的Android机器。本着备着一台可以写写程序玩的想法,就想用这2000块再买一台,主要考虑了Google的二儿子Nexus S和小米,都能刷4.0。最后觉得既然是玩,还是玩个新款的吧。 春节前交完定金,过完年回来2月下旬才到手,这出货速度真可以了……之间还看到雷军又在媒体上卖萌说:不怪我们,人家淘宝一个月才卖10万台iPhone,我们一次备货10万台哪想到能卖得这么快呢? 我就想说:你妹的!iPhone的市场容量能跟2000块出头的街机市场容量比么?再说了,有多少人买iPhone是上淘宝买的呢?偷换概念玩统计数据陷阱!于是在我心中小米又降一格。   不过,吐完了雷军的槽,小米手机拿到手时,我对小米手机本身的印象则出现了拐点。 先说让小米赚足眼球的硬件: 因为我不怎么玩游戏,也没来得及测试视频效果,所以所谓的双核+大内存并没有显现出明显优势,但是在设计上还是看得出来小米是有些追求的。 首先它的包装盒就很有特点,牛皮纸盒+类似电子元件透视图的设计,很有设计感。   包装的内容也很紧凑,盒子拿在手里摇晃基本上不会有声响。 而手机本身呢,有人觉得外观设计中规中矩,但是我觉得前后的MI logo还是让人觉得比较舒服的。 手感方面,手机的背部材料摩擦系数大,边沿的弧度给了人很舒服的握感。对比一下iPhone4那种方方的设计,加上非常滑的玻璃后盖,我在握我的iPhone时必须把手指从iPhone的另一侧弯过来勾住,大拇指的指度也得用力捏紧,所以已经不止一次抱怨过了。 而小米,虽然尺寸比iPhone4大一些,但是因为可以直接拿四指指度托着它操作而不必担心滑脱,左手大拇指活动范围反倒大些,所以对于屏幕面积的控制力,也更强一些。 当然,大屏手机的最大问题主要还是电池,遗憾的是1930mAh的电池依旧不顶用,续航能力堪忧,而大容量的电池反倒带来一个副作用——用USB充电速度很慢! 总体来说,其续航能力甚至还不如iPhone 4。主要源于4寸屏比iPhone的要大,而且亮度的管理不好。这个时候我才真正体会到iPhone坚持用3.7寸屏的用意。当然,如果有个一两天在外面,都不如Nokia E71…… 相比于硬件水平,主要的亮点还是MIUI系统。拿俺同事的话来说MIUI是真心好,不仅仅是一个很用心做的软件,还是一个不管从需求把握还是用户体验甚至界面设计方面都很出色的产品. 作为MIUI的亲儿子,小米手机的软件细节非常出色。小米一向标榜的开放无锁随便刷系统就不说了,根据几天的体验,好好说说MIUI的细节: 出厂就内置了常用软件,让苦逼的国内用户终于不用因为iPhone内置的一堆贴心应用不能用而变成闹心应用了,也算是体验了一把专为自己定制的软件系统,开盒插卡即可用。 小米手机在软件上下的是一盘和棋,国内的应用,只要是好用的受众广的,不管是谁做的都拿来内置,新浪微博,手机QQ,搜狗输入法等等。一方面安抚了了潜在对手,另一方面也确实加强了手机的易用性。只是把默认的谷歌地图换成了百度地图让人有些不爽…… 在软件方面,小米做得最好的莫过于对Android短信和通话系统的增强了。 在收到新短信时,只要解锁,主界面上方就会弹出信息,并自带一个快捷回短信的输入框,根本无需进入短信菜单。短信的群发功能可根据联系人信息插入不同的称呼,还能自动过滤座机号,简直是逢年过节的好帮手。而在短信列表上横向滑动手指则可以进入批量模式,对短信进行批量操作。 电话功能则更加强大,首先是通话时可以随时调出菜单进行文字记录或者录音,而自带的防骚扰软件也很有作用,对于陌生号码来电的铃声会比已知联系人的来电铃声晚几秒钟响起,所以用户就再也不会被响一声电话打扰了!真是只有懂国情才能做得出来的产品! 针对国内3G不菲的资费,MIUI自带的流量防火墙很强大。iPhone app store有一些规定要求应用在请求大于一定规模的数据时必须要有用户提醒,而Android系统应用则全靠自觉。MIUI自带防火墙则可以在一个统一的地方设置所有应用的网络访问权限,用户可以选择让一些费流量的程序只在WIFI环境下下载和上传数据。 还有一点让我觉得很开心的是,小米手机内置了FM收音机,可能很多厂商现在都觉得这个模块可有可无,例如三星和Apple的手机就都没有,但是对于喜欢听广播的人来说,有个不用费流量的娱乐方式还是挺不错的。 另外,之前拿Android2.x设备进行测试时,截屏和代理设置都是很费劲的事情,Android 3.0加入了代理设置功能,而Android4.0才刚刚加入截屏功能。MIUI则帮用户在Android2.3.5上做好了这两件事,内置的设置菜单就有代理的设置菜单,而截屏则只需要同时按住菜单键和音量下键。 MIUI的各种可定制锁屏界面也是一个卖点,作为一个不那么爱花哨的用户,锁屏界面的快捷功也能让我觉得贴心了,例如锁屏界面下长按Home键可以自动打开MIUI自带的手电筒,而按住解锁滑动条的左右两侧解锁分别可以进入电话和短信菜单。 说了这么多,其实我觉得MIUI让我欣赏的地方远不止这些,甚至在我为小米手机刷了Android4.0之后,又因为应用不稳定加上系统不够贴心的原因又刷回了MIUI2.3.5k。至少在现在来说,我觉得MIUI2.3.5 比原生android4.0好。 而且,MIUI系统自带的MIUI玩机手册应用,也是非常实用的,老实说我没有玩几天,都是看手册学的。小米所宣称的“易上手,难精通”也体现在这里。把用户指南做得好一点,把常用功能做得好用一点,界面简洁一点,应用界面里面没有多余的按钮,全是符合直觉的功能按键。只等觉得需要自己做些定制时,才打开菜单,发现里面的选项都是自己想要勾选的。 这才是真正的界面设计,就好像我虽然老是记不住Mac OS的截屏快捷键,但是却依然觉得Mac OS非常好用一样,spotlight search和多点触摸版早就解决了我更多更频繁的操作问题。所谓的做减法,就是要多想一些功能之外的东西,敢于把非主要的功能“藏”得深一点,只让真正有需要的人来找。   总体来说,对小米手机的好感一半来自于MIUI,大约有40%来源于米兔的可爱(能设计得出如此可爱的吉祥物并在网站上时时换新图的产品团队一定是对产品有爱的团队!),剩下10%才是来源于于硬件性价比。 感觉自己这一转变太突然了,不认识我的人估计要说我是小米的托了……其实说了这么多MIUI的好,小米手机也不是完全没有缺陷,不管技术细节,光从使用体验来说,我目前发现的问题有: 内置字符集的支持有问题, 例如在微博上打开某藏文微博时,我的iPhone客户端显示得好好地,但是小米上的客户端却显示乱码,假设新浪的不同平台的开发人员技术实力差不多的话,就说明Android还是没有解决好字符集的问题。可能Android4.0解决了,但是跟它现在稳定性比起来,对于普通用户来说,还是MIUI2.3.5k版本要更好用一些。 电源键触感不好,小米手机的电源键是一种一侧活动另一侧固定的设计,两侧的下压阻力不一样,而且键程短,按键薄,所以很多时候会有一种按在按键正中央却按不下去的感觉,这就跟iPhone的捏在手里怕摔了的感觉一样,也让人搞不明白为什么不设计一个规规矩矩的按键。   写完发现居然写成了MIUI的软文了……不过老实说,小米手机还是值得推荐的。希望小米能继续加油,早日把基于Android 4.0的MIUI给搞出来。   最后吐一些Android的槽: 让我很惊讶的是,Android 4.0原生浏览器居然不支持JQueryMobile.com,这个在MIUI的浏览器里都是支持的,虽然那个浏览器的HTML5兼容性测试评分只有182分而Android 4.0浏览器的评分有271分。 新增了Widget功能,但是对于Widget的管理并没有限制,安装一个应用有时要增加好多个widget,整个应用菜单于是混乱不堪。根本不像iOS那样有条理。 即使到了4.0,触摸菜单的滑动还是跟iOS有不小的差距,一开始总是感觉菜单有阻力不愿跟着手指走,到了某一时刻又仿佛突然加速,特别是4.0的灵敏度还特别高,看Reader类的应用时,经常一不小心点了一下就翻页了,实在是让人抓狂……最终给用户的感觉就是Android手机的屏幕不如iPhone的“顺滑”。 今天又在网上定了一个高清播放器,居然是内置Android 2.2的,看来中国的厂商已经开始帮Android进军嵌入式了…… PS:早上起来,又收到MIUI系统的OTA更新提示了,看来一周一个版本不是吹的。 本文网址:http://blog.perlfect.me/2012/02/24/xiaomi-mi-one-plus-review.html

王云娇

在奔丧路上的夜火车上,我开始回忆我的奶奶。 大年初九,刚回到北京第三天。而一想起刚过去的春节,就让我懊悔不已。 初一吃过午饭,我就准备去看望外婆,好早点回城跟同学朋友们厮混,于是去跟奶奶道别。奶奶一听我要走,本来没什么精神的她居然大声问我:你是走了就不回来了么!?   我笑笑说:回来,奶奶,我明年春节还来看您。 奶奶还是重复地问我:你是走了就不回来了么?!   我直以为是奶奶耳背没听清,但见她眼角开始闪烁,于是坐下来握住她的手,大了点声音 说:奶奶,我明年春节还回来!   看她好像听懂了,我于是准备走,谁知发现自己的手竟被奶奶紧紧捏着不放, 最后还是表妹帮忙才让我抽手出来。令我懊悔万分的是,这尴尬的分别竟成了永别。 一想到这,我就想狠狠地抽自己。 春节,自然还会再有,奶奶,却再也没有了。 于是,在这昏暗的车厢走廊里,我拼命回想,回想这之前我奶奶的这后半生,回想我对她有过的孝顺。   然而我竟难过的发现,我连奶奶的名字都不知道! 过去的十年里,我一直在外地求学和工作,基本上每年春节才能看望奶奶一次,而奶奶因为之前的一次摔倒导致骨折,早已经不大能走。加上近年来又变得耳背,不习惯大声说话的我渐渐也不爱跟她说话了。于是这十年里,奶奶在我脑海里的全部印象,竟就只是一个安详地坐在那里的老人。 再早些时候呢?其实从我记事起,奶奶就已经是奶奶了。奶奶三十六岁生我爸,我爸二十七岁生我。从我出生起,我奶奶就已经过了花甲了,按照乡下的习俗,连遗像和棺材板都准备好了。   然而奶奶还是陪伴了我近三十年,在我向往着外面的世界的日子里,奶奶在我心里总是那个安详的样子坐在那里。时光如此时窗外的风景不断地变换,奶奶的内心却像这趟夜火车一样,璀璨繁华总在远处。而很惭愧的是,每每去探望奶奶,也止于嘘寒问暖。  在这夜火车的上铺,狭窄的床铺让穿着紧身的牛仔和臃肿的羽绒服的我无法真正入睡,但这灯光摇曳半梦半醒之间的几个小时,竟又让我想起了童年的点点。想起了那个没有电视看的乡下,那些个围着砖砌的灶台我烧柴火奶奶做饭的春节。 我也依稀记起听说过奶奶姓王,本是富户家的孩子,小时候还上过私塾。因为社会的动荡下嫁给了一穷二白又没什么文化的爷爷,甚至还要过饭。我的爷爷脾气倔主意多,所以即使是小时候,我眼里的奶奶也只不过是一个好脾气没主见有时候还会迷糊闹笑话的老太太。说起来那是仿佛还真有那么几个段子呢,小时候每每说起来,奶奶也就是那样陪着我们笑笑,一点也不在意。我妈说,给我奶奶当了三十年媳妇,从没红过脸。  而关于奶奶这个人,我只知道从我懂事起她就有心脏病高血压,一直在吃药。奶奶算不得虔诚的佛教徒,却还是每逢初一十五吃素,有时忘了还会改天补上,被爸妈笑着说是吃补素。奶奶喜欢吃面,每次吃素时就是一小碗挂面浇上几滴麻油。奶奶说她一辈子没吃过鸡蛋,我也真没见她吃过,但她在那柴火灶台上做出来的三十早上的蛋丝面和年夜饭的蛋饺却是我对美食最早的记忆。  而如果要让我用一个字形容这个十年来跟我说过不超过一百句话的奶奶,我第一个想到的竟是爸妈年轻时老说奶奶的一个字:回(我们那边方言形容老人迷糊但罗嗦)。 真是在时嫌啰嗦,不在了反倒要想了。 不知不觉竟写了这么多... 我想人之所以对于永别这种事情这样的恐惧,大概是因为对记忆力的不自信,于是一旦身边的人走了,自然也会感觉到自己的生命缺了一块。就好像我没法知道奶奶生命中的繁华岁月的光华一样,少了奶奶时不时地念起我小时候的事,大概我也会彻底底变成一个无趣的成年人了。  我一人默默地坐在火车上,愿奶奶在天堂安息。    PS:本来听我妈说奶奶的名字叫王三英,后来在帮我爸写悼词时才得到确切答复,奶奶本名王云娇。虽然这是个很尴尬的的事情,但是我还是要改过来。连家人都记不起名字了,大概奶奶当奶奶确实当了太久了吧。 本文网址:http://blog.perlfect.me/2012/01/31/RIP-my-grandma.html

台湾游的一些亮点

2011年的最后一晚,好像今年还没过够马上就要到明年了…… 而各种跨年晚会争奇斗艳却都没一个想看的,新人都不认识,老人却又都老了。长大成人的感觉,是不是就是发现电视节目都不是逗你乐的,而觉得酒越来越好喝的过程?2012,还能接着当孩子么? 突然想起三个月前的台湾之旅,虽然依然像在昨天,却马上就要是去年的记忆了。这一趟为诸多同学探路的旅行,虽然在blog上发了一些水,但居然除了一个办手续的攻略之外,没有其它任何有肉的东西。而已经有同学都马上准备出发去玩了,所以我想与其无聊还是写写吧。没什么逻辑,想到一点写一点了,算不得攻略,因为都没涵盖什么必去的经典,也就是记录一些我印象比较深刻的东西而已。 柠檬爱玉 说到台湾,不知道有多少人第一想到的是奶茶,但是我因为天生不爱喝奶制品,倒是对这个柠檬爱玉非常喜欢。 柠檬爱玉还有另外一个别名,起因大概是因为这种饮料的做法。一般的这种饮料摊里是一口大锅,锅里浸着爱玉和整个整个的柠檬。爱玉口感类似果冻,是某蔓类植物的果实加工做成的,所以是绿色的,而柠檬则是椭圆的整个,所以就得名——青蛙下蛋。只能说台湾朋友太有幽默感了,柠檬爱玉这么好的名字不用,却喜欢青蛙下蛋这样搞怪的名字。 名字虽然奇怪,但是味道确实不错,观看整个制作过程,摊主一般是拿大勺打碎一块爱玉,舀到给你的饮料杯里,然后再用锅里泡过柠檬的水加满杯,没有其他添加(泡柠檬的水里应该有糖),非常清爽,适合逛街的时候喝。 莲雾 这个东西就是传说中的芭乐了。国内没怎么见过,但是台湾却很多,而且很好找,往散发着甜香的摊上找就行了。几十块就可以买一包切好的,再撒上一些梅粉,甜蜜中稍微带点微酸。 蚵仔大肠面线 其实在国内的时候基本上不吃内脏,大肠更是基本上不碰,而在国内的台菜馆吃过几次蚵仔煎也不是很喜欢那个腥味,但是台湾的蚵仔大肠面线却值得一试。台湾人管蚵仔叫“哦啊”(音译…),很新鲜的话是不腥的,另外大肠面线的大肠应该是卤得干干有嚼劲的那种,吃起来也不会软泡泡的。最赞的是面线,细细的,煮的比较烂,有点类似羊肉烩面的做法,非常入味非常鲜。具体哪家好吃这个没有研究过,不过我觉得满大街的连锁店“吉马陈蚵仔面线大王”就已经很不错了。另外,他们家的山猪肉香肠不可不试! 台铁海线 台湾的铁路分台铁和高铁,高铁只在西岸有,但老实说,以台湾的面积,台铁太鲁阁号,自强号已经够快了。而台湾沿海的铁路是分山线和海线的,顾名思义,想在从台北出发去花莲的路上看太平洋的话,自然要选海线啦。另外一定要注意,从台北去花莲选双号座位,从花莲回台北选单号,道理你懂的。实在是很佩服台湾朋友,台风这么多,还把铁路修得离还这么近,中途还有一处有可以见到大洋之中有一岛屿笼罩在海上烟云之中,如果再有阳光,那就梦幻了。 花莲自强夜市 台湾的夜市非常有名,士林夜市大概是最有名的,但是台北的夜市大都是综合性的市场,逛街饮食在一块,一般都是买衣服的地方。我这个吃货觉得在人挤人的夜市里从一家家小店一条条小巷里查找那些闻名的小吃挺费劲的,所以此行我觉得花莲的自强夜市最高,因为他是一个集中的纯卖小吃的夜市。按照当地人的指点,进去先在路口生意最好的“第一家烤肉串”那里选好荤荤素素,拿个号让老板去烤。然后去尝尝花莲真正的特色小吃“法式官财板”——厚吐司裹蛋液炸过,用剪刀剪三刀,掀开一个口子,灌进去沙茶牛肉,菠萝虾球之类的料,盖上,包好,开咬!实在美味。 吃完擦擦嘴,一定要去尝尝安记创意香肠,台湾名吃大肠包小肠(烤米肠包烤香肠)到处都有,但是此处的做法有些创新,会添加一些腌制的黄瓜和特质的浇汁上去,风味独特。 因为太过饱足,花枝羹章鱼烧之类的我就没有尝试了,想来不会差。只是回到路口,还有大包第一家烤肉的串等着呢。他们家烤串的特色是用鱼露,所以无论荤素吃起来都是鲜鲜甜甜的感觉,一般我是不爱吃不辣的串的,不过这家例外,因为我爱鱼露。肉串吃起来有些腻,所以夜市路北口的现打果汁是少不了的。 台湾是个水果之乡,所以他们的现打果汁才是真正的现打果汁,当你现场看着老板做一杯60台币的胡萝卜汁,咣当咣当给你往榨汁机里扔进去十二根胡萝卜时,内陆的孩子如何能不感动 。 太鲁阁国家公园,砂卡當步道 太鲁阁是台湾的国家公园,位于花莲以北,风景类似于内陆的九寨沟,区别是在于它是免费的。砂卡當步道值得一走,沿途的水又让我想起了张家界的金鞭溪。在山雨欲来时,云遮山雾游谷的感觉,只觉置身仙境。要是单纯比较,景致的神奇或许不如九寨沟,但确实是值得一去的。 花莲的海 我在国内看过海,不过靠近大陆的海是无趣的,去欧洲的最西端看过大西洋,但罗卡角海拔太高,几乎都听不到脚下的海浪声。而在花莲,才是纯净的大洋,都没有任何的渐变,蓝色直接冲刷到七星潭的石滩上,海风劲吹,清新且没有一丝腥臭。 花莲香扁食 扁食就是馄饨,一定要点虾仁的,真的是新鲜的整虾,整虾!之前之后在北京和香港都吃过虾肉馄饨,但是北京的基本没虾味,香港的虽有虾味却也有腥味,而花莲香扁食就算是这之中我吃过的最好吃的馄饨了! 曾记麻薯 这家在花莲几乎满街都是,100台币一包的麻薯,好吃不贵,最性价比的手信了。 维格饼家的凤梨酥和绿豆糕 好吃!贵死!永康街有,桃园机场也有。 师园炸鸡排 台湾人爱吃鸡排不是盖的,有统计说“台灣每天雞排銷量超過廿五萬片,若以單片兩公分厚度計算,可堆十座台北一○一大樓這麼高,一年創造四十億元商機,可說是正港的「雞排英雄」……” 而鸡排和香肠,奶茶一起,也算是国内有卖的小吃里最爱带上“台湾”两字的小吃品种。这次去台湾尝试了两家的鸡排,一是有名的士林夜市豪大大鸡排,他们家现在已经是连锁店了,鸡排确实大!简直快要有人的前臂长了,只是太大的结果是往往吃不完…… 倒是台北师大夜市的师园炸鸡排更令我回味一点,去他们家吃炸鸡排,其实不止是鸡排,还有蘑菇蔬菜等等可以炸。当然,鸡排是必须的,记得要“先炸后切”,这样比较多汁,炸蘑菇一定要点。他们家的特色是在炸的时候会放新鲜的九层塔叶子,炸出来奇香无比,配上他们自制的调料……写到我口水流到键盘上…… 永康街 相比于士林夜市和师大夜市,其实在台北我最喜欢的夜市算是永康街,又或许他根本都算不得夜市,只是几条小巷而已。因为并不临着捷运,所以人比较少,但也刚好合了我的意。 永康街门口就是台湾名店鼎泰丰,传说这家是鼎泰丰的发家店,本来倒想是去尝试一下的,结果发现排队的人都堵塞了门口的交通了,只得放弃。 从永康街路口拐进去就很容易看到度小月——发家自台南的担仔面名家,但老实说味道也就普普通通,既然到了这里,自然是应该去“永康街牛肉面”,来一碗半筋半肉面,再点上粉蒸肉什么的,大块的肉会让走了好久走到的你无比满足。这还不是最亮点,他们家的汤很浓,一定要配上桌上免费配的腌菜。把腌菜放在浓浓的牛肉面汤里边喝边嚼,真是平凡且精妙的享受。 然后就是永康15冰店了,以前我最爱的甜品店一直是许留山,可自从吃过永康15之后,就觉得许留山真是性价比太低了!在这里,160台币一份的芒果冰让两个人吃到饱! 淡水老街&渔人码头 淡水和渔人码头应该算是台北比较有名的景点了,而交通也非常方便,捷运直接坐到淡水站就好。 在这里要推荐一下淡水老街的3P香肠,台湾的香肠普遍筋道好吃,而这家更是特色独具,据说申请了专利的铁蛋香肠以及飞鱼籽香肠,和山猪肉香肠一起,混合成3P香肠,各有风味,鱼籽脆,铁蛋弹,山猪肉香! 然后就是坐船去渔人码头了,这里值得一提,这渡船是快艇,从淡水老街出发,行到渔人码头附近已经接近出海口,那浪头相当刺激,而往返船票才25台币!(仿佛是原价50,但因为多家航运公司竞争,都常年半价了……) 渔人码头是个很有意境的地方,当然除了情人桥可能没什么特色的景点,但码头内侧的那一段短堤却是值得一走,木质的步道,开阔的视野,在那上面我拍了一张照片,设置成了我Path账号的背景。 新北投温泉 台北的温泉很有名,尤为有名的是北投和阳明山温泉,苏澳冷泉。这次我经人指点,找到了位于新北投优雅路34号的少帅禅园,是个非常有意境的温泉会馆。比起某些富丽堂皇却俗气无比的大众汤馆,这家本是张学良老年在台湾的住所,又是由日本人设计的,依山而建。沿路边石阶下去就是接待处,是一间日式的瓦顶木屋,兼做茶座,出门去经过一片小小的露台,再下去几步台阶,就是他们家的十五间双喜汤屋。汤屋每间大概是7-9平,都有面朝山下的全景窗户,可以边泡边欣赏风景,所谓双喜,则是指每个汤屋都有冷热两个汤池。这边的温泉水乳白色的,并没有太浓的硫磺味或者铁锈味,刚好适合我这种不懂门道的人。 我去的时候,正是下着小雨,身上有些淋湿,倒还真是有些觉得冷,这时在汤屋里泡上一会儿实在是享受。窗外是斜细的雨雾,不远处两株高大的棕榈树微微摆动,山坡上蒸起若有若无的蒸汽雾,更绝妙的是旁边的不知哪家佛馆传出隐隐的佛音,一时间只觉得通体清净温馨,再也不想动弹。 一小时后出来,雨中的整个禅园,所有房屋的木质颜色都变得更深,搭配上屋里的烛光道灯,显得更加精致,令人流连。 汤屋的收费很公道,一小时泡汤,大屋1500台币,小屋1200,点心和玫瑰乌龙套餐也才350台币一套。不说这里的环境国内基本找不到,即使单比价格,也都难找到更合算的了。 最后顺便说一句,打电话预定汤屋的话,他们可以派车去捷运北投站接你,就不用再倒一趟新北投线了,而且还能体验一下他们家的台湾特产休旅车——纳智捷大7 CEO,不得不说休旅车在台湾还蛮受欢迎的。 台湾电视节目 这个既无图也无真相,各位自己去台湾玩的时候,晚上别回旅馆就睡觉就好。 一些图片 没错,这货就是奇瑞A3!   最后给不满意的读者提供一个真正的攻略,某豆瓣色大叔的日记:台灣自助旅行攻略(不定期更新)   最最后,可怜兮兮地问一句,有哪个要去台湾的同学,能去Novitec的台北店里帮我买个这个的嘛? NOVITEC Powerjet 2 for 1,4 Turbo  告诉老板是给Fiat Bravo 2011 1.4T AMT用的就好了…具体地址是: NOVITEC Co.

行迹 2.0.1.1

前两天打开水木社区,批阅完某版面上大片的年终显摆帖之后,看到有人发了个讨论帖:你们班高三当初高考第一现在都在干嘛?觉得挺有意思的,我于是回想了一下……于是才想起来,原来我所在的那个高三班里的高考第一居然是我…… 瞬时间有点挂不住的感觉……老实说我其实一直以来都是庸庸碌碌的感觉,谁知道高考的时候怎么考了一个全班第一来的,因为太偶然,居然都把这事给忘了。联想到此时的我,唉,实在算不上是为班级争光…… 幸好看了看后面的讨论,发现读书好其实不一定温拿,于是心里才算平衡了一点。 紧接着就想起,仿佛也到了该年终总结的时间了。本来觉今年实在是头绪繁多,感觉光是总结都得写上好几篇(其实关于数码玩具方面都已经总结过一篇了)。但是突然又想起前几天在微博上看到的一篇文章——《Traveling, Writing and Programming》,就想起自己虽然比不了人家实力+护照双重给力,今年到也是去了几个地方,再加上因为自己偷懒,各种游记欠奉,倒不如就写个类似的吧。 总的来说这一年,仿佛是我自从开始例行年终总结以来,第一次没那么苦逼兮兮。2011年,我毫不否认自己运气不错:工作得到肯定,也被给予了新的机会,甚至连北京新开始的汽车牌照摇号也让我给抽中了! 当然,自己的努力也不能被谦虚掉。最自豪的是从年初开始,已经坚持了一年的慢跑锻炼。这让我的体重得到了控制,之前困扰我的膝盖伤病居然也随着肌肉的结实被治愈了,期间为了检验成果,还去跑了一次半程的北京马拉松。从中我学到了很多,如何否定自己,如何持续自我激励,如何循序渐进,甚至如何学会欣赏一项自己原本不太熟悉的运动…… 这些,我想都不止是有益于健身。更何况人生最大的成就感,莫过于战胜自己。   然后这一年就是所谓的读万卷书不如行万里路了。这一年来,先后去了美国,台湾,香港,期间也抽空回了趟老家,当然大多数时间还是呆在北京。既见识了一直就想见识的美国,纽约,曼哈顿,也去波士顿探访了梦中的MIT和Harvard,然后又去了改变我人生观的台北和花莲,以及顺道到此一游的香港。 感触良多,甚至让我对于之前特别熟悉的老家和北京都有了不同的感受。就好像是A*算法里的寻路,每探索一个点,其实都会对已知的路径产生新的看法。   纽约,我要先说纽约。 说它是大都市中的大都市也不为过,虽然北京有更大的地盘和更高的楼房,但仔细体验了这里之后,我还是想说,它才是真正的大都市。 它的楼可以很老,道可以很窄,但是经不住每一处都是都市文化的名胜,每一寸土地都散发着金钱与艺术的混搭气息。它的街也许只有狭仄的门面,兼散发着旁边地下室潮腐的气息,但也同时散发着梦想的味道。它很赤裸,很极端,有些肮脏甚至暴力,但却被所有其他的地方的城市奉为榜样。时代广场,百老汇,第五大道,麦迪逊公园,联合广场,甚至中央公园都无时无刻不出现在世界各地的影视文学作品里。它不只有美国的波普文化,也有纯正的欧洲古典艺术,加上唐人街的美食和中央公园的自然,这里是离全世界最近的地方。 甚至刚来时的有一天下午,我在第五大道的一家星巴克里晒着太阳,想着:这就是身在世界中心的感觉么? 但与此同时,我也发现生活在这里的人也并不比我们多长了些什么,照样也需要休息,需要锻炼。照样会因为午餐的价格而斤斤计较,照样会觉得在30多度的气温里上下班是种煎熬。他们也许能比我们多看一些百老汇的歌剧,多在街上碰上一两个名人,但是作为自己的生活,却依然是一天一天的过。 这仿佛是一个不表自明的道理,但是作为一个从内地小城市奋斗到帝都的孩子,却仿佛爬出深井的青蛙一样方才明白,城市再好也不过是个平台。自己的生活,其实是跟过法关联更大的。 于是对于自己的人生轨迹很释然,于是也更加倍努力地想要过好自己的生活。 当然,作为慢跑之都的纽约,给我在慢跑的氛围和装备上都充足了电,也是一个附带的收获,现在想想自己最怀念曼哈顿的地方,居然是岛东边的那条沿河跑道。   然后是波士顿。 老实说我在那里待的时间很短,抛去一天去吉列体育场看西班牙与美国的足球友谊赛,可能真正在城里的时间也就一天。但这一整天,我没有浪费好天气。我跳过了市中心所有的景点与热闹,直接徒步穿过查尔斯河,在剑桥独自穿行了一天。 这也许是我今年过得最惬意的一天了。清晨的宁静中,在MIT的校园里闲逛,还因为Frank Gery设计的楼实在是太过怪异而差点错过了MIT的CS&AI实验室……赶在中午之前参观每周日上午免费的MIT博物馆。在午饭的时候借着Google地图找到同事推荐的最让他怀念的学校边上的美式汉堡店,点上一个让他赞不绝口的健力士汉堡,下午又在午后的阳光里享受Harvard校园里百年大树的树荫,傻傻地一栋一栋地看教学楼上的系别名称…… 更具体的游记大概有这篇之前的详细游记就够了,总之真心羡慕这里的人的生活状态。有宁静的校园,也有欢乐的河水,有技术极客的圈子,也有文化艺术的氛围。不急躁,不分心,有时候觉得自己读PHD做学究的梦想还真是死不了呢。 如果说曼哈顿是一个我愿意在35岁之前奋斗的地方,波士顿的剑桥应该是我渴望一辈子专注做一件事时长居的地方。   如果说美国总是让人想起事业的梦想的话,台湾则大概代表了人生的另一个梦想,那就是做一个会生活的中国人。得益于难得的自由行,我没有去日月潭阿里山,倒是随性选了些人少的去处,这才真体验出了台湾的真谛。 在台湾这个地方,你没有办法不文艺。一进台湾,生活就好像被按下了慢速播放键。繁体字,各种告示牌后面多加的一句“某某政府关心你”;繁忙却不匆忙台湾夜市,简单却每道细节都考究的小吃;会打着伞迎出门,用嗲嗲的台语问候你的旅店前台,递给你鲜榨果汁还跟你调侃两句的摊贩大叔…… 以至于连台铁自强号两小时从台北到花莲的车程都被我嫌太短,海景还没看够呢。   到了花莲,更是让人浑身像被海风吹酥了一般。 我以前曾经打趣,说如果我爷爷所住的老家农村里能有干净的自来水,电力以及快速的互联网,我就愿意回老家宅着。而这里这些都有,并且景致更加无敌,居民更加可爱……可以想象,生活在这里是多么的梦幻,以至于我一来就很没出息地在blog上写了这篇《来台湾,拷问我们的幸福》…… 来的时候,正是台风要来,风云变幻,自然之雄秀令人折服,而所接触到的台湾人也都让人觉得温暖且欢乐。 在阳光和小雨交加的下午,这个有些日式风格的海滨小城有一种不可思议的感染力,漫步在海边,巷里,捧着鲜榨的果汁去小店逛,或者在便利店外的椅子上捧一杯咖啡等雨停……最能消磨人斗志的东西叫做满足。 之前觉得不管是台湾的电影还是文学作品,都有些过于甜腻,直到来到台湾才明白,如果一个画家画出的画美妙,最大的原因只能是他身处的景致令人心醉。 台北,北京,香港。 如果说纽约是给事业准备的都市,花莲是为生活而存在小镇,那这居间的台北,北京和香港就显得没什么特色了,倒不如放在一起比一比。 相比之下,我最喜欢的是台北,当然主要因为台湾的人。除此之外,还有淡水的码头,新北投的温泉,士林和师园的夜市,以及把他们串联起来的三地之中最宽敞的台北捷运。 从台北回来,我和kiki同学一起从香港转机,也算是让我这个土人体验了一把香港。作为一代大陆人心中的繁华影像的实景,香港并没有给我太大惊喜,倒是因为刚从台湾回来的缘故,这里的一切也让人觉得冷冰冰,总之从一开始我就失去了兴趣。陪着kiki同学及遇到的其他几位同学逛了一天的街,最终唯一花出去的钱却只是晚上请他们吃饭的饭钱…… 可能唯二的亮点也就是正宗的港式美食和兰桂坊了吧。 当然,还有一件事也许值得一说——坐香港的出租车。第一次坐右舵车的前排左侧,让我这个新司机有些不习惯,车子不是在自己的掌控之下,另外总觉得对面开来的车在逆行。不得不说生活习惯是个很有意思的事情,我想这也是为什么人应该趁年轻多体验不同的生活方式的缘故吧。 然后就是回到北京了。今年秋冬的北京被空气质量问题搞得很郁闷,以至于所谓的北京最好的季节也显得没什么可赏味的。但是回想一下之前的香港之行并不是很值得回味的一个原因就是觉得,现在的香港相比于北京,并没有什么新奇的东西,甚至还少了些文化。 好吧,虽然我是一个在这里住了快满十年却依然没有归属感的异客,北京确实有自己的风味。只是宜不宜居,又或者说像我这样的人生活在这之中有多少烦心事又是另一些不值一晒的鸡毛蒜皮了。   写到这里,这篇唠叨已经有些超长了……翻回去看一下自己去年的总结和展望,其实对于今年的生活,本没有太多的目的性,连计划也只是不知什么脑子混沌的时候写下来的:在日渐平淡的生活里我们不能停止折腾!也许从这篇看来,今年这一年到真是不负这句话。虽然感觉好像没有什么明显的成就,但是身心都修炼了颇多,倒真有些像高三时不管考试也不管成绩只是默默地在干该干的事情的感觉。这大概也是为什么今年的总结,总体来说令人没那么纠结的原因吧。 明年呢?明年就是离家十年的日子了,还是得坚持工作,坚持旅行,坚持锻炼。但最终还是希望能通过这些选定自己的未来的路,或许再朝着目的地走两步吧。 本文网址:http://blog.perlfect.me/2011/12/20/personal-review-2011.html

PhoneGap + JQueryMobile真速度

最近一直在想写个app玩玩,可是选iOS吧,没有可以安装Xcode的设备(穷死算了……),选Android的把,他们家的Manifest.xml和Layout设置实在是麻烦(懒死算了……)。选来选去就拖着了…… 恰巧最近发现很久之前听说过的PhoneGap被Adobe收购了,心想有了靠山是不是这个项目能靠谱点了?而JQueryMobile也终于放出了1.0版本。于是在想,是不是可以试试HTML5 app的办法呢。如果能行,还可以跨平台,听起来很有吸引力。 所以今晚花了两个小时学习了一下,环境还是选取了Android开发环境,因为之前自己的机器上有一个为了调试而搭建起来的Eclipse + ADT + Android SDK 开发环境。 接下来按照PhoneGap的入门指导,下载了PhoneGap的最新版本(1.2.0)。解压后将它提供的jar包和js文件导入新建的Android项目,再照抄了一个指导上给出的AndroidManifest.xml,修改了默认的Activity以加载一个自己写的index.html,就弄好了一个能够运行的Android app,这个app唯一的作用就是在页面上load一个html页面。 然后开始构建UI,老实说我是JS+CSS苦手,但是相比于Android自己的UI Layout,好歹还算熟悉一点。直接把index.html里包含了CDN上的JQuery Mobile的js和css文件,简单摆弄了几下,就有了如下的效果了: 怎样?从速度和最终效果方面来说还算是经济实惠靓又平吧? 再仔细研读一下这两个项目的文档,诸多亮点。JQuery Mobile已经开始支持触摸手势,自带的样式美观度已经至少不弱于Android的UI,而PhoneGap则提供了可以通过Javascript调用的Android系统API,支持包括罗盘,GPS,联系人,相机,通知,存储(!)在内的多种系统功能。 最后具体到性能方面,因为我是用的虚拟机,所以基本上性能怎么样也是是屎……不过我觉得,即使因为性能问题它成不了一个产品级的开发框架,但至少在快速原型开发和临时性的多平台支持方面还是很有前途的。 本文网址:http://blog.perlfect.me/2011/11/28/jquery-mobile-and-phonegap.html

贴一个我的SVN commit message...

from <getopt.h> in gnu c lib {{{ struct option {   const char name;   / has_arg can’t be an enum because some compilers complain about      type mismatches in all the code that assumes it is an int.  /   int has_arg;   int *flag;   int val; }; / Names for the values of the has_arg' field ofstruct option’.  */ # define no_argument        0 define required_argument  1 define optional_argument  2 #endif  /* need getopt */ }}} Thank you, genius… –This line, and those below, will be ignored– 起因其实很简单…我在程序里加入了很久以前libg++里提供的一个C++版的GetOpt实现,恰好这个实现里面的一些命名跟GNU C的getopt版本有些类似,然后就发现老是编译不通过……找原因,最后发现是一个第三方库间接包含了GNU C 库里的getopt.h,然后就发现了上面这一段… 不求甚解的库程序员真可怕… 解决方案:   $ svn diff Index: GetOpt.cc @@ -72,16 +72,16 @@ o[k++] = p->val; switch( p-&gt;has_arg ) { case GetOptLongOption::no_argument: case GetOptLongOption::NO_ARGUMENT: { break; } case GetOptLongOption::required_argument: case GetOptLongOption::REQUIRED_ARGUMENT: { o[k++] = ‘:‘; break; } case GetOptLongOption::optional_argument: case GetOptLongOption::OPTIONAL_ARGUMENT: { o[k++] = ‘:‘; o[k++] = ‘:‘; Index: GetOpt.h =================================================================== @@ -35,7 +35,7 @@ #ifdef GNUG #pragma interface #endif -#define GetOpt_h +#define GetOpt_h 1 /// Describe the long-named options requested by the application.

当我在路上我在玩什么&hellip;

最近突然发现自己对于铺天盖地的数码新产品都没有了花钱的热情。 个人觉得有一部分可以归功于iPhone4,虽然之前对它并没有什么特别的想法,但是一个偶然的机会入手了一台之后,真是觉得别无所求了。而另外的原因呢,就是当我拉开抽屉时,发现家里已经堆积了不少各种数码产品了,实在是不好再出手新玩具了。 心想着与其闲置在这里吃灰贬值,不如将他们转手顺便为下一个心头之好预先回笼些资金。于是开始整理各种玩意儿,拍完它们的全家福,突然想好好总结一下这一年来的体验。 按理说我这一年用过的数码产品不少了,新的老的,加上年中去美国体验了不少新产品,总还有些感想。   总体来说,我对于数码产品的需求大多源于一个目的:不浪费每天上下班在地铁上2个多小时的通勤时间(悲催的人生…)。 Sony PSP3000 最初,我的想法只是“想要一块大一点的屏幕”且不想换手机,于是入手了PSP3000,因为未破解的PSP的价格相当便宜(朋友从日本带回来的,折合人民币约1200)。我其实也不怎么玩游戏,就想在上下班的时候看看视频听听MP3。当然也尝试过看电子书,当然,PSP这个落后时代的玩具其实这些任务完成得都不好。看视频吧,屏幕大小倒是我所喜欢的,但是内置播放器极其挑格式,也不支持字幕,所以节目源相当有限。而上网的话在路上是不行的,即使到了有WIFI的地方,也有诸多限制,例如内置的flash版本实在过低,以至于没有办法观看任何网络视频,WIFI的设置也有问题,不支持WEP-PSK2的加密网络接入。总之就是太老了…… 其实还挺为PSP这个平台可惜的,当初它刚推出的时候,其轰动效应实际上是不弱于iPhone的,而它的游戏功能即使是iPhone目前也难以望其项背。 于是我就不止一次地想:如果Sony能够稍微重视一下网络功能,如果能够开放第三方应用开发,如果能够使用触摸屏……也许只要达到这里面的前两项,PSP的寿命就会更长,甚至会抢占作为移动智能平台王者的先机……传统的家电厂果然还是没有软件的思维,虽然我一直认为它比苹果更懂得工业设计,但是软件方面跛掉地这条腿让它只能成为老古董了。 万物青 毕升一号 E-ink电子书 紧接着在年初,觉得老是看视频或玩游戏实在是没啥长进,于是开始考虑电子阅读产品,并且为了保护眼睛,重点放在了E-ink产品上。于是以999的价格从京东入手了当时正在特价的万物青毕升一号电子书,其实我挺喜欢这个产品的创意的,虽然只不过是一个MTK的山寨机平台加上一块六寸E-ink屏幕,但是当时不到1000的价格买到一台可以发短信和上网(它内置了UCWeb,聪明的集成!)的E-ink电子书阅读器,还是很值的。以至于拿到办公室里都引来了不少人围观。 它的好几项功能让人觉得非常贴心,例如在看书时可以调出菜单操作MP3播放器或FM短波收音机,拥有内建中文输入法,另外,其实它的外观设计也还算是不错的。 当然,便宜没好货的规律在这件玩具上也没有被打破,最大的问题是系统非常慢。可能对于喜欢拿它看txt小说的人来说问题不大,但是对于我这种重度依赖带格式的pdf文档的人来说,每次加载一本页数稍微多一点书简直就是个灾难,而且还没有类似Kindle的阅读位置记忆功能,所以每次一不小心误操作退出当前正在阅读的书,就得费半天劲重新打开。这个时候才知道作为一个产品来说平衡的重要性,只有各方面都平衡,才能带来完美的用户体验。 尽管如此我还是坚持在这个6寸的电子书上看了不少书,大多数是专业书籍,虽然有时候代码格式显示会有些乱,但是基本上能看。 Galaxy Tab P1000 遗憾的是一个月之后,我不慎把毕升一号摔了一下,电子墨水屏坏了一个角,从此基本上就没法看了……心痛了几天之后又退回到PSP上并开始物色新的设备。恰逢三星的7寸平板Galaxy Tab P1000降价,于是花3400在中关村买了一台。 它着实把我的上下班生活变得更加充实了。相比于PSP3000,Android系统最大的好处在于可以安装app以实现自己想要的功能。Android平台下的愤怒小鸟和切水果都是免费的,各种播放器兼容的视屏格式也更多,还包括字幕支持。另外,Android版的Adobe Reader让我的各种文档阅读的体验拥有了不仅仅是速度方面的提升。 更好的是,虽然P1000拥有7寸的屏幕,它却是一个3G手机,因此可以通过联通的3G在车上上网刷人人或微博以及看Google Reader,不亦乐乎。上半年去美国,在它上面使用免费的Google Navigation更让我对Android这个系统更加偏爱。我现在装在iPhone上的导航是话9.9美元买的,而美国的Google Navigation比那只会更好。可惜这个功能在国内被阉割了……可以说,我对Android的所有好感都来自于无缝集成在里面的Google服务。 从P1000开始,终于有一个设备能让我不再为了不虚度地铁上的时间而在电脑旁折腾更长时间了。而我一直认为,7寸才是平板电脑的正确尺寸。这个尺寸对于除严肃阅读以外的一切应用来说应该是都够了,而且又是一个我实测过能够放进大多数衣兜裤兜的最大尺寸,老实说,大家都被iPad带沟里去了。所以我对于Amazon新近推出7寸的Kindle Fire而不是学Moto或者三星推出10.1寸平板的行为表示相当敬仰,这才是大公司不跟随的作风。 当然,P1000也有它的问题,最主要的是它只能使用三星自制的高压充电插口来给它机身内4000mAh电池充电,用USB连接电脑时不能充电,这设计对于一个这么耗电的设备来说很灾难,无论去哪里都还得带着它那硕大的电源插头,更不用说它的数据线接口是自制标准,本想拿它当车载导航使,结果还解决不了充电问题。 最终导致P1000失宠的还是下半年新进入手的两样杀器:Kindle DXG和iPhone4。 iPhone4就不多说了,虽然一开始对它颇有不适应,但适应了之后才发现它的用户体验确实是我所试用过的Android设备不可企及的。以至于除了书籍的阅读之外,我的一切其他需求都被它满足了。 Kindle DXG 说说Kindle DXG,这个少见的9.7寸的E-ink阅读器毫无疑问是Amazon Kindle家族里性价比最低的产品: 光是在我买它的时候,它的价格就够买三个普通的Kindle3了,而现在它的价格更是足够买下新出的Kindle Fire + Kindle Touch + Kindle 全套。 不像Kindle3,Kindle DXG属于2代半产品,没有内置的中文支持。 这Kindle家族中最贵的产品居然还不支持WIFI! 唯一值得宽慰的是,它至今没有降价… 但是,我依然认为Kindle DXG是我今年最明智的电子产品消费. 首先,E-ink的阅读体验我就不多夸了,DXG的PDF文档阅读体验之前的毕升一号甚至是iPad都无法比拟的: 纸质的显示效果; 绝大多数PDF文档不需要重排格式; 免费的英语词典; 能够记忆上次阅读位置,节省加载时间。 这些都是非常贴心的特性,实在是太适合大量长时的阅读了。而我也尝试买了几本Amazon Kindle Store里的电子书,正版书确实是贵,但是阅读体验就更好了,你可以享受: 自动查询光标处单词; 高亮,标注功能; 一键分享笔记到Twitter(免费翻墙哦亲~) 而也正是因为用的是DXG,让我在电子阅读器上阅读带格式带代码的技术类书籍变得不再痛苦,因此仅在纽约回北京的飞机上,我就一口气看完了《Why Functional Programming Matters》和另一本书籍。

台湾自由行攻略之手续篇

国庆期间拿共军的假游国军的地盘。台湾之旅罕见地让我这个半话唠被很多人催着写攻略,可写攻略真是很繁琐的事情(所以西班牙的游记烂尾了,美国的攻略也直接就欠奉了)。但是时不时回味起来,这次的台湾之行,真是满满温暖和欢乐。不写出来,觉得都有点对不起各位了。 去台湾有多难? 去台湾,其实并不难,跟团应该现在已经比较方便了,但是自由行就要麻烦一些了,但是对于开通了自由行的城市的居民来说(北京,上海,厦门),也不会比出国更难。 那难在哪里呢? 难在你要是没有这三个地方的户口,你去台湾就真的只能靠机遇了。同时也难在在很多被某党洗脑的大陆居民心理,台湾还是“中国不可分割的一部分”。 尝试一下去台湾,会让你体会到两岸真正的距离。 所谓的靠机遇,是指没有北上厦三个地方户口的大陆居民,大陆政府不会发《大陆居民往来台湾通行证》给你,因此也就无法去申领台湾方面的入台证明。当然,这里面谁是因谁是果我并不清楚…… 总之你需要等到对岸的某个机构对你有兴趣,向你发出邀请,这样你才能够向台湾申请《中华民国台湾地区入出境许可证》(两地人民在意淫这点上倒真是同组同宗……)。而且你还不能直飞,因为兲朝不承认你进入台湾的权利,所以只能从香港转机。就因为这个,我和kiki的这趟旅行有一半的钱都花在机票上了……因此,港澳通行证也得提前准备好。 而对于可以自由行的三地幸运儿,你需要的手续包括:《大陆居民往来台湾通行证》及其签注,《入台证》(这个就是一张纸)这两样,其实你可以把它类比成为出国时的护照和签证的关系(Oops…一不小心说破了……)。 办理的程序是: 去大陆的出入境管理处填表照相办理《大陆居民往来台湾通行证》,顺便申请签注,这个得10天。 在银行里冻结5万元现金,开具存款证明,然后连同通行证,身份证复印件一起交给旅行社(例如中国国旅),花几百块钱请他们帮你办入台证,这个需要7个工作日。 所以说,比某些国家的签证还是要方便的,起码不强迫你面签,而旅行社是什么时候都上班的,所以不用专门请假去办手续。当然,我对对岸也小有不满,为啥签一次就给7天……哪里够玩啊……   综上所述,对于想要自由行的人来说,即使是北京上海厦门三地的居民,也要至少提前个把月做计划。不要像我一样,心血来潮就要去,结果手忙脚乱,最后出发前一天才把所有手续拿到手。因为不敢提前订机票,经济上也损失不小。   最后说个不算大当然也不小的事,一说起出国旅游,我们最烦恼的就是签证,当然,这里面既有我们的官老爷的不作为,也有外国对本朝的不鸟。然而这次去台湾,看故宫博物院时偶然看到了一个民国百年外交特展,名字很煽情地叫“百年传承,走出活路”。进门处就是一张大图,列出117个对台湾护照免签的国家和地区,让我不觉泪流满面…… 在大陆的压迫下,连使馆都没办法在国外设立的台湾,居然能为国民争取到这样的福利。再联想起各种中国使馆和外交部不作为甚至捣乱的段子,就为这一点都真希望“反攻大陆”不是一句空话…… 本文网址:http://blog.perlfect.me/2011/10/20/taiwan-visa-toturial.html

来台湾,拷问我们的幸福

这次来台湾,其实是一个计划之中的意外,光我和kiki同学俩人成行的手续办下来就够写上一中篇,况且意志上也几番周折,真是在起飞前的最后一天才真正把所有手续办齐。这里头的麻烦暂且不表,留待攻略专帖吧。 其实本次旅行虽然刚开始,但我们已经到过了香港,台北然后是花莲,其实已经有太多的行记想写,太多的照片要贴,但真正让我打开笔记本写这篇博客的,还是台湾带给我的一种感觉,一种让我强烈的觉得此行的折腾都是值得的感觉——幸福。 初入台湾,是在台北的桃园机场,看起来这里不过是一个内地的二线城市的感觉,既不够气派,看起来也没那么整洁,甚至连路灯都略显昏暗。 但是真正让我们心动的,是这里的人。如同这里十月份30度的气温,毫不夸张地说,我们所遇到的台湾人,女的亲切,男的风趣,脸上都无时不刻不散发着幸福的感觉。其实还没下飞机,我就已经被长荣航空的空姐那暖暖的台湾腔给萌到了,无论要求你什么都带着个“喔”字结尾,听得人酥酥的。而我们求助过的每一个人,都面带笑容,回答你的疑问生怕不仔细,问他一个去处,总还附赠推荐给你几个备选,要是问路,就恨不得带你去了。 台湾人懂礼貌,这是很多人都知道的事情,但是真接触之后才能体验到他们对于生活的热爱,对他人的真心以及他们四处洋溢的幸福感。 老实说,传说中的西门町,也不过就是个卖平价衣服和小吃的小市场,传说中的台湾美食,也没有太多令人惊艳的东西,奶茶,仙草,香肠,卤肉,蚵仔煎,都是平淡且平价的食物。但是台湾人依然以此为傲,逛得很开心,吃得很用心。满大街的小吃店,动辄几十年的历史,即便是路边摊几十台币的小点心,拿出来也是精精致致,老板还信心满满,忙不迭地向你介绍它的历史,它的吃法。如果不是用心,怎么可能持久。 但和我预想中的台湾不同,原本以为台湾人会像日本人那样拼命工作,但事实是,他们虽然爱自己的职业,但更爱自己的生活。 台湾的消费并不高,一份花莲名吃官财板,就是吐司面包裹蛋液炸然后再剪开,往里面夹上鲜嫩的沙爹牛肉或菠萝虾球等数十种可选馅料,才45新台币,按照现在的汇率,还不到10元人民币。一顿像样的午饭,折合人民币也不会超过30块钱。而我也很难想象,像花莲这样一个类似于内陆小县城级别的城市里,居然有着那么多家小资的咖啡厅。面对过来花钱的游客,旅馆的前台小妹微笑着推荐的餐厅也仅是一家简单的卖炸物的小店。而即使顾客盈门,赚钱如流水的店,老板也是说歇就歇,逍遥比什么都重要。 就好像台湾满大街的机车(摩托)一样,台湾人的幸福生活,并不需要很多的金钱。所以他们更有时间打理自己的生活,更有时间做自己喜欢的事情。 相比较之下,我们这些人的生活,就好像是一片速生林,刚生出主干,还没来得及开枝散叶,就被匆匆砍去,贡献给了GDP,换取了些纸面的繁荣。现时的内地,拥有远比台北更光鲜的饭店,更名贵的酒食,但却被一帮没时间也没品位欣赏的人白白地糟蹋。我们从小到大都在争取或学习争取,但却没学过品味。 来到这里我才发现,虽然现在他们的物价对我们来说已经不算昂贵,他们的生活却是我们过不起的。 当然我也憧憬过自己的生活,也希望某一天能悠悠闲闲地品着咖啡或茶,看云爬山,看海击岸。但这都有一个前提,那就是财务自由,可怜的是,按照我们自己的社会价值观和社会保障的现状来看,我们几乎无法自由。 这才真是我们的下一个问题。 本文网址:http://blog.perlfect.me/2011/09/29/why-we-are-not-happy.html

Google Appengine是要闹哪样?

之前一个多月,我无意间发现ghs.google.com被解封了,虽然这导致俺的blog被各种国内的爬虫拿走去挂广告了,但也确实重燃了我好好写写这个blog的欲望。 有点小小奇怪的是,这件事情仿佛在墙 内并没有掀起多大波澜,看来ghs实在是被封了太久了,加上云计算服务现在日新月异,半死不活的Appengine看来是被大多数人忘记了吧…… 然而前几天又收到了Appengine官方的信, 说“Google App Engine Leaving Preview”。 然后就公布了新的计价表,令我吃惊的是,就Perlfect这么一个根本没人访问的blog居然在新的计价机制下面一天也得产生0.5美元左右的费用,还不包括所谓的9刀每月每app的固定费用。看到这信,我心里只有一个想法,太坑爹了…… 难不成今年Amazon AWS的事故频出让Google看到了商业化云计算平台的希望,在Appengine上又加了一把力?可现阶段来说,Appengine确实很难用,离Amazon的AWS的距离也不是一两天的事。何况,在Appengine平台上目前根本就没有杀手级应用的情况下,急匆匆地开始收费只会赶跑用户。 倒不是说我这个中国网民习惯了免费不愿意付钱,问题就在于以Appengine目前的用户友好程度和可扩展度,根本不会有人愿意一年掏超过180刀的费用。就拿写blog来说,Appengine不支持php,所以没法用Wordpress,我现在用的micolog使用python写得,虽然还算好用,但是跟Wordpress比,无论是既有功能还是可扩展性方面都差了不止一点。更不用说ghs三天两头被封,又不支持绑定顶级域名……真要让我花这么多钱,肯定考虑加点钱自己租空间了。   闲话不多说,在不甘心也不想花时间折腾换主机之类的事情的情况下,查看了一下新的定价和billing history,发现Perlfect Blog的主要的费用都花在Frontend Instance Hour上了,我想这个其实是之前的CPU-time的一部分,奇怪的是之前我的CPU使用一向离免费的限额还有很远,现在居然天天超…… 看了一下Pricing的FAQ: Frontend Instance: An instance running your code and scaling dynamically based on the incoming requests but limited in how long a request can run. 也许micolog的实现确实代码不算太高效,但我的这个blog其实基本上没有流量…… 于是有查看了一下Appengine发来的email里的一篇关于优化和降低成本的文章:Optimization Article 发现一些tips,给其他使用micolog的同学们参考: Set the X-AppEngine-FailFast header on tasks that are not latency sensitive. This header instructs the Scheduler to immediately fail the request if an existing instance is not available.

机器人犹在,激情却已逝

不管我的标题怎样的令人遗憾,不管我的给分是多么地欲言又止,我想,变形金刚三是今年必看的片这点是没有人会动摇的。 但是我想说的是,买单仅仅是因为它是大制作,是潮流,是比跟某某伟业比起来显然更好的选择。 但是我想说的是,激情已逝... 回想起三年前看变形金刚第一部时的震撼,至今历历在目。 儿时的梦想,最真实时也不过是孩之宝的玩具,而当大黄蜂和擎天柱在机械声中一格格从汽车变化成人形时,简直让我的心跳都要变成那卡卡卡的节奏了。虽然因为制作人的炫技,让我觉得那特效里的三角形有点过于的繁密以至于感觉这些个汽车人跟我小时候看的动画片差得有点远。但是那一天直到从电影院出来走了好久,还一直觉得路边的汽车马上就会变化成机器人。 那一瞬间对我来说,是电影将幻想和真实揉得最为水乳交融的一刻。 然而看到这第三集,当Sam都把变形金刚当宠物养,当路人见到变形金刚都不惊奇之时,我承认我也疲劳了。人就是这样,一旦习惯了,就不觉得珍贵了。虽然视觉冲击犹在,心灵的震撼却回不来了。 如果说变形金刚一就好像是你人生中的第一口巧克力,那演到第三季,它已经变成超市货架上的德芙了。 而让它更加变得油腻的是那万年不变的桥段。 美国大兵看起来越来越神勇让它更像是个爱国主义励志片。 而Sam还是依然喜欢带着女朋友去作战,无论打得多么惨烈,可怜的大黄蜂都得等Sam牵着女朋友的手从跑车里潇洒地腾出来才能变形。 擎天柱也依然是那样的神经刀,冲起来神挡杀神佛挡杀佛,但是却无端要在高空吊车上摆一pose,等着被敌人打中,更搞笑的是结果是被人类建筑物上的绳索给困住,还得靠弟兄们解救。 而唯一变了的是把梅根福克斯给变没了,换了一个金发大高个Rosie Huntington-Whiteley,一个维多利亚的秘密的模特。虽然一出场就是以其诱人的屁股和腿线示人,但依然挽回不了她相貌平庸,气质缺乏以及跟小个子的Sam怎么看怎么不搭导致的丢分。 唯一的亮点,在我看来,是ABC剧集Grey's Anatomy里的Mr McDreamy —— Patrick Dempsey 的出场,虽然我早已经不追这个剧了,但是他给我的印象还是很深刻的。 当然还有一些笑点,主要是来自于中国的植入广告,Sam的美特斯邦威T恤,Jerry Wang的伊利营养舒化奶,遍布各处的Lenovo电脑。 这其中最搞笑的是,那伊利奶居然用的是中文的包装,那是美国也! 而结合最近的新闻,中国的牛奶标准一低再低,伊利居然还梦想着走向世界,这就已经不是搞笑,而是雷人了…… 好在,我猜它应该不会有续集了,于是那就这样吧,他依然是一个很值得回味和珍藏的系列,和所有人童年时代的记忆一起。 本文网址:http://blog.perlfect.me/2011/07/2/a-transformer-3-review.html

如何在曼哈顿餐馆装老鸟

在各位同学眼里,俺就是个吃货。但吃货有吃货的视角,这不,俺这混杂着穷游和装逼指南风的曼哈顿餐馆指南就来了。 在纽约有一句很有名的话,那就是:Everybody is from somewhere else。这也意味着在这里你可以吃到世界各地的食物,但随之而来的也是五花八门的选择和这种不知所云的菜单,一方面想尝试新玩意儿,另一方面又怕浪费钱,加上曼哈顿这地方消费不低,自然是让人犯怵,不过好在鄙人最近吃下来,总算是积累了经验,跟大家分享一下。   首先是关于吃什么的问题。 这个问题既涉及口味,也涉及口袋。老实说中国人在吃的方面是相当兼容并包了,所以基本上在这边,你不用担心点了菜不能吃,当然不能吃cheese的人除外……再说了,出门在外,不尝试点新鲜玩意儿岂不是对不起机票钱。所以说作为从不发达国家来的我们,关心得更多的可能是口袋问题…… 一般来说在这边主流的菜系里面,同等档次的餐厅,意大利菜最贵,法国菜差不多贵,其次是美式的牛排,海鲜,然后是东方菜系,包括中国菜,日本菜,泰国菜,越南菜,在然后是美国本土的汉堡三明治之类的,最后是印度菜加西方其他谱系,什么土耳其啊,墨西哥啊,基本上就要数到街上小摊贩那里去了。   然后是选餐馆。 首先要推荐的就是一个网站叫Yelp.com,就是美国的大众点评网,吃饭之前利用GPS定位,查查周围的餐馆很有用。这个网站上每一家餐厅都会有一个消费指数,以美元符号的数量表示人均消费,“$”表示人均10刀以下,这类餐厅多半都是快餐店,因为出卖的东西有限,加上快餐不用给小费,所以很便宜,“$$”表示人均10-30刀,这在这里被认为是中等消费,一般主要是比较正常的不那么久负盛名的餐厅,又或是走平价路线的连锁餐厅,典型的例子就是美式的Diner,所以在街上你只要发现一家店叫什么什么Diner,走进去一般都是这个消费水准。“$$$”级别就算是高级餐厅了,人均31-60刀,一般来说多数是意大利菜法国菜,特点是价格贵分量少。至于“$$$$”就是相当惊人了,人均60刀以上,老实说我转了好久的曼哈顿,“$$$$”级别的餐厅还真没看到过几家,也没有真的去吃过……这个网站的手机应用有一个好的功能就是按距离搜索附近餐厅,并可以通过人均消费指数来过滤,很省心。 当然,如果随身没有带着一部随时可以上网的设备,也可以通过一些简单的办法判断消费水平。 1. 一般来说,“店里越黑,价格越黑”。如果你远看一个店里黑乎乎的,那这家店肯定是人均20刀往上走了,越是亮堂堂的店内,消费越低。 2. 国外餐厅的另一点好是会把菜单贴在门口,千万不要不好意思,凑上去看好了。一般来说除非是非常正式的晚餐,没有那么多道菜的讲究(即使有你也可以不讲究),所以说看着菜单上正菜的平均价格乘以一个2倍,基本上是在这家餐厅吃饭的封顶价格。之所以乘以2,是考虑了你有可能点小菜或者饮料,另外加上税和小费的结果。   拿捏好了价格,选好了餐厅,下一步就是走进去了。 记住这个时侯不要急匆匆地跟学校食堂占座一样走进去就坐,要先示意服务员,告诉他几人用餐,然后让他领位,这个时侯再跟他交流你想坐哪里,因为这个领位往往决定了由谁来照看你这一桌,也决定了小费的归属。这里越是正规的餐厅,越是分工明确,给你上菜加水的人可能不同,但是你点菜或是有其它什么需要的话,能找的只有负责你这一桌的服务员,要是你非得拽另一个服务员来给你拿这个拿那个,到最后的结果就是装逼的你必须得付双份的小费才能体面收场。忘了说明了,这边小费的通行标准是按照餐费的税前总额,午餐15%,晚餐20%,您自己掂量着点…… 开始点菜之前,一般你要回答的第一个问题是“Any thing to drink?”。注意,这个时候你应该发现服务生的手里其实是拿着冰水的。曼哈顿(至少法拉盛和长岛也是如此)的餐馆完胜北京各大餐馆的一点就是,不管你吃什么,只要你坐下了,免费的冰水总是有的,而且只要你不走人,是不断会有人给你续的,所以如果你想省下饮料钱,就说“Tap water is fine”就好了,如您所料,这边的自来水是能喝的。 只是,如果您想点饮料,别点水就好了……瓶装水的价格不便宜,要点就点咖啡,不喝咖啡的就点啤酒,都有很大几率比瓶装水便宜。 然后开始看菜单,一般服务员都会给你一点时间自己琢磨,好一点的餐厅服务员会先介绍一下最近的特色菜什么的。但是这边的好一点的馆子往往特别吵,所以我每次都只能假装听懂,然后继续对着菜单吭哧吭哧研究。   看到菜单,您才体会到神马叫做“全是英文一个不认识”。 曼哈顿的餐厅的菜单很土鳖的一点就是全是字没有图片,而且菜名都是哪里来的就用哪里的名字,像跟英语近一点的语系,意大利菜直接是意大利文的,法国菜直接是法文的,亚洲菜系就全用不知道谁发明的音译。唯一的救星就是菜名下面的注释,特别小的字体简要标明了用料和做法。 而我一般的点菜方法是:先选定菜单区域,意大利餐厅就使劲找pasta,美式餐厅就使劲找steak或者omelette。当然,推荐回避的菜肴有meat loaf和meat ball spaghetti,不是说不好吃,只是相比steak和pasta没那么好吃…… 东方的菜系好办一点,因为他们一般除了appetizer和side dish之外,都是可以当主菜吃的,例如Curry,Noodle,Fried Rice等等。然后就看配料,喜欢吃牛肉的就找beef,喜欢吃虾的就找shrimp。这里要说一点就是曼哈顿临水,所以虾又便宜又新鲜,所以没出息的我一般都点虾……虾仁炒饭,虾仁炒面,虾仁冬阴功,虾仁酸辣汤…… 很多亚洲菜系是选定了做法再选食材,所以又得多一步,此处注意的是,想要装老鸟,去越南菜馆要点Pho,去泰国菜要点Pan Thai,虽然现在亚洲菜都混着来,好不容易有个被美国人认可的菜肴,大家都卖,但是到了哪家吃哪家的菜还是得慎重的。日本菜也算方便,基本上就是寿司和生鱼两种,选自己喜欢吃的鱼就好,对鱼类的英文要稍微有点了解,通常的选择基本上不外乎:金枪(Tuna),三文(Salmon),黄狮(Yellowtail),章鱼(Octopus),鳕鱼(Cod),鳗鱼(Eel)。 当然印度菜就很容易了,因为他们只有咖喱咖喱咖喱,可吃的肉也只有鸡肉鱼肉和羊肉,顶多再加个全素的…… 不过只要是吃米饭的地方,一般都会问你要brown rice还是white rice,white rice就是我们平常吃的白米饭,brown rice应该是类似的粗粮,我身边的中国人评价都不高,总之要白米饭总是没错的……同理如果你点的菜配面包的话,他们也会问你要white bread还是whole wheat bread,这个我没啥讲究,一般来说服务员你只要提供一个默认选项我都说OK。 如果是牛排的话就找Pilly,Rib eye,T bone之类的字眼,也不必折腾几成熟的问题,服务员问的时候直接回答medium就好,这种程度的牛肉刚好是不会有茹毛饮血的感觉有还会觉得肉汁丰富。当然,这边的牛排都很大很厚,动不动就16盎司一份,更有超过48盎司的双人份……撑死。 如果实在是选不好,有一招必杀就是靠在椅背上微笑问服务员,您们有啥推荐的么(What do you have to recommend?)。不要太担心被认为不懂吃,大多数的当地人进各种餐馆也得研究得够呛。一般来说服务员会帮你把选择缩小到两三道菜的范围,你只要从这里面选一个食材顺眼的就好了,反正都没吃过,试试看谁怕谁。 需要说明的就是,曼哈顿的餐厅分量都很大,因为他们默认你一个人只会点一个菜,而且主菜一般都搭配主食(土豆,面包,米饭之类的)。所以他们会把份量弄大好多卖钱……所以如果你不是特别能吃,到这里基本上就够了。不得不笑美帝人傻,想想广东人的早茶,那才是赚钱的王道啊。   关于中国菜馆多讲几句,这边的中国菜分美式中国菜和正宗中国菜,美食中国菜的典型就是左宗棠鸡和橙汁牛柳,总之就是酸酸甜甜的恶心死了,所以还是吃正宗中国菜吧,一般稍微像样点的馆子,都还是不错的,抛开价钱不算,都还像是中国菜的。 只是要辣的就没那么容易了,这边的辣椒一般都是灯笼椒,辣一点都是墨西哥辣椒还带着酸味,所以即使标榜正宗川菜的馆子,也大可以放心点最辣的菜。倒是泰国菜有时候会有够劲的咖喱。当然,要吃最最正宗的中国菜,必须得去唐人街,不管你的美国朋友说他多么喜欢某家中国菜,只要不在唐人街都正宗不了。但是唐人街的中国菜确实有些出乎我意料,某一次去吃了一家广东菜,无论是菜品还是氛围都相当到位,坐在里面只觉得自己是在广州而不是曼哈顿。 另外,在唐人街发现一家Ajisen(味千拉面),这货都开到纽约了,成为装逼名店不是没道理啊!   关于酒水和小食。 如果万一一道主菜不够吃,或者觉得桌面不够丰富,又或者您是公款吃喝不吃白不吃,可以考虑点些小食和饮品。当然餐后甜点也很好,特别是某些意大利菜的提拉米苏和自制冰激凌,只是美国人都太能吃甜的了,甜点都甜到不太健康了。有一次我尝试了一下巧克力熔岩蛋糕差点没被腻死…… 俺有一点觉得美国人没品的一点是,牛排配啤酒,真是胖到死的搭配。估计在这里只有在欧洲菜系的馆子里才会红肉配红酒,白肉配白酒,当然如果是烧烤海鲜的话,记得点Rosé, 发音像肉醉,记得把重音放在后面,基本上服务生就要夸beautiful了。

波士顿两日游记

来纽约之后,日常不管是生活还是工作上都感触良多,本以为会造成这个blog上洪水泛滥,但是到头来发现东西其实都是零零散散,Twitter,人人和微博就够用了。倒是上周末一个人去了趟波士顿,有些有意思的体验,感觉值得写一写游记。 本来想趁美国memorial day的三天小长假去体验一下波士顿这个美国民主的摇篮。但是偶然发现某敏感纪念日这天居然在波士顿附近的吉列大球场有西班牙和美国的足球友谊赛,考虑到巴萨球员可能会前来,于是果断推迟行程。但是这样做的问题也是有的:一是memorial deal是赶不上了,二是普通周末只有两天,还得有一天花在看球上,于是干脆把这次旅行的主题定位为看球和吃龙虾,顺便探访波士顿的两所名校——MIT和Harvard,也算是为俺这个没文化的旅行计划增添点文化…… 虽然提前一周就开始计划,但是事实证明还是晚了,导致最大的开支——旅馆费用大大超支,原因是波士顿这两周刚好赶上大学毕业典礼,又加上MIT 150年校庆校友聚会,周边的旅馆一早就被订光了,于是我按照自己的计划,在球场和波士顿市区中间的一个小镇(Randolph)上订了一间房,令人崩溃的是,因为实在太紧俏,在我搜出旅馆信息结果之后到我吃完午饭回来再次查看之间,房价竟然又涨了20刀!于是立马忍痛果断下手。一间King size bed的房间,花了我177刀…… 然后开始制定交通计划,我预先把想去的地点都在Google Map上标出来,存为一张波士顿之行的个性化地图,这样我就可以拿着手机或者我的Galaxy Tab打开我的地图一路导航过去,到了一个地点玩够了直接把导航目标设定为下一个地点,不走冤枉路也不怕迷路。不得不说,Google Map,GPS以及无限流量的3G手机上网套餐都是伟大的发明!我比以往的驴行者省心太多了。 View Boston Visit in a larger map 至于交通方式,从曼哈顿往返波士顿坐的是唐人街的巴士,往返30刀,还算准点,而且车上还有Wifi,算是相当超值了。而因为吉列球场附近没有公交车,于是决定租一辆车,在dollar car租了一辆compact class,21刀一天,买齐了所有保险+税一共59刀,而波士顿市区则主要靠步行了。 准备停当,就在周六的早上6点开始了一个人的旅行,先坐地铁去唐人街的巴士站,结果路上发现打印的各种预订单和票都没带……好在带着我的Galaxy Tab并且提前把所有的预定都转发到了gmail邮箱,出示电子票还是换到了登车证。在车上晕乎乎补了4个小时的觉上午11点到了波士顿火车南站,顾不得吃午饭,一瓶5-hour energy下肚,直接步行穿过波士顿市区去取车。图中顺便游览了一下波士顿的市区,总体来说很喜欢这个小城,虽然比起曼哈顿来说,这里就像个县城,但是这种周末非常闲适的感觉正是我想要的,大大的太阳,路上没有什么车,大家或者在悠闲地遛狗跑步,或者在路边餐厅享受brunch,直觉得这里像一个欧洲的小城。 到了提车点,这次旅行的第一个惊喜来了,当我办好手续问柜员给我了一辆啥车时,其实我没有期待太多,鉴于上次Avis在我租了一辆三菱日蚀跑车的情况下给了我一辆风牛马不相及的克莱斯勒300,我本来希望他们规规矩矩给我一辆丰田卡罗拉就行了,所以当柜员告诉我是Ford Mustang的时候我还没有反应过来是啥车,直到按下遥控钥匙的一刹那,不远处的一辆白色软顶敞篷版的福特野马(Mustang)尾灯一闪,我才又惊又喜地叫出声来,之前在街上看到过并拍过好几次这款典型的美国肌肉小跑车,没想到居然这就有机会驾驭它了,瞬间觉得就因为这个这趟波士顿之行也值了,何况在这里租车的价钱简直就是在曼哈顿租车的零头! 当然,因为第一次开跑车有点土土地紧张,加上被高兴冲昏了头脑,没有系安全带就冲了出去,到了路上发现之后松了油门去系安全带,结果被一旁的警察叔叔发现了,拉着警笛就把我拦了下来……紧接着就有了俺在美国的第一次跟警察的接触,老老实实交代了之后看我是游客,警察叔叔说了一句:“你不要开车的时候系,要系停车的时候系” 就放我走了。好险! 这一身冷汗搞得我在市区开车小心翼翼,加上之前租车店没有专业GPS可出租了,只好拿手机上的Google地图的导航功能来导航,把手机放在转速表前面,在市区绕了好几个圈之后终于上了高速,体验了一把小野马销魂的声浪和霸道的中段加速,顺利到达酒店check in,事实证明,这家酒店虽然贵了点,但是还是很舒适的,免费停车,免费WIFI以及免费早餐,房间条件也很不错,让我滴血的小心灵有些平衡了。 小歇了一回,在小镇上找了个yelp上评价较高的店吃午餐,没想到居然是家快餐厅……再吃了一个料很足但是卖相和味道都一般的意大利面之后上车直奔球场,然后就发现去球场的路上巨堵无比!有好长一段时间俺就根本没有踩过油门,不停地踩刹车松刹车,靠着怠速一点点往前挪……我就纳闷了,不是说美国人都不看足球的么……看来西班牙这个世界冠军加美国第二大语言出产国的吸引力不一般。 到了球场,球票的扫描却成了问题,因为之前联系买票的一个中国学生的不靠谱,我是周五晚上在网上买的票,因此来不及提前打印,而酒店的打印机又刚好缺墨,好不容易在球场附近找到一家Staples,伊居然因为这场比赛停业!于是怀着侥幸心理让检票员去扫我打印出来的缺墨的票以及Tab上的电子票,都不行。于是被发配到box office找人帮忙,但工作人员拿着我的护照和信用卡折腾了半天之后说因为我是在代理那里买的票,没法去系统验证,因此帮不了忙……而当时球场内都在奏两国国歌了,我都快崩溃到骂街了,这TM是我花90刀买的票啊,还不算我为了这场比赛租车酒店的费用!于是也不跟他们废话,准备再去一旁的售票窗口另买一张票。 绕过去之后,又不死心想去另一个检票口试试运气,结果真就遇到贵人了。俺找到一个检票的大叔说明了情况,想让他帮我再试着扫扫我的电子票,他试了半天也还是不行,不过这是他拿着我的Tab一边做样子拿扫票机扫,一边往围栏里走,并招呼我进去说到一边去扫描。我就这样跟着他进了球场围栏里,然后走出了检票口的人堆之后,他直接把Tab还给我,说:You are OK now, go boy go!  瞬间明白了他的用意,千恩万谢地接过了俺的Tab,然后一路狂奔向三楼看台! 没想到这场比赛的人还真多,后来听广播说,这场比赛刷新了这个球场的观众上座记录,当然美国也不出所料地0比4输给了西班牙,美国孩子们倒是不怎么难过,好多都还是父子同来的,开完心之后就安静地离场开车回去了。 俺也回到停车场去开车,这时才发现因为来时的导航和在球场手机信号不好的缘故(美国的手机信号真比中国差了不是一点半点,虽然确实便宜),手机快没电了,看来至少目前来说,电池续航能力依然是智能手机最大的毛病。因为用我的Tab导航的话在车上不太好放,我还是坚持用手机导航,再看了一眼路线之后就关掉了屏幕显示,全凭来时的记忆和语音导航一路开回了旅馆,加上一路还交通管制,能够顺利开回来还挺佩服自己的…… 在小镇上小睡了一觉之后早上7点爬起来胡乱吃了点酒店的早点之后就开车往市区赶,说起来自己都觉得来了美国之后,不管是工作还是娱乐都有些太拼命了…… 早上路况很好,一路先是压着限速65英里的速度跑,居然还是被各种皮卡面包之类的车嗖嗖地超,让俺都觉得很不好意思,幸亏没开敞篷……一狠心一脚地板油,小野马轰轰作响,速度直奔80英里(大约140公里?)去了,这才逐渐赶上别人,当然,因为怕遇上心情不好的警察,还是只敢偶尔在空旷的路段狠跑。 安全进城还车之后,就换做步行向Cambridge进发,说起来好玩,波士顿的两所世界名校:MIT和Harvard所在的地址居然一个叫Cambridge一个叫Oxford…… 直到这时,才真正开始体验波士顿这座城市,一种悠久而不陈旧的感觉,安静中蕴藏着智慧。 从Longfellow Bridge 上跨过Charles river,再走不到一公里,就像进入了一个Geek Town,这里是MIT的地盘,连餐馆都叫Miracle of Science,连理发店都取名叫VIM。在MIT的校园里当了一回观光客,感觉自己就好像在上大学时经常看到的慕名来北大参观的孩子一样。不得不说,这是一个让人重燃学术梦想的地方。为此,我专门去找了MIT计算机系的CSAIL(computer Science & Artificial Intelligence Lab)所在的楼,谁知道第一次路过时还错过了……因为这楼的造型实在太奇特,让我还以为是艺术系或者是建筑系的地盘,所以说,大神真就不一样。后来才从学设计的同学那里知道,这乃是Frank Gery的设计…… 然后一看时间还早,就去参观了一下MIT的博物馆,说这是此行最大的惊喜也不为过!和北大那个挂满了人头像和领导题字的校史馆不同,MIT博物馆更像是一个科技馆,里面有源自MIT的各种科学技术研究项目的展示,幸运的是来得还正是时候,周日12点前免费参观:) 于是先在一楼听了一个退休工程师介绍LEGO的mindstorm可编程机器人,然后又跟这个可爱的老头聊了很久关于编程和教育的东西,确实这个东西不仅仅是一个价值300刀的玩具,还有各种可扩展的硬件,类似于Android App Inventor(或者说App Inventor抄的它)的简单可编程环境,可以自己编写程序下载到机器人的电脑中执行。虽然简单,但是很多编程的基本概念都涉及了,包括循环,多任务,封装,状态转换等等……据老工程师说,这款机器人有一个education版本,本美国大学工程学专业广泛用于入门课程的设计项目。 于是我想,要是我小时候能有这种玩具,甚至在大学里能玩玩这个,也许现在就能当一个更好的码农了…… 接下来又去二楼看了MIT 150年校庆的特展,里面各种混杂着Geek风的科技展品让我觉得这简直是我来美国之后参观过的最棒的博物馆了,甚至远胜MoMa! 从MIT博物馆出来,在同事推荐的Harvard

半夜三更的狗血一下

俺一般不这么水,本篇更新的起因是某人在人人上转了一条程序员小清新的推文/微博/状态? 世界上最远的距离,是我在if里你在else里,虽然经常一起出现,但却永不结伴执行 于是就有了俺的下面这次狗血实验: #include <iostream> int main(int argc, char * argv[]) { if(1) { std::cout<<"if"<<std::endl; goto othercase; } else { othercase: std::cout<<"else"<<std::endl; } } 果然浪漫和码农不可兼得么? 本文网址:http://blog.perlfect.me/2011/05/31/nonromantic-programmer.html

美国B-1签证签经及见闻

今天头一回签美国签证,花了一上午,排了两个多小时队,花了半分钟面试,然后水过。一开始还挺紧张的,结果发现美国大使馆的工作人员还是非常友好的,比上次去签西班牙的时候好多了,强国就是有自信! 分享一下今天的签经及见闻: 因为之前没有去过,早上特地请了假从东直门下地铁直接打车过去,结果背着包不让带进去,还花了10块钱在旁边的签证咨询服务中心存包……明抢啊…… 紧接着在门口排队等着进去的时候一老太太问我,你要查姓名电码么?我这才想起来,之前查了电码,但是记在电脑上了,没带来……拿手机查,E71上手机百度不给力……于是再次被抢,花了10元查姓名电码……更傻的是发现进去之后又电码表可以查…… 这里提醒后来人,在DS-160的确认表上个人信息栏右侧用圆珠笔写自己的中文姓名,电码,住址,工作单位,单位地址以及吧签证费第一页贴在下面空白处是必须的,反倒是看到好多人看网上攻略把照片贴在护照首页这个不是必须的。 进去之后先装了一次老鸟,某mm没查电码也没在门口被老太太忽悠,正急得不知如何是好,结果我去找胶棒贴签证费收据的时候不幸找到了电码表书,于是捶胸顿足诅咒了门口的老太太之后故作casual地把电码表书递给了该mm…… 然后是交材料:护照,DS-160确认页,邀请函。收材料的是个典型北京老太太,不明所以的我还以为美国大使馆找了个离退休公交售票员来当签证面试官…… 老太太确认完材料后给我们编了号,然后按编号排队去录指纹,十个指纹都得录,我很悲剧地中奖了,录完其它八个手指之后,在录两个大拇指时工作人员的机器崩溃了……于是我在窗口等她重启……重启完紧张得我一手汗,又按了好多遍—_—。 然后就是最费时的排队等面试了。大概排了两个小时吧,听旁边各种人吹牛聊天,我前面的一哥们是F1的留学生,穿得有点潮又有点非主流,同时怎么看怎么不想搞学术的。聊天时挺活跃,面试时说起英文来就蹩脚了……听了半天听懂一句“my father do coal business, my mother is house wife”……呵呵。 我后面一貌似资深商务人士一边说自己好烦不想去美国开会,一边又说自己B-1,B-2都要,还要去旅游……真是装的一手啊。 轮到我的时候,面官就问了几个很简单的问题: -去美国干嘛? -开会。 -开啥会 -(照着邀请函背诵了一下) -以前去过美国没? -没 -你干嘛的? -码农 -你公司干嘛的? -此处省略若干字(参考www.freewheel.tv) -你住北京么? -是的 -你结婚了没? -结了 -有孩子了么? -没 然后就撕条,祝旅途愉快~连我的护照都没翻开! 然后出门左转再左转,照着条子上的地址找到一家中国邮政再被宰一刀,花了32元请他们快递护照回公司…… 总体来说,虽然早上来的时候看到有因为被拒签而在门口骂骂咧咧的大妈,但是基本上现在签证还是很好过哇, 害得我白紧张半天…… 本文网址:http://blog.perlfect.me/2011/03/9/usa-visa.html

难得的值得推荐的软件——Endomondo

最近开始正式减肥慢跑,然后开始逛论坛,选装备,没想到跑鞋还没定下来,就发现了Endomondo这个好东西。 摘抄一段从runbible上看来的: 按照官方的解释,endomondo是两个词根组成:‘Endo’是内啡肽的简称,这是在运动期间释放的物质,而‘mondo’的意思是世界语的世界。而endomondo的功能是,安装在带GPS的手机之后可以由GPS跟踪记录使用者的训练时间、路程、速度等信息并上传到网站做记录。 简单的来说,它是一个利用手机GPS来追踪你的跑步速度,距离,路线图的软件。要关联一点流行词,那就是在这个软件后面还有一些社区特性,比如每次锻炼之后都可以将你的锻炼状态自动同步到facebook和twitter,呵呵,免翻墙(要能支持人人和新浪微博多好...)~还能在网站上查找地图上附近其他人的活动以及跑步路线。 为什么要推荐这个呢?因为我之前一直觉得现在移动应用五花八门,创意的点子基本上都被国内拷贝光了,知道发现它我才诧异地发现:这个东西正是我要的,为啥国内就没有人山寨它呢? 昨天刚在人人和facebook上更新了一条消息,第二天就有国内外的同学朋友在Endomondo上加我为好友。所以我想大概好东西自己就是最好的推销把。既然是好东西,那我就多费点口舌介绍给所有周围的人吧。 初步体验下来,我觉得Endomondo有以下好处: 非常方便,只要带着支持GPS的手机就能用,在中国GPS服务不收费的情况下,只需要支付GPRS流量费就可以使用。更贴心的是,只要登录:http://www.endomondo.com/download/,输入自己的手机号(中国手机号也可以哦!),它就能直接把下载安装链接发到你手机上,点开就能安装,装好了直接是中文界面。 支持的平台和系统相当多,至少是我目前看来平台支持最全的手机软件。甚至连我的E71这个时代的弃婴也能支持,虽然功能可能有限,但是至少数据采集的质量不错。而且Android,iOS平台设备都支持,以后换了手机也能继续用。 拥有比较专业的统计和展示功能,每次的锻炼都能在自己的日历上标记一个事件,里面记录了时间,地点(用故Google Map展现的路线图,因为国情,地图模式有偏移,使用卫星图的话就相当精确了),时长,距离,每公里最快,最慢速度等,在加上网站上的comment功能,其实就相当于自己的运动日志了。据说它的高级版本还有更加有用和有趣的统计数据...不管怎样,有这样详细的记录,慢慢地就能看到自己的进步,这是多么值得期待的一件事啊 社区同步功能无形中成为了一种监督的力量,话说个人觉得一个爱好的坚持主要靠两样:一是器材,二是互相监督。一想着大家都知道你在开始锻炼了,那你就会不自觉地想坚持下去。 另外一个贴心的小惊喜是,这个软件在一定的锻炼时间或距离之后会有语音提示,因为带着MP3在跑,具体的提示频率不太清楚。但是相信这个功能还是很有用的,你想想看,一边跑一边有人在旁边说你刚刚跑了xx千米,用了xx分钟,就好像有教练在给你加油鼓劲一般…… 最后自曝一下我的Endomondo ID:http://www.endomondo.com/profile/870732,欢迎加好友。 本文网址:http://blog.perlfect.me/2011/02/16/endomondo.html

两本“敏捷”书的读书笔记

最近的一周里,连着读了两本书,分别是中文版的《高效程序员的45个习惯》和英文版的《Rework》。好吧,也许不都算读,《Rework》我其实是听的电子书。这两本书都不算难读,既没有代码也不会有公式,所以很少见地我居然用不到一周的时间就看/听完了两本书。 前一本看起来像是程序员读的书,但是我倒是觉得书里大多数内容是写给软件项目管理者看的。也许只有他的英文名称才能揭露它的本质——《Practices of an Agile Developer》。没错,这又是一本鼓吹敏捷开发,敏捷管理的书。快速地读下来,其实同感之处还是颇多的,只是我很怀疑这样一本菜谱式的书,到底对于一般人来说有多少益处。如果不在实践中学习,也许读者只是点头赞同,然后就遗忘了。 另外,也许这45条建议里有超过35条都是非常正确的,但是都讲得太大道理了,有时还给人一种玄机的感觉。就好像厨神对着连锅铲都刚刚才拿稳的小学徒说:这道菜最重要的是把姜切丝而不是切片……而谁都知道无论哪道菜,最重要的都是煮熟。同理,作者也并不关心你的业务有多复杂,技术难度有多大,他只是强调会议应该站着开,让客户作决定,不要固定你的产品价格等等。 总体来说,我觉得它的后面几章,包括敏捷编码,敏捷调试和敏捷协作是有价值的,前面的则是凑数的,考虑到它加上头尾总共也才9章,我觉得还是值得一读的。 后一本我是偶然载到了英文版的有声书,于是在上下班的途中断续听完了。也许有声书的原因,我觉得Rework这本书与其说是创业经验分享,倒不如说更像是一本包含着炫耀情绪的励志书。就如同我听过的其它一些类似于Donald Trump的富翁书,Buffett的投资学一样,它告诉你的是我们这样做成功了,我们很酷,所以你也应该这样做。 “做得更少,不加班,拒绝讨好客户,把公司的规模控制得很小,员工分布在世界各地”……靠着一些反常规的方法,让自己显得很酷,而唯一的论据则是:我们这样做成功了。 但是同样的问题是,这对于其他人有多大用呢? 就好像很多名人传记都不会告诉你他们最落魄的时刻,最见不得人的历史一样,他们的成功必然有着一些和别的成功一样的特性,只是它们并不那么酷,于是不值得写了。可如果读者要真的天真的以为这些酷的东西是他们成功的秘诀,并奉若圭臬,那就只能在失败的道路上越走越远了。 为什么把这两本书放在一起总结呢?因为从某种意义上来说,它们都是鼓吹敏捷的书。 越来越觉得,“敏捷”已经成为了一种宗教,原因是多方面的。 作为一种软件开发方法论,他们在很多的书面文字中使用的是“适度”,“平衡”,“越少越好”这样的字眼,这在讲求数据和精确的IT业界确实是不多见的。 也只有敏捷,是每年需要开大会交流,但是却不讨论任何技术内容的技术圈。过往参加过的几次敏捷的会议,一般的议程都是国外的敏捷大师先鼓吹一遍,国内的土鳖们再来分享一下我们是怎么实践的。 当然,敏捷还是出版社最爱的话题,因为经典的技术都已经有了无数的经典书籍,新的技术都需要多年的积累才能出书,只有敏捷是可以不停地靠方法论出书的。 所以,我对敏捷大师的印象就是很炫的PPT,很好的口才,然后就是“你应该这样这样做,因为:一,我们成功了,二,这样做很酷”,再然后是我们该怎么做呢?再然后就没有了……于是就有了一大堆土鳖年复一年地分享,连带炫耀说我们掌握了敏捷的精髓。 也许是Joel Spolsky所说的Customer oriented software developement把我折磨得有些愤世嫉俗了,我只想说,别装了。快点把产品做出来,快点赚到钱,这就是敏捷。而你教不会我这过程中的实践,忽悠的也是我早就懂的道理。 就好像老罗说没有人能7天搞定GRE,单词就靠死记硬背一样,我也相信,软件开发没有银子弹,没有奇技淫巧,任何利润都有成本。而如果把还要把偶然的成功中某些并没有起作用的东西总结成方法论,这就跟咱IT从业人员的智商有些不符,而更像是个忽悠派作家了。 本文网址:http://blog.perlfect.me/2011/01/25/rework-and-practices-of-an-agile-developer.html

下一课:没有代码是没有bug的

之前的一篇blog Bug是你的,也是他们的,但归根到底是你的!刚写了我质疑开源代码结果最后发现是自己的bug,结果下一课马上来了。 还是snort的AC pattern search实现,某一天突然发现,这个模块又出问题了,原因是这个程序是要匹配字符串开头的,但是当一个状态有多个输出pattern的时候,该算法传给用户出入的Match函数的居然不是存放输出pattern的链表,而是该链表的第一个节点的用户数据(udata),pattern以及匹配的位置index,连next指针都没传入…… 程序使用的Match函数是要判断index值的,也即是index == 0 表示匹配上了字符串开头。 但是如果第一个pattern恰巧是我们想要找的pattern的后缀的话, 就会导致index不等于0,也就是说,没有匹配上开头。例如,我们要找的是foobar,但是状态机中还有一个pattern为bar,那么输出的pattern有可能是bar,此时index值(即匹配字符串在输入字符串中的开头位置)等于3,导致Match函数返回失败。 当然,我想acsmx2.c的作者可以说这是feature而不是bug,但是把函数里的一个if换成while来迭代整个状态输出链表会有多难呢? 最后,给这个代码打了个简单的patch,用一个while循环迭代输出状态链表,直到遍历或找到所要的pattern为止,然后程序就正确工作了,如下: --- /src/sfutil/snort/acsmx2.c +++ /src/sfutil/snort/acsmx2new.c @@ -2277,7 +2277,7 @@ if( ps[1] ) { mlist = MatchList[state]; - if (mlist) + while (mlist) { index = T - mlist->n - Tx; nfound++; @@ -2286,6 +2286,7 @@ *current_state = state; return nfound; } + mlist = mlist->next; } } @@ -2294,7 +2295,7 @@ /* Check the last state for a

为什么装逼是重要的

其实我是不太爱使用装逼这个词的,但是找了半天我这个非文艺理科生发现居然没有更贴切的用词了…… 昨天早上在公司楼下,一位穿着严实得有点像快递员的大叔进星巴克买咖啡,要小杯,在向店员咨询品种的时候,店员很不耐烦地帮他点了一个抹茶拿铁……我偷瞄了一眼价格牌,居然是最贵的品种!比我喝的当日咖啡贵了将近一倍,还TMD不是咖啡!这不是欺负人家第一次来么?大叔愣了一下,还是只能付了钱…… 此时看看那个平时对着写字楼里的外国人笑颜如花的女服务员,我胃里一阵阵犯恶心。 联想到上次某同学给我讲的一个故事: 他们从大连飞北京,到得晚了一点。去换票的时候居然告诉他们没票了!一问原因,说是航空公司网上订票超卖了,结果没有人退票,导致飞机上座位不够了,给出的解决方案是乘坐下一班飞机,要耽误几个小时…… 正哭笑不得呢,来了另一个中年妇女,得闻同样的事情之后,马上亮出自己XX委员的身份,还说自己老公是XX局长,开始耍领导威风,开始气势汹汹地打电话……谁知立马事情就迎来了转机,托这个中年妇女的福,该同学最终不知怎么地愣是坐了一班只晚了十分钟飞机抵达北京。 此时突然我就想起了豆瓣的装逼指南小组的某些帖子,例如:“教你第一次坐飞机时装老鸟”,“星巴克之装逼指南”,才发现原来当做笑话看的贴子是多么的具有信息含量,多么地使用啊,才发现装逼指南这个小组真是个符合中国人人性的黑色幽默小组。 其实航空业的服务一般来说还算好的了,因为票价的门槛在哪里,一般都还是客客气气的。而面对普通的类似于上面的星巴克的那种服务业,价格不高范儿不小的,装逼就更必要了。在北京这种好摆谱但是很多人没谱可摆的地方,就更妖魔了。最最典型的地方就是商场,在90%以上的阿迪达斯或者耐克店,你要穿着李宁去逛,只要不拿了衣服直接出门,都不会有人来鸟你,而你要穿着阿迪达斯耐克去,哥哥姐姐的叫得别提多亲热了…… 更奇怪的是看起来北京好多土著小孩儿居然还把在阿迪达斯或者耐克卖货当荣耀一样,简直要靠拽死你来体现他家“没神马不可能”的风格。要是一不小心卖的是三叶草神马的,那简直就得你跪着求他卖给你了。不管是星巴克,阿迪还是耐克,都TMD是国外的大路货,真不知道为什么还有人觉得自己因他们而高贵……阿迪王都在NBA现场打广告了您们知道么…… 所以说在中国这种狗眼看人低的地方,装逼很重要! 本文网址:http://blog.perlfect.me/2011/01/19/zhuangbility-is-important.html

Bug是你的,也是他们的,但归根到底是你的!

某天,我发现我的一个程序的一个字符串匹配模块有些问题,该模块用的是经典的AC模式匹配算法在snort中的实现。但问题是我发现有些它匹配出来的字符串显然并不符合匹配条件…… 于是开始debug,经过一轮艰苦地调试,发现只要字符串以r或者s结尾就会被匹配,这也太奇怪了,用gdb跟踪打印出现场之后,发现在程序找到匹配状态的时候,表示匹配目标串的位置的index居然是个负值,打开源码一看,计算index的代码如下: int index = T – n –Tx; 其中T代表当前指针位置,Tx是字符串头指针,而n则是匹配上的特征子串长度。 于是我小小地鄙视了一下snort的acsmSearch实现,一个应用得如此广泛的函数,居然都没有一个安全检查。 于是加了一个对index值的判断,程序果然运行正常了。本以为问题就这样解决了,但是在回头看了一眼AC模式匹配算法的论文之后,才发现情况有些不合逻辑,如果index为负,则说明算法在运行了还不到特征子串长度的匹配之后就找到匹配了,这怎么可能呢? 于是再回头去找,才发现原来这个程序在两次调用的acsmSearch2的时候传入了同一个表示初始状态的变量,而且没有清空!acsmSearch2函数的原型如下: int acsmSearch2 ( ACSM_STRUCT2 * acsm,unsigned char * T, int n, int (*Match)( void * id, int index, void * data ), void * data ); 最后一个data实际上是一个int指针,表示的是自动机的初始状态。 而我的这个程序两次调用使用的不是同一个自动机,所以导致上一次调用的最后状态(而不是初始状态0)被作为第二调用的初始状态传入了函数,而第一个状态机中的非匹配状态在第二个状态机中就刚好匹配上了一个有输出值的状态。 所以说,这个bug的根源最终在与我使用了一个有状态的变量,而且没有在多次调用之前清空它,导致了语义上的错误。 这个错误如此隐秘,以至于一开始我都怪到开源代码头上了,辛苦了这半天,有了如下总结: 不要轻易鄙视他人的代码,特别是开源的代码,一般来说,bug是你的,也是他们的,但归根到底,是你的…… 当一个函数要作为接口被被人所调用时,它就不应该需要设置一大堆参数,即使这些参数真的需要,也至少应该提供合理的默认值,或者使用包装函数来包装一下不同的参数值。 写这种一个需要传入一系列参数,并改写其中一些的函数的人真是折翼……用这种函数的人真是无底线…… 开始想念函数式编程的好了,虽然现在还是会有受限制的感觉,但是至少不会产生这种令人意想不到的副作用。 本文网址:http://blog.perlfect.me/2011/01/7/all-bugs-are-your-bugs.html

2010总结:在日渐平淡的生活里我们不能停止折腾

又到一年总结的时候了,虽然从12月初开始就看到各色总结(主要是水木WL版的炫耀贴和求同情帖),但一忙起来,自己倒忘了。窗外呼呼的寒风把北京描绘得更加的恶劣,仅靠声音就吹醒了我晚上跟几个研究生实验室同学喝过的酒。反正睡不着,就先写着吧。 不知道从什么时候开始写年终总结,大概是觉得自己的人生不能再浪费的时候开始吧。以往都在设置了访问权限的Space上写,能够随意一些。今年居然第一次要写在公开的博客上了,还是觉得有些扭捏。有时候觉得自己最大的问题就是想要什么不敢说出来,因为不敢说,也就更不敢去追求,到最后只能看着人家得偿所愿,而因为人家都得了,自己还在这边怨念就更显得不好意思了,导致恶性循环。因此今年决心改改,就从把总结写在博客里开始。 今年是很丰富的一年。 首先,工作开始步入正轨,虽然所在的公司还没有开始盈利,但是确实可以感觉到自己和公司都在创造价值了。另外,除了写代码,也参与了一些其他的活动,例如校园招聘宣讲,面试等等。然后是完成了好几件人生大事,虽然有时会觉得被这些事情拖累,但是有哪个行者是没有行李的呢?     年初,啃老买房,结婚。 在1月最后一天,一个寒风萧萧的下午,我和kiki同学坐城铁来到了以前从未涉足过的回龙观地区,看了一下午房,于当天晚上拍下了定金,签约地点值得一说,是清华东门的门卫值班室。 当时看了几套房,选了一个面积最大,单价最便宜但是各种条件仿佛也是最差的房子,之所匆匆忙忙买房,一是怕价格再涨,二是因为手里捏着某个不是很好的新盘的不是很好的鸡肋号,三是春节回去就得结婚。不得不说,人在被逼做选择的时候,是没有底线的。 唯一值得炫耀的一件事是我执意给父母打了欠条,我要用自己的努力,把他们的辛苦钱连本带利全部还上。 然后我就开始了这一整年被水木房版网友称之为“史上最屎买房人”的历程,不细说了。 签了合同拍了定金,欢欢喜喜回家结婚。典礼都由父母操办,盛大但是省心,缺憾却是没有什么值得回忆的东西,以至于感觉自己的婚礼自己也只是列席了一下而已。特别是后来参加了同实验室阿珍同学的婚礼之后,才觉得省心实际上是把回忆也省了。 现在想来,唯一记得的事情就两件: 一是婚礼当天我致辞,毫无准备只好抖陈仓烂谷子,把kiki说哭了,台前一桌女同学也都哭了,六年长跑三年异地,自己都觉得不容易。 二是婚礼前几天拉了一帮要好的中学同学喝酒,红酒啤酒红牛加小二都上了,菜还没上齐我就挂了,最后在饭店签单的时候我连钱是多少都没看到。但印象很深刻的是同学们也都没保留,我很开心。就是半夜跟kiki俩人在红牛的兴奋劲和小二导致的头痛中睡不着觉很痛苦。而且接下来三天都有些晕,借了朋友的朋友一辆新车练车差点把车开上隔离带…… 春节过完回到帝都,开始工作,除此之外上半年就折腾两件事:蜜月旅行,跟买的房子的房主死磕。 买房的故事很长,以后另开帖记叙,大体就是各种巧合害我一次次承受损失,而且每次都以我的年薪计,导致我们都差点放弃了蜜月旅行。 但是也许我想要趁年轻时出去走走的欲望实在太强烈了,最终我们还是去了一趟西班牙,也总算是圆了我出国看看的梦想,在各种方式都没法获得出国机会的时候,看来选择自费是一个靠谱的投资。 5月份我们完全没有使用旅行社或者任何代理机构,两个人就这样相互依靠着在万里之外借着米其林和LonelyPlanet闯荡了半个月。 第一次出国门收获良多。既在巴塞罗那的加泰罗尼亚广场参加了巴萨夺冠后的彻夜狂欢,也在塞维利亚的瓜达尔基维尔河畔和kiki享受了微风中的夏夜的惬意。既享受了最舒适的从里斯本到马德里的Hotel Train 双人包厢+早餐,也体验了半夜发车全程漂移的廉价夜巴士。既住过了120欧一晚的四星级酒店,也大喇喇地睡过了巴塞罗那的机场。同时,既有好心的陌生人主动给我们指路,借手机给我们打,指导我们点菜,也遇到了卑鄙的小偷偷走了我们100欧。 西班牙的Tapas和Sangria,葡萄牙的海鲜和Rose葡萄酒,里斯本贝林区的贝林蛋挞,塞戈维亚的Jose Maria白瓷盘切的烤乳猪。Capo de Roca的绝美天涯之旅,佩纳宫的山路巴士漂移体验。更有和本科同学qinqi一道的葡萄牙海边自驾公路之旅。太多太多值得眉飞色舞的经历,而优美的环境,闲适的人民,直让我感觉这两个快破产的欧洲小国就是一处梦境。果然人肉翻墙改变世界观,不由得想让人更想移民。 但是假期毕竟是短暂的,在挥霍了工作之后最长的一段假期和最大一笔开支之后,我们回到了天朝,从7月开始装修房子,牺牲了所有的周末时光,在大热的天气里跑建材城,跟供应商施工队砍价扯皮。幸好先后有我父母和kiki的父母过来帮忙,要不然我非得疯掉不可。 10月份,终于告别了出租房,住进了新家。充足的阳光,宽敞的房间,生活质量从此不同 拥有自己的家,是一个新的开始,对于我来说,一直觉得自己走得不够远,自从8年前来到北京,就一直窝在学校里,就连工作了,也还租在学校门口住!时不时去学校蹭饭,蹭球,散步。在惬意的同时,我又不得不清醒的认识到,如果不从物理上拉开跟学校的距离,我的心可能永远走不出校门! 现在回头看看我八月份的一条人人状态:“夏夜,少人,微风,路灯下满地槐花的校园如何不比那几千块的民工薪水更珍贵?”我庆幸自己借着新家这样一个契机远离了学校,因为我早已经不再是学生了。   同时在工作上,除了日复一日的码农工作以外,也有了一些新的亮点。年中做了一些数据分析,兼配合大牛进行了一些系统性能方面的调优,公司也因此在世界杯期间获得了不少的声誉和利润,同时心里也非常开心自己的努力终于有了可见的效益。不大不小的遗憾就是这届世界杯其实不怎么好看,加上时刻惦记着公司的系统,导致很多场比赛最后留下的印象都是:中场休息播放的是EA的广告…… 然后就是参加了公司的校园招聘,前后两场,去母校跟学弟学妹交流,把自己的感想和经验分享给他们,并参与了之后的面试工作,从另一个角度理解了求职与面试这回事,受益超乎想象,这个也得另开帖才说得清…… 12月份,终于房子的过户尘埃落定,一年的时光也就这样过去了。 总体来说,这一年是有料的,但是从另外的方面来说,这一年却也不是那么令人满意的。 一方面发现自己有些被规律的生活给困住了,对于新的知识不再那样有激情了,对于体育锻炼没有那样坚持了。更可怕的是,发现自己除了工作,几乎没有为其他的事情做过持之以恒的努力了,包括之前一直想要实现的出国读PHD的计划。 另一方面,在工作一年半之后,发现工作也并不是那样激动人心。收入并没有像想象中的那样快速增长,薪水不像标称的那样够花,积攒了一年半,工资卡上也没有什么存款。当然,自己在工作中发挥的作用也没有自以为的那样大,而之前认为完美的公司也有同事开始离职。 之前一直觉得出来工作就是为了挣钱,现在才发现,打份码农工那不叫挣钱,只不过糊口而已。而随着北京开始限牌并加税,工作的另一个目的之一——买车也变得更加难以实现。 感觉自己之前像是为了求财放弃了一切,到最后却发现连财都没求到……直到回首,才发现其实自己原来还有别的追求和理想的。看来想要摆脱目前的囧境,只有两条路:在工作上寻求物质回报以外的快感,在工作之外发展新的生活方向。 而这些都需要时间投入和执行力,因此对于新的一年,我的展望很简单,如题:在日渐平淡的生活里我们不能停止折腾! 本文网址:http://blog.perlfect.me/2010/12/29/review-2010.html

域名服务商都是流氓....

本文网址:http://blog.perlfect.me/2010/12/9/domain-providers-are-all-asshole.html

让遇到问题的python脚本打印错误然后继续干活

有些需要作为daemon的python脚本是需要容错性的,不能因为一次的处理失败就退出了,于是我们有类似的写法: try: #do some stuff 1⁄0 #stuff that generated the exception except: pass</pre> 但这样的问题在于,不管try block中的代码内部是否出了问题,都会闷不声响地继续执行,导致结果错误,因此,我需要类似java里的printStackTrace之类的函数。 Google了一下,如下:   import traceback try: #do some stuff 1⁄0 #stuff that generated the exception except: traceback.print_exc() pass print “i am still here” 这样问题就解决了,这样做不但在运行时可以在保证脚本不停的情况下发现错误,更重要的是在测试阶段不会因为用了pass语句导致未意料到的例外被放过了。   本文网址:http://blog.perlfect.me/2010/11/25/python-traceback.html

链接存档:Daemonize a [perl|python] script as Linux service

刚好正在折腾想把一个脚本弄成daemon的系统服务,普通的脚本不能直接用/etc/init.d/functions里的daemon函数来放置后台。看了一下代码,它只是把程序的输出给重定向了,但是从当前shell detach这个活还得脚本自己来干...都不知道加个&,居然好意思叫daemon... 偶然间找到这个,觉得有用,先存下来: http://executionexception.wordpress.com/2010/06/18/moosexdaemonize-and-init-d/ 可惜我用的是python...于是继续找 google search的第一条记录: http://motomastyle.com/daemonizing-a-python-script/ 总的来说,还是得自己做detach,然后发现其实这里有相关代码的详细的注解: http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/ 本文网址:http://blog.perlfect.me/2010/11/15/daemonize-a-perl-script-as-service.html

Appengine应用清除memcache缓存的方法

最近时不时地改改本blog的代码,一个挺让我头痛的问题就是新发布的版本总是不能立马展现出来,要怪就只能怪之前我为了节约资源设置了比较长的cache过期时间。但是这总不是个事,特别是今天因为新的首页代码老出不来,bshare的网站认证就老是过不了。 于是上网Google了一下,发现在stackoverflow里大家最推崇的方法是把自己的memcache记录的key都加上应用版本号作为前缀。但是这样的话,memcache记录的更新就依赖于应用版本的更新,一来我觉得cache更新的需求并不一定是由程序版本更新引起的,二来向我这种懒人,是不可能那么勤快地去改程序版本号的。当然,最大的原因还在于,改key就得改代码,我暂时还没那么闲…… 所以,上面stackoverflow链接里的那一帖中某个回复里提到的remote_api就让我感了兴趣,实际上,想要清空cache可以利用appengine提供的remote_api_shell.py连接到自己的程序,并在控制台中执行memcache记录的清空。具体步骤如下: 首先确保appengine应用能够正确地映射remote_apt所要访问的url路径,具体文档参考:http://code.google.com/appengine/articles/remote_api.html 以perlfect用的micolog程序为例,就需要在app.yaml里配置如下handler: handlers: - url: /remote_api script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py login: admin 然后,就可以在命令行下使用如下命令访问并清空应用的cache了: lobatt@fw:~/workspace/google_appengine$ python remote_api_shell.py perlfectblog Email: lobatt@perlfect.me Password: App Engine remote_api shell Python 2.6.6 (r266:84292, Sep 15 2010, 16:22:56) [GCC 4.4.5] The db, users, urlfetch, and memcache modules are imported. perlfectblog> memcache.flush_all() True 另外,这个remote shell实际上是一个python shell,所以可以用dir来查看当前对象的帮助: perlfectblog> dir(memcache) ['CAPABILITY', 'Client', 'DELETE_ITEM_MISSING', 'DELETE_NETWORK_FAILURE', 'DELETE_SUCCESSFUL', 'FLAG_COMPRESSED', 'FLAG_TYPE_MASK', 'MAX_KEY_SIZE', 'MAX_VALUE_SIZE', 'MemcacheBatchIncrementRequest', 'MemcacheBatchIncrementResponse', 'MemcacheDeleteRequest', 'MemcacheDeleteResponse', 'MemcacheFlushRequest', 'MemcacheFlushResponse', 'MemcacheGetRequest', 'MemcacheGetResponse', 'MemcacheIncrementRequest', 'MemcacheIncrementResponse',

64位Ubuntu10.10安装QQ以及PPStream

好不容易有国内的软件支持Linux了,PC却也进入了64位时代,而QQ for linux以及PPStream for linux的deb包都是基于i386平台的,因此下载下来直接安装的时候就会报错:Wrong architecture 'i386'。 今天网上Google了一下,找到了解决方案,记下来备查:   $ sudo dpkg -i --force-architecture linuxqq_v1.0.2-beta1_i386.deb $ sudo apt-get install libqt4-core libqt4-gui libqt4-webkit $ sudo dpkg -i --force-architecture ppstream_1.0.0-1_i386.deb 本文网址:http://blog.perlfect.me/2010/11/11/install-32bit-application-on-64bit-ubuntu.html

开始用Ubuntu工作

好久没有折腾过系统了,最近发了一台thinkpad T410i,因为觉得没有自己的linux环境写程序会很不方便,于是想给它装个linux系统。 以前一直用Fedora,对于Ubuntu这种UI化有点过的系统有点不适应,但是没办法,手头只有Ubuntu10.04的盘,于是拿它开始装系统。 T410i的系统自带了一个Windows7的home basic版本,本来不想要,但是一想可能还需要拿这个本玩玩星际2,于是就装了双系统,安装的时候用Advanced选项顺便分了一下区, 把扩展分区分为三块,50G给了linux的/目录,100G给了/home目录,都用了Ext4文件系统,剩下150G给了Windows。 安装好之后直接升级内核,看了网上的指导,一条指令搞定: sudo apt-get update & update-manager -d 然后就出问题了……看来Linux的测试覆盖还是不够。问题出在无线网络管理上,network-manager不见了(右上角任务栏里的无线网图标),于是手动启动,告诉我nework-manager已经启动了,折腾重启了几次,发现图标又有了,但是wireless networks一栏写着”device not managed”,于是拿它放狗搜,找到一个很简单但是看起来不那么完美的方案: 修改一下:/etc/NetworkManager/nm-system-settings.conf # This file is installed into /etc/NetworkManager, and is loaded by NetworkManager by default. To override, specify: ‘–config file’ during NM startup. This can be done by appending to DAEMON_OPTS in the file: # /etc/default/NetworkManager # [main] plugins=ifupdown,keyfile [ifupdown] #managed=false managed=true 把这个ifupdown的managed参数由false改成true之后,nework-manager又能控制wlan接口且能看到无线网连接状况了,不过我其实很怀疑之前无线网也是工作的,只是我不知道如何在命令行下进行连接而已。至于为什么升级内核之后无线网就出问题,我认为是升级的时候配置文件被修改了…… 然后是联通ADSL拨号,确认猫连接上,然后用pppoeconf配置自己的拨号帐号。填好之后就可以通过命令: pon dsl-provider 来拨号上网了。 然后开始折腾VPN。 因为需要使用Cisco的VPN,又是64位的机,本来的计划是安装vpnclient-linux-x86_64-4.8.02.0030-k9.tar.gz。简单地安装不成功,所以参考了一下这篇:http://www.painfullscratch.nl/code/vpn/,给代码打了一个patch。 总之就是新版的64位内核有一个问题(当然也可能是新版的内核做了改进),因此需要对代码进行一些修改,除了两个patch之外,还有一个修改就是把系统源代码中的netdevice.h中的某个数据结构由const改为非const…这些家伙就不能用的时候cast一下么?无奈没有时间去读代码…也罢,就这样吧。 悲剧的是我把vpn服务设为启动时运行,导致启动超慢,进不了系统。之后是切换到10.04的内核后,把vpnclient卸载了才能重新进入10.10的。因此网上说的较新的内核使用这个包连VPN会死机是不假的。 被vpnclient坑了一回之后,回到最简单的解决办法: sudo

读后感之曼昆是个哲学家

今天下午阳光明媚,是北京秋冬冬之交难得的好天气!于是感冒初愈的我决定继续宅在家里看书... 看《经济学原理》,曼昆在讲述机会成本时,举了一个例子,说一个农民教班卓琴,一小时赚20美元,这天他花10小时种了价值100美元的种子,假设这些种子的收成总共能卖200美元,问该农民的经济收益和会计收益各多少。会计收益很简单,账面收益-账面成本=100美元,而经济收益考虑了机会成本,也即是说,该农民因为种地放弃了每小时20美元的教课收益,因为经济收益还得减去这10小时的放弃教课所损失的200美元,所以总共损失100美元。 于是我突然想把这个例子扩展一下,假如一个码农:写代码,每小时收益10美元(别不满意,这很不错了……),而每小时读书,其获得的知识,对其事业的促进,折合成收益也是每小时10美元。 这个例子就有些哲学意味在里面了,因为你无论如何都只能做好一件事,所以: 如果你花一小时写代码,你的收益是账面收益10美元 - 放弃读书的机会成本10美元 = 0; 如果你花一小时读书,你的收益也是账面收益10美元- 放弃写代码的机会成本10美元 = 0; 而如果这一小时你啥也不干,则无论把那件事作为机会成本计算,你都亏损了10美元。 所以,曼昆同学其实是个哲学家,他在用这一概念告诉我们:时间就是金钱,你花时间奋斗,可能不管干什么都会顾此失彼,但如果什么都不干,那你什么也得不到,还要赔上你的青春。 :) 本文网址:http://blog.perlfect.me/2010/10/31/Mankiw-is-a-philosopher.html

秋冬防肺燥之冰糖银耳莲子炖雪梨

我跟kiki同学这几天都感冒了,她初愈而我还在咳,都觉得嗓子不舒服,于是就想起了秋冬防肺燥这么句话。 于是我就说,咱去超市买点秋梨膏冲点梨汤吧…谁知kiki同学语出惊人,一脸不屑地说,切,还不如自己煮呢,新鲜健康又好喝。于是我们去城乡结合部的标志——超市发——买了银耳,多晶冰糖 ,莲子。又在楼下水果摊买了雪梨,开始筹划做冰糖银耳炖雪梨,莲子则纯粹是刚好看到,反正觉得银耳莲子羹也不错,所以就一起一起了。 回到家先查了一下网上菜谱,结果动不动就是“提前半天泡莲子”,“慢火炖5小时”之类的,太讲究,咱们还等着当宵夜呢…… 于是上压力锅,先冷水煮莲子,把莲子煮得饱满,然后放处理好的银耳和雪梨,我们买的是袋装的银耳,所以不大需要处理,拿水泡开就行,雪梨去皮切成块状,一股脑倒下去,加足水,四大块冰糖,已经是吧压力锅塞得满满的了。 然后开煮,一开始盖上盖,觉得差不多开锅了就敞着煮,因为压力锅的原因,还是省了不少时间的. 也不知道过了多久,大概不到一小时,锅里的水大概剩下不到一半,而且汤已经有些像糖汁一样粘稠,我就觉得差不多了。 于是出锅,作为kiki同学在搬家后的第一次下厨,实在是很成功,初次尝试,至少每样都能吃,不太甜也不太淡。最主要的是卖相也好。厨房冷光不好看,上桌之后,餐厅的暖光很给力,照出来效果极佳。 再配上下午买的美珍香和刚载好的TBBT,周末过得不错呀~ 本文网址:http://blog.perlfect.me/2010/10/30/Stewed-Pear-with-White-Fungus-and-Rock-Candy.html

开始使用Disqus Comments

欢迎Disqus Comments入住Perlfect Blog~ 在读一个叫做Writing a blog system on App Engine的系列blog时,发现作者并没有选择实现自己的评论系统,而是举例推荐了Disqus这个服务。带着一点好奇心点开一看,居然就是我想要的东西,以前一直觉得这个blog的评论功能实在是太无趣兼没有互动性了,正想着自己改改呢,就发现了它(居然还是拿大浆果(Django)写的)。 因此注册了一个账号,然后就把它加入了Perlfect Blog的系统。按照网站上的指引,还是非常简单的。 唯一的问题在于,没法导入已有的评论(Wordpress,Movable Type这种知名系统是可以的,但是Micolog这种小众产品就杯具了……徐明大大,俺能指望你么?),所以目前来说,就把新的评论系统直接扔在旧的头上了。 其实运用第三方服务还是会有些担心的: 没法生成静态页面,评论内容也就无法为本blog的page rank做出贡献... 评论内容让人家给拿去了。 不过呢,反正这个blog也不是个那么想要流量的服务(Google给的Free Quote都还用不完呢)……而且反正之前的内容也是存在G家了,好歹这Disqus还支持所有评论的XML导出,以后真要需要,写个小脚本就搞定了。 恩,现就这样吧,两个评论系统算是竞争上岗,大家用评论投票吧~! 本文网址:http://blog.perlfect.me/2010/10/15/using-disqus-comments.html

FreeWheel 北京研发中心2011年校园招聘正式启动

注:本片为转载敝司HR的作品,所以不用鸟CC协议,欢迎不署名转载。 FreeWheel是目前全美最大的互联网视频广告管理技术和服务提供商。公司创建于2007年,总部位于美国硅谷,由DoubleClick公司三位前高管创建,并获得包括迪斯尼, 特纳广播公司, Battery Ventures 和Foundation Capital的投资,在北京设有产品研发中心,纽约设有商业和客户服务中心。 FreeWheel的创始人在美国网络广告界拥有多年的市场、产品和技术方面的经验。 作为一家快速发展的硅谷IT技术公司,凭借准确的商业模式和产品定位,高效的技术研发和运营,经过三年的发展,产品已服务于包括福克斯(Fox),美国有线新闻网(CNN),华纳兄弟(Warner Brothers),音乐视频网站Vevo (Lady gaga),探索频道Discovery等知名客户。日均广告投放量近亿次,驱动全美视频广告流量的近四分之一,并仍在快速增长中,未来两年有可能成为公司成长最为迅速的时期。 目前北京研发中心全面负责FreeWheel所有核心产品的研发和运营工作,包括B2B Web开发,Open API平台,高性能互联网广告服务器,日志处理与数据仓库,广告预测系统,跨平台视频广告播放整合等核心技术。在这里,你有机会与世界一流的跨国技术团队和资深互联网广告业务专家一起工作,参与并见证视频广告领域的快速变革,并分享公司高速成长所带来的职业发展机会。 We can offer you 1. 福利待遇 l 富有竞争力的薪资方案 我们根据员工的岗位性质及所担负职责为员工提供业内富有竞争力的工资,并且对持续表现优秀的员工提供绩效奖金和每年至少一次的加薪机会。 l 股票期权 FreeWheel每一位员工都享受公司的期权计划,旨在让所有员工能够分享公司业绩的增长及发展,确保员工的个人利益与公司的长远利益紧密结合。 l 完善的社保计划 全额为员工缴纳五险一金,提供完善的员工综合医疗保险以及员工子女的医疗保险。 l 其他福利 我们还为员工提供丰富的福利计划以创造一个舒适和谐的工作环境,并实现工作生活的平衡。这些福利计划包括:交通/通讯/读书/晚餐补助、免费午餐、年度旅游、瑜伽课程、带薪休假、团队拓展活动等。 2. 培训与职业发展 作为技术导向型公司,FreeWheel非常重视为员工提供专业、前沿的业务、技术和管理培训,使员工深入了解并掌握网络广告领域的尖端技术和应用。公司创造多元化的学习环境,鼓励员工利用各种方式学习成长,并设计了技术和管理岗位发展路线,以帮助员工在公司内达成个人职业生涯的发展。 3. 团队 FreeWheel北京研发中心目前设立了包括架构设计、软件开发、质量保证、业务运营方面的专业团队,成员既有来自于Google、微软、IBM等知名企业并拥有多年工作经验,也有走出校园不久的新生力量,且大部分拥有计算机、软件、电子、数学和信息管理等相关专业的硕士及以上学历,许多是毕业于清华、北大的校友。 4. 英文工作环境 在FreeWheel英文是最重要的工作语言,日常工作中与美国同事沟通交流频繁,并有机会赴美培训和工作,享受国际化的工作环境带给你的机遇和挑战。 Jobs@ FreeWheel Normal 0 7.8 pt 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 Software QA Engineer Job Description: Join FreeWheel QA team for many different products/applications software testing and QOS support.

IT民工家装总结

搬进新家住了近半个月了,经历了一些小毛病的折腾,整个房屋基本上都被我们利用了起来,而且已经几乎满足了所有的家居需求(以及一些不是需求的需求:比如在床上用大屏幕打游戏机,被充足的阳光照到自然醒,在小区里逛街看邻居们遛狗或遛娃)。总结一下自己装修的经验教训。一方面是给自己的这几个月的辛苦画个句号,另一方面也是希望自己的辛苦能给看到这篇总结的家装选手们省点力。 装修方式的选择: 现在北京的装修市场,主要是轻工辅料和包工包料两种承包方式,施工方可以是装修公司也可以是装修队。在这个环节我的感想是:不用迷信装修公司,真有想法的公司是不屑于做家装的,我们找的装修公司的经理自己跟我们说过,家装是最不好赚的,因为大家都是想花一分钱办一块钱的事。即使是那些天天打广告的正规装修公司,最终也是找装修队来给你干活。只不过装修公司多收你点管理费,到时候出了问题给你调解一下,在工程质量方面,真不一定有差别。我自己就是找的装修公司,结果有点技术含量的活计照样出问题。 关于到底是轻工辅料还是包工包料,我认为成本其实不是很重要的选择因素,可以说,包工包料的合同,装修商肯定会从材料中赚钱,但这个钱不是自己采买可以省回来的。第一,装修上赚差价主要是因为他们走的量比较大,可以从供应商那里拿到较低的价格,而这个价格我们是拿不到的。第二,一旦材料费用计入了合同,原料就成为了装修方的成本,他们就有动力合理地使用原材料。而以我轻工辅料的经验来说,你提供给施工队的材料很难有剩下的,不找你再要就算是人家厚道了,而自己采买花费的时间和交通费用以及事后慰劳自己的费用早超过了可能省下经费。 在签订装修合同之前,一定要有几个觉悟: 拿到报价之后要使劲砍价,照着自己实际受能力80%以下的价格来砍。原因在后面。 一定要对合同内容细节仔细推敲,尽量消除后期费用增加的隐患,一般来说,你跟装修商说多少多少钱大包干人家是肯定不会干的,只能你自己尽量要求他们把设计图细化,把规格定好,尽量少留下“按实际发生量收费”,“附加项目另收费”之类的活口。有些活项项目经理会跟你说,这个大概多少多少钱就够了,但最后往往“实际发生量”会让你恼火。拿我家来说,因为之前水电改造没有仔细测量,所以谈合同的时候预算了4000块,项目经理承诺说差不多就这么多钱,结果最后“实际发生量”算出9000多来,使劲砍价最终还是加了4000多才了事。 自己的事情要多上心,多调研,自己想要的东西一定要在预算内让施工方写进合同里,因为一旦合同签订了,任何的增项都只能指望这个装修队了,而那个时候你的议价能力就不如签合同之前了。 真要是出现了增项,要放平和心态,多想想自己前期已经砍下了不少价,坦然地掏钱。 验收一定要好好做,在事情无法挽回之前一定要仔细检查,坚持试用之后再结账,我就是留下了一些遗憾:两块客厅醒目处的地砖没贴好,厕所墩布池的龙头没有安正,定做的书柜有些不贴墙等等……虽然都是小瑕疵,但是作为新装修,总觉得破坏了完美度。 作为参考,我的的装修合同总价是4w,最终掏给工长的大概5w多一点,其中包括了两个较大的增项和被郁闷到的水电改造增项,话说水电改造这个东西是家装中最大的不确定因素,也是最容易被阴的地方,要特别注意。 水电改造 之所以单列,是因为我觉得水电改造对于IT民工来说太重要了,特别是电,一般理科男都爱折腾电子产品,家里的电源插座,网线接口是极其重要的。只要不影响美观,能承受得起,尽量把网线布到每个房间,五孔插座怕少不怕多。另外位置也很重要,一开始就得有整体考量,要是位置不对或者插口不够,导致接电器还都得靠插线板就容易把家里搞得很乱,而要是花钱装了的插座最后被家具给挡住,那就更杯具了。 所以,至少得把客厅,卧室,书房的典型应用场景预想好,书桌,沙发,床铺的位置一开始也要计划好,最好能让开关插座既不被遮挡又能在手边,而电视柜和厨房的插座也是要重点考虑的。 另外,卧室里的双控开关超级有用! 设计完成之后,施工也很重要,我们的装修队的那个电工就巨不负责,一个网线口插上后没反应,拆开一看才发现线根本就没接就把面板封上了!他大爷的, 亏得我还会弄那玩意儿!不然上哪儿骂娘去。 家装材料选择的实际体验: 其实轻工辅料并不省材料钱,而且各种材料的送货还得多方配合,自己还得协调,但我还是选了轻工辅料,除了环保的把关之外,最重要的原因就是为了选自己喜欢的东西。 老实说我们找的装修公司的设计师真不怎样,可以说签合同送设计图的设计就没有靠谱的。一个技校出来的小孩给我拿AutoCAD划拉了几下就给了方案,审美灾难不说,连房间尺寸都没有弄准。我们自己改了好多处设计,并配合了自选的材料(主要是选颜色和风格)。事实证明,后来我家的风格被好多该装修公司的新客户看中,据说为他们拉了好几单,而我敢担保,就以最初那个小屁孩设计师的图,是不会让任何人感兴趣的。 一项项列出来说: 瓷砖:东鹏陶瓷 这个是个大项,因为一切可能泼水的地方都得贴瓷砖。本来按照我妈的建议,选择的是诺贝尔的瓷砖,合同价下来2w5左右,都已经到了签合同的阶段,结果他们家的销售发现我们家住六楼且没电梯就二不拉几地说不送砖上楼,但红星美凯龙的合同上大红的章盖在合同上写着送砖上楼,结果就这么一个细节拧住了,最终气不过,退定金走人。 然后就看了东鹏,他们家的砖跟诺贝尔,蒙娜丽莎相比要简洁朴素很多,正和了我和mm的意。他们家的销售态度很好,事实证明售后的送货,退货以及退款都很干脆。最赞的是相比于其他的名牌,价格还便宜,同样的面积,全下来才1w5。其中在他们家选的阳台地砖和墙砖搭配是我最满意的一处,以至于整个屋子装修下来,我最得意的地方就是阳台。 但是他们家也不算是完美,款式过于简单,有些不耐脏,而且有些的砖不平,甚至釉面也有问题,例如我家客厅用的是亚光砖,但是中间有两块的釉面跟其他的砖不一样,导致在阳光下反光不匀,偏偏还被瓦工贴在了电视柜前的客厅中央,成为我客厅里的最痛…… 厨房厕所的砖基本上满意,唯一的缺陷就是厨房地砖不知为啥容易留下脚印擦痕之类的印记,也不是因为灰尘,都不知道为啥…… 木地板:欧宝地板 在比较了红星美凯龙的多家地板之后,我们选了这个不怎么有名的牌子,主要是他们送踢脚线和消音垫,三个卧室全下来才5000块左右。比起大自然,圣象之类的好不容易压下价来又不肯送踢脚线的墨迹劲,省心许多 家具:定做+意风家居+春之家 衣柜和书柜是耗板材的大件,品牌的实在太贵,刚好工长有个熟悉得小厂,就在那里订做了,价格比大牌便宜了20%以上,还增加一些小件(鞋柜,阳台储物柜之类的)。东西安好之后才发现,果然是一分钱一分货,小作坊的东西一是没啥设计感可言,二是也没那么严丝合缝,但是刚起步没办法,只好先将就了。 沙发,茶几和电视柜我们选了春之家,他们家的家具我第一次去看就看中了,颜色很好,设计得也很有可玩性,可惜有点贵。恰好碰上他们家沙发打折,买了一个沙发,再搭配上茶几和电视柜,顺带着让他们打了点折,这三样花了1w多,但是确实放在家里最出挑。特别是沙发,可以说从带给自己舒适的角度来说,这笔投资最值了。 另外,我们在意风买了床,床头柜,餐桌餐椅等等,设计都以简单为主。总体来说还比较值,特别是餐桌,虽然颜色一般,但是一个桌子加六把椅子才两千多,而且都很厚重有质感。 卧室里的家具为了环保,都是用了E0的艾格板材。价格比吉林森工的露水河E1板贵了快一倍。问题是最后发现抽屉一拉开还是一股味…… 从销售来说他们家还是挺专业的,但是令人不爽的就是打电话让他们隔天送货,结果很强硬地说非得提前十天,上门找了他们销售,承诺了一星期,结果最后还是拖了九天左右。 橱柜:图腾宝佳 他们家的橱柜不算做得最好的,当然价格也不算贵,另外还能通过经他们介绍买烟机灶台拿到一点额外的优惠,就是工期拖得太厉害,打电话质问了销售好多次,说是板材缺货,最后拖了近一个月。倒是很爽快地说要赔我们700多的违约金,只是卡号给了快一个月了也没见打过来。 另外,橱柜这个东西也是很容易产生增项的,所以一定要好好推敲合同,最基本的是台面长度,其他的细节还包括:要不要拉篮,要不要台下盆,是否非标准柜体等等…… 烟机灶具:华帝 设计很pp,清洁方便,价格也不贵,售后很负责。就是感觉吸油烟的能力一般,也不知道是安装的问题还是产品本身的问题…… 床垫:大自然棕垫 之所以单独提一提这个,是因为这个算是我家装修的一大件了。因为之前在出租房里睡房东提供的席梦思睡得天天腰酸背痛以至于开始思念学校的硬板床,所以下决心买个纯棕垫。一个双人床的20公分厚棕床垫花了7550,几乎跟我家所有床的总价格一样了。之前也考虑过所谓的高科技的O2棉之类的,最后还是觉得纯天然的靠谱。牌子选的是大自然,事实上这也是红星美凯龙里面唯一的一个纯棕垫牌子。他们家的店面很小,产品也很少,很朴素地裸摆在样品床上。一问才知道这个牌子是个类似国企的厂子生产的,卖的就是纯天然。朴实的店面让我对他们家更有好感。 老实说我就从没适应过弹簧床,席梦思。棕垫那种有些刚硬度的弹性对我来说是最舒适不过了。睡了几天之后,发现起床精神好多了,腰不酸脖子不痛了,真乃IT民工的福音啊!即使是花了这么多钱我依然觉得很值。 家电: 创维酷开LED10 47寸,10999, 这个电视挺贵的,但是我比较喜欢薄边框的电视,这款刚好满足了我的这一癖好。另外,接口齐全和强大的酷开网络功能也是卖点,只要拔网线接上就能通过ADSL拨号上网去创维的网站上去看片,移动硬盘直接接上就能播放里面的电影,支持外挂字幕,目前还没有遇到打不开的视频格式,只是播放高清时解码器有些力不从心,所以高清播放器还是得买。这算是一个囧点吧:全高清的液晶电视内置的播放功能居然只能拿来看看RMVB,AVI。至于酷K之类的功能就鸡肋了。 另外这里要表扬一下,创维的售后是我见过最负责的,因为电工没把有线电视线接好,导致收不到信号,我就打了一个电话给他们,后来工长来把线接好了,我就打电话说让他们别来了,结果他们还是打了好几个电话问我电视弄好了没有。 冰箱+洗衣机:西门子 冰箱是西门子一款特价的对开门,搬上楼进厨房费了不少劲,因为箱体太厚,还得把门先拆了才能搬进去。这么辛苦换来的是超大的储物空间和无霜,还是很值的。 洗衣机西门子只有滚筒的,之前一直被诟病的就是洗得慢,但是换来的是更加轻柔的力道,和衣服不绞缠。另外,这个洗衣机还带有洗羽绒服,床单,旅游鞋的功能,支持多档水温,对于北方硬水来说,能省不少洗衣粉,甚至还包括一档90度水温的消毒洗涤选项。 用了之后才发现,滚筒洗衣机甩干的时候的声音就跟飞机起飞时的涡轮一样……幸好我们是把它放阳台的…… 淋浴房:德立 在我们买的所有东西中,德立的售后和服务是最差的,搞得我们还去找红星美凯龙投诉了,中途逼我改设计加了900多,最终的产品还是装不了,只好又运回去改了。不过安好之后目前看来质量还行…… 洁具+浴室柜:美加华 销售很负责,供货不靠谱! 厨卫五金:九牧 老妈推荐的牌子,价位适中,北沙滩点红星的销售也还不错,价格很实在。 开关面板:西门子远景系列 没啥好说的,牌子是好牌子,但是算是名牌里比较平价的一个系列,圆角的边沿让我很喜欢,就是唯一的一个三开的开关感觉不是很齐… 另外,他们家的网线接口标价要90一个,我在中关村买了一个杂牌的也8块……至少从现在使用来看,没区别…… 吸顶灯:欧普,朗能 很靠谱,就是没啥特色,这两个牌子质量和价格都差不多,就看审美了……他们的设计比较简单,但是质量比杂牌好,适合我们这种不太讲究的简洁省心风格。 本文网址:http://blog.perlfect.me/2010/10/10/house-decoration.html

海底捞外卖之初体验

如果一小时前蔽公司美国同事还醒着,大概会奇怪为啥公司内部的Jira和wiki都访问不了了,其实答案是:

观Inception:诺兰是个程序员

上周末,终于在各种剧透和解构的隆隆声中看完了期待已久的《Inception》,不得不说,不白花这些钱。 之前在豆瓣上看到一篇讲Inception里面的数学原理的帖子,其实哪有那么深奥。 依我看,Christopher Nolan简直就是个程序员的脑子,还到不了理论数学家的高度。为什么说是程序员呢,让我把《Inception》用程序员的语言由浅入深地解释一下。 本片最主要的设定是什么呢?梦中梦对不对?这在程序的角度来说再直观不过了,那就是——递归,如果做梦是一个函数Dream,那么梦中梦就是该函数的递归调用。 比起一般的递归调用来,该程序的特殊之处是,它是一个多线程的递归调用,也即是说每一次递归都会新建一个线程来执行函数体。因此该递归函数有两种结束机制,一种是wait超时(药物失效),另一种是由其调用函数来结束(kick)。 而由于硬件平台所限,该递归只能进行四层,因为每次递归都需要消耗系统资源,所以递归深一层,系统运行就越慢(梦境每深一层,时间就变慢20倍)。一旦在第四层的时候资源耗尽(做梦者生命耗尽),就会产生栈溢出,因此线程就会进入僵死状态(limbo状态)。 而一旦将运行超时时间设置得过长(强力镇静药物),则会导致子线程运行过长从而耗尽资源。此时如果子线程还没有被上层调用函数强制结束(撞击),则会被detach(在梦中死去),因此进入僵死状态(进入limbo状态)。 而为什么多层次的梦唤醒需要同步撞击呢,这就跟我们析构一个含有指针的STL容器一样,如果不遵守顺序,那么就会出现容器被析构而指针内容还在从而发生内存泄露的问题。 再来解释一下,为什么Cobb在limbo状态能找到所有死去的同伴,同时通过直接自杀直接返回,这里面有两个非常重要的概念,那就是GC和线程池!因为所有的僵死状态的线程都不能被其调用函数结束(kick不到了),因此只能通过垃圾回收机制也就是GC来进行回收,因为在僵死状态下,现场已经没有作用,也无法找到其调用者(在limbo状态下失忆),因此回收的机制就是将该线程杀死,并重新创建以保证线程池中的线程数稳定(这就是为啥在limbo状态下自杀可以在现实中满血复活),而因为线程池是一个全局的结构,当然是可以找到所有的limbo状态的人啦。当然,如果GC算法不够好,无法识别出僵死线程(齐藤失忆),那就发生了资源的泄露(既回不去,也死不了)。 大体设定就这些,然后看看剧情,也就是我们的线程体要怎么写,作为一个盗梦团队,Inception的目的其实跟计算机安全中的缓冲区溢出攻击是同理的,那就是利用程序漏洞(人的性格弱点),向其地址空间(头脑)植入可执行代码(想法),从而可以在对手的系统(大脑)中执行自己的特权指令(解散Fisher的公司)。 而按照剧情中,深层次的意识在浅层次的梦境中将被放大的设定,我们可以将该线程函数体写成如下: dream(timer) { thought = 0; if(buffer_overflowed) { thought = new Thought(I_Want_My_Own_Life); } if(thought == 0 ) { p = new_thread(dream()); wait_for_timer_then_kick(timer * 20, p); } else return thought * magnifier; } 到此,影片的大纲已经基本成型,其实还有很多细节都是符合计算机程序设计思维的,只是作为程序员,没有闲再继续扯下去了…… 本文网址:http://blog.perlfect.me/2010/09/6/inception-review-nolan-is-a-programmer.html

人生,总有几次踩到狗屎...呃...运的时候

周五下班实在无聊,在地铁上拿手机UC上网,发现导航里有彩票一项,于是想去买个足彩。迄今为止我就在结婚领证的时候在双榆树民政局门口买过一次足彩,没中。 然后打开发现是500wan.com的页面,我耐着心去注册新用户,却发现我的id已经被用了!居然还有人跟我用同一个id?于是我去试了一下用自己的密码登陆……哈,居然登陆成功,原来是我自己以前注册的……一点印象都没有了。 更幸运的是,我发现我的账号里居然还有2元现金?我觉得这不太可能是我充的值,有可能是网站附送的……于是不用白不用,速度拿这白送的2元买了一张1077期的任选9场足球胜负彩。我把不太确定的场次都忽略了,所以一个复选都没有,就投一注,刚好2元,最低限额,呵呵。 当我提交结果时,我觉得我选择的胜负结果都太正常了,所以没想到奖金居然能有这么高,120元的奖金,相当于60倍的回报率,muwahaha~   今天打开网站一看已经派奖了。某同学昨天很速度很素质地说了一句见面分一半,我当时没觉得能中奖……现在后悔了…… PS:今天去年度体检,检出一堆问题,啥心律不齐,脂肪肝啥啥啥的,这算是一点安慰么… 本文网址:http://blog.perlfect.me/2010/09/4/lottery.html

收到App Inventor for Android的邀请了

循着发到俺gmail邮箱的邀请信点过去,发现tutorial的网页和手册都非常精美,有点让我觉得它不像开源,不像beta版,于是突然有了点学习的冲动。虽然很不想弃我现在的Symbian而去,但是大家都知道它没有明天了…… 问题是要不要重拾越来越乱的Java呢?各位Javaer们,现在还有所谓的“官方”JDK么? 或者应该先问一个问题:要不要先去买个android手机呢?再次呼唤各位回答我:800元以下的山寨安卓机出了么?出了么?么么么么…… 本文网址:http://blog.perlfect.me/2010/09/4/android-app-inventor.html

Attack Me

闲来无事看了一些关于GIS信息的网页,在mygeolocation.com找到了自己的ip对应的地理信息,于是把它作为meta加入了blog的源码,如下: <meta name="geo.placename" content="Beijing, China" /> <meta name="geo.position" content="39.904667;116.408198" /> <meta name="geo.region" content="CN-Beijing" /> <meta name="ICBM" content="39.904667, 116.408198" /> 最后一个值其实不太明白是啥意思,结果一wiki,发现是Intercontinental ballistic missile的意思... 也就是说它除了能让自己的网页对搜索引擎更友好一些意外,还可以让米国的洲际导弹来精准轰炸这个blog咯? 还有一个好玩的地方就是,在添加了这些meta信息之后,你可以去http://geourl.org/添加自己的blog,这样你的blog就能在地图上显示了,还能发现你附近有哪些blog...虽然是很穷极无聊的功能,但是在LBS这么流行的今天,总算是潮了一回。 本文网址:http://blog.perlfect.me/2010/08/31/icbm-gis.html

哪里买?

这个世界有时候就是这样,时不时给你颠覆的机会。例如我本来以为有了淘宝京东,我们的物质生活已经极大丰富了,但是后来才发现,有些时候我们还是会问:哪里买? 例如我最近分析了一下自己减肥失败的原因,主要是慢跑计划无法坚持,然后就在某些专门的慢跑社区里查阅了一下相关资料,最后总结起来,觉得自己还缺一些东西: 减轻膝盖压力的加压护膝。 可以绑在身上不会晃动的手机零钱钥匙包。 可以在路上听歌或者广播的设备。 就这样三个需求,我却在网上选购的过程中遇到了不少问题。 首先,护膝是很好找的,但当我在淘宝上一搜“护膝”时,成千上万条各式产品涌向了我的浏览器。可以说,在淘宝这样的大而全的地方,细分产品的专业分类手段的缺失使得新手在选择商品时几乎一定会迷失在产品目录中。为什么我在选择电子产品的时候会更愿意去京东,最重要的是他们家提供按照产品重要规格参数和功能项筛选的产品目录。如果我做了一个月以上的调研,例如像我之前买护踝一样,当然可以在淘宝的搜索框里直接输入“McDavid 433R”,然后开始比价比信誉。但是当用户连买什么都不知道的时候,网店的一切信誉指标都是无用的,要把不同产品的指标一项项对比,有时候还得主动去联系商家问规格参数,这其中又会磨灭多少没耐性的人消费冲动呢? 护膝其实有很多种,防磕碰的,保暖的,避震的,最后发现,其实我需要的是“髌骨加压带”以缓解运动时地面对我半月板的冲击力。所以说很多时候,购物的时候我们还是需要花时间,而时间就是金钱,常说现在互联网没有机会的人,是不是可以靠帮一般消费者省点时间来赚点钱呢? 然后的一个大问题是包,与上面类似。但是更大的问题是我都不知道如何用可索引的名词来描述我的需求。我的意思是我想要买一个“适合跑步时贴身携带的,小而轻且不会晃动的小包,能放下手机,钱包和钥匙就行,要是能再装个mp3播放器之类的就最好了,当然,希望样子也紧凑一点,酷一点”。遗憾的是,这种描述性的需求是无法让淘宝给我回答的。去社区里问?一是反馈太慢,二是广告太多。在淘宝上换了好几个类别,搜了几个关键字,给我的都是大背包。最后通过google,才辗转从某社区知道那个东西叫“臂带”,于是用上专业名词在淘宝里搜,结果果然就给力了。 最后感叹一下,在苹果唱绝对主角的情况下,想要选一款非苹果的运动mp3还真是不容易。 不爱苹果一是觉得俗,二是觉得他们家的产品为了易用牺牲了过多的灵活性,感觉只适合憨憨傻傻的美国人(典型的例子就是导歌曲只能通过iTunes同步)。三是觉得虽然苹果可以很便携,但毕竟不是运动款。我巴不得能没有耳机线才好,甚至是那种头戴式的一体设计。遗憾的是,这样的产品要么不支持FM收音机,要么就很山寨。结果好不容易找到了一款看上去还行的Sony的Sports Walkman NW-S205F,结果人家还不卖了……虽然骚尼家的产品以其各种诡异的质量问题曾经伤透了我的心,但是还是抵挡不住他们家无敌的设计感啊。现在电子产品市场,在设计方面能跟苹果抗衡甚至要优于苹果的,也就他们家了吧。然后又在京东上找了一个功能齐全但是设计木讷的替代品,居然也还得预定,这到底是物质极大丰富了么,老师们? 就买个跑步装备就费了这么半天劲,一想到家里还在装修,好不容易才定好了家具,到时候买各种家电,那调研和比价的工作量,一想到就头痛啊…… 准备开始运动减肥计划了,工欲善其事,必先利其器,置器需经费,肉痛促坚持! 本文网址:http://blog.perlfect.me/2010/08/11/where-to-buy.html

StumbleUpon好用!找到了听电台的感觉

很久以来,都感觉自己实在是太局限了,每天闲得无聊了,就上Google Reader和人人网,上Google reader主要是为了读新闻,上人人网主要是为了看八卦,同时瞅一眼各式各样的分享。 但是渐渐地,人人上的各种八卦都被我在上下班的时候看完了,上reader也只是读些愤青文,自己订阅的东西更新太快看不完,自己follow的人又太同质化,看了一个人的分享,其他人的分享基本上也看完了……看来这两个应用终还是经不起我这个时时刻刻在线的人折腾。于是觉得自己挺空虚的,天天泡在网上,居然就看两个网站! 于是某次在reader里偶然发现了StumbleUpon,文章里说它是北美超过digg的内容聚合类网站,我居然以前都没听说过。登上去看看,然后下载了一个firefox插件,发现这个玩意儿太好玩了。简直是杀时间的高手! 就好像在没有特别想看的电视节目时,你可以通过不断换台来消磨时间。只要无聊了,点一下浏览器工具栏上的“Stumble!”,他就给你带来一个你从没见过的网站(据说StumbleUpon会记录用户行为,绝不推荐给你你看过的网站),当然,推荐给你的网站是根据你的口味来的,在注册账号时,它会要求你勾选自己的兴趣点,然后对于每一个推荐给你的网站,你还可以投票,喜欢或不喜欢,也会影响未来的推荐。 同时,它让我找到了听电台的感觉,我不止一次表达过自己喜欢听电台音乐广播胜过MP3的想法,唯一的原因就是惊喜的可能性和发现的乐趣。用了一整天的StumbleUpon,才发现原来世界上有这么多形形色色奇奇特特有意思的网站,例如某个自命不凡的黑客的博客,某个列举20年来最有意思电影的网站,某个帮你测试网站浏览器兼容性,并把六十多个浏览器的显示结果截屏给你看的网站,还有各式各样的的图片和视频。 当然,对于天朝网民,还有一个玩法就是悲剧程度测试:把language设为英语,不停地点击"Stumble!",看看他推荐给你的网站有多大比例是访问不了的……总之我安装了StumbleUpon之后,他推荐给我的第一个网站是Youtube,第二个是Twitter... 回到StumbleUpon本身,看上去和它最相近的就是Google的手气不错,输入一个关键词,直接把你带到一个网站。但是它比Google手气不错有两点好: 他不用你输入关键字,你只要初始设定自己的偏好的大类就行,随后它会在你使用过程中不断学习你的偏好 它的推荐是个性化的。 说到底,StumbleUpon就是一个相关推荐系统+投票系统,但是人家做得很好的是有很方便的浏览器插件,还支持快捷键,对于因为有鼠标手导致只想用键盘的我来说,简直是太方便了。 当然,国内曾经有一个模仿者——趣摘,只是在我知道它之前,他就已经挂了。 本文网址:http://blog.perlfect.me/2010/08/4/stumbleupon-is-good.html

围观Rakudo Star Perl6

Perl6在跳票十年之后,提前发布了……呃,因为还没到圣诞节呢…… Rakudo Star其实也不算是正式的perl6发布版本,只能算是Perl6的一个候选实现,因为还有一个pugs在哪里吭哧吭哧呢。但是出于好奇,还是去载了个windows版的来看看。 据perlchina google group上众人反应,这个perl6速度堪忧,我也看出来了,就一个perl6.exe -v就得反应个好几秒。 早就知道perl6基本上不是perl了,连吉祥物都变了,相比于花蝴蝶,其实我还是更喜欢骆驼一点……据说用蝴蝶作吉祥物是为了提醒开发者要不断创新,这个是文化差异么…… 上述截图来源是perl6自带的手册,里面问:为什么perl6跟perl5不是一个语言还要叫perl呢?答曰:我们继承perl的理念…… 不过比较开心的是,perl6终于支持交互式命令行了,这样对新手熟悉语法就很有帮助了。以前虽然可以用oneliner,但是总觉得还是不太方便,这下好了。 又去编译了一下Unix版本的,发现lib文件夹里出现了几种新的文件后缀名——.pbc,.pasm,.pir。然后google了一下,在这里找到了答案: There are three forms of input that Parrot can work with directly: Parrot Assembly Language (PASM), which is a low-level human readable assembly language for the virtual machine, Parrot Intermediate Representation (PIR) which is a syntactic overlay on PASM with nicer syntax for some expressions, and Parrot Bytecode (PBC) which is a compiled binary input format. PIR and PASM are converted to PBC during normal execution.

Google视频广告在线测试

呵呵,面向普通用户的产品就是好,随便在线测试…… 顺便唠叨一句,本blog征集友情链接,现在能访问这个blog的都是熟人,有兴趣的贴自己的链接吧~ 本文网址:http://blog.perlfect.me/2010/07/30/google-video-ad-test.html

链接存档:如何编写一个CPAN模块

偶然在perlmonks的google group里面发现这篇文章: Authoring A CPAN Module 其实这里面写的东西都可以用一句话搞定,例如我为了不去记忆参数就弄了个脚本:   #!/bin/sh h2xs -AX --use-new-tests -n $1 不过里面的内容可以说是解释了一下一个CPAN模块包的基本结构,让人在用和写的时候都能更明白。可以说有时候太自动化了不是好事,所以把这个记在这里。   之所以我还在用h2xs主要是因为自己没有稳定的私有的Linux环境可用,所以只能用随perl附带的老工具了…… 本文网址:http://blog.perlfect.me/2010/07/16/cpan-module-struct-zz.html

我们称之为工作经验的东西

前几天有博文视点的编辑让我帮忙给某牛人写的一本新书的样章提提意见。看了大纲和样章,又去作者的blog看了看。在膜拜大牛的同时又不觉有些感慨。“果然还是学生啊”,我想。 然后我又转念一想:我居然会这样想! 一直以来我都以出国读书,做学术为目标,现在看着这些东西,就好像看着以前的我自己。回顾这工作的一年里,感觉自己确实学到了不少东西,又或者说并不是学到了什么,而是印证了一些早就知道的东西。前天7月13号是我刚好入职一年的日子,之前写了一长篇不怎么淡定的工作体会,但是却没有冷静地总结和记录一下这一年的收获。趁着世界杯结束,工作也稍微闲下来一点,总结一下吧。 而总结下来其实很简单:精确,精益求精,时刻准备好迎接挑战。 做事要精确。用数据说话,这是很多公司都会教给你的东西。人在一起工作,不像在学校里搞科研,自己一个人凭着猜想搞,直到最后要发表点什么了,才想起来做个实验跑点数据出来补在paper的末尾。而在国内,这些数据有时候都是伪造的。但工作不同,工作中免不了合作,虽说是共同利益,但也免不了会有意见不统一的时候,而这个时候就需要说服别人。如何说服别人是一门艺术,但我想首先引用一段《软件随想录》里面我很认同的话: 老实说,只要有两个以上的人待在一起,就会有政治。这很自然。我说"不搞政治"的真正的意思是"不搞恶性的政治"。程序员早就练出了对公正有非常良好的判断力。代码要么能运行,要么不能。坐在那里争论代码是否有问题,这是毫无意义的,因为你可以运行代码,答案自然就有了。代码的世界是非常公正的,也是非常严格有序的。许许多多的人选择编程,首要的原因就是,他们宁愿将自己的时间花在一个公平有序的地方,一个严格的能者上庸者下的地方,一个只要你是对的就能赢得任何争论的地方。 在程序员的世界里,说服别人最有力的办法就是使用数据。 而当初的我是不知道的。记得某一次跟PM讨论一个产品特性的时候,我向他表达了我对于该特性将使得用户的浏览器cookie体积变大的担忧。“我能理解……”但他接着问:“你能知道cookie会变得有多大么?”我顿时语塞,坑坑巴巴在纸上算了半天,然后跟人解释,结果最后的结论是:这事没有那么严重。 是的,表示自己知道这件事很容易,但如何评估他的影响,如何精确地做出权衡之后的选择却不是很容易。也可能是我读书时学校里的老师都太好糊弄了吧,虽然知道这个道理,但却一直没怎么实践过。自此之后,我才慢慢地就培养起了一种习惯。凡事先拿出数据,讨论之前就想想别人可能问什么问题。就好像备战一样,只有准备充分,你才能得到自己想要的东西。又或者说:在你拥有足够说服人的数据之前,不要开口。 做事要精益求精。这一年里,我受到的最深刻的打击就是:原来我在学生阶段什么挑战都没有遇到过。 一个东西,光做出来只能叫实验品,做好了才能叫做产品。为什么有的软件免费都没有人用,而有的软件可以卖钱,抛开商业模式不谈,区别基本上都在于质量。在学校里做的事情,往往只要求能运行,能展示,对于稳定性,可扩展性都没有要求,遇到实现不了的东西完全可以绕过,反正最后要的不过是论文上的一小段描述性文字和几行数据而已。但产品不一样,光做出来不行,还得够稳定,能扩展,还有那些你能提出一万条反对意见但是就是绕不开的客户需求,而挑战就在这里。 在学生时代,我也是个代码爱好者,可我的大多数代码都是一次性代码。一方面是因为自己写的程序既没有前期需求文档也没有后期的QA,写到哪里算哪里;另一方面,当时确实是有太多的时间可供挥霍。例如我在本科和研究生时期就分别拿perl写了两套不同的在线足球经理游戏,而这些代码现在看来,说好听了就是玩具,说难听了就是垃圾…… 有时候盯着自己写的自认为完美的代码看是很无聊且很让人昏昏欲睡的,直到QA报告说程序在测试中崩溃了或者结果完全不对了,你才能打起精神来一行行地检查,最终发现原因是一个粗心的错误或是一个未处理的分支。这个时侯你才恍然大悟,仿佛眼前的代码立即变得漏洞百出,一伸手就能自己又揪出好几个bug,拍着脑袋说:唉,怎么能犯这种错误。 现代计算机的运算能力已经让重编译和执行变得简单,编译器或解释器的排查功能也非常的智能化,所以比起曾经在纸上写程序的前人们,我们不自觉地就会粗心很多,而这样其实是有问题的。如果一个产品需要通过不断地在运行中发现问题然后修改,那么损失的不仅仅是时间,还有别人对你的信心。就好像某水果公司,可能就缺乏一个足够精益求精的设计设和一个足够负责任的QA,否则怎么能新产品刚开始卖就发现手机信号会被手掌屏蔽这样的笑话级bug。 要时刻准备好挑战。计算机互联网行业其实是一个很不稳定的行业,在100次请求每秒的情况下工作得很好的服务器可能在1000次请求每秒的时候就挂掉了,现在看来完全合理的逻辑可能三个月后就变成了bug。同时,一串看起来跟你不怎么相关的邮件讨论,可能几天后就变成了一个指派给你的产品需求。所以说有些时候我们说关注big picture并不是说让你一个小工去帮头头们想事,而是为每一个有可能需要你面对的新的挑战做好准备。 有闲时看看也许跟你的任务不相关的内容,尽量搞清楚每一封发给你的邮件说了回什么事。只有这样你才能慢慢地了解你所在的这个经济实体的运行状况与盈利模式,从而明白自己做些什么以及怎么做才能为公司同时也为自己创造最大的价值。 ===============下面是扯淡的分割线======================= 说完做事,说说自己生活上的一些改变。 最大的改变就是球踢得少了。公司倒是组织了不少活动,羽毛球,瑜伽班……但是必然都是那种对人数和场地要求都不那么严格的活动。别说足球,可能就连篮球赛都组织不起来了。我曾经在午餐的时候跟老板开玩笑说,咱们公司成功做大的标志,就是咱公司内部能组织起一支足球队。这件事情可能大公司好点吧,但是确实是所有人在工作之后就不再有那种不管日暴雨淋都能拉一帮人去踢大场的动力和激情了,这可以说是我工作之后最大的遗憾,也是最舍不得学校的地方。 钱挣得有过去的十倍多,但是却没有那种什么都不缺的感觉了。在学校的时候感觉自己除了钱,什么都不缺,工作之后就会感觉自己什么都缺,包括钱…… 突然发现自己的时间少了,也许占用自己时间的不仅仅是工作,还有上下班的路程。但总之就是你没有时间发呆,没有时间灌水,甚至都没有时间学你很有兴趣的新技术了,这是一个很可怕的事情。 于是做计划变得很重要,如果每次你闲下来都要先花半小时想清楚下面干什么,那你基本上不可能完成任何事情。这个时候,你就需要把大的计划划分成小小的片段,每次做一点点,然后还要有办法不断地提醒自己去做。最简单的方法莫过于贴在电脑上的便签条了。 当然也有一些我觉得不错的应用和工具可以推荐。最近试用了了一下Gmail的task list功能,从用户体验来说,觉得非常合适,一条条编写自己想要做的事情,一回车就新开一条,其实有时候日程不是那么重要,要的就是有东西能时时提醒你得做点什么。很惊异自己为什么没有早点发现它。以前还曾经用google doc来记录自己的读书列表,现在直接也用它了。比起桌面的便签应用,他可以让我在多个地方同时使用,而比起其他的网络应用,它就在我查email的页面里面,又方便得多。 还有一个值得推荐应用就是ReadItLater。这个应用说来功能特别简单,就跟它的名称一样,让你read it later。因为每天我都要从rss reader或者别人的分享里阅读很多东西,有些技术资料或者有意思的东西来不及读完,或者需要较长的时间消化就可以把它加入到ReadItLater的list里,这样我在上班的时候发现有意思的东西都可以记下来,下班了或者是闲了的时候,直接打开这个list就能找到感兴趣的东西来读。读完之后打个勾它就从list里面消失了,以后还能在已读存档里面找到,非常的方便。这样也算是对自己的阅读时间做了一个动态的规划,使得我不必因为害怕以后找不到了就在每次偶然发现什么好东西时都停下来当时消化,极大程度地保证了自己工作的连续性和计划性,同时也省下了无聊时四处瞎转悠找资料看的时间。 这个应用有Firefox插件,安装之后在你访问google reader时还能直接在每个feed条目上生成一个小箭头图标,让你一键保存到read it later list里面去。另外还有Iphone,Android,Blackberry,Palm等平台的移动应用,可以让你随时随地阅读。(Symbian S60V3用户再次怨念地飘过……) 好吧,好像就这么多了。发现自己代码写多了,码字的时候也有了是不是回去校对修改的习惯,但往往把字句都改得不通顺了,可能学理科太多年了,那种写流畅文章的本事已经不复存在了吧。 本文网址:http://blog.perlfect.me/2010/07/15/a-little-bit-work-experience.html

修改了一下RSS输出

Microlog自带的RSS输出使用的是Atom格式,但是之前却发现Chrome和twitterfeed对我的blog的feed输出都有问题,Chrome是直接把feed打印成了文本,而twitterfeed倒是可以parse我的输出,就是发布到twitter上去的时候不贴链接。在确认自己的twitterfeed设置没有问题之后(感谢maotouc同学的贴图教学),决定好好修一修这个feed的输出。 首先想到了去官方组织validate一下,google一下找到了这里,是W3C官方的Atom feed validater。发现直接输入blog地址不能进行验证,于是查看模板代码,发现有如下问题:   <link rel="alternate" type="application/rss+xml" title="{{ blog.title }} RSS Feed" href="{{ blog.feedurl }}" /> #应该为 <link rel="alternate" type="application/atom+xml" title="{{ blog.title }} RSS Feed" href="{{ blog.feedurl }}" />   改好之后就可以进行validation了。 然后又开始找不能贴链接的原因,在feed验证过程中发现一个问题,就是feed中生成的<id>有重复的问题,而且是无效的URI,代码如下:   <id>{{ blog.baseurl }}/entry/{{entry.slug|escape}}</id>   这样写的问题在于,如果一篇文章没有指定slug,就会造成id变成:“http://blog.perlfect.me/entry/”。如果有多个文章都没有slug,自然就会出现重复id。 幸好发现文章的链接都是对的,所以直接复制粘贴:   <link href="{{ blog.baseurl }}/{{entry.link|escape}}"/> <id>{{ blog.baseurl }}/{{entry.link|escape}}</id>   这样,feed输出终于顺利通过了validation。不过这其中发现feedburner会给blog的feed里插入写乱七八糟的元素,例如:   <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/PerlfectBlog" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="perlfectblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" />   不知是何居心...搞得W3C的validator还抱怨一回…… 然后上载至appspot。feed重新生成一回,然后因为id变了,所有的文章在google reader里就又涌出来一遍……也不知道twitterfeed的问题解决了没有,这期间我甚至还迷信地把atom模板里的utf-8改成了UTF-8... 不过说回来W3C的这个在线标准验证还挺好用的,收到侧边栏里了。 然后顺便做了一点优化,在<meta>

Perl线程机制学习

说来惭愧,用了好多年perl,都没有写过多线程的应用,甚至一度以为perl是不支持线程的,想要并发就只能用POE搞搞调度。直到今天看了这篇文章才知道,原来perl不但有线程模型,甚至都已经deprecate过一个早期的线程模型了,于是就好好学习了一下目前正在被推荐的ithreads模型,并查看了一下相应的cpan关于threads和threads::shared的文档。 这才发现,perl不但支持线程,而且还比较易学易用。总体来说,有如下贴心属性: 线程创建方便: 一个perl线程的创建只需要use threads并调用threads->create(),传入相应的代码块或函数引用就行。子线程被创建之后自动开始运行,非常省力。 use threads; $t = threads->create(sub { print("I am a thread\n"); });   线程管理方便: 对于线程的执行控制,有两种方式,一种是join(),一种是detach()。所谓join()就是在主线程中等待子线程的执行返回值,然后再继续执行后续代码,而在调用线程的join()方法之前,子线程与主线程的执行是分开的。而detach()则是告诉perl解释器主线程不关心子线程的执行结果,所以该子线程在完成任务之后就是自动退出,同时释放自己所占有的资源,而不用主线程再操心。 $t->join() #wait for $t to finish and then go on ... $t->detach() #$t will finish its job then release all the resources   数据共享安全,互斥方便: 所谓的共享安全实际上就是不共享,使用threads模块创建的线程,里面的变量全都是由线程私有的,因此如果需要共享数据,则需要显示地use threads::shared;并使用shared后缀或shared()方法来生命变量。这样,实际上是靠增加代码的透明度来减少粗心出错的可能性。 而变量的互斥也非常简单,可以直接使用lock()函数来锁住变量,从而达到互斥的效果。锁的生命周期控制也很简单,就是以代码块的结束为界,代码快结束,锁自动释放,省去了繁琐易遗漏易出错的释放锁函数的调用,有点像ACE里面的guard。  { lock( $share ); $share++ } #lock released here   对典型应用有成型支持。  多线程模式下,最典型的应用莫过于生产者-消费者模型,因此,CPAN上提供了Thread::Queue模块来执行多个线程对于单个队列的访问同步和互斥控制。 另外,对于线程池,CPAN上也提供了现成的Thread::Pool模块可用,可以说,善用CPAN的话, perl程序员真的会很舒服。 至于该线程模型的性能倒是没有时间细测,总之先学会用再说。一个多线程并发模型只需要15分钟学会并能够开始写东西,足以说明它还是挺顺应直觉的。 本文网址:http://blog.perlfect.me/2010/07/13/learning-perl-ithread-model.html

世界杯杂感

本次南非世界杯是我看过的最烂的一届世界杯没有之一。 世界杯终于结束了,我终于可以盖棺定论地说出这句话了,虽然早就酝酿好了,但是直到今天,我才确确定定地把它写下来。从98年开始看世界杯,后来又向前翻看了一些经典,感觉这届世界杯就好像中国产的vuvuzela一样山寨,没有节奏也没有旋律,有的只是一个月来的聒噪。不是我歧视非洲兄弟,也不是我因为自己喜欢的球队没有拿冠军就黑它。实际上,由我萨球员构成核心框架的西班牙队史上第一次夺冠,算得上是本届世界杯少数的亮点。其他内容,则零零杂杂,让人提不起兴趣,相信绝大多数对本届世界杯最深的印象不过是章鱼保罗,而人家还远在06年的举办国德国。 只好对我有印象的一些球队和事情散散地记录一下好了,也不枉费这四年一次的痴迷。 南非: 作为史上第一支没有小组出线的东道主并不意外,南非队在非洲也不算是顶尖,何况世界杯。倒是这次南非令人堪忧的治安和令人头痛的Vuvuzela给了我深刻的印象。非洲治安差并不出我意料,遗憾的是南非还是少数西方世界中文明的非洲,连采访的记者都不放过,无怪乎日本政府发布公告警告日本球迷不要去南非看球。更有名的故事是阿根廷的传奇前锋巴蒂斯图塔说:我住在南非最高级的五星级酒店,就是为了安全,没想到还是被盗了,弄得我对世界杯一点兴趣都没有了。 Vuvuzela就不说了,对于举办国地方特色,我的上一个印象是墨西哥的草帽和人浪。而Vuvuzela则用不间歇的蚊子叫让全世界球迷以为自己的电视机坏掉了,人浪后来成为了足球文化的一部分,希望Vuvuzela不要…… 法国: 从法国队世界杯前输给中国队我们就可以看出,这支法国队在世界杯上没有前途,不在于球星的实力,而在于进取心。记得有人说,比劣根性,中国人远远比不过法国人,我看没错。我可惜的是齐达内作为法国内乱的秘密主使走下神坛……这支法国队没有齐达内走不远,但多了这样的一个齐达内,还不如没来过。 墨西哥: 墨西哥一向被认为是欧美之外最有希望夺得世界杯的球队。不过没想到的当初被巴萨放弃的多斯桑托斯居然在墨西哥队担任起了进攻核心,而且还是那么的独……也没想到门将居然还是佩雷斯……看来墨西哥准备把矮个子门将的传统发挥到天长地久了……被阿根廷淘汰有些可惜,因为他们是一支可观赏性很强的球队,可是被更加具有观赏性的阿根廷淘汰,也只能怨命了。 乌拉圭: 乌拉圭是本届杯赛最好的一只南美球队,不仅仅是因为他们的成绩最好,更因为他们有苏亚雷斯和迭戈弗兰。多少年来,乌拉圭顶着两届世界杯冠军得主的头衔,却总是充当世界杯上的匆匆过客,而今年乌拉圭一路杀进四强,迭戈弗兰勇夺金球奖,总算是一展传统强队的风采。本届世界杯虽然乏味,但是记录上却颇多颠覆,这其中之一就是让全世界球迷知道了乌拉圭不只有一个遥远的弗朗西斯科利,他们还有一个饱受挫折却终成大器的迭戈弗兰。另外,苏亚雷斯的俱乐部阿贾克斯在世界杯后收到各类豪门的报价单应该也是板上钉钉的事情了。 阿根廷: 谈到阿根廷这支在中国球迷众多的球队,没有人不承认它实力超群。新科足球先生梅西领衔,攻击线上六名前锋被刘建宏称为两个猫四个2。世青赛,奥运会……做铺垫用的冠军拿了一堆。如果说有一种办法让它不夺冠,那就是让马拉多纳当教练。马拉多纳是球王我不否认,但是除了威信足够镇得住场上的大牌以外,对于比赛的把控能力却还达不到一个国家队教练的要求,所以虽然阿根廷队凭着超强的个人能力小组全胜出线,但是却在它遭遇的第一场逆风球里被兢兢业业的德国队4球血洗。其实,更大的错误还在更早的时候就已犯下,老马你不带萨内蒂我也认了,为什么不带上能抢能组织的坎比亚索呢?最可怜的是梅西了,一心要走上球王的道路,却落得5场比赛一球未进。只好安慰自己,也许是联赛太累了…… 韩国: 韩国队这次终于没有靠裁判赢了球,小组出了线,朴智星渐渐也有了球星的样子,但也仅此而已。 希腊: 04年的神奇离得太远了,他们来就只是个欧洲二流而已。 英格兰: 如果欧文没有伤,也许小组赛的结果会不一样,但是碰上本届杯赛上的德国,还是必然会被打回伪强队的原型。四年前我就说过,英格兰这支烂队根本配不上拥有贝克汉姆,而现在他们连贝克汉姆都没有了。我宁愿这个小组出线的是斯洛文尼亚。 斯洛文尼亚: 我之前对斯洛文尼亚的唯一印象就是04年欧洲杯上的扎霍维奇。这届杯赛到发现这只队伍打得还不错,在克罗地亚缺席的情况下,甚至比塞尔维亚打得还好,成为前南球队里的翘楚,可惜球队气质还有欠缺,如果在对英格兰队时能更有自信一点,在对美国时能好好把握下半场,也许16强就没有英格兰队或美国队中的某一队啥事了吧。 美国: 美国人踢得足球跟全世界人踢的足球不一样,不是说他们词汇中football的含义不同,而是指他们对于足球的态度不同,就好像全世界的点球都是12码,而他们的点球是35码一样,美国人并不认为足球是一项有趣的运动,甚至有些人认为它不够激烈。但是,他们的球队却在连续两届世界杯上都小组出线,也许这点值得乒乓大国天朝学习学习。公司的一个美国同事跟我说过,在美国,足球并不是最受欢迎的运动,但是每个学校都会有足球场,都会有人踢球。我想美国人证明了一个道理,无论何种运动,最需要的都是广泛的群众基础,良好的运动神经和对竞技体育的热爱,而不是塞给教练或裁判的钞票。在这里,向可能在美国没有多少观众的多诺万们致敬。 德国: 德国绝对是本届世界杯最大的惊喜,和西班牙,阿根廷不同,赛前并没有人看好这支平均年龄赛事第二小的德国队,而最大的明星还是那个个帅气的中年教练大叔勒夫。但就如同02年的德国队一样,他们低开高走,让人相信,德国人永远值得期待。 从结果上看,没有了万年老二巴拉克,连亚军都没有拿到。但从过程来看,却让人觉得,也许没有了巴拉克,德国队的青春是另一种颜色。德国队的首场比赛就以一场酣畅的4:0挽救了让人昏昏欲睡的世界杯。虽然第二场比赛意外输给了塞尔维亚,但是在四分之一决赛中又一个4:0大胜阿根廷让世人震惊。 没有人敢想象托马斯穆勒加厄齐尔能打败梅西,然而事实就是如此。托马斯穆勒继承了德国足球进攻线上最伟大的姓,以22岁之龄,在中场的位置上勇夺金靴奖创造了历史,成为第一个拿到金靴奖的非前锋球员。厄齐尔则让人看到了德国的另一种风格,让人知道,原来德国人也可以很细,很有创造力。辅以锋线上重生的波多尔斯基和模范前锋克洛泽,这支低调严谨的德国队以永不放弃进攻的敬业精神,让全世界球迷为之动容。 但从另一方面来说,我却能很接受德国队今年没有夺冠的事实,因为他们的高峰将在四年之后,那时候托马斯穆勒和厄齐尔应该已成大气,那才是德国的天下。 丹麦: 当我们还在念叨着劳德鲁普时,时光却已飞逝,连桑德都不在了,甚至连托马森都老了。奇异的是他们还一直有着罗梅达尔……只是童话随着孩子的长大,早已不再神奇。 喀麦隆: 非洲的社会现实决定了他们的球员只能纯靠个人发展,所以球员之间的差距可以拉得很大。可怜的埃托奥,想想乔治维阿吧,你已经比较幸运了。 日本: 日本队是一支真正值得尊敬的亚洲球队,本田圭佑也成为中田英寿之后又一个世界级的日本球员。若是运气好一点,也许就进八强了。另据八卦说本田收到了我萨的邀请,而他居然一心想去皇马……不开眼啊不开眼。 意大利 : 意大利老了,最重要的是意大利的锋线没人了。以往,虽然意大利是以防守闻名,但是每支在世界杯上走得远的意大利,都少不了一个现象级的前锋。当因扎吉,皮耶罗,维埃里们老去,意大利的蓝色也变成了小组不出线的忧郁。虽然功利足球现在泛滥了,但是死守还是没有希望的。 斯洛伐克: 把意大利逼上绝路的最后一场比赛,让人眼前一亮,能淘汰俄罗斯的球队,果然有两把刷子。随后就为它的惨遭淘汰小小惋惜了一把,不过也就这样了,维泰克终究还是不如杨科勒,东欧足球,还得看捷克…… 巴西: 一直对巴西不怎么发热,就好像对中国的乒乓球不怎么感兴趣一样。当巴西队的队员一个个也都跟黑人一样能跑,像白人一样高大,加上与生俱来的娴熟技术和天赋……强大到了孤独也是一种缺陷。而这支巴西队更是没有了性格,要不是还有卡卡这个人气偶像,估计就只能默默地闷声赢球,然后默默地打道回府了。如果有罗纳尔迪尼奥,如果有罗纳尔多,也许结果不会不同,但过程兴许会好看很多,回想02年的里瓦尔多,不就像现今的小罗么?所以我讨厌邓加。当然,五星巴西没有变成六星巴西也是足球的幸运。 朝鲜: 一直以来,朝鲜队就用我们用来扇天朝队耳光子的工具,人家饭都吃不饱,也能进世界杯。这次却不巧,刚刚好金正日批准朝鲜国内直播世界杯,就被葡萄牙7球血洗,朝鲜国内据说3球落后之后就被切了信号……其实这就是这支朝鲜队的实力,虽说可能比中国队强点,但是对巴西的1:2绝对只是一个巧合。 科特迪瓦: 科特迪瓦其实不算强队,但是却拥有全欧洲联赛里数得着的前锋和后腰,只是赛前受伤的德罗巴和一个赛季没怎么踢的丫丫图雷撑不起一支掉进死亡之组的球队。但我还是要说巴萨放弃丫丫图雷是一个巨大的错误,事到如今,只能祝小图雷在英超好好发展了。 葡萄牙: 我以前一直觉得保莱塔很菜,没想到葡萄牙还真就没有比保莱塔好的前锋了……当然C罗我总是不习惯把他看做一个前锋……而他也确实没找准自己的位置,在瞎跑了几场之后,很顺利地回家备战下赛季了。总的来说,这支葡萄牙队唯一的贡献就是创造了本届世界杯的最大比分纪录。 瑞士: 整个瑞士队我就认识希斯菲尔德和森德罗斯,而希帅也向我们展现了一个好教练的作用,首战击败西班牙绝对是本届杯赛最大冷门。只是瑞士的本钱搁在那里,给你一辆smart,再好的车手也开不过法拉利。 荷兰: 我一直以来都很尊敬荷兰队这次进了决赛,但是我却非常庆幸它没有夺冠。虽然如此,无冕之王的帽子依然被摘掉了,因为如果你没有了那份王者之气,有没有加冕都跟你没啥关系了。 如果让这样一支丑陋功利的荷兰队夺冠了,绝对是对荷兰足球的侮辱。有人说,如果荷兰队解决了内讧问题,不再被自己打败,他们是无敌的。只是当荷兰人不再飞翔,而在地上放飞腿,当全攻全守的鼻祖变成穆里尼奥式足球的信徒,那冠军就是对足球的亵渎。我们不是不允许新的神话出现,比如齐达内就华丽地超越了普拉蒂尼。但试想如果斯内德和罗本们取代了克鲁伊夫和巴斯滕们,这该是多么的悲哀。 当然最后他们耗尽了人品,丢掉了所有尊严,还是输掉了一切。我唯一可怜的是斯内德,作为一个兢兢业业的球员,从被皇马扫地出门,到带领国际米兰在伯纳乌夺冠,这一年是他翻身的一年,最终却还是倒在了离世界杯冠军和金靴奖一步之遥的位置。 西班牙: 两年之内连夺欧洲杯和世界杯,这让大赛打惯了酱油的西班牙有些幸福得不知所措,发晕的典型实例就是作为第一号热门第一场就输给了瑞士队。话说这届世界杯,可能最具颠覆性的就是西班牙队了,从开赛前的夺标大热门,到第一场后的酱油大热门,再到最后夺标,让多少人猜错? 托雷斯不在状态,10号小法被摁在替补席上,自废一成功力的西班牙最终还能够夺冠,不得不说是以巴萨为代表的技术控制流足球的辉煌胜利。但作为以华丽流畅进攻闻名的球队,淘汰赛一路上留下的却是4个1:0,作为一支夺冠的球队,总进球数刚刚跟人家葡萄牙一场比赛的进球数持平,进球队员还只有区区的两个人,不得不说有些尴尬。 也许并不是西班牙的华丽足球变了,而是西班牙的对手变了,都变得穆里尼奥了。所以我在这里想起了未名上某位网友的留言,在回应有些人说西班牙队丑陋乏味,光知道倒脚不思进取的时候,他说:你应该去跪求西班牙队的对手。 也许少了梅西的西班牙不像巴萨那样有速度和突破,但是控球没有错!冠军当之无愧!   本文网址:http://blog.perlfect.me/2010/07/12/2010-world-cup-review.html

我在创业公司的一年(略显稚嫩及不淡定版)

去年在未名写求职总结的时候,就曾经想过,一年之后再来总结一下在创业公司工作的感觉。因为我一年前的选择,在很多人看来不是特别明智。最经典的一句劝我的话就是:去创业公司的机会年年有,但是去大公司的机会则不是很多。 而现在,在创业公司工作一年的我,终于有资格来谈谈体会了。我想接着上面那句话来说:去创业公司的的机会年年有,但是去大公司的机会则不是很多,而能去一家能做成大公司的创业公司的机会,就更难得了。 一谈到创业公司,说好的人和说坏的人都很多。说好的人,大多有那么一点点想法,有点野心,想要做不同的事情,觉得期权是一个可以指望的东西,可也许他们自己并没有创过业。说坏的人,大多反倒是在创业公司干过,对创业公司更了解的人,他们认为创业公司不靠谱,条件差,公司本身对人的助推有限。最重要的是,期权不过是一个有理由给你开低工资的空头支票。 回到一年前,开始的时候其实并不如意。offer里的工资,并不像招聘时说的那样有竞争力;办公条件还很艰苦,也许有人听我说过我对现在公司当时办公环境的第一印象——大网吧;而且公司的一切制度都才刚刚起步,系统性的新员工培训甚至还是第一次。 最终选择这里,是因为缘分和其他的两件事。 第一件事是在面试完之后,公司的CTO和CEO一起给我们做了一个presentation,没有讲员工福利,也没有讲工作内容,而是给我们讲了公司在做一件什么事情,为什么这件事是有意义的,这个市场为什么可以赚钱,为什么我们可以生存下去。这一刻我感觉这家公司不是在招员工,而是在找志同道合的伙伴。第二件事是公司的CTO也是北大校友跟我说,她认为公司最重要的财富是人,所以在招聘上面非常严格,一个近乎有点苛求的原则就是:只给北大,清华,中科院这三个地方的毕业生发offer。作为一家在国内没有任何名气的小公司,敢说出这样的话来是不容易的,而最后做到这一点就更加不容易了。 然而,毕业后父母第一次来北京,我还是没有让父母去我的公司参观。也许是我还是有些虚荣,又或者怕父母担心。以往父母向亲友介绍我,只需说我在xx大学读书就行,其它不用再说。现在,我工作的公司名称连我父母都记不住…… 所以说,比薪水和前途更重要的问题是心理落差,特别是所谓的名校毕业生,到创业公司工作,落差尤为明显。当你在狭窄的写字间里为公司还没开始挣钱的产品努力改代码的时候,你在知名大外企大国企的同学正以各种培训、出差之名环游世界。你在知名国企或机构工作的同学去消费场所开发票,都不用拿名片出来,而你甚至都没有名片。所以当陌生人得知你是名校毕业生,满怀期待问你在何处高就时,你会不由自主地有些犹豫,然后你就能看到对方眼中那种明珠暗投的怜悯神态…… 但是现在的我,却很庆幸自己战胜了这一切,选择了一家在做正确的事的创业公司。撇开名与利,它给了我其他太多超乎期待的东西。名与利当然很重要,甚至是非常重要,但是有些事情人的一生总是值得体验一次的。 在这里我的第一份工作是重写一个给全公司发邮件的脚本,用来汇报每天公司的系统流量。虽然如果因为程序的问题或数据的问题出了差错导致邮件内容不正确或者没有准时发出来,得给全公司的人写邮件道歉说明,但看到自己每天都在给全公司报告公司的健康状况,还是很有自豪感的。更自豪的是这个小小的绘图脚本,以一个曲棍球棒式的趋势图形象地见证了一年里公司的成长,而这张图被CEO用在了年终给董事会汇报的PPT的第一页。 为什么我会知道这张图的故事呢?因为CEO给董事会汇报的内容,随后就会讲给全公司听,除了技术上的review,公司经营状况的定期更新,几乎是公司内部最热门的集会。如果我当初选择了某家跨国大公司的某个螺丝钉职位,可能我现在都还搞不清楚自己工作内容的价值在哪里。而在创业公司,你的每一分努力都会对公司和自己的前途产生看得见的影响。 因为小,所以成长是最激动人心的。我记得有一句很经典的话是这么说的,如果一个公司在一个市场上占有了50%以上的市场,那么它就没法使自己的市场份额翻番了。创业公司则不然,在一个本身容量都在不断扩大的新兴市场里,你只要在做对的事情,那么惊喜会不断地过来。短短地一年里,我们发布了上十个版本(某大型外企给我offer的时候说他们的产品是一年一个版本),系统流量增长了了20倍。在这一年里,我见证了数不清的数字里程碑,几乎每一次,CEO都会为下一次的记录开启竞猜奖池,但几乎每次我们的竞猜都显得过于保守。 除了利润之外,我还看到了自己的社会价值。这一年里,互联网上出现了越来越多的高质量视频内容:NBA全明星赛首次官方网络在线直播,奥巴马的国情咨文演讲在CNN.com网络直播,Lady Gaga的《Telephone》在Vevo.com首发单日播放次数超过300万,ESPN首次在互联网上转播世界杯制造了世界上最大的网络事件流量记录。而这里面都有我们的工作,因为我们的工作,让网络用户和优质视频提供商双赢成为可能。而作为一个体育迷,我更为自己对于网络直播模式的支持做出的小小贡献而自豪。更让人开心的是,时不时还会有用户对我们的赞誉之词通过email直接转发到我自己的邮箱……这,就是不断前进的动力。 当然,到这里为止我都没有提到对于一个创业公司来说很重要的东西——同事。因为小,所以不多的那么几十个同事就显得对你的生活影响格外的大。 从技术上说,我在进入公司之后才发现公司里有各种传奇大牛,社区名人(之前也介绍过公司的选人标准了……),甚至公司在某些技术方面还是国内的重要据点……我从身边的大牛学到了很多,结合工作内容的一点点压力,我觉得自己学习的速度甚至比在学校里考前突击还快(当然,这也跟我在学校里过于吊儿郎当有关……)。 而说到氛围,从半年前一个清冷的早晨CTO从电话会议室里冲出来大喊:we did it!we got ESPN!到一年后的前几天,我们在世界杯比赛的直播中创造了互联网动态广告投放的记录,同样是我们的CTO在开香槟的时候激动得流出泪来,再到每次创纪录时或签下新客户时各种开心搞怪的邮件,再到群邮热议午餐菜色,新办公室装修布局,以及新来的前台mm……我无时无刻不在感觉我是在跟一群真正在追求些什么东西的年轻人在一起工作。在这里我真正地体会到了某汽车广告词的感觉:向上人生路。 也有人过我一个很现实的问题,如果这家公司最后不成怎么办?其实我想的很简单,我会尽一切努力让它成。虽然我能起到的作用有限,但即使万一不成,我想这几年的努力也会让我的下一份工作有更多的选择。 所以对于有想法想要去创业公司工作的师弟师妹,我想我的经验就是: 首先认真对待自己的选择,首先要确定自己真的喜欢某一项事业,在创业公司工作,热情很重要,因为几乎没有其他动力给你。 其次要确定自己喜欢这个团队,在某个咨询公司的宣讲会上听到过某咨询师说过的一句话,我认为在求职和招聘中都起决定性作用,那就是:i don’t want to work with an asshole。 再次要顶住压力,不管是别人给你的还是你自己心里的,既然都选定了,就不要退缩。 最后就是尽量充实地去过自己的生活。 最后说句阿Q的话:如果能制造下一个谷歌,为啥要挤破头去谷歌呢? 本文网址:http://blog.perlfect.me/2010/07/5/one-year-in-fw.html

焦糖星冰乐

妈妈喜欢焦糖星冰乐。 妈妈对于我喜欢什么一直是了如指掌,即使现在每年跟我在一起的时间不超过一个月。 而我却总是在追求自己的目标,每次回家前想给妈妈带点礼物总是一筹莫展。 这次新买的房子装修,妈妈请假过来帮我忙。一个快退休的人,在人生地不熟的北京大热天挤地铁,为我们选购环保的材料,熬夜整理成Excel表格,为了给我节省几百块钱而往返各处跟装修公司和建材商讨价还价。我很感激,也很内疚。 今天大热的天气,典型的北京夏天。跟妈妈一起早起去跟装修公司签合同,买完早餐,我说:我给你去买焦糖星冰乐吧。妈妈有些像小孩子一样的开心地说:好! 这一刻,我比妈妈还要开心。 记得上次来爸妈来北京时,陪他们逛街累了之后在一家星巴克休息,给爸妈买了星冰乐。老爸喝了摩卡的,妈妈喝了焦糖的。没想到这次来妈妈还记得,虽然不知道叫什么,但是说还记得上次在星巴克喝的饮料不错。 妈妈是一个从农村走出来的人,从小就非常的简朴,既不讲究物质也没有半点虚荣,有时候对于享受的抗拒甚至让人觉得有点落伍。工作之后她靠着勤奋和聪明,获得了应有的回报,所以该见的世面也见了,该尝过的美食也尝了。因此有时候我总有一种无力给予的感觉:一方面妈妈仿佛对一切可以称得上礼物的东西都不是很感冒,另一方面,刚刚工作的我在物质上也很难有实力给她一个她支付不起的惊喜。 所以我很庆幸是我让妈妈遇见了焦糖星冰乐。 题外话是星巴克在国人心中的形象。从小资到被人认为是装逼,被赋予了太多的意义,我讨厌小资亦或是装逼,所以一度很讨厌星巴克。随着国人经济实力的改变,它终于变成了一家简易的咖啡饮料店,也成了我每天光顾的地方。而妈妈并不知道这些,只知道焦糖星冰乐是一种好喝的饮料。就好像她很喜欢吃的麻辣香锅一样,她总叫它麻辣炒锅。 现在,星巴克在我的眼里,又多了一丝特别的温情。多少年来,我终于有了一种能带给家人幸福的感觉。这也许就是我努力工作亦或是努力生活的动力吧。 本文网址:http://blog.perlfect.me/2010/07/3/mom-loves-Caramel-Frappuccino.html

从系统角度说明为什么不应该引入电子裁判

南非世界杯接连两场比赛的裁判重大失误,导致足球比赛的裁判问题一时成为了热门话题,国际舆论里关于引入电子裁判或者鹰眼系统的呼声空前高涨。广大人民一致认为:不能再用“这就是足球”来推卸责任了。 作为一个不支持引入电子裁判的球迷,我尝试从系统角度来分析一下,为什么不应该引入电子裁判。 首先说明,我不支持基于录像的事后改判机制,这里面的道理很容易说明,因为场上的某一刻的形势决定了球队下一时段的策略。按照一般经典的时间理论,强行修改某一时间点的事件结果而不触发连带的后续反应基本上时不可能的,你扳了道,火车就得跑偏。事后改判基本上就是修改了某一过去时间点的事件结果,虽然这一事件得到了纠正,但是之后的局势发展我们却是无法依此推出的,所以只会导致更大的不公平。 再讲当时改判,实际上这种改判是存在的,但是仅存在于裁判交流后的改判,也即是说不会有场外因素的作用,而我所反对的就是包括电子鹰眼在内的高科技辅助手段。 如果我们把现行的裁判制度看做一个系统,那么首先这个系统是有效的,并且是经过了长时间验证的。虽然该系统会有误差,但是从统计角度上来讲,他是公平的,有时你吃亏,有时你得益。就好像英德之间,虽然德国据说通过高科技手段证明了66年英格兰队打门梁的那个球没有进,但是英格兰队还是66年世界杯的冠军。而本届世界杯赛英格兰那个球虽然进得明显一些,但其对手通过误判所得到的利益也不过是更容易地进入了世界杯八强而已。这个例子意义并不在于对比谁获益多少,重要的是:当系统误差发生的概率恒定,并且所有参与者得益的几率相等时,我们应该认为该系统虽然有误差,但在统计意义上是公平合理的。相反,如果66年因为没有高科技手段而听从裁判判罚吧冠军给了英格兰,2010年因为有了高科技手段能够纠正裁判错误而抹去了德国的得利,这才是不公平,因为所有好处都让英格兰占了。 再看看我们呼吁加入的电子裁判本身。作为一个码农,我深深地知道,虽然计算机系统为了代替经常出错的人脑完成计算任务而被设计的,但是作为人的智力产物的电子系统,其实不可能比人高明到哪里去,各位码农,看看你们的产品bug和缺陷列表,我想你们懂的…… 而向足球裁判这么一个稳定的系统中引入电子辅助这么一个变量,只会把系统搞得更复杂,而且也不能从统计意义上改进公平性,甚至有可能引入新的漏洞。如果不是这样,IT系统产品的生产者也不用在每次新产品新特性发布或上线时所有人心里惴惴不安了。 一个简单的例子就是在韩国和乌拉圭比赛中乌拉圭后卫从门线上挡出的那个球。事实上所有的摄像机都没有捕捉到确凿的证据证明此球进或者没进。老实说,我觉得现在的电子辅助手段从完备程度来说,还远远及不上世界级裁判的辨识能力。像这样的edge case只会导致这个新加入的机制被更多的诟病,甚至导致系统误差的偏移量或者误差频度变得更大。 当我们不信任人的判断时我们把希望在了机器身上,但如果机器也没法给一个明确的答复呢?难道停下比赛来搞个全场观众投票么? 因此,总结一下我的观点: 现有的裁判制度是被时间验证过有效地系统,该系统虽然有误差,但是从统计角度来讲是公平的。 电子辅助手段目前并不完善,如果作为新的变量引入该系统,将对系统的公平性产生负面的影响,会导致更多的edge case和更多的争议。 另外个人最后的一个私人理由不予解释:应该留一点争议和遗憾给足球,否则足球场上不会有经典。 本文网址:http://blog.perlfect.me/2010/06/29/why-no-electronic-referee.html

出游小记

周五公司组织出去玩,我象征性地邀请了一下kiki同学,因为她要上班,就丢下一句:谁像你们资本主义这么糜烂。其实真相只有那么一个,平时上班,我8点起,10点到公司,但是大巴8点半出发,所以我只能早上6点半起……娱乐更辛苦! 出门前公司发放统一标识,除了帽子之外,居然还有白毛巾…… i see, we will be hitchhiking in the galaxy... 八达岭的人真多,而且那个熊乐园居然也还在,我上次来大概是96年吧…… 现在居然还有了上山滑车,刚从滑车上下来,就有人想下山,说下去找个地方打牌喝茶算了。可最终仿佛谁也没有直接下去...倒是在再爬到长城尽头之后,一个米国同事感叹说:为啥这里没有个酒吧呢,要有的话一定会很棒……于是大家都想起了紫禁城里那个短命的星巴克。 下了长城合影,请人帮我们拍照,那哥们端着单反弄了半天,说看不见人在哪里啊,提供7D加红圈头的哥们痛苦地把脸转向一边…… 中午吃饭,发现外国人的禁忌还挺多,有同事是素食者,只吃蔬菜……和……鱼…… 基本上每道菜上来第一件事都是要问我啥做的,为了表达杏仁菠菜和西湖牛肉羹,我绞尽了脑汁……最后一大桌菜,基本没吃……大老板问我,这是中国的传统么?总是剩这么多? 走的时候还在酒店前台观赏了一下酒店炮制的药酒,里面有:人参,灵芝,乌龟,蛇,一种类似壁虎的爬行动物……他们基本上已经问不出任何问题了…… 下午逛奥体公园,坐八号线一站去了一直想去而没去成的奥利匹克森林公园,一上车发现基本上一个人没有,感动到不行,顺便向米国同事炫耀了一下说北京的地铁是世界上最便宜的。 另外,森林公园还是挺不错的 晚上海底捞,这几乎都是公司传统了,但我还是觉得对于外国人来说,这里口味重了点,重辣,鸭血,牛肚,猪脑……故意的么……不过甩面表演还是博得了满堂彩,甩面师傅一见有外宾,一激动甩坏了好几根…… 晚上和另外两个同事坐地铁回家,旁边一个女生手机有个大全屏,写短信说:对面站着几个学生男,一身火锅味,刚从海底捞出来……我真是不小心看到的…… 本文网址:http://blog.perlfect.me/2010/06/26/company-outing.html

西游慢记 - 算账

非常简单的一个Excel,非常不讲究……发出来以供参考。 Items Currency Price Details Price in CNY Amount Total Fight tickets USD 798.29   5468 2 10998.6 Eurorail pass EURO 246   2140.2 2 4389 VISA fee CNY 616   616 2 1232 Insurance CNY 223 189 + 34 223 2 446 Hotel at Barcelona EURO 320 120+100*2 2784 1 2784 Hotel at Madrid EURO 245 50 *3+95 2131.5 1 2131.5               Hotel

如果Kindle能这样是不是就无敌了?

好久没有入手新的电子产品了,最近苹果公司大发力,但是我却迷上了Kindle,主要的原因其实很简单,我不需要另一个游戏机,也不需要新的手机,我需要的其实只是一个能让我在坐地铁上厕所时能好好利用时间的东西。再加上在电脑上看电子书实在是伤眼睛,所以就看上了kindle。 不过实际上呢,kindle目前还没有正式进入中国市场,国内的替代品汉王一是太贵,二是书库太烂,实在是没有性价比。棒子国的iriver造型倒是很漂亮,但是很脑残的是居然没有任何联网功能…… 其实像我这样的码农,需要的就是一个这样的类kindle产品: 具备E-ink的护眼特性, 有个不大不小的屏幕,省电, 能上网(截止到这里,汉王都有), 能够让我看O'reilly的技术类书籍或者是经典的计算机,数学教材(截止到这里,kindle都有), 然后还能有从侧面拉出一块手写板,让我边看边演算(我就不奢望能够编个例程跑跑了……)。 要是演算的内容或者说读书笔记能存下来,或者能够弄成类似word的修订模式一样的小便利贴整合到原书上,还能将这种2.0的书籍跟朋友共享,那该是多么有意思的事情啊。这样的话,这种手持设备就能支持起一个新的类似于豆瓣的社交网络,甚至还能诞生新的草根技术作家或者评论家……各位码农,你们说这样的产品是不是会很王道呢? 要这样说回来,汉王倒是蛮有潜质的呢,毕竟人家的手写板都卖了好多年了。可惜伊创业板上市时价格而太高,要不然我也买点了…… 本文网址:http://blog.perlfect.me/2010/06/11/product-wishlist-beyond-kindle.html

野蛮维修了一下Microlog

自从Perlfect复活以来,我一直觉得Microlog这个blog程序挺好用的,特别是跟appengine结合,省了我不少钱和精力。但是也不得不说有一些小问题,其中最主要的就是图片链接的问题。 最明显的一点就是,图片一般只能从 /media/.* 这样的路径获取,但是图片链接的生成却仿佛不是使用的绝对地址,所以当文档被归档之后,原来的图片链接就会变成类似: /2010/05/media/.* 这样的url在micro的urlmapping里找不到映射,最后只能扔给了404,这个事情很烦恼,因为我觉得blog上贴图还是蛮欢乐的,所以只好自己尝试修理一下,偏偏最近有很忙……到最后只好野蛮了一下,在最后的归档链接映射前把图片链接显式地指定了一下: ... ('/[\\w\\-\\./%]+media/([^/]*)/{0,1}.*',getMedia), ('/([\\w\\-\\./%]+)', SinglePost), ... 如此,总算是不用我手工去改链接了。然则,用live writer写的文章里贴的图片还是有问题,因为仿佛会使用相对地址,类似于: ../media/.* 这种……以后慢慢修吧 本文网址:http://blog.perlfect.me/2010/06/2/microlog-img-bug-fix.html

一个人有没有做程序员的天赋是很容易看出来的...

比如我,当我奇怪为啥没有人参观Perlfect的时候,发现我的RSS输出不再更新了,怎么回事? 事情是这样的,我使用了FeedBurner的服务,在设置时,我把自己的Feed地址写成了: http://blog.perlfect.me/feed 然后Feedburner为我生成了一个feed地址: http://feeds.feedburner.com/perlfectblog 再然后呢,为了让之前订阅该blog的同学能够方便地使用FeedBurner生成的feed,我修改了url handler,让上面的地址直接跳转向了: http://feeds.feedburner.com/perlfectblog …… 呃,好冷…… 如果您看到这篇blog且不是通过搜索等其他途径,那可能我已经修复了这个…… 本文网址:http://blog.perlfect.me/2010/06/1/perlfect-feed-dead-loop.html

西游慢记 - 后梦

大概是时差倒过了了头,昨天晚上怎么也睡不着,反反复复做着一个梦。 梦里我拉着kiki同学在一个小岛的机场里转机,拿着地图,怎么也找不对路。然后内急想上厕所,结果一进洗手间发现里面全是类似于自动售票机的东西,有些写着Free,有些写着价钱,而我使劲掏却怎么也掏不着所需的硬币…… 这大概就是我对初次在欧洲遇到的一些奇奇怪怪的事情的最深层次的初印象了吧: 歪歪斜斜完全没有规划可言的街道,地图虽然画得精细,无奈就是找不着北。 欧洲没有免费公厕的传闻让我不得不好好控制自己的生理功能。 有些过于自动化,一些当地人习以为常的东西让外来人总是找不着头脑。比如地铁门得抠一下扳手或者按一下按钮才会打开,又比如厕所只有在你坐定之后才会自动打开灯…… 另外就是无处不在的硬币,现在脑子里还有超市收银员弹出收银机时那满盒子硬币的乱响。各种面值的欧元,大小还跟面值不成正比,怕是累坏了算术不好的欧洲人。 当然,除此之外,这次西班牙和葡萄牙的两国之行更多的是充满了惊喜和满足。先写这个则主要是觉得梦这个东西,有时候很能反映事实,同时又太具有时效性,也许今天不写,明天就忘了…… 同样,风景如画的欧洲,和气友善不争不抢的人群,也只是在在墙内奋斗的我的短暂一梦而已。赶紧拿钉子把它的尾巴钉在这里,好在以后靠它慢慢地把那些美好奇特的回忆一点点地拽出来。 本文网址:http://blog.perlfect.me/2010/05/31/go-to-europe-jet-lag-dream.html

西游慢记 - 琐事

在巴塞罗那,我们发现了好多家华人商行,有一次走进一家餐厅,都发现是华人开的,老公下厨,老婆收银。一见我们是中国人,就问我们是来“找店”的还是来旅游的。之后还看见了中国人开的超市,发廊,中国保姆等等……现在看来,中国人在国外做生意并不难,但是生意的内容却是一个问题。日本人在西班牙开的店主要有两种:电子产品店和漫画周边店。中国人贩卖的是廉价物质和服务,日本人贩卖的是高端科技和精神,怪不得西班牙人更喜欢日本人。 在西班牙,从巴塞罗那到马德里的AVE高速列车上,前排某人的手机响了起来,我仔细听了一下,是韩红的《天路》…… 初到马德里,正在格兰大街(Gran Via)上逛得时候,一男一女两个自称印度游客的人拿着一张地图和一个两欧的硬币找我们换钱说想要打电话,不明其中门道的我们把钱包打开给他换,于是男的趁机把手伸到我们的零钱兜里翻找,我们只以为是印度人不讲究,在确认零钱没错之后就走了,在吃饭时才发现皮夹侧面都未曾打开的缝里被偷走了100欧。而这一切我们都一点不知觉,真是比刘谦的近景魔术还要牛,只是这门票也太贵了……这时我突然想起了《贫民窟的百万富翁》,然后我就对这个国家更没有了好印象,当然,他们也可能来自巴基斯坦或者孟加拉……不过下次有人需要帮忙,我们还是会帮忙,因为人在旅途,我们也是靠着素不相识的人的帮助过来的,只是就会更加小心了。 在马德里,路上见到不少中国人,开便利店的,开发廊的,但他们都只会冷冷地看着你。在马德里火车站,我想为自己的明信片买张邮票,便利店的老板却不会说英文。这时旁边经过的一个背包的矮个中年妇女用日语问我:日本人?我用英语回答:No, Chinese。她又转用英语跟我说:I can speak spainish, do you need any help? 在说完谢谢之后我突然在想问,到底是物质的匮乏导致了中国人的势利,还是精神的文明造就了日本的强大。 在塞戈维亚著名的Mension Jose Maria餐厅里,一对热情的巴塞罗那老夫妻帮我们推荐当地特色菜肴,一番交谈过后,得知我们来自北京,他们说:哦,我们知道,就是那个刚刚举办了盛大的奥运会的地方。看来那一场聒噪也不是完全没有意义。但鸟巢和水立方,那绝不是北京。所以我跟他们说,欢迎您们来北京,我保证北京烤鸭会比塞戈维亚的烤乳猪更好吃。 在马德里索菲亚现代艺术博物馆,我们目睹了一场中国打工青年艺术团的艺术展。这里面有农民工的照片,他们居住的棚户房的实景,描写农民工子弟小学的困境的材料,也有反拆迁,反抗企业老板和法律机关勾结的血衣……作为一个中国人,我几乎落荒而逃。我知道其他的国家肯定都乐于看到这样的笑话,特别是西班牙人。在四楼展示了毕加索笔下的西班牙内战,里面的暴政和独裁都是历史,而一楼展示的中国的不公平,则是现在。我也知道这种不和谐的东西不应该出现在这里,但是如果在我们自己的祖国没有供人申诉的地方,这些声音必然需要找到别的出口。不像我前一晚在旅馆看的CNBC今晚秀里,奥巴马和切尼几乎成为了主持人取悦观众的痒痒挠。正确不正确是一回事,自由不自由又是另一回事,也许现在这样自由的成本太高,所以我们只能期待以后,当每个年轻的中国学生都能利用打工的积蓄来欧洲度暑假时,不会在异域像我这样大开眼界。 不过,在塞维利亚的旅店里,reception的老头用不太熟练的英语加西班牙语跟我说,中国的经济很牛,这时候我还是感到了一丝丝的自豪。 本文网址:http://blog.perlfect.me/2010/05/22/europe-trival.html

西游慢记 - 旅馆信息及巴塞罗那的靠谱与不靠谱

刚一下飞机,我们就坐上Aero Bus直奔加泰罗尼亚广场,巴塞罗那因为小,所以街区分得太细了,虽然下车后离预定的旅馆已经不远了,但是看地图找路却不是那么方便,加上巴塞罗那的街道名称都很长,而且不像国内有某某南路,某某北路可以让你分辨一下方位,所以还是得借助路人的帮忙。 巴塞罗那靠谱的地方就在于,是个人都非常热情, 从不会有人拒绝你,即使你找一家旅馆的前台打听另一家旅馆的地址,他们也会热情地帮你打电话联系那个旅馆,甚至路人也会借手机给你打,或者带你去,自己掏出笔来在你的地图上画路线。 而不靠谱的地方则在于,他们经常是不讲英文的,而且是随便指路的,即使你跟他说英语,他依然顽强地跟你说西班牙语或者加泰罗尼亚语,并以为你能听懂……原因是他自己听懂了你的英语,也许在欧洲,各语种之间并没有那么大的区别,至少我觉得一个讲法语的和一个讲西班牙语的人在一起,比比划划多少能听懂一点的,就好像我们南北方言的区别一样。 当我们借助了一位巴西gg和一个银行守卫的帮助终于找到了旅馆地址之后,居然没有发现任何旅店的招牌!立在我们面前的只是一座大门紧闭的普通西班牙公寓楼。因为刚下飞机,有没有电话可以打,所以只好求助路人,路人帮我们按预订单上的电话打过去之后,接电话的人居然说他那里不是旅馆!彻底晕菜,而因为HRS.com的服务电话是德国的号码,又不好意思麻烦路人给我们打国际长途,只好自己去找另外的旅馆,找了一家hostal和一家四星级酒店都客满,他们的前台也都帮我们打了我们预定的Barcelona Centro Hostel的电话,已然没有人接了…… 一边担心自己的信用卡被扣钱,一边担心来欧洲的第一晚就要露宿街头。正当绝望时,突然发现之前来的路上还有一家貌似旅馆的地方,所以直奔过去,一问居然还有房,高兴之际也顾不上120欧一晚的房价,赶紧check in。 这家旅店叫做petit palace,仿佛是某个叫做high tech hotel集团旗下的连锁酒店。酒店内部的装饰很现代,光线和色调的设计都很柔和,高科技元素也很多,走廊里都是感应灯,而且并不是声控的,而是只要你走入走廊,灯光自动变亮,浴室里有按摩的淋浴,卧室里提供免费的无线上网,甚至还为你准备了一台Lenovo thinkpad笔记本电脑,只不过是西班牙语键盘……好在我自己带了个上网小本。   另外最赞的是,除了睡房,还有一个小屋子里有一个很舒服的转椅,窗外是某个幼儿园的操场,环境不可谓不好。 当然,作为巴萨球迷,发现旅馆的电视能看barca  TV也是非常幸福的 当然价格也很让人肉痛,120欧赶上我过年回家的机票钱了。幸好现在欧元贬值,可能最终大约相当于1000元人民币出头。这次到欧洲一个强烈的感觉就是,其实欧洲的消费并不像我们想象的那么高,相比之下,应该说是我们因为有山寨货和廉价的服务业的原因,使得我们的物价过于便宜了,而且我这一印象还是在巴塞罗那得到的,而南部一些不太发达的城市,消费可能就更低,这点从我们预定的旅馆的价格就可以看出来。基本上巴塞罗那的hostel也要60欧一晚,而西班牙南部和葡萄牙40-50欧的旅馆选择很多。因此,我觉得随着国内人民的收入的增长,再伴随着人民币的升值,欧洲旅游将变得越来越大众。当然,人民币升值对中国经济来说暂时不是什么好事,而欧洲旅游变成大众消费,也不一定是好事……因为很多时候我们去欧洲只是为了体验一种不那么拥挤的生活。 虽然第一晚的旅馆很赞,第二天我们舒舒服服地洗了个澡之后还是check out了,毕竟120欧一晚不是我们正常的承受能力,当然,我很真心地向前台表达了我喜欢这家旅馆的意思,并说我一定要写在我的blog上,并向朋友推荐,另外,这家旅馆的地理位置极佳,就在加泰罗尼亚广场往北2-3个街区,走路可能要不了10分钟,如果是商务旅行,确实可以考虑这家。 欧洲旅馆早上大堂里浓浓的咖啡香非常让人有食欲,只是我们还得抓紧时间去诺坎普,所以就只在前台存了包,然后就出发了。后面的两天,我们将住在另一家四星级酒店,罗马大道上的Amister Hotel。这家旅馆时我在用skype打电话给德国HRS.com的总部抱怨之后他们给我定的,虽然我本想回到60欧一晚的hostel标准,但是他们推荐的这一家确实不错,这是一家botique hotel,就在罗马大道上,离火车站也不远,刚好两天后我就得从Sants火车站出发去马德里,而且价格比petit palace便宜,100欧一晚。加上不愿继续纠缠,于是就接受了这个预定。 下午逛完诺坎普,来到这家酒店,这是一个坐落在街区角上的七层四星级旅馆,所有的房间都是围绕着一个天井,所以走廊采光很好。 而我们的房间还有一面朝向大街的窗户,因为在六楼,所以视野很开阔. 在巴塞罗那,基本上每个街区的房子都是差不多的.虽然外墙装饰各具风格,但是结构都是那种6-9层的小楼,除了大路上之外,很少有绿地。可以说巴塞罗那老城区的密度比北京很多地方都要高。因此,这边的两家四星级酒店,也都不像国内的酒店那样门口带喷泉,有门前停车位,车都停在地底下或者一层,巴塞罗那的街区外侧四面都被楼给包围,基本上没有小巷子通向里面,而每个街区的内部,则一般是天井,倒是有点像是中国云南少数民族的大宅。 我们check in之后就去逛格拉西亚大街,米拉之家了,等到回来的时候,赫然发现桌上摆了一盘水果,还有一张卡片,上面说这是酒店送给我们的礼物。 呵呵,这种小恩小惠总是能让人感到很贴心,既是让你为之付出的代价是更多的欧元……另外,这家酒店还提供免费的报纸,我就从那里拿了一份巴萨夺冠第二天的报纸留作纪念。而且,他还让我填写了个人信息,说之后会给我邮寄礼物。 呼呼,历时好几天,终于在托雷多的广场上写完了巴塞罗那的一小部分,看来这次欧洲之行可以写的东西还蛮多,慢慢来吧,西行慢记啊… 本文网址:http://blog.perlfect.me/2010/05/20/hotel-barcelona.html

西游慢记 - 初入欧罗巴,总得出点岔子

经过近两个月的筹划,我们总算是出发了,似乎一切都很顺利,过安检,上飞机,下飞机,转机,再过安检,转机的时间安排得刚刚好,整个旅程也还算舒适。 总体印象呢: 南航的飞机餐很难吃,特别是对比了荷兰皇家航空的飞机餐之后,人家的咖啡好歹不是速溶的…… 在条件恶劣的情况下,其实欧洲人也不怎么讲究,这一点在飞机上大家的表现就可以体现。可以预见,经历了经济危机之后,中国人和欧洲人的差距将越来越小。 也许是北京真的已经很国际化了,一路经阿姆斯特丹飞到巴塞罗那,我并没有预期中的刘姥姥进大观园的感觉。可以说,硬件设施都很像,区别的只是人。这里的保安高大得让你一点捣乱的勇气都没有,而黑头发黄皮肤的人也大多是日本人或者棒子。 当然,人生地不熟总还是得出点事,只是没想到第一件事就玩大了点……我之前在HRS.com上预定了一家叫做Barcelona Centro Hostel的旅馆,在我们坐机场巴士(涨价了,5欧)到达加泰罗尼亚广场(Placa de Catalunia)之后,借助一个巴西帅哥的帮助找到地址之后,却发现门口没有招牌,按门铃问物业,居然回答说这栋楼里就没有hostel……这下玩笑开大了,于是又只好接了路人的手机打给预订单上的电话,一个人接电话居然说他们不是旅馆!再打过去就没人接了…… 无奈刚刚落地,又是晚上,没办法去买手机卡,又没办法上网,只好拉着kiki的手在附近转,陆续找了几家hostel和hotel,除了一家五星级的没敢进去问以外,其余的竟然都客满,好心的前台GG们都帮我们打了电话,或上网查,都没有发现我们定的这家hostel的踪迹,难道真要露宿街头!? 经过半天的搜寻,好不容易在我们来的一条道上找到了一家四星级酒店,咬牙花120欧要了一间房,条件还不错,先歇着吧,然后用skype打电话给了HRS.com,总算是知道了,这家旅馆还没开……晕死,然后他们就承诺说帮我再找一家同样价位的旅馆,但目前还没结果,累死了,先睡觉……   一觉醒来,又给HRS打了个电话,他们帮我找了另一家四星级酒店,100欧一晚,里火车站和诺坎普都比较近,因为找路折腾怕了,我就答应了,好歹在当地的旅游地图上能找得到,不像Hostal,条件如何不知道不说,还巨难找,一般都在大楼里面,外面连个招牌都没有。与其花60欧住这种旅店,我还不如多花点,住安心点,其他地方就只好省一点了。 今天先去诺坎普搏票,还得先买个本地的手机卡,毕竟不是哪里都能用skype。 本文网址:http://blog.perlfect.me/2010/05/16/arrive-at-europe.html

西游慢记-准备篇

明天就要出发,今天赶紧更新一下准备工作,希望明天能顺利。 两个月来看了很多材料,昨天还用Google Street View把巴塞罗那机场转了一圈,而ki总最近在家潜心钻研,估计比我还明白: 当然,我的重点是巴塞罗那,至于之外的地方,全权交给ki总打理了…… 其实我觉得,西班牙这种旅行国家,接待的游客多了,即使你不会说英文,估计也不会让你给丢了,前期的准备,主要是为效率和经济考虑。现在我才觉得,旅行就是一分钱一分货,或者说一分钱一分时间,想少花点钱,就得舍得多花点时间,想省心,即使不跟团也得准备好钱包。 花时间的另外一个因素则是为了让旅行的时间更有价值,因为如果不了解,当然也没法欣赏,要不是有穷游网,我估计也不知道西班牙有Tapas可以吃,有Sangria可以喝。 关于这次旅行,我还总结了一些信息质量较高的官方或非官方网站的google书签列表,基本上都是交通信息,景点信息类的。 然后就是物质准备,总结起来就是三个包,下图是我背的两个: 一个探路者55L背包,打折的时候589买的,底层可以放鞋和图书,包囊内主要放衣服,外侧三个拉链囊,一个放上网小本,另两个放日用品,两侧网兜分别是雨伞和水壶,还塞了一个购物袋进去以备采购时需要。 日常穿着我带了一双人字拖,主要是为旅馆准备的,为了对付海滩,买的是户外款的。衣服主要是短袖和短裤,除了速干运动裤就是棉麻面料的衣服,舒服方便,听说最近西班牙因为台风和火山灰的原因,冷得反常,但我又不想再往包里多塞了,于是决定明天把厚衣服都穿身上……ki总因为是文艺女青年,自然就会带一些品种更繁多的衣服去……不过她带皮鞋的企图还是被我无情地扼杀了…… 一个KATA DW493的相机腰包,在锐意529买的,有个乐摄宝的Inverse AW100更便宜些,但是太大,不贴身,这个包扁一点,长一点,一机两镜,开口设计也很合理,我只有一机一镜,另一个小口袋刚好可以装数据线,充电器啥的。 另外还有重要证件,包括护照,机票,欧铁通票,巴士及酒店预订单,欧元现金等等,我们买了一个看似质量很好的公文袋装在了一起,连同一些吃的东西,由ki总另外背在一个方便一些的小包里。 OK,准备停当,准备出发! 本文网址:http://blog.perlfect.me/2010/05/14/go-to-europe-preparation.html

西游慢记 - 西班牙申根签证攻略(个人旅游)

准备出发去西班牙了,给同学们承诺了写游记,但是某队说,没有签证攻略,后面的都没意义,那就写个签证攻略先。 其实关于申根签证(schengen visa),网上已经有很多攻略。但是网上写攻略的人大多在吹嘘自己的旅游计划多么NB,简历做得怎么漂亮,如何会讨好签证官之类的。其实到最后最重要的是凑齐使馆要求的必须材料,而其实很多东西人家看都不看。现在我就以自己在西班牙使馆申请申根签证的亲身体验写一个流程攻略,供以后有需要的同学参考。 所谓申根签证,是指去欧盟29国时需要申请的签证,该签证可以向任意一个欧盟成员国的使馆申请,得到的签证是具有同等通行力的。记得不久前看过一个统计,仿佛法国的申根签证是最好签的,德国次之,其他的就都差不多了。选择区哪家使馆签证主要取决于你在欧洲主要呆在哪里。不过据说欧盟准备将申根签证的地点和标准都统一起来,应该说,以后对于个人旅游者来说,这个签证会越来越好签,当然前提是你准备材料齐全。 以下是西班牙使馆签证流程攻略: 1。预约签证 西班牙的签证是通过email预约的,具体信息可以在这里找到:http://www.maec.es/subwebs/Consulados/Pekin/zh/MenuPpal/visados/Paginas/visados.aspx 首先,发一封英文的签证申请信到 cog.pekin.vis AT maec.es,大约一两天之后会有人回信给你,通知你签证的地点,我是2010年3月16号发的申请,第二天一早就收到回信,安排我在3月22号去签,没想到使馆反应如此迅速,搞得我还有点被动。 2。签证材料 其实签证所必须的材料在网站上都有,但是我当时看的缺少旅游签证的清单,结果还被要求补了材料,所以手里现在有一份补材料用的清单,上面有所有需要的材料,罗列并解释如下: 护照复印件, 注意如果护照是首页和所有有内容的页面都要复印,如果有多本护照的话,之前的旧护照也必须复印。 西班牙文的西班牙方面邀请函,这个是商务和访问签证的人适用,旅游的略过。 西班牙警察开的邀请函,这个是访友签证的需要,据说必须是亲友居住地当地警察局开具的,旅游的略过。 中国公司的工作证明(英文或西文),包括申请人在公司中的任职,去西班牙的原因,在国外停留的时间,工资情况,单胞往返,公司负责人的名称及联系方式。一句话,就是得让你工作的公司拿公司的稿纸写一个英文的证明,说某某人在我公司担任某职务,年薪多少,先准假去你国游玩,多少天之后会回来工作之类的。 中国公司的营业执照(原件,复印件和英文或西文翻译),这个要求比较扯淡,我就复印了一个中文复印件就ok了。 户籍本,户口登记册(原件和复印件,英文或西文翻译),我第一次就是因为没翻译,结果悲剧了,这个网上有模板,照着翻人名地名就行 旅行保险,欧盟要求去欧洲旅游的人至少购买赔付额300000人民币以上的旅行保险,这个很多保险公司都有,专用的旅行保险,我买的安联的,网上交了钱,给你发一个电子保单,自己彩打出来就能用 住宿证明,宾馆预订单,机票订单(英文或西文,原件和复印件),这个也比较扯,因为电子机票的话,不会有原件,直接打印出来就ok。之前我也担心万一定了票没签下来怎么办,但是借某C的话来说,人家巴不得你赶紧去欧洲花钱,不会不给你过的。所以大胆订票是没有问题的,另外万一不放心,可以现在booking.com或者hrs.cn预定那种可以随时退房的旅馆,注意看清楚预定条款就行。 财力证明,包含能证明申请人和公司支付能力的银行最近三个月的活期存折。对于个人旅游来说,只要出局个人财力证明就行,我找招行打了一份工资卡的半年流水单,又找我存钱的农行开了了一个存款证明,很简单,只要跟银行的业务员说是签证用就行。基本上存折上还是要有个几万块的。 在申请人不懂英文或西班牙文的情况下,需要邀请方证明翻译情况。这个…如果你不懂英文,那就跟团吧… 用西文或英文写的旅游计划,基本上只要根据你的酒店预订单,写你几号到几号在哪里,住哪里就行,一张纸搞定 带有白底两寸近期照片,这个要求是2张,一般直接去照相馆说使馆证件照就行,会比一般的证件照稍微大一点,宽一点,一般是四张一套,怎么也够用了。 另外还有一些展台付款证明,翻译并认证过的亲属关系证书,父母同意书之类的这里就不写了。 3。签证当天 西班牙使馆的签证都安排在上午,下午专门供人领结果,建议打车去,因为使馆区里面没有公交车,非得坐公交可以考虑地铁到团结湖下,然后从三里屯Village的东侧往北走,走到三路屯4街右拐就行。 记得带齐资料,另外还有一人660元人民币的签证费。 注意资料尽量多复印几份,否则临时出来是找不到复印店的,有人会把车停在使馆外在后备箱里拿蓄电池开一个打印机给你打印和复印,但是价格极其黑,10块一张纸。不过在车后备箱放打印机还是让我大开眼界,不得不感叹中国劳动人民的智慧,怪不得欧洲人做生意斗不过咱。 进了使馆之后是三个步骤,先等着,然后被保安叫去交签证费,最后递材料,西班牙使馆是可以递签的,所以如果蜜月出行,去一个人就行了。当然这个时候最好提供结婚证之类的…也很有可能不会被看。签证官有三个,一个负责长期,两个负责短期,长期的一般是中国人,因为长期的很多是在西班牙务工的人员,文化水平一般。短期的有可能是个西班牙男人,比较的不耐烦,因为我说我是巴萨球迷,还被他要求补材料,估计伊是首都球迷…… 当然,如果是申请留学,那就是另外的流程了。 4。取签证 这个就很简单了,递完材料之后就会通知取结果的时间,到时间了下午过去,工作人员会给你你的护照让你确认信息,确认无误后就可走人啦。   总的来说,整个签证过程比我想象得要简单,特别是对于我这种白本来说,也没有什么刻意刁难。西班牙使馆的工作效率还可以,就是场面有点混乱,据ki总说,德国使馆就有秩序得多,不过相应地也就更严厉,不像西班牙使馆,还有得变通,比如资料没复印全,可以找人出去复印,然后拿回来继续递交,而德国使馆就只有几分钟的时间递交,材料不齐就直接打回去重新预约…… 总算是写完了,希望能攒得点人品,好让冰岛的火山不要再喷发,希望西班牙的天气赶紧变暖和,不要老下雨……我要阳光海滩…… 当然,无论怎么攒人品,巴萨也不能今年在伯纳乌拿欧冠了……唉。 本文网址:http://blog.perlfect.me/2010/05/13/go-to-europe-visa.html

CherryPy and CGI::Application

好久没有写Web应用,以至于最近需要给自己的一个工具写一个Web界面的时候突然不知道如何着手,我的第一想法是CGI::Application,虽然它很顺手,但是碍于Perl的某些名声,公司对用Perl做事情持保留态度,因此只好去python的框架里找,于是就找到了CherryPy。 我想,CherryPy应该就是为我这种偶尔写web界面的人准备的,比起Django甚至是Turbo Gear,它的复杂度都不足以支持一个工业级的Web服务的需求。但是它的优点就是简单,面向对象的设计,非常直观的URL路径到类方法的直接映射,完全不需要Handler配置之类的。当然,要说我选择它的最重要原因,就是因为它太像CGI::Application了。 CGI::Application是我用过的第一个不用配置文件而直接可以将URL映射到Handler方法的Web框架,而且支持众多template模块,还能用DBIx::Class,夫复何求啊。 而CherryPy则更生猛: 自带web server,不需要繁琐的配置,找一个没人用的端口就行。想要启动CherryPy写的服务,直接运行脚本并置为后台模式... 支持我比较喜欢的python template系统Cheetah 真的太像CGI::Application了... 想想看CGI::Application还有什么优势呢?性能,可扩展性,可能吧,其实我本来想说CGI::Application的名字很直白很容易被搜到,结果人家现在也改名了,叫Titanium 本文网址:http://blog.perlfect.me/2010/04/16/cherrypy-cgi-application.html

10 things i hate about python

-- this is from a perl programmer's prospective... 10 things i hate about python, and possible workaround...  Using tab/space indent as part of syntax structure. Yes,  one could consider this as a driving force for "clean code", but doing this completely eliminates the possibility of any automatic format tools. Think about the Ctrl+Shift+F for eclipse, '=' for vim and my favorite -- perltidy for perl. what even worse is that one could chose from tab indent and space indent, but not both!

为什么程序员应该学习修电脑?

吃晚饭的时候,接到一个学姐打来的电话,说是她老公回国,想要买笔记本电脑,想找个懂行的人帮忙挑选,想来想去,只想到了我。跟我吃饭的是个MBA,他天天有人一起聊天喝酒,而我只被广告短信偶尔光顾。 记得不知道多久以前,某BBS上有个热帖叫做:我们信科的不是修电脑的!而国外还有一件很有名的T恤在这里。 在其实也不太“懂行”的我热心的解答了学姐的疑惑之后,回来便想写这篇博。 感谢本科时的心理学概论学习,这个问题可以从马斯洛的需求层次理论说起。一般来说,马斯洛把人的需求分为五个层次,由低到高分别是: 1.生理需求 2.安全需求 3.社交需求 4.尊重需求 5.自我实现需求 所谓的由低到高,是说只有在低级别的需求得到满足之后,人才会追求更高层次的满足。 生理需求,就是食与色。 另外据说有还有房,但是在天朝,我想房应该摆在更高的层级上,也许放在自我实现层级?在天朝,房已经不仅仅是避寒遮雨的东西,而是人生成就的标志以及讨老婆的利器。扯远了… 安全需求就是说不但要有得吃有得穿,还得保证明天有得吃有得穿,所以一般咱过年的时候拜年短信写的身体健康,工作顺利啥的都是这一层的美好祝愿。 然后是社交的需求,亲情友情爱情。 在就到了尊重需求,因为有了社交,人就有了被认可被尊重的需求,也就是我们经常讲的地位和面子。 自我实现需求我就不讲了,因为俺暂时还无法理解这种需求,目前我的理解就是一种人在牛到独孤求败以致蛋疼时聊以自慰的动力。 然后再来看看对于程序员来说,为什么修电脑的技术很重要。 程序员通常都是被喂得很饱的,因为神一样的google说,要让程序员有足够的食物,所以所有的IT公司几乎都开始拿食物当福利,免费的午餐,免费的零食和饮料,所以虽然某本书中将程序员形容为code monkey,但从体态来说,他们更像是code mole,因为整天窝在写字间坐着不动盯着计算机屏幕,他们逐渐变成圆形,视力逐渐退化,而且偶尔见到阳光习惯性眯着眼,就像一只刚出洞的鼹鼠。所以,第一层次的需求对于他们来说,可能至少能满足一大半…… 然后程序员这个群体的的奇特本性就开始显现了: 他们没有安全需求,因为他们认为这个行业本身就是不安全的,今天的热门技术明天就成了Trash;线上的应用永远在Crash;今天还是最有希望的科技公司,明天就Run out of cash……他们在不同的泡沫中游走,同时每天都在为自己的未来焦虑。 他们也没有社交需求,因为目前的计算机还不能通过图灵测试,所以严格来说不算是人,而社交需要的是跟人打交道…… 但是,他们却有着强大的尊重需求,因为每一个程序员都认为自己是天才,每个程序员都认为自己因为懂得计算机而了不起(这确实很了不起)。而真正残酷的现实则是:唯一需要他们的只有他们的老板,其他人则可能根本不知道他天天在哪里出没…… 在社交的时候,任何人都必须握有社交资源。我们结交医生是为了哪天生病了能在医院排上号;结交金融家是为了获得值钱的投资信息;结交美女则是为了美的享受;在天朝,结交公务员还会有各种各样的原因…… 程序员有什么可提供呢?对于一般人来说,除了修电脑和电子产品导购,可能没有什么其他的可提供的了(当然,也有人说在大学里,精通C语言也是算一个)。也即是说,帮助别人维修电脑或者给别人提供电子产品采购方面的信息很可能是唯一让人对程序员采取主动的理由,也是程序员的尊重需求得到满足的唯一途径。但是一个程序员应该注意的是,他自己修电脑或导购的能力,一般敌不过村里的小贩,或者本公司的IT职员,所以不经学习贸然出头很有可能自取其辱……(俺就不说自己了,很多回了……T_T)   最后,让我用一个血淋淋的joke结尾: 当年我和kiki同学一块学车的时候,kiki同学跟教练在车上聊天 kiki:我男朋友是P大学计算机的。 教练(特憨厚):真厉害呀!那在海龙得有好几个柜台吧? 本文网址:http://blog.perlfect.me/2010/04/2/why-programmer-should-learn-to-fix-computer.html

碰上流氓了...

好不容易复活了perlfect blog,却发现perlfect.org的域名已经被抢了…… 居然连我这种域名都有人抢!向来这个域名应该是去年10月份过期的,本来想续费的,后来实在不想忍受“中国域名网”混乱的网站结构和破烂的系统了,于是决定等他过期,再用腾讯或者google的域名服务,结果就悲剧了... 本文网址:http://blog.perlfect.me/2010/03/30/cannot-get-my-domain-name-back.html

Perlfect复活

非常讽刺的是,之所以想让perlfect复活本来是为了忍不住想写《10 things i hate about python…… 结果最终还是选择了一个python搭建的系统,仅仅是为了appengine的免费空间和域名…… 当然,perlfect的域名还是准备找回来绑上去的……   感谢xuming同学写的这么好的app,很好用!   本文网址:http://blog.perlfect.me/2010/03/30/perlfect-reboot.html