星期二, 十二月 01, 2009

转移阵地

总算下定了决心,在linode买了一个VPS(Virtual Private Server),就要结束这N多年blog无定所的日子了。一直以来就觉得,把东西寄托在第三方的blog服务提供商处根本不算个blogging的方式,而且悉数目前的BSP们,国内的免费阉割服务严重,有独立域名的想绑定的话还要备案,国外的自由一些,发布方式也更多样一些,可惜有的已经被墙,其他的永久性拥有被墙的可能。自己搭建blog就不一样了,虽然麻烦一些,不过还好所有的事情还不是太难办。大部分人可能还是用虚拟主机服务,也有越来越多的知名blogger们不满于虚拟主机服务的束手束脚以及主机商的overselling,逐渐地转移阵地,而又以选择VPS这种方便快捷的托管方式的人居多。
虽然我完全不是什么知名blogger吧,有一个自己的VPS还是很有吸引力的,blogging的需求放一边,更是可以有一台随时待命的有独立公网IP的服务器用于实践一些自己的想法,发布一些应用和服务。于是就去linode买了最便宜的linode360,每个月$19.95,还算划算,一键安装了ubuntu karmic,内存虽然小一些,只有360M(linode*360*嘛~),跑个流量不大的没有静态化的wordpress还是没问题的。拿到手第一时间就实践了一个以前没做的事情:用nginx替代apache2跑web应用。自己的VPS就要自己照顾打理,相比发个email发布blog来说还是很锻炼人的。
兴奋的差点忘了说,blog搬家至http://blog.iusr.me/

星期日, 九月 20, 2009

出差记 [1]

临走前电视里正播Carlifornia这儿的大火,说都要烧到机场了云云,所以老婆和爸妈都挺担心的。其实降落时也没感觉,就听见有人嚷嚷能看见好莱坞的大牌子,妈地,我坐在中间座位上也肯定是看不到了,不知道真的假的。不过后来看网上的图片,那大火确实够牛X的,有种灾难大片的感觉。
洛杉矶国际机场感觉真大啊啊啊啊啊啊啊啊啊,布局跟北京那个很不一样,不过因为急着转机也就没逛。
过海关时还好,只不过因为顺路捎了些要寄给在这儿上学的大姨子的食品和衣服,有一些吃的被人家要求当场扔掉,唉,想当初在超市时买的时候也花了不少钱了。也算积累了一些经验值:鸟身上下来的东西,甭管是啥,以何种形式出现,都是要扔的,包括快熟汤料;牛肉的话,罐装的可以,塑料真空包装的都要扔;不要想蒙混过关,海关的人多少都懂一些汉语和汉字,带个鸟字旁的字他们都认识。甚至于,我带的一包话梅肉都被海关的帅哥拿起来检查了半天,问我说这到底是啥,我解释了半天是plum之类的东西,他问,上面不是有"肉"字么,我当时就震惊了,这丫也太精了,还认得汉字,遂顺便给其介绍了一下我国汉语的博大精深,颇像一周以后某同事跟请我们吃饭的印度同事解释豆沙的"沙"字。最后帅哥表扬了我的配合精神,拿了我的护照不知道做了啥记录之后还给了我,对我莅临美帝表示了欢迎。整个过程气氛友好,我们还对食品卫生以及恐怖主义这类关系国计民生的问题亲切交换了意见。
后来我觉得吧,估计要是忽悠忽悠他,好多东西也就不用扔了。一帮很单纯的人。算啦,谁愿意缺这德谁就缺去吧~
美帝安检很严格,转机过安检门时就差脱掉裤子了。
鞋要脱,皮带要解下来,衣服口袋里不能有任何东西,笔记本要从包里单独拿出来放盒子里,上面还不能有东西覆盖。队伍前面某位不太配合的老哥导致我们后边的人等了将近20分钟,害得我一直怕错过2小时以后的那班去圣地亚哥的航班。其实还是我太实诚了,后面的航班提前10分钟才慢慢腾腾地广播提示开始登机。其实估计也因为这个航空公司太颓,虽然名头听起来还很牛X,American Airlines,域名也很牛X,aa.com,看见了飞机才知道,那么小的飞机,就差用螺旋桨了。这也让我误以为美帝的国内航班可以不用像国际航班一样那么早提前几个小时就过去机场。
飞机虽小,坐上去还是比较舒服的,估计美帝人民每天生活在水深火热当中只能以暴饮暴食聊以自慰,都长得很富态,所以飞机的座位空间都很大,后来从圣地亚哥飞旧金山的时候坐的美联行的飞机也是。于是让我很不能理解第一次出差时坐的英航的波音767,竟然能挤成那样,没见英国人很矮小啊!
这次飞行过程中我开始觉得悃了。从北京飞到洛杉矶的途中基本没怎么睡觉,旁边的一个导游老姐感冒了,频繁咳嗽打喷嚏擦眼泪,伴随着一些小动作,所以虽然我的座位相对来说比较不错,我也从一上飞机就试图睡觉休息,可还是一直没能睡踏实,最长的睡眠时间估计也就不过半个小时,其他时间都在看出发前快递来的书,虽说是后来基本没用上的书;而另外一边的导游姐姐在被乘务长亲自制止了拿iPhone玩游戏的行为以后,倒头就睡,一直睡到降落洛杉矶前半小时。就像上次出差途中一样,这种人我一直都惊为天人。
快降落的时候,这AA的机长开始抒情:俺们的圣地亚哥这旮儿多美啊,夜景更是美啊,云云。往舷窗外看了一眼,我靠啊,这么黑?没路灯么?我心里马上就唰地出现了一个城市的模糊的形象:N多墨西哥偷渡来的小混混,身上都纹着带鱼,拉帮结伙地在街上乱转,黑灯瞎火的路上,有人被打劫,有黑帮火拼,et cetera。我的小心肝儿一下就紧张到极点,肾上腺素也嗖地全出来了,瞬间就不悃了。
降落了,出了飞机还要走好远到出口,黑灯瞎火的,感觉这机场够小的,
圣地亚哥也肯定是个破破烂烂的落后城市——后来的经历证明这完全是我的幻觉而已。到了出口附近领行李,谢天谢地两个箱子都还在,感谢全球航空公司和机场的协作机制,感谢社会主义国家人民和资本主义国家人民能不计前嫌携手保障人民出行。拉起两个箱子,按指示走到可以叫出租车——也就是传说中的cab——的地方。左右看了看,路上基本都没人了啊,这才10点,放咱那儿正是马路边儿上支起桌子吃砂锅的钟点儿啊。出租车隔了10分钟才到——要说这地儿的出租司机可真有派儿啊,放咱那儿都要排着队等着谁叫车,这可好,还得现打电话叫。拎包上车,给司机看了看目的地地址,司机操着西班牙口味的英语拍胸脯表示没问题。暂时没搞清楚美帝这儿的邮编是不是像英国那里一样精准,据说英国的邮编能定位到几间房子的范围。美帝这儿的出租车可真大,开起来也真快,就是路上果然真是没啥路灯,不过也没有想象的那么少,很多都是被高大的棕榈树给遮住了,在飞机上看不到,只是有些路段还是要完全靠汽车的车灯照明。路上大伙开的都很规矩,没见来回乱窜并道的,外车道的车也基本都是开着很快的,没遇到天津快速路上那种一个小面包儿嘶吼着以50kmph的速度占着快车道的情形。
和我预料的差不多,从机场到酒店开了老半天才到。入住又出个小插曲,前台MM说公司的信用卡结帐时出了些问题之类的,要留我的信用卡以备不测。日,留就留,咱那额度换成美元也不够您刷的。
房间还算不错,双人间,比较大。时间比较晚了,我也基本上全程没怎么睡觉,于是就洗洗睡了。

