Category: 未分类

  • 美国短期出差使用电话

    最简单的是用 skype 或者 google voice 了,不过接电话不方便,有人有急事找的话不行。

    移动的全球通可以开通国际漫游,但是如果没有三个月无欠费的记录,需要预存1000元。我有个担忧就是垃圾短信无数,漫游收短信好像是要钱的?还有昂贵的数据漫游费用,如果手机有定时上网更新数据的程序忘记关掉就惨了。

    我来了以后去 T-mobile 的商店里去问,得知正好第二天会有一个带 data 的 pre-paid plan 出来。于是我就等了一天,发现这个 plan 还是比较合适的,加上 SIM 卡激活、税等费用一共40美金多点,一个月1500分钟(短信一条相当于一分钟,接国际电话也只占用分钟数),30M数据流量。通话1500分钟是绰绰有余了,30M的流量正好偶尔用一下 Google Maps, 正适合我这样初来乍到的。

    用了几天发现美国也是有不少垃圾短信,大多是假装熟人问候的。

  • 来到美国

    来之前非常兴奋,非常期待。在芝加哥入关,之后到波士顿的路上靠近窗户,看到外面一路全是水,要么就是巨大的湖,要么就到处都是星罗棋布的小湖,空气非常清澈,看得清清楚楚,云彩像一撮一撮的棉花浮在中间。快到东部的时候开始看见大片的红叶,后来发现波士顿周围也是。

    入住酒店之后开始出来逛,比较窄的路上全部都是车,而且排量普遍比较大,大多是粗实的SUV,偶尔过来一辆悍马也完全显不出大来。车辆看到有人想过马路就会主动停下,有车想从旁边上路也在那儿等空,不过有时路上的车会主动停下让他上去,上路的时候就猛加速,避免拖慢整条道路的速度。我们坐同事的车,他开车的时候加速之猛在国内就很少见,发动机嗡嗡响。当然了,大部分人都比较守规矩,偶尔也会遇到素质不太好的。

    转了一圈,连个买拖鞋、牙膏的地方都没找到,完全陌生的环境,心情开始低落,加上时差导致很累,情绪很沮丧……后来在前台问在哪儿买,原来他们也有一次性的东西,就是不主动提供。之后同事带我们出去,最近的mall、walmart大概在十公里远,我们住的地方大小也算个城市啊,看来在美国没有车活不下去啊。过了几天,到现在慢慢能适应这里的生活了。

    正是深秋,周围都是红叶,空气特别好,能见度很高,日落很美,国内从来没有看到这样清楚的地平线……美国人不在乎节能,车排量很大,油很便宜,我们住的酒店电路不会需要插卡开启。中国天天要限制排量空气却极差,看来空气不是汽车尾气污染的,能源也浪费在不该浪费的地方了──用超载的汽车长途运煤?

    几张照片──

    公司房子很不起眼:

    TA office building

    波士顿港口,蓝天,大海,海鸥:

    波士顿港口

    上班要路过的Charles River. 河边的房子应该很不错吧……河右边是 reservation area:

    Charles River

  • Java 常量值修改后不起作用

    几个月之前,一位朋友很郁闷地找我,说 Java 做的网站调整了一个参数,本地测试没有问题,但是 commit 代码之后在服务器上 check out,就不起作用。

    我通过 svn 看了一下两个版本的差异,发现朋友修改的是一个 static final 的变量,情况就开始明了了。检查一下,使用该常量的地方是在另一个 Java 文件的另一个类中,因为该文件没有被修改,所以没有重新编译生成新的 .class 文件。而 Java 编译器编译的时候,是直接把常量的值编译进 byte code 里的,运行时不会再有变量引用。删除这个过时的 .class 文件重新编译,一切都正常了。

    Eclipse 使用的是自带的 Java 编译器,所以它编译的细节处理会跟 Sun 的(现在成 Oracle 了)有所区别。或者是因为 Eclipse 编译时是 Debug 的模式吧。

    对新手来说,一不小心掉进这个陷阱,可能花好久才能挣扎出来……

  • Google TV

    Google 正式推出了 Google TV 的首页,今秋发布,不知道跟 Apple TV 之间会有怎样的好戏。它提供一个开放平台,开发者可以为它开发应用。

    我觉得不管这两位大佬如何,一大堆山寨 TV 肯定会如雨后春笋,在中华大地上涌现……

  • 乡下经历──办理护照流程

    我户口在老家,所以办护照得回老家公安局出入境管理处。回去之前我打电话询问流程,被告知户口迁回去不足十年,必须先拿着身份证户口本回去让他们发协查。

    另外我身份证号码在他们系统里查不到──一年多了,每次去银行都会被盘问,然后说要上报给公安局。我们纳税完了办个必需证件还得另外交钱,闹到最后还是个假证……

    8月2日,回到老家派出所解决假证的问题,给拍了个照片,把资料传上去,县公安局马上可以查到资料了(不过到现在银行还是查不到,看来不是一个系统,同步的延迟是很大的)。再到县公安局让发协查,一个警员说早知道这样你打个电话让我们查不就行了。于是我又回北京了。

    大约一周后,打北京市出入境管理处电话(他们好像有个客服系统,所以还比较容易打),过了一会回电话说协查已经回复。我就问县公安局,答复未收到,让我问保定市。当时下午4点半,我打过去,有人接起来,说已经下班了。第二天我又打保定市协查管理的电话,被告知根本没有我协查的任何记录!!于是我又告诉县公安局让他们帮忙重发协查。

    对了,协查就是因为户口迁回去时间不够长,怕你在外地有什么前科或者禁止出境的情况,用传真发一个协查函到上一个户口所在地公安局,让对方协助查历史。协查的时间是10个工作日,但是不能保证。这就是信息化的程度,我就不多想了。

    8-16日,接到保定电话,说要给我发函,但是没有地址怎么发啊,于是我把我当时在北京的住址告诉他,总算发出去了。

    大约8-25日左右,打电话到县公安局查到协查已经回复了,终于证明我是清白的。感觉就像当年派出去当间谍被抓咬掉舌头也不招供回来后被怀疑不能说话无法辩解最后终于洗清冤屈,我泪流满面。

    但是此时县出入境有个同志生孩子去了,负责管理协查的同志因为眼睛做手术不能上班,我只好继续等。

    9-1日,出入境还是只有一人上班,我不能等了,回去办。花了一下午时间,把护照连同港澳通行证一起办了。

    9-13日,港澳通行证到了公安局,过了几天,护照也到了。家人帮我取回,正好中秋节到了,我回家亲自把这珍贵的护照拿了回来。祖国,你不用这么挽留我,其实我也不想离开你……

    有遗漏的总结一下:

    • 协查是查外地的历史,本地的怎么办?去派出所开个证明,说明你没有违法违纪行为,没有练过功夫,没有参加过邪教组织,历史北京清白。
    • 申请护照虽然要你交200大洋,还是要填写“正当”原因的,要写去哪个国家,如果是商务还要公司给证明(落后地区规定,听说有的地方还要在银行存3万块钱)。不知道旅游是不是简单点。
    • 根据身份证号在公安系统查到的信息,必须有照片,必须与户口本上的一致,这个事先最好联系户口所在地出入境管理处让他们帮忙查。
    • 身份证跟户口本不一致没关系。比如我拿上个户口所在地签发的身份证。
    • 办港澳通行证,会问你要哪些签注,注意划一个勾就是50或100大洋,我当时要了最多的,一年两次香港,一次澳门,一年内要是没去就浪费了。

    跟我一样情况的,早点准备办护照吧,准备好一场恶仗,折腾几个月。人生苦短,多出去走走,见见世面。万一哪天要出国,再想办就来不及了。那些在大城市读大学的同学最好趁现在办个护照。

    不过总是有些好的转变的,这次在县公安局出入境的警察态度就一直很好,事先没有想到。

  • 《盗梦空间》与编译器

    前阵子去看盗梦空间,本来我迷迷糊糊没看太明白还好,我看电影经常看不懂。但是等到结束,有观众开始鼓掌叫好,我就顿时感觉很郁闷──为啥他们看懂了我却不行!

    这几天突然由这个联想到编译器。你写的代码是要生成代码的代码──code generator. 写 code generator 的时候,你不仅要考虑你的 generator 能否正常运行,更重要的任务是生成的汇编代码能否正确运行,能否正确地使用有限的寄存器,尤其是在递归调用等复杂的情形中。现在写一个复杂语言的编译器,code generator 之前更基础的 lexer/parser 也不可能手写, 所以想象一下 lexer generator/parser generator (如 lex/yacc), 也是一个重重梦境的情形。这一切对我们这些新手来说是那么不稳定和难以捉摸,有时候你都搞不清楚自己是在哪一层,就到了“游离状态”,但是对那些造梦高手,都是手到擒来的事了。

    建议对编程有兴趣的人,都找个编译原理的经典书籍读一下,这非常锻炼编程方面的思维能力。我比较推荐的是龙书──编译原理、技术与工具 (Compilers: Principles, Techniques, and Tools)。我当时看的是1986年的第一版,历经20年,一些基础理论仍然没有过时,不过在06年有了第二版,现在国内有影印版可以购买。突然想起以前就写了一篇介绍的文章“Purple Dragon Book”。再次提醒,珍爱生命,远离中译本 (也许翻译得不差,但是翻译总是会有不可避免的误差),感受原著的魅力,看这些造梦高手如何将高超的技艺传授给你!

  • 京东换货经历

    前阵子在京东订购了一台飞利浦榨汁机,本来填好了让他们只双休日送货,因为不是公司地址。可是星期一的时候,送货的师傅给我打电话说送来了,我犹豫了一下,为了早点享受到新鲜的果汁,就奔回家来收货,并且习惯性地没有开箱就签字让师傅走人了。迫不及待地开箱要榨汁,拿出来的时候呆了──机器上面透明的硬塑料盖子破裂了,真是暴力物流啊!赶紧打电话给送货师傅,他很淡定地让我直接打客服吧。

    于是我就打客服,客服帮我报了返修,我上网去查,地址还是家里的。为了让他们尽快取走,我把机子带到公司,然后打客服让帮忙改成公司地址,之后因为网上显示还是家庭住址,又打客服确认了一下。可是第二天有快递打电话给我,说要取件,在我家楼下……于是我打电话给客服。到了晚上,客服回复说没办法,只能把这个返修单子关掉重新来。

    这次我自己在网上填了返修,第二天,快递来取件,第四天,收到了换回来的新榨汁机。这次我可要认真检查了,不过送货的人说我必须先在那个确认完好的单子上签字才能开箱验货,比较奇怪。整个过程在返修单的页面上都可以跟踪,每一步都会更新(见下图),让人感觉比较踏实,而且总体来说速度挺快的。此前我还很担心京东会做个鉴定,说是我弄坏的之类的,去网上搜京东换货相关的评论。客服跟我说,安排上门取件就说明肯定可以换货了,收回的货入库之后就会发新的。

    京东换货跟踪

    有了这次教训,以后一定要先验货再放人了……不得不说京东的服务还是很不错的,这个都签字确认完好了,还真没法说是不是我在说谎呢。要是在淘宝买的东西,就真的完蛋了。网上有不少评论说京东换货效率低之类的,我觉得倒是非常高效。不过建议京东能要求快递员主动开箱验货,减少这些周折。

    总之,现在可以喝上新鲜的果汁了……

  • 更新了一下 Flickr Markdown (Greasemonkey)

    Flickr 的新界面上线已经有一段时间了,我之前写的生成 Flickr Markdown 链接代码的 Greasemonkey 脚本已经失效,于是刚刚更新了一下。

    新版的界面明显优化了很多,重点突出,尤其是分享不需要跑到一个新的页面了,就在照片页面即可获取各种尺寸的分享代码,非常之方便。我本来想给 HTML/BBCode 旁边再加一个选项的,可是不太熟悉 YUI,也不知道删掉官方的 event handler 加上自己的能不能行得通(执行先后次序问题),于是就来了个简单粗暴的,直接把 HTML 代码替换成 Markdown (想要 HTML 代码的话,只需禁用 Greasemonkey). 效果如下:

    flickr markdown greasemonkey script

    安装请到 userscripts.org (昨晚这网站挂了一会,nginx server 返回500错误):

    Flickr markdown code

  • JavaScript 字符串连接

    记得几年前想做前端,去腾讯面试,有人问我在 JavaScript 中,大量字符串的连接应该怎么做效率最高。当时我不知道怎么回答,甚至根本没想过这个问题,对方告诉我应该用 Array 的 join 方法,这一点我一直记着。不过今天看到了这篇文章:

    High-performance String Concatenation in JavaScript

    一开始觉得自己一直以来的认识完全被颠覆了,还在 gtalk 上找了好几个朋友问。不过看到文章后面,发现对于 IE 7 及更低的版本,array join 仍然比加号快上数百倍。

    在国内,IE 6 仍然是最主流浏览器,所以……

  • 百度开放平台

    在百度搜一下“坦克大战”试试──第一屏右侧是推广链接,左侧是一个样式非常特殊的框,里面是搜到的一些游戏,这个框就属于所谓的“百度开放平台”,又名“框计算”。它把用户牢牢的框住,在这里点一个游戏即可在本页面玩,根本不需跑到游戏站点去了,详情、新窗口打开都仍旧是百度的页面。流量不再流向游戏网站,给游戏提供者的唯一好处就是有几处指向首页的链接。

    有几个值得思考的问题,大家自己细细揣摩吧:

    1. 4399 和 7k7k 为什么愿意这么做?如果没有这个框,他们本有可能在此处占据一个好的位置,获得精准的流量
    2. 搜“北京到沈阳机票”看看,用户可以直接在一个醒目的搜索表单直接提交到各大机票预订、搜索网站。这个问题该反过来问,百度为什么愿意这么做?它显然会降低左侧“推广位”和右侧广告的 CTR
    3. 这个开放平台对百度是好事还是坏事?是远见卓识还是鼠目寸光?