| 13 张照片 |
转眼就到4月份了。从过完年回来就一直在埋头工作,直到某天上班路上发现路边的桃花开了,才意识到冬天已经彻底过去了。1月初开始做的一个近似于incubation的项目经过了不到三个月时间的rush终于到了一个里程碑点。收到的各方反馈都还不错,我比较欣慰。剩下的事情我计划好就都给实习生去做了,自己抽身出来去做一些挑战更大意义更大的事情。
最近两个月关于公司裁员和重组的各类八卦满天飞,老实说我虽然有那么小小的一丝丝担心,但更多心思还是放在工作本身上——想着怎么把事情更快地往前推,接下来有哪些项目可以去做。往前看通常会让人心情愉快,且不停地能有产出。这种平和的心态来自于我对现状和将来还算比较正面的评估与预测。其实作为remote office里最底层的平民,我们除了等最终消息之外,别无他法。这反倒让周围的大部分同事都能继续平心静气地做事。据说外企在裁员的时候,美国的员工一般是最不淡定的。因为如果他们在排队等绿卡的时候被裁员,那么有很大的可能会前功尽弃重新排过。北京倒没有这个问题,被裁了拿些赔偿金再重新找一个工作也不会太难。但我目前还没有想逃掉的打算,因为公司里还有不少资源和技术对我来说还是新的,还很吸引我。所以希望不论是公司还是具体到某个人,我们都可以顺利通过这一关。
近一周因为天气突变,我被流感击中,现在还没大好,但我又熬夜了,囧。
昨天晚上team buidling去了世贸天阶的金钱豹,我带病参加,258元的晚餐自助,由于没敢吃各类生猛海鲜,所以估计很难值回票价。以前从没去过世贸天阶,昨天去了反而觉得也不过如此。我们在金钱豹里坐的位置挺好,靠窗,就在世贸天阶那个长条顶棚LED下方,天黑之后就能很清楚地看到LED上映出来的五颜六色的海底世界。可惜昨天是地球一小时,8点半-9点半LED就不开了。吃饭看夜景我觉得倒是其次,跟同事聊各种八卦倒是挺有趣的事情,总比他们另外一桌把三国杀从午间的会议室带到晚餐饭桌上来得强。
先update到这里,等下次回来写的时候一定会有很多新的事情了——而且不仅仅是工作上的:D
hadoop支持一个参数叫mapred.cache.archives,让用户传入压缩包,供mapper或者reducer来调用。hadoop自带了解压的功能。比如 hadoop -Dmapred.cache.archives=lib.zip 则在运行程序的时候会在当前工作目录将这个zip解开,mapper或者reducer直接在当前工作目录下读就可以了。
但是这个解压有一个问题,就是如果压缩包里一个目录以及它的所有子目录下都没有一个文件,则hadoop在解压的过程中就会把它以及它的所有子目录都跳过。一定要有文件,hadoop才给解压,哪怕是空文件也可以。但目录这种特殊的文件就不行。
这就要求应用程序不能依赖于空目录做什么事情。虽然依赖于空目录这种事情听起来很傻,但是我们的程序调用了一个第三方的程序居然真就这么做了。就因为这个BUG,上周五我跟我的实习生找问题到晚上8点多才吃上饭。奶奶的。
一是图个简洁;二是想要一块独立于已有SNS/IM帐号的地方。百度空间虽然也能满足上述两个条件,但是博客功能实在有限,而且看上去它的产品定位已经在交友这一块,估计不会再开发什么新的实用的博客功能了。
今天同事从messenger上给我传了几个代码文件过来,我兴高采烈地Mac OS X下解压开改吧改吧扔到SVN上,晚上回来从SVN上下载到Mac OS X接着改吧改吧。改完之后放到Linux上跑,报了个错
-bash: ./run.sh: /bin/bash^M: bad interpreter: No such file or directory
这个错误明显是说第一行的#!/bin/bash后面有一个多余的回车换行符。我在Mac OS X或者Linux下用Vim编辑器打开都找不到^M (即ctrl+v ctrl+m),找不到我怎么删它呀。我首先想到是文件编码的问题,可能同事给的程序是他在Windows下写的,我猜也许是GBK编码。于是我用iconv做了一次编码转换,结果文件大小和内容都一点变化没有,在Vim里面用:set fileencoding看源文件也是utf8,可见文件编码没有问题。后来才知道,原来在Windows下,行的结束符是换行回车\n\r,而Unix系统里面,行结束符是换行\n ,Mac系统里面行结束符是回车\r 。这就是为什么我们平时在Windows下用记事本打开Linux的文件会发现所有内容都在一行、用UltraEditor等高级编辑打开会提示要不要转换成DOS格式,而在Linux下打开Windows的文件会看到^M。
但这里的关键问题是——我看不到^M,看不到就删不掉。我在Vim里面用 :%s/^M//g,也找不到任何的^M。不知道是因为那位同事的编辑器做什么事情,或者Vim做了什么事,让我看不到这个符号(哪怕用:set list也看不到)。最后只求助于 tr
cat run.sh | tr -d '^M' > run.new.sh 这样出来的run.new.sh就完全没有^M了。同样的,用vimdiff看run.sh和run.new.sh完全没有区别,而用diff看,则每一行都有区别。
这里就有两个未决的问题: 1)为什么我看不到^M,但它确实是存在的;2)Mac下的\r 和 Linux的\n 为什么可以”互相兼容“?等我哪天有空了再研究研究。