出差记 [0]

已经来美帝两周了,一直也没写点儿什么。今天周末,除了老大请客吃晚饭,之前也没什么活动安排。吃过早饭就来公司写文档,顺便写点儿别的。
2008 年8月18号,一个阳光普照风和日丽万里无云的日子,我高高兴兴地乘坐着天津至北京的城际列车,前往首都安家楼美国使馆签证中心,办理美帝签证。那火车真 是快啊,还没爽够就到北京南站了,而且可以免费拿到传说中的西藏产矿泉水。从亮马桥地铁站出来就看见牛X哄哄的燕莎,真是大买卖儿,一看就知道咱没可能存 钱给盘下来。
签证比较顺利,也算在意料之中。咱多少也算签了几次了,每次都是事先觉得可能会很比较麻烦,过后发现自己真是太实诚太当真了。公务签有公司保着,基本不会 为难啥,旅游签有旅行公司保着,也不会有问题。最大的问题就是同胞们来签证的人真是太多了,每次都是要等起来没完。记得法签的时候是有中法智签,等候时间 很少,英签的时候去的银座那里的签证中心,人就比较多了,不过等候时间也可以忍受。这次是去美国使馆的签证中心,光排队就排了1小时20分钟,比以前两次 加一起还要多。面试官那里倒是没有什么问题,基本人家问我来答,人家说英语我就说英语,人家说中文咱就说中文。排队时看到很多学生模样的人,手里还捧着个 讲稿,英文的,天,实诚到家了,这还带打草稿的么。还有就是网上看见一个大姐,全程跟面试官拼英文,被毙了N次,然后看了签证中心的blog才幡然醒悟, 下一次面签的时候就和签证官选择的语言保持一直,一次性就过关了…
然后就没事儿了,没当面把护照退回来的应该都是过了的。

飞机是9月6号飞洛杉矶国际机场,LAX,然后转机去圣地亚哥,SAN。一起出差的有5个同事,只有我的行程比较特殊,需要去圣地亚哥呆一周再飞去总部,人家都是飞旧金山然后来总部Redwood City这里。

多少咱也是飞过几次的人了,经验教训也积累了一些,所以这次很早就去机场领登机牌,特地要了最前排的座位,因为只有坐这排才能把腿伸开,否则这12个小时 以后肯定是膝盖疼外加腿酸得实在受不了。不过虽然有了前排座位,可既不靠窗也不靠过道,是3个座位里中间的那个。登机以后明白了,两边都是导游,赫赫赫 赫,这就不说啥了,旅行公司和航空公司也基本都是关系户了吧,这种好座位,整天飞来飞去的导游们肯定第一时间能搞到。期间还看到感觉像领队的某人塞东西给 机长和乘务长,作为一个中国人,我对此深表不新鲜不奇怪不打听。俩导游坐上飞机以后很放得开啊,哦,不是那种放得开,我是说人家很会休息,一起飞就赶紧换 拖鞋啥的,还把随身的小行李箱放前面然后把腿架在上面,那叫一个舒坦…看的我真想掀开过道的帘子钻头等舱里去。
一路无话,自己一个人,比较那啥,寂寞。

星期日, 五月 24, 2009

买车记,自行车,美利达

标题似乎是说车已经入手了,实际上是没买到。挺郁闷的,八成真跟美利达没缘分,这车再好,我也不买了。原因参见凭记忆摘录的几句我老爹跟销售人员的对话:
"这车后轮跳啊,手提着都能感觉出来。""这个价位的车完全不跳是不可能的,在允许的范围内就行………………(省略若干字)………………要不您看看那边那个7000多块钱一个的*圈*吧,那个不跳。"(注意是7000多一个圈,不是整车。7000多也不8000多来着,记不太清了,应该是7000多)
"你看还有点儿龙……""(打断)这种价位的车圈都是手动调的,您看那个x千多的车,圈是机器调的,好多了。"

不多废话了。回想起来都有点儿郁闷,让人奚落好多句。这样一销售人员,老板得赶紧麻的利儿地奖励啊!对自己销售的产品有强烈的自尊心,体现了强烈的主人翁意识,潜在顾客连句坏话都不能说,而且主动推荐高价产品,说话的口气也很维护自己品牌的高端形象。
要说天津的服务行业一直挺让外地人不舒服的,其实本地人也舒服不到哪儿去。丫们有个比较让我哭笑不得的毛病就是一旦某个人出手阔绰在某丫那儿买了件儿东西,以后出手低点儿的就完全不是人了,谈不拢就要奚落一下。现在有钱人越来越多了,有这毛病的销售人员也跟着多了,再加上大伙工资都上调了不是,也没必要看得起买东西的,对吧。想当初配上一台电脑时也是,花了9750,让人拿13xxx的机器奚落,说啥好乜,真没见过钱还是咋的了,4000不到就这么激动。越激动越不跟BK这儿买。

美利达真是个很不错的牌子,关注的也很久了,跟其他牌子的车也都比较过,基本是完胜的那种,高级别的车真让我有些砸锅卖铁也要买的感觉。一直就想买辆入门级的车,因为对公路车确实啥也不懂,让我一上来就一万多买辆车我还真怕让人给赚了,没有一下子掏出来一万零九百以上跟您买车是我的不对。不过貌似今天店里公路车就剩两辆了,一辆1800也不1900多的车,没关注过那个型号所以一听就忘了,另一辆流浪者算是稍微好一些的。前几天看人家网站的宣传材料里09年新款车型里这款流浪者已经被我排除了,不过今天也没其他的公路车了,乌泱乌泱的都是山地,这车还很牛似的被高高挂着,我就想麻烦人家拿下来看看,没啥大问题的话就买走算了,嘛级别不级别的,总比天天早上等公交车好吧。结果车拿下来了,老爹说检查一下车子吧,又龙又跳。本来我是能理解的,这么多年在祖国活过来的,谁还不知道任何东西都没有完美的这个道理么,可怎么也想不到竟然还给人奚落一通……就当是因为没有一进门就砸下来几万块钱买车吧——我估计几万都没戏,人家是高端品牌,几万人民币不算是钱。

不买了,成了吧。您就当我是那个一听见没有2尺的龙虾就来盘土豆丝的那位吧,我去踅摸辆别的,美利达太高端了,消受不起。

星期一, 三月 23, 2009

天津一九八三

又忙起来了,刚开了个头儿想(泛泛)研究一下OpenJDK6的,估计短时间内又没有空闲时间继续了。今儿个赶紧发篇东西来凑数,这几天这本儿相册貌似也已经被很多人转来传去的很多次了吧——Tianjin 1983 (天津市 1983年)。嗯,这儿就只发咱家乡的了。
那个时候我出生还没几个月,看着那些景致真有些唏嘘,虽说我也没怎么经历过吧…记得第一次坐车时,那些车就已经不是这个样子了,只有最后一张图里的93路使用的车型在小时候见过。一直以来我对电车都有种莫名的好感,在北京实习时也是能坐电车的话决不坐汽油/柴油车,虽然电车的加速和刹车感觉起来都很突然(某次哥们儿没抓紧扶手,电车一加速被从前半截车厢甩到后半截车厢)。

星期三, 三月 18, 2009

[浅读openjdk6] 1. 构建openjdk6

