和女儿一起看动画片

小时候看过米老鼠唐老鸭,但是没看过小熊维尼,现在托女儿的福,每天看一遍。小熊维尼里的没有一个角色是完美的。维尼傻乎乎,the bear with a very little brain,每次思考都要附加外部动作,很容易分心。跳跳虎是肌肉男,多动症患者,总在不正确的时间降落到不正确的地点,脸皮厚没心眼。小猪胆小,有个风吹草动就如惊弓之鸟。兔子自持聪明过人,却教条刻薄,做什么事都先计划一翻,坚信印刷出来的东西都是真理。驴子自卑,悲观主义者,一贫如洗,口头禅是“谢谢你注意到了我”。但这并不妨碍他们的生活,也看不出有什么要改变的。对别人的缺点,最好的态度似乎也不是帮助他们克服和改正,而是宽容和接受。百亩森林里没有灰太狼或者格格巫这样的反派角色,麻烦基本上都来自于自身的贪婪、恐惧和对缺点的夸大,而克服困难,需要做的也就是战胜自我,很多时候,是在朋友的帮助下。最好的朋友,是可以和自己一起做“没什么”(do nothing)的人。这就是一部动画片所输出的人生观,我们一家人都可以在里面找到自己,一个动画片可以做到这样也算了不起了吧。我真希望我小时候也是看着这样的动画片长大的。推荐1977年版的The Many Adventures of Winnie the Pooh,2002年发行过DVD。 另一个是我小时候看过的,捷克动画片《鼹鼠的故事》。小时候很喜欢,不过现在看来,有些不一样的体会。鼹鼠的故事,从五十年代末开始第一部,一直拍到21世纪。七十年代的鼹鼠故事有很浓厚的工业化倾向,强调对自然界的改变。鼹鼠自己就是一个工程师,喜欢组装和修理,动不动拿出个机器人挖个隧道什么的。有些内容,比如在有一集中,得到了一堆颜料后,把森林涂了个遍,在现在看来相当不环保。九十年代后开始回归自然,现代文明的痕迹越来越少出现于场景中,多了很有代表性的角色小野兔,情节也基本都在野地里展开,滑雪、郊游、游泳、钓鱼,鼹鼠也开始将满车的户外装备留在家里,和朋友们直接去享受自然。可以说,鼹鼠的故事是一个非常与时俱进的时代系列剧。

我的2008

2008年真是嗖的一下就过去了。这一年发生了太多事情,大事留着别人去说,回顾一下自己这一年中,一些技术和非技术的关注点。 Ruby/Rails Rails这一年从2.0一路升级到了2.2,Rails之外的Ruby框架选择也慢慢多了起来。不过回想这一年,除了Rails thread safe和Passenger,革命性的突破不算多。上个月参加Barcamp,其中有一个Rails session,不知道是不是因为学生比较多的原因,感兴趣的人好像也没以前多。对于这样的变化,我倒是比较认可。一方面是这个社区更成熟了,另一方面,少一些hypo和泡沫也可以让技术得到更健康的发展和更合理的推广。 分布式版本管理 08年对我来说是git全面取代svn的一年。git所带来的不只是一个更方便好用,功能更多的工具,它带来的是管理方式和理念的进步。相信所有用过git以及hg, bazaar 等等版本管理的人,都不太可能再重新回到svn/cvs那个时代了。我自己也成为重度git患者,不光是代码,随便哪个目录,/etc ,~/.ssh ,~/bin …,我已经渐渐放弃将某个文件备份为.bak再修改的习惯,取而代之的是到处git init。 学一种新语言 今年我学的新语言是Object-C ,并且发布了几个用Object-C 写的小软件。很喜欢这个语言,既可以和C/C++ 无缝结合,又具备了许多脚本语言才有的动态语言特性。静态类型的面向对象编程,有太多局限性,来来回回就是is-a 和has-a 的排列组合,动态类型语言创造了like-a ,让设计有更多的可能性,或者说,让简单的设计有更多可能性。而能在编译语言中使用到动态语言特性,能在灵活的同时兼顾性能,Object-C 给工程师提供了一个很好的接合点。 iPhone SDK iPhone SDK可能是今年最热门的技术话题之一了,我也没能免俗。这个话题明年也许会更热。对我来说,能在一个可用性很高的手持设备上,写自己和别人能用的上的程序,是一件很有趣的事情。 Web服务 08年死掉的网站是不是比新出来的还引人注目。 在还没死掉的网站中,我真正在用的,也就是github了。除了使用了正确的版本管理系统,github与老牌code hosting服务的差别在于它突出了“人”,比起众多的“空想六度主义”SNS,它又多了含金量极高的内容-“代码”。”Social Code Hosting”,还算名符其实。程序员之间,就是代码会友,没什么好说的。找我到这里。 活动 今年参加的活动不多,去过几次北京Open Party,也去过barcamp。在家里宅得太久,与社会太脱节,去参加这些活动,主要是想看看大家都在做什么。unconference是一种非常好的形式,我后来也喜欢去注册话题。不过这种活动,常常是上有各种赞助单位,下有一些朋友圈子,向我们这样的游离分子,少了一些归属感。 游戏 本年度游戏,非《怪物猎人2nd G》莫属。不过我也没打到G级。我是动作苦手。

iPhone / iPod Touch 文件传输解决方案 – Cocoa Web Resource Project

到目前为止,也就是iPhone SDK 2.2 ,苹果仍然没有为开发者提供一个文件传输的解决方案。如果一个应用需要为用户提供往iPhone上传文件的功能,大抵会采用下面几种方法之一: 通过一个链接从网上下载。 提供一个客户端,通过自己的协议上传。 支持FTP传输协议。 在iPhone上启动一个http服务,通过浏览器上传。 比上一个更进一步,在http上支持WebDAV,通过改协议上传。 上面这些方法各有利弊。前两种方式虽然开发比较简单,但用户操作不方便,采用的比较少了。使用FTP在一些系统上还是需要额外的客户端软件,也不算方便。WebDAV的方式现在比较流行,Air Sharing和Discover都采用了这种方式。 在做iPhone版iChm时,也需要提供文件上传的功能。我选择了第四个方案,即提供一个http service,通过浏览器上传。这个方案虽然不能象WebDAV那样在一些系统上直接mount到文件系统中,但对于几乎所有带浏览器的系统,它都不需要再安装额外的客户端,实现起来也比WebDAV简单很多。 在http server的选择上,可以porting现有的成熟产品,但是对于这样的应用,apache或者lighttpd等方案都过于庞杂了,实际上只是需要一个很简单的服务。最后找到cocoahttpserver,是由Deusty Designs开源的一个项目,支持异步socket,IPv4和IPv6,HTTP Authentication和TLS加密,小巧玲珑。除了只支持GET方法这一点以外,其他可以说该有的都有,该没有的都没有了。 我对cocoahttpserver做了扩展,首先实现了Multipart POST的支持。在增加文件传输功能的设计上,我将文件当作一个资源(resources),采用了REST的方式: 方法 功能 GET 文件列表,文件下载 POST 上传新文件 DELETE 文件删除 这样的设计,无论从接口的角度,还是从实现的角度,都比较清晰明了。 在iChm 1.0发布后做了些修正,iChm 1.0.1后相对稳定了。现在我将文件传输这部分代码open source出来: Cocoa Web Resource Project 主要功能如下: 支持通过浏览器向iPhone/iPod Touch上传文件,支持文件下载和删除。 内存优化,支持大文件上传。 可定制的web界面。 web界面支持IE, Safari, Firefox等主流浏览器。 RESTful API。 希望可以对iPhone开发者有所帮助。