接上篇,当openjdk6的代码库已经用mercurial clone/fclone完毕之后,就可以构建openjdk6了。当然构建与阅读源代码没有太大关系,只是如果日后还要做hack的话,总要通过构建和测试来检查、调试自己的hack不是,所以了解openjdk6的构建方法还是有点必要的。
基本上,代码库根目录下的README-builds.html中的讲解已经很到位了,我这里再简要地啰嗦一下整个步骤,权当个中文翻译好了。
  1. 必需的应用程序:gcc 4,g++ 4,GNU make (>3.80),m4 (>1.4.4)。以及README-builds.html中指定的很多个开发包(dev)。我的操作系统是Ubuntu 8.10,内核版本为2.6.27-14,按照README-builds.html的包依赖关系,一下子:
    sudo apt-build install binutils cpp libfreetype6-dev g++ cpp-4.1 g++-4.1 gcc-4.1 gcc-4.1-base libstdc++6-4.1-dev gawk gcc libasound2-dev libc6 libc6-dev libc6-i686 libcupsys2-dev libgcrypt11-dev libgnutls-dev libgnutls26 libgpg-error-dev libice-dev liblockfile1 libopencdk10 libpopt-dev libsm-dev libtasn1-3-dev libx11-dev libxau-dev libxaw7-dev libxdmcp-dev libxext-dev libxi-dev libxmu-dev libxmu-headers libxmuu-dev libxp-dev libxpm-dev libxrandr-dev libxt-dev libxtrap-dev libxtst-dev libxv-dev m4 make ssl-cert x-dev x11proto-core-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-record-dev x11proto-trap-dev x11proto-video-dev x11proto-xext-dev zlib1g-dev
    就好了。我的机器里其实已经装了libstdc++6-4.3-dev以及g++-4.3,不过保险起见还是把g++ 4.1以及libstdc++6 4.1的东西搞进来了,尊重一下README-builds.html,也顺便给自己少找些麻烦——后来测试的时候还真发现用libstdc++6 4.3或者g++ 4.3的话会编译失败,大概看了看错误信息,结论是以我现在的c++水平如果要把它port到4.3的话还是暴有难度的…嗯,那就4.1吧,听话的孩子有糖吃。
  2. 参照README-builds.html,有2个环境变量是必需的,当然这俩环境变量的值指向的目录也不是乱来的:
    • Bootstrap JDK:README-builds.html自己都说了,编译openjdk6的时候还需要一个已有的jdk6是很那啥的。没办法,估计语言发展起来之后需要自己来编译自己的某一部分也不是很罕见的事情吧。我的系统里已经装了SUN的jdk6,所以,ALT_BOOTDIR=/usr/lib/jvm/java-6-sun。
    • JDK binary plugins:这东西还是个新鲜玩意儿,以前是没听说过。照着README-builds.html里的指示,按图索骥到最新发布的jdk 6 binary plugins:http://download.java.net/openjdk/jdk6/promoted/b14/jdk-6-ea-plug-b14-linux-i586-25_nov_2008.jar。这是个可执行jar文件,java -jar一下,accept一下条款之类的东西,指定个目录就可以安装了。安装完成后,在安装目录里会看到一个openjdk-binary-plugs的子目录,结构和普通jdk一致,内容只有两个文件:LICENSE和jre/lib/rt-closed.jar。rt-closed.jar的内容没什么惊喜,一堆SUN自己的SNMP功能的支持类,光看这文件名就知道肯定是不方便开源的东西。不管它的内容:ALT_BINARY_PLUGS_PATH=~/projects/openjdk/jdk6-bin-plugins/openjdk-binary-plugs/ 。
    • 其他的几个环境变量我是没有再手动设置,估计debian系的系统里,那些dev包安装妥当之后也不用再自己设了。
然后,终于可以开始make了,先来make sanity一下,确认当前配置没问题,没问题的话就可以直接跑make了。所有c/c++的代码无疑都是gcc、g++来编译的,其他诸如corba、jaxp、jaxws是单独用javac以及ant编译的,我用的机器上已经装好了ant 1.6.5,编译jaxp和jaxws时也没出什么问题。整个make过程在我这台P4 2.4G MHz 2G RAM的机器里花费掉了…差点儿一个小时…中间看到"linking vm..."的时候我几乎要哭出来了…
make成功后,build/目录下包括所有编译、链接出来的可执行文件以及jar包,还有javadoc。里面的j2re-image和j2sdk-image分别是…jre以及jdk,嗯,废话,是吧。进到bin目录下./java -version一下:
iusr@wisdom:~/projects/openjdk/jdk6/build/linux-i586/bin$ ./java -version
openjdk version "1.6.0-internal"
OpenJDK Runtime Environment (build 1.6.0-internal-iusr_18_mar_2009_16_32-b00)
OpenJDK Client VM (build 11.0-b17, mixed mode)

Yay!



Update: 到一台默认语言设成中文的ubuntu 8.10上重make一次,结果出错了…有3个注意事项要更新一下:
  1. g++、libstdc++6 dev包的版本问题。如果几个版本共存的话,确保g++-4.1在PATH的最前面能被最先找到。这个比较好解决,而且一旦g++版本正确的话也会确保include路径是对应的libstdc++6的头文件库。小问题。
  2. make之前要unset JAVA_HOME。这个环境变量如果存在的话make sanity会报错,错误信息也很明显,所以,同样是小问题。
  3. LANG=C。无论export出去还是运行make,一定确保LANG兼容英语,否则会出现很奇异的错误…
  4. apt-build install libmotif-dev 。这个忘记了很不应该,因为我用awesome,所以还特别地在.profile里export AWT_TOOLKIT=MToolkit了的。
其他的诸如gawk、m4之类居家旅行必备的东西,如果落下没说的话还请自己装好。

星期一, 三月 16, 2009

[浅读openjdk6] 0. 获取openjdk6源代码

最近几天在抽空看openjdk6的源代码。总觉得如果打算干很久java的话,光靠看tutor、doc、reference始终有种底气不足的感觉;src.zip里的东西可以随用随看,但各种本地方法调用以及src.zip不方便包含的类的源代码都是平日在eclipse里开发时很少会花时间看的,但这一部分往往最能决定一个java应用程序的性能。其实预谋了很久了,大概多半年到一年前就有这打算了,可始终没什么空闲,杂事也很多。
OpenJDK老窝在http://openjdk.java.net/。记得早先mustang、dolphin还都在dev.java.net这个域下,而OpenJDK直接挂在java.net下,身份自然特殊。不管别人怎么看,我是想目前先看jdk6的代码,因为日常开发正在用,jdk6也是SUN目前的主打版本,VM特性和API也更稳定,相比之下,jdk7还在密集开发之中,平日看看各种相关人员的blog,新特性、新API也是隔一阵儿就来一个,现在追起来肯定会很累,虽说jdk7也肯定是以后的主流。
获取openjdk6的代码其实也不复杂,尤其是download source bundle的方式,当然也更没劲一些——我(们)的目标是:往死里折腾。
折腾当然有折腾的好处。当你clone了整个一个mercurial forest以后,查看变更记录是了解各种特性、API以及bug fix的最直接的途径,比看什么release notes都管用,而且适合fork出自己hack过的版本——听着很吓人,其实一个hack不见得必须是一个很BT的很完善的东西,那样的话基本成了添加一个feature了,还不如去盯OpenJDK社区啥时候再出Innovators' Challenge的时候去赚些钱;很多时候hack都是临时解决一些小问题,看上去甚至会觉得有些dirty。
openjdk的源代码采用mercurial做版本管理。Mercurial也是个分布式的版本控制系统,优点是跨平台,缺点是忒慢了点儿,用惯了git尤其没法容忍管理些源代码都慢吞吞的;基本上我也只是用它来拿openjdk的代码,目前还罕见有多少我感兴趣的项目使用mercurial的,所以也没动机去深入学习一下。openjdk6的代码位于http://hg.openjdk.java.net/jdk6/jdk6/,是一个mercurial forest——一大堆源代码tree在一起就形成了源代码forest。配置mercurial以及安装那个forest插件的过程参考一下http://openjdk.java.net/guide/repositories.html应该可以搞定,不是什么大件事。有了mercurial+forest插件以后,找个干净目录来fclone一下:
iusr@wisdom:~/projects/openjdk$ hg fclone http://hg.openjdk.java.net/jdk6/jdk6/
[.]
requesting all changes
adding changesets
adding manifests
adding file changes
added 27 changesets with 63 changes to 29 files
updating working directory
29 files updated, 0 files merged, 0 files removed, 0 files unresolved

[corba]
requesting all changes
adding changesets
adding manifests
adding file changes
added 26 changesets with 1439 changes to 1376 files
updating working directory
1371 files updated, 0 files merged, 0 files removed, 0 files unresolved

[hotspot]
requesting all changes
adding changesets
adding manifests
adding file changes
added 28 changesets with 7862 changes to 3278 files
updating working directory
2964 files updated, 0 files merged, 0 files removed, 0 files unresolved

[jaxp]
requesting all changes
adding changesets
adding manifests
adding file changes
added 26 changesets with 2021 changes to 1975 files
updating working directory
1973 files updated, 0 files merged, 0 files removed, 0 files unresolved

[jaxws]
requesting all changes
adding changesets
adding manifests
adding file changes
added 29 changesets with 4864 changes to 2867 files
updating working directory
2583 files updated, 0 files merged, 0 files removed, 0 files unresolved

[jdk]
requesting all changes
adding changesets
adding manifests
adding file changes
added 97 changesets with 41623 changes to 17063 files
updating working directory
16829 files updated, 0 files merged, 0 files removed, 0 files unresolved

[langtools]
requesting all changes
adding changesets
adding manifests
adding file changes
added 40 changesets with 6616 changes to 3018 files
updating working directory
3012 files updated, 0 files merged, 0 files removed, 0 files unresolved

fclone是forest插件提供的命令,如果forest插件没有配置妥当的话mercurial会提示无法处理fclone这个命令的。等mercurial慢吞吞地把代码下载回来后,折腾的第一步就完成了。当然如果只关注openjdk6的某一模块,比如hotspot,可以单独clone这一个tree。基本上hotspot模块是每个人都感兴趣的,jdk模块次之,其他的corba、jaxp、jaxws之流也不算什么rocket science。考虑到模块大小的话:
iusr@wisdom:~/projects/openjdk$ du -s -B M jdk6/ jdk6/*
542M jdk6/
1M jdk6/ASSEMBLY_EXCEPTION
20M jdk6/corba
63M jdk6/hotspot
37M jdk6/jaxp
35M jdk6/jaxws
349M jdk6/jdk
39M jdk6/langtools
1M jdk6/LICENSE
1M jdk6/make
1M jdk6/Makefile
1M jdk6/README 1M jdk6/README-builds.html 1M jdk6/THIRD_PARTY_README 1M jdk6/TRADEMARK
大概要准备>600M的空间吧,这年头应该谁都不在乎这点儿地方了吧。
OpenJDK社区的代码仓库索引页位于http://hg.openjdk.java.net/,对其他项目感兴趣的话可以自行clone/fclone。
开始折腾前还要铭记一点:大部分openjdk6的源代码是以GPL v2许可的,部分基于其他开源项目的代码还维持其许可证不变,此外还有部分二进制模块使用的是OpenJDK二进制文件许可证。如果真折腾出来好东西了,别忘了回馈社区,没有人家夯下的基础,这一切都不可能完成。

我的饭 [0]

把最近觉得还算靠谱的饭否更新集合一下贴出来,一是因为平时在饭否上时间花的很多,blog总不更新的时候饭否的资源不能糟践了,二是也不想上一篇在顶上停留太久,人总是无趣的。
  1. 看到N多搞笑的东西,估计都是IDE用的时间太久了,也不关心底层造成的。不过构造器里return了一个其他对象还是太雷了。 2009-03-13 14:32
  2. 有N多人把一个调用都写错,搞的我要查查文档看是不是我记错了 -____-# 2009-03-13 13:27
  3. "这里聚集了大量的中国互联网骨灰级玩家",很好奇互联网是怎么被玩的。 2009-03-12 14:59
  4. 好,毙了一个外国人哪 :D 2009-03-12 14:43
  5. 酒店是靠湖,结果房间是冲着马路的 -____-# 2009-03-11 11:22
  6. mcafee太JB招摇了。以后再也不推荐丫了。谁TM还用杀毒软件来着? 2009-03-10 19:57
  7. 猛然发现一封godaddy的中文广告邮件。 2009-03-10 14:51
  8. 忽然想,TOAD Freeware这种东西,用runas启动起来的话…试验一下,果然可以启动多个进程了 :) 2009-03-08 18:30
  9. 一个人加班倒也没啥,可以开大音乐,也比较爽,虽说这内置的破喇叭一副破锣嗓子吧。 2009-03-08 13:23
  10. 对待log这事儿真是仁者见仁智者见智。我就怕log不够回头production上去了不好分析,有些人看到server上存的没多少的以往的log还清之而后快。因为吧,我是拿各种工具以及专用的.py过滤了看,人家拿ultra edit看;我用sftp get,人家用secureCRT那个sftp客户端挨个下载。 2009-03-06 13:45
  11. 算了算了,人生下来就不是平等的。我还是sudo tcpdump去吧。 2009-03-06 13:02
  12. lusr 2009-03-06 11:10
  13. 好架构是自己不断进化来的还是一开始就能搞定的?这基本就是进化论和神创论的区别了吧。 2009-03-05 14:44
  14. 一个同事正在大谈用户体验。比较同意他的看法,也是经过实际做了几版产品才得出的看法。感觉我们产品server端所有这些繁文缛节的设计直接导致了开发时间的提升,最终很难处理这么多极端情况而不伤筋动骨,导致用户体验很烂。说白了,还是做java的人常见的那些臭毛病,加上一些长年做C++积累的死脑筋,扔一个办公室里,加上一个重型的软件开发过程,发酵2年。 2009-03-05 14:42
  15. "Oops. Firefox 因未知原因无法载入此页面。" 哇塞,头一次见这个错误页啊! 2009-03-04 21:13
  16. 看到某人名字缩写最后两个是wm就想这是个什么window manager。 2009-03-04 10:35
  17. 然后看到某人的信,问为啥没人。赶紧又跑到电话那里,拨进去,还是没人。我是不是生活在某平行宇宙里了? 2009-03-04 10:24
  18. 话说一直很好奇网站是怎么做发布以及版本控制的。没看过相关的,啥时候搜搜看看。 2009-03-03 23:52
  19. eclipse v3.4, codename 干你妹的。 2009-03-03 11:31
  20. 关掉fb2k,dismount掉这个装满mp3等等的truecrypt卷,回家。真麻烦哪~ 2009-03-02 19:06
  21. 所有no vocal的曲子都很适合睡觉前听。 2009-03-02 17:04
  22. google.com太吓人了,一搜个日本姓氏就能出来几张暴露小图。 2009-03-02 16:05
  23. 某些人读agile时发音很像阿娇 -______-# 2009-03-02 14:23
  24. 算了,反正已经开始在慢慢改了。收了别人反而跑过去随人家的姓,这也够囧的。估计几个月以后,我的简历上就可以光鲜地写上"Sr. 饮水机换桶工 at GOOD"了。 2009-03-01 23:41
  25. 看了好多Visto acquires GOOD的评论,中文以及英文,开始琢磨,你说我在这公司呆着的经历到以后会不会成为被人讥讽的对象?T_____T 2009-03-01 23:39
  26. 发现东家还是很被误解的。其实早就提供企业邮件推送服务了,这块业务比较麻烦,要求很高,相比之下对付各类倒霉ISP的事儿,虽然比较恶心,但还是容易的。 2009-03-01 21:54
  27. 这收购搞的,跟TM自己跳槽了似的。 2009-03-01 21:15
  28. 终于算已婚人士了,licensed to HAWDS :D 2009-02-28 21:55
好,就这意思吧,28条,最后一条正好是2月28号领证儿,也挺有纪念价值。http://fanfou.com/iusr 欢迎光临。

星期六, 三月 14, 2009

09絮叨篇 [0]

今年第一次絮叨这些没用的事儿吧。其实也早就想说了,只不过没有什么动机。基本上如果有人能触发我絮叨这些事,也算是有点儿本事了。
  1. 不要轻易对某个人下结论,在公司里,包括你的上司。这对我这个不可知论者来说是很自然的,不过也不是完全因为不可知。我们都活在某些程度的信息不对称当中。今天,你看到上司提拔了一个"不怎么样"的人,心里觉得不爽也好,不平也罢,反正最终归结于上司的管理水平不咋地。问题在于,一件事发生是有多种因素的:水平不咋地可以导致错误的决定,水平很好但基于各种苦衷不得不做一个错误的决定也不是不可能,甚至有可能这只是一个(你)看上去很错误的决定。大概是因为,否定别人都是很容易的事情,且无师自通。
  2. "不能轻易对某个人下结论"的范围当然包括不要张口就说"XXX他都干什么了他",如果XXX不是你的部下的话。
  3. 信息不对称的一个额外产出是各种小道消息的忠实拥趸。在一家公司内部这种相对封闭的范围内,拥有信息的人是完全可以封锁其进一步流通的,这丝毫不值得惊奇,也不值得用道德什么的批判。只不过信息封锁是小道消息的温床,对苦于信息封锁的人来说,小道消息是充满诱惑力的;同样因为信息封锁,这些消息几乎是无从考据的。当小道消息被很多人口口相传开以后,我们就可以见识一下web 2.0依托的大众参与的力量了。谎言重复一千遍的时候,能不能成为真理先放一边儿,糊弄个把人还是不成问题的。历史是怎么书写的来着?
  4. "我看人很准"。谢谢告诉我这个,也许同时还抱着美好的愿望为我们提供看人服务。不过对我这种开发时都怀疑各种第三方库然后每次都要直接debug进去的人来说,一个人到底好还是不好我肯定是不会咨询旁人的眼睛的。盖棺了就能定论了么?也未必吧。
  5. 除了高管以外,一个公司里,做管理的人就一定有高于干活的人的地位(以及工资)?我一直觉得这种看法老一辈们说说也就得了,当然保不齐80后人群里也可能会有人响应,但是,在IT/计算机/软件行业,尤其在外企里,这种说法是不是也可以成立?更不用说我已经看到N个其他公司的做管理的人来应聘高级工程师了。做管理的人需要干活的人达成目标,所以我一点儿也不着急自贬身价觉得人家高我一头。
  6. 是不是干了一年了,公司就理应涨工资,而且不能涨的太少?基本上我是反感什么"没有功劳也有苦劳"的说法的,更不要说有些人守着弱智方法傻干大干,累个半死还屁点儿技术含量都没有。为什么会有mock?怎么mock才好?一个需要事先做技术研究的解决方案,即使可以成功,似乎看起来也只能减少5%-10%左右的工作量,你会选么?公司不可能是慈善机构的。
  7. 如果让我决定一家外企公司的选址,在资金充裕的条件下,我肯定不会选择天津,虽然刚毕业的时候我确实是很为天津鸣不平。天津离北京最近,而北京那是混IT这口饭吃的人乌泱乌泱地扎成一堆儿的地方, 所以很多IT公司都会选择在北京开张,搞的天津的IT公司屈指可数,更难得有影响力的大公司。不选天津,说句难听的,是因为我总算明白了什么叫穷山恶水出 刁民——这话诸位见人见智,如果谁觉得我是在说天津就是一大农村的话我只好说您圣明了。话说最近几年天津平均工资提高了,进京往返的交通也便利多了,这种 穷山恶水的情况有了很大改善,不出多久,因为强化过的竞争外加相对更低廉的各种成本,应该会有更多公司选址天津,刁民很快也会没什么市场了。
  8. 有些人似乎习惯于要别人招之即来,挥之即去,有问题了:来,IM一下;没问题了:你谁啊。如果是同事的话,这没问题,如果还定位于朋友,有点儿太说不过去。
  9. 扮虎吃猪。记得第一次看到这个说法,貌似是在《程序员》,或者csdn.net上。其实作者也说了,不希望大家都扮得像虎,而应该成为真正的虎。不过这说法在我理解,真正想点明的还是个低调的问题。原先因为兴趣,在刚买完计算机以后接触了很久网络安全的东西,不低调?想吃牢饭么?可惜,也许见过太多扮虎的人了,原本不扮虎的也慢慢扮开了?当然也有人说我是一直在扮虎的,我可不服啊:咱俩站台上,让诸位看看谁的扮相更好,来么?
  10. 考试就全是偶然,只有为了高考而准备考试是我能理解的。费心去准备自己根本都没接触过的东西,想想都觉得实在够累。有些面试官实在是没水准,专考背书题,而背书题是最容易在短时见内准备妥当的。昨天倒是问了那个法国人一些背书题,因为大哥简历实在有些单薄,估计过滤简历的HR考虑到国际友好关系而没有在第一时间过滤出去,可我是挺习惯围绕项目经历经验问的。
  11. 没毕业的时候便被教育说应届生应聘不要挑公司,要挑适合自己的职位。对此我虽然没有深信不疑,也确实是不反对。后来很走运能遇到很多不错的同事,给了我自己发展的机会。在上一家公司工作的时候,我第一次意识到公司要求和个人发展的矛盾,所以更加确信应聘不要挑公司的这个道理。除非您干到高管,否则的话,这公司是不是几百几百强,股价能不能赶GOOG超MSFT,对您的影响能有多大?微软距离破产只有18个月,您挑公司就非挑一定能做成百年老店的那家么?我也深刻怀疑在一家公司扎根一辈子是不是就一定可以干到高管:您这也基本属于直系亲属了吧?
  12. 追求技术有错么?招谁惹谁了么?如果工作了2、3年了还觉得一个产品一个项目只要技术牛就一定成功的话,那可以算作不开窍到极致。问题在于还不具备技术就开始沉浸在技术不起决定作用的论调里,自欺欺人。没人愿意和白痴同舟共济。
想说点儿啥就说点儿啥,嘴长在自己身上不是么。成熟一些的话trackback过来。trackback是啥不用讲了吧?扮虎也别太投入了些才好。

星期一, 二月 02, 2009

产业政治?

continuation,对这个东西很久之前开了个头就没再深入,晚上又拾起来看了下,也算continuation了吧。jsr 315敢情被apache sf驳了,而且是因为很扯淡的产业政治问题,但愿不要难产,tomcat拿起来还算没门槛一些,想改哪里都好改。

On 2009-01-12 Apache Software Foundation voted No with the following comment:
The Apache Software Foundation's vote is based on the point of view that this spec lead - Sun - is in violation of the JSPA

http://www.apache.org/jcp/sunopenletter.html

and therefore shouldn't be allowed to start or continue another JSR until the above matter is resolved.

This vote is not a comment on the technical merits of the JSR.  If not for the issue of the spec lead, the ASF would have otherwise voted "yes".

过年期间本想更新下那个纠结的问题的进展,八成是fix了,而且是我们自己的问题。在这个问题上我也算费了不少心思,也积累了很多,只不过对公司的贡献还不如US那里的人坐着review一下代码。嘴上拿不熟悉这新家酿框架以及从另外一版port过来又做了些山寨修改的代码当作借口,实际上最主要的还是态度问题,因为主观上就没想我们的代码能搞坏下面tomcat和apache的行为。回头好好总结。

星期三, 一月 14, 2009

纠结de更新

好像把apache httpd降级到1.3.x目前来说有效地扼制了该纠结的再次发生,当然,这是还没有完全通过机器压测以及人肉压测证实的,因为各路PM都太忙,前几天发过的一个禁止所有人碰那台server的禁令发布以后真的就没有任何人在碰了,导致降级后服务的压力很轻很轻,除了某health check脚本意外只有我等一二人在随机访问服务。
不过,就像已经敲定的,即使降级到1.3.x可以100%消除这个问题,这也只不过是一个workaround,而不是solution。我真期待我可以NB哄哄地去提个patch给tomcat,可为啥感觉这概率会很小乜…为啥还是很在意dmesg里网卡TSO被disable的那几条日志乜…为啥还是很怀疑e1000网卡驱动的那几个看起来很match该server运行环境的known issues乜…
明天的任务是改掉tomcat的AJP 1.3 connector,强迫丫不许和httpd私下协商来重用已有的AJP连接然后和httpd 2.2.x连接测试——假如这能阻止httpd 2.2.x犯错误,那就意味着…其实也就是验证了下我们长久以来的怀疑:httpd不知道为啥突然漏读/漏发了,导致以后所有的request/response都错了一个位置。显然不重用已有AJP连接的话,AJP协议为数不多的这点儿好处也基本用不上了,对性能肯定是一记重击,是万万不可能用于production上的。
话说tomcat的代码看久了,感觉也不过尔尔,有些繁琐罗嗦跟不上时代,典型的SUN风格。有空倒是该尝试尝试jetty、resin,以前总觉得这俩东西不入流…

星期五, 一月 09, 2009

什么是纠结?纠结就是…

apache httpd 2.2.8 + mod_proxy_ajp,以及tomcat 6.0.14,httpd会时不时地把应该发给用户A的内容发送给用户B。tcpdump显示,完全是tcp级别的纠结:httpd甚至不等tomcat 从AJP link发送回响应就把已有的一个应该发给另外一个连接的响应给发送了出去。所有的server都是从一个镜像复制出来的,但只有这个server,也是 产品正式上线前最重要的一个server,纠结到了这个程度…
于是乎,请求一个图片,返回一个css;请求一个css,返回一个js;某请求应该会拿到302跳转,结果返回一个应该显示给手机客户端的xml文档…
升级了下httpd到最新发行版,发现还是那个德行,然后在我们还在睡觉时被某人幸灾乐祸似的赶紧麻地利儿地又恢复到了2.2.8——稳定性,这是我在这 公司里最反感的一个说词:明明就是不稳定到无以复加的程度…有bugfix都不跟上,让人怀疑隐约是怕万一升级错了就得被人半夜从被窝里拎出来飙到机房。 其实apache出regression的频率和概率比我们自己要小很多——我不是说没出过。
httpd 2.2.8的代码放在机器里N天了,ctags也跑了一趟,就是没有时间看:因为要和人解释为什么我说这不是我们自己代码(java)出问题造成的,因为 有人怀疑我们自己的代码(java)已经神到可以corrupt整个java runtime从而导致tomcat返回错误的响应了。我从来是不会说"不可能"的人,只不过这事儿概率太小了,小到基本上等于我们team一起买了彩票 能瓜分整个奖池的概率。
反正那台server也已经被f*ck到这地步了,备用server也已经有人在申请了,准备搞个lighttpd上去试一下,毕竟apache错发响应 是实实在在被tcpdump下来了的,此外还有一次怀疑是某cache的shability。同时翻翻bugzilla以及svn log。
于是搞的我也很纠结:我是来修我们自己的java bug的吔…
圡鳖就需要受到SM级别的震慑。

星期一, 一月 05, 2009

0x07D8,以及0x07D9

标题党了?

新年了几乎一周后才想起来总结总结。

2008这年,废话地说起来,收获还是很大。损失也是有的,伴随着有如每个project过后都会做的那些lessons learned。
其实我也不是投机商,于是损失也应该算作收获。

重温了下eva。看法没有改变。人总是无法互相理解的。所以,照顾好自己的家人。其他不相干的人,相忘。

夏初的时候出差了一趟,去了向往已久的欧洲。在希斯罗降落的时候飞机是盘着降的,很忽悠。伦敦市中心很挤很乱,有些地方甚至会脏,可是天很蓝,云流走的很快,也明白了为什么英国人喜欢谈论天气。从伦敦桥走到白金汉宫,左膝隐约走伤。好高骛远去学伦敦腔,分不清楚谁是牛津腔。欧洲之星的票真贵,比便宜的航班还贵,餐车卖的饭吃完了恶心想吐,车头也没有想象中那么炫,而且浮土很多,可以想象在刚诞生的时候估计还是很酷的。路过了布鲁塞尔,在火车站转了一圈,跟天津一样到处在施工。德国的环境很好,绿化程度很高,据说要归功于二战期间盟军轰炸机把它基本炸平。波恩很静。科隆人很多。莱茵河看起来也没有多宽。出了公司能搜到的所有的Wi-Fi接入都是要花钱的。英航的7N7坐着明显没有柏林航空的小空客A330舒服。呆了一个半月,回到家有些不适应,主要还是湿度太大,早餐没了生肉和咖啡。

下半年对linux的熟悉程度比起之前增长很快。全都归功于头儿终于争取来第二台机器让我们装linux。SLED装完了用了半个下午就扔掉装了ubuntu。apt-build简单到有些简陋,最大的功劳是让我对gentoo、freeBSD有些想入非非,无视了之前的几次失败的相处。以至于后来狂妄到开始把一些常用软件purge后转去svn trunk、git master,还有bazaar,虽然没怎么用过。

越来越觉得FSF和ASF可以先merge一下再branch,也许可以互相学习一下。

比较了常用开发工具在winxp sp3和这大部分apt-build以及make过的intrepid上的性能以后,决定把winxp定为服务器系统,这台intrepid作为开发用机,因为xp机的硬件配置更高级而且速度更慢。

键盘操作也比以前频繁了很多。vim方面没啥长进,wm改到了awesome,ff装备了vimperator。键盘操作多了肯定会被人骂装逼。其实只不过是提升工作效率的尝试,如果这都要算装逼,那不装也是逼,傻逼的逼。

信用卡的开销也比以前大了很多,注册了paypal,主要是美元消费。两个域名,一个tasktop pro的一年期license,一个github.com的micro帐号。域名基本沦为命名java package的用途;公司想agile,TeamTrack这种重量级tracker的地位被弱化,mylyn也不经常用了,tasktop pro的一年期license比较贵,就当是为mylyn做贡献;github目前还是拿来学习git用,以及保存系统和用户的配置文件,以及其他一些零碎的代码。

上网看东西看多了,也产生了些自我意识。让那些牛人都见鬼去。会看代码是正经,RTFSC以及RTFM是王道。目前只有康神还是很神的。RTM不是RTFM。

年初给别人当伴郎力巴。贷了房子,搞了装修,买了家具,装了电器。5年了吧。

2009年。

多看些底层的东西,少谈论些设计、框架之类的东西,特别是不要自己到处发明局部小框架。重新看体系结构和操作系统基本原理。认真翻C、C++,不要头大。好好学py3000。要看open jdk,6以及7。要有core。有些事情已成定局,有些同学不足与谋,不如安心下来做好眼前的工作。

要安家结婚,不要弄出人命。

此致,敬礼。

星期四, 十一月 27, 2008

SSL历险记

我得承认我是个SSL重度依赖者,上网总会下意识地把URL里的http后随手加个s——我打URL时从来都是从不厌其烦手动写上协议名称的,发送表单——尤其是用户名密码什么的——看到目的URL不是https的总觉得像被人剥光了一样,家里机器时不时地打开着就为了用putty做个tunnel,方便在公司访问一些没SSL支持又敏感的站点、服务etc.。
可惜啊,今天被彻底地打击了,竟然有人会想到这么明目张胆地强奸下SSL。
我得感谢firefox这些不鸟Internet设置里那些CA证书的应用程序,类似的程序还包括thunderbird以及伟大的,那个,SUN
JRE。早晨来到公司,就发现没有关掉的ff里跳出N多错误提示框说mail.google.comwww.google.comapi.delicious.com这些站点的证书有问题。刚开始还觉得是firefox受不了这一夜的孤独又出问题了。可是因为装了那个Perspectives扩展,这种情况下看证书也比较方便,就顺手看了看,结果被……不知道"雷"这个动词适合不适合这个情景……证书的颁发机构是一个很陌生又很熟悉的名字:说陌生是因为长这么大没见过这个CA,说熟悉是因为每个工作日都能看到这个名字。"咦?难道经济危机时做CA有助于增加收入么?"于是,先ping下这几个域名,确认一下DNS没被f*ck掉,check;然后请出openssl
s_client,确认一下ff没有脑残能把证书都搞错,check。那接下来就是标准国骂了:谁(TMD)动了我的SSL会话?!
为了鄙视下Windows + IE组合,我当然得拿出来最新最NB的IE8试试。结果,果然没问题,所以理论上我刚看到的那个山寨CA肯定已经存在于这鸟Windows
XP里了,理论上我还得查一下internet属性来确认一下,当然最后也很明了:我是在域控的关怀和照料下茁壮成长的,所以这鸟XP里出现几个我不认识的山寨CA,还真没法让我吃惊。
好在大部分应用程序还都是靠谱的,看到这种山寨CA还都是会报错说未知CA的。不过这么一折腾,所有本地跑来测试的java程序都没法跟外网服务器建立SSL连接了。还好我比较有前瞻性,早就着手验证这事儿,赶紧发的信给大家说了下怎么让JRE容忍这几个山寨CA。
我在想一个情景:一个恶意站点,因为一直脑残,用的是伪造的、自认证之类的SSL证书,所以无人问津;某个同事不幸地点了别人发的一个URL,正是这个脑残恶意站点,本来这种情况下是会提示证书错误的,结果现在因为根CA被篡改成某山寨CA,而且这山寨CA还是受信的,那这下子连证书错误都不会提示了,IE很高兴……当然也许这SSL篡改程序还没脑残到这程度吧,哪天试验下。
好吧,既然这样,上班时间咱就不看Gmail和Google
Reader了。既然(有可能)人家觉得员工看这些是浪费时间,我就发挥前辈徒手造解放大卡的精神闷头干活吧。

星期一, 十月 20, 2008

Let there be job cuts

So there has been another round of job cuts here, again. This is the
second one I've survived, and it's said to be the 3rd or the 4th,
depending on who is telling the story.
No idea if this is connected to the ongoing crisis. Don't we all use cash, uh?
That just reminds me of one line I should append to my last entry:
what good can you get from a company whose office somewhere does not
even have enough toilets?
That's one bloody toilet with a single closet for over thirty men! Nuts?!?!

Strings

What good could you get from a programmer who even cannot avoid
viruses/malwares?
What good could you get from a country whose people endure the most
messy road traffic?

星期五, 九月 05, 2008

Only some texts

Long time no blog, again.

There's simply no exciting things for me over this long period after returning from Germany. Ah, yes, except one thing: I'm now engaged, after 5 years:)

I'm back to Mylyn , and am developing the habit relying on it to organize my daily work. My company hosts an internal portal site using Share Point. Well, I'd say that I would like to use it if I'm someone who does not need to use anything other than the Microsoft Office suite, but I'm a poor coder, which means I don't make a living using Microsoft Office but my IDE. I've been using Eclipse for 5 years also, meaning that I already had it in my last computer when I met my girlfriend (who has just been promoted lol). I'd tried other alternatives and eclipse still remains to be the best choice for me ever. I like the whole ecosystem built on the eclipse platform; there are not only plug-ins for developers, but a lot of decent desktop/RIA applications, either public available or proprietary.

I should suggest my friends and colleagues to give Mylyn a try. It really helps. And I'm also trying Tasktop Pro for Eclipse, which is available as a 30-day free trial and is at the price of 99.00 USD or 149.00 USD depending on the type of the license. There are simply more features in this Pro edition, such as integrations with Outlook, Gmail and Google Calendar, making them task repositories. I think I'll buy one; the price is reasonable and it worths. One thing to mention is that seems key developers of the Mylyn project also work for Tasktop; I often see them in the Mylyn newsgroup. To me, Mylyn is the first Eclipse plug-in offered by eclipse.org that is not about development but is for development.

Well, and I tried developing a connector for TeamTrack, which is used by my company for tracking defects and something else. Having been googling and reading for 2 hours, I finally found the web service APIs that TeamTrack provides, yet I don't think the operations it exposes can meet the need to build a complete connector. And also it seems one even needs to be familiar with the database tables to perform queries via TeamTrack's web service! I currently have no technical information available so finally I decided to give up making such a connector, but to use the generic web connector to parse HTML pages with regular expressions... This is only one of the basic differences between proprietary products and their open source alternatives.

Moreover, there's a bug with the Mylyn generic web connector and it fails to authenticate via HTTP Basic authentication method, whoa. It's said to be a code migration/integration problem so I guess it's easy to deal with, though.

Honestly, Office 2007 is good; I can use Visual Studio 2008 with VSTO to make a few simple add-ons for my Outlook. I'd agree there's more value out of Microsoft's products, because everyone can see that Microsoft's products are engineered to be able to work with each other; this is something other companies need some years to develop.

星期日, 七月 27, 2008

再见,波恩

西下的夕阳,透过舷窗,把阳光洒在前排座椅的靠背上。舷窗的玻璃就好像三棱镜一样,在我的面前描出一条虹。从来没有看到过阳光以接近水平的角度照在自己面前,也从来没有离开家这么久过。
当起飞前飞机缓缓地驶在杜塞尔多夫机场的跑道上时,离别的感觉再次涌上心头。也许因为我自己就是个随遇而安的人吧,无论在哪里呆久了,都会有种家的感觉,或者是,错觉。直到现在,我还记得在波恩的那个Hotel Domicil的每一天,既有第一次走进自己那间超袖珍房间时的惊讶,第一宿的凌晨被早班公车闹醒时的无奈,也有听着音乐啜着咖啡看着天窗被雨水冲拭的惬意,周日阳光下昏昏欲睡的慵懒。
波恩,昔日西德的首都,莱茵河畔的明珠,今天却宁静得像一个小镇。比较现代一些的产业,比如金融和IT,渐渐地聚拢在法兰克福、慕尼黑这些地方,波恩仿佛卸下重担一般,摇身变为朴素的欧洲小城。这个城市真的是很宁静。来到这里之前,我只知道那夏季午后的天津,在人们或闭门不出或瞌睡连连的时候,阳光孤单地照在柏油路上,反射出一种不自然的冷清,却不是宁静。而在波恩,即使是周六集市时的广场,也是安详到让我感觉费解。在其他的城市都铆足劲头想变成繁忙的国际大都市的时候,这种宁静尤其难得,而且几乎掩盖了这次行程的第一站——繁忙喧嚣的伦敦——给我留下的所有印象。
最后一周因为实在受不了临街房间的喧闹,换到了内院的房间。清晨醒来的时候,揉醒睡眼走下楼梯后的第一件事,就是掀开窗帘推开窗子。楼下就是酒店的后院。在宁静的清晨,除了偶尔的一两声鸟鸣人语,其余的时候只能听到风吹过层叠的树叶时擦出的柔顺的沙沙声。在晨曦中把自己拾掇完毕,就可以开心地走去享受丰盛的早餐。每天早晨的这顿饭,其丰盛和美味是毋庸赘述的,我最享受的,却还是坐在窗边端着咖啡发呆的时间。通常这种享受都是很短暂的,因为毕竟不是来旅游的,每天还有不少工作要做,但就是这种轻松惬意的感觉,让我觉得可以轻松瓦解这一天即将纷至沓来的劳顿。
现代的商业化的旅行可以留给人们的只是无穷无尽的照片和乏味的纪念品,若干年以后,凭借这些线索,我们是可以拾起当时的欢快和新鲜,仅此而已。我相信,真正去生活在一个地方,是截然不同的另外一回事。
当不期而遇的太阳雨冲刷着屋顶大块的玻璃时,伴着悠扬的音乐,我忘记了拍下阳光下雨水的舞蹈。当徜徉在夜晚的大街上,感受着吹拂而过的有些萧瑟的微风时,我不知是该拍下黑乎乎的街道,还是该拍下吹面不寒的夜风。当我蜷缩在矮脚沙发里,晒着和煦的阳光几乎要打起瞌睡的时候,我不知是该拍下这暖意,还是该拍下这恍惚间匆匆流过的时间。
临行前,整理了一下在波恩拍下的所有照片。比起在伦敦拍的那些照片,在波恩拍摄的照片明显少很多。我突然感觉到一些无奈,还有一些空虚。那些实实在在的感受,我是无法记录的,也无法带走。它们就像天边飞舞的浮云,一旦飘散,再也无法聚拢。时间终会冲淡这一切感受,我永远无从逃避。
舷窗外的夕阳已经看不到了,只有橘红色的云彩描绘着它落下的痕迹。没有飞到这三万英尺的高度,我永远不可能看到这景致,就像没有去过波恩,我永远不可能理解一个城市的宁静。
再见,波恩。

星期一, 七月 21, 2008

离开

新的一周开始了,离回家的日子越来越近了。
突然有种奇怪的感觉。回家了,可以找回以前熟悉的日子,过有些单调却亲切的生活,却丢掉了这里的日子,丢掉了异国情调,蓝天白云青草地。就是这样说不清楚的感觉。
又或者说,无论离开那里,都会是同一种感觉吧。
今天是周日,本来打算去教堂和波恩大学转转,结果QA同事们要加班测试,虽然我不是QA,不过support总还是要做的,即使我远不如公司里那些牛人了解这个庞杂的系统。
吃过早点回到屋里,静候组织调遣。随意地缩在沙发里晒太阳,腿放在桌子上,架着笔记本,Dido的Thank
You从打开的pandora适时地飘出来,那种说不出的无限慵懒一瞬间涌满全身。这种不曾拥有过的惬意,也只有在这种情境下才可能滋生。没有紧张,没有焦虑,就像阳光下的向日葵,带着一副什么都不在乎的表情在微风里摇摆。
组织的决定自然是加班,否则今天肯定出去逛了。其实加班也无所谓,我基本上是没事干的,就帮着查了查一个协议方面的问题。工作也是在酒店里做。4个人进到吸烟区——因为负责测试的QA
lead嗜烟如命——找椅子坐下,就是简单的办公室了。吸烟区其实是个不错的地方,房顶是玻璃的,丝毫不阻碍阳光晒进来,坐在里面就像进到花房一样,舒坦得像小花小草一样。
给同事——一QA MM——推荐了Thank You,结果该MM一下午放了大概20来次这首歌…小资的感觉看来人人都喜欢啊。
吃过晚饭和2个中国同事去附近转转。周日是比较安静的,或者也可以说比较无聊。商店基本都停业了,即使营业也是关门很早。转了一会儿突然那个QA
MM发现了家哈根达斯,而且还没打烊,于是乎伊很大手笔地请我们吃哈根达斯。我们三个人还把手里的冰淇淋举在一起拍了张照片——感觉很像三个火枪手举剑的动作,虽说照片的主角是冰淇淋吧。
周日夜晚的波恩静得很安详,和同事随意地走着,有种熟悉的感觉从心底淡淡地飘忽出来。这种感觉,只有在大四和全班同学通宵K歌后走在清晨的路上时出现过。说不出这是种什么样的感觉,只是心境和环境是一样的:离开,安静的大街,熟识的人。
My tea's gone cold, I'm wondering why. I got out of bed at all...

星期三, 七月 16, 2008

马上就回家咯~

从出国前就一直没说过这次出差,后来天天都忙的要命——工作日忙工作,周末忙着转,一个多月了,一句都不提,连自己都对不起了。
这次出差真是破了我无数个第一次了:第一次有护照,第一次有签证,第一次同时有俩签证,第一次坐飞机,第一次坐英航,第一次盘旋着降落,第一次做外国人…不嫌贫的话还有无数个第一次。
总的计划是弄伦敦呆仨礼拜,然后在德国再整一个礼拜,滚蛋回家。结果仨礼拜在伦敦是挨过来了,在波恩倒是意外地多呆了一周。好了,已经订了这周四的机票了,这就要回家了,哇哈哈~
最大的收获莫过于锻炼了口语了,现在咱这口语,在伦敦和德国人用中文谈笑风生啊~
在伦敦的第二天早晨,走在大街上,第一感觉就是:外国人真多啊!我知道其实在这儿老子是外国人。
次大的收获就是一堆照片:已经4、5G了,在科隆大教堂还录了会儿视频,不为图像,就为管风琴和唱诗。要是我一个人去的大教堂,我真会跟着2个多小时走完一遍礼拜了——谁让咱礼拜日去的乜。总的来说还是在德国比较舒坦,中国公司又来了两个同事,也有熟人了,不像在伦敦,孤家寡人的,也没交通费预算——从酒店房间到公司办公室全程不过5分钟,周末观光全靠两条腿,真把这辈子的路都走完了。不过波恩比起伦敦来说就清静很多了,周末尤其是这样,静的出奇,公交车和有轨电车的班次都少了很多,真是适合人类居住的地方,德国的环境尤其好,太好了,简直…伦敦整体环境跟这儿就不是一个档次的。当然了,伦敦人家是首都,首都那么大个儿,脏点儿乱点儿就那意思了。气温也正好,都跟春天似的,伦敦比波恩还更凉快一些,比较让人不适应的就是天黑的太晚了,波恩这里9点来钟给人感觉就跟下午似的;伦敦更让人崩溃,晚上10点多了天还有点儿亮,想早睡觉只能关窗户。波恩哪里都好,就是周日的时候基本绝大部分的商店都不营业,即使营业,关门也很早,所以想买啥就都要在周六解决掉,比如礼品啥的…
昨天跟同事去这里的一个中餐馆去吃饭,吃到扶墙。在伦敦那里,被很多中餐馆吓着了,味道,那叫一个走畸。昨天那个中餐馆味道可真好,很中国,本来我这么久吃西餐都从来都没怀念中餐的,在那儿一吃都开始想回家了——而且还是自助餐。
真是享受这里的生活呀~但愿以后还有机会来欧洲出差,唉,贪。
睡觉去了。又是新的一天了。