Archive for December, 2011

年终总结 for 2011

2011-12-30 15:21 | by 2ndboy

  一分钟前,在浏览微博的时候无意中看到了“年终盘点”这个字眼,突然意识到现在已经是 2011 年末,再过两天就是 2012 年了(传说中的世界末日:))。按照往年的惯例,年末都要做个年终总结,回望这一年来的过往,展望一下新一年的新变化。

  首先是生活方面,今年最后的这三、四个月是变化非常多的一段时间。一年多以前做出的决定在国庆节前夕有了实质的进展(虽然 4 月份就拿到了配额,6 月份就办好了签证,但是公司的财务批准手续才是决定性的),紧接着就是大量的文档工作,各种会议约谈。到 11 月 4 号出发前,我的准备时间非常有限,所以很多工作都留给了当时尚在国内的老婆来办理。如今距离第一天落地美国已经快 2 个月了,生活方面基本安顿了下来(房跟车是最大的两件事),接下来还需要置办一些生活必需品(如电器和家具等等)。不知道距离真正安顿的那一天还有多久,不过每天回到家里能看见亲爱的老婆和热菜热饭还是很能找到家的感觉的:)

  今年这一年只看了 39 部电影,比去年少了一半还多,不过原因也比较明显:) 而且基本上可以预测 2012 年看电影的数量一定还会持续减少,从这个意义上讲,生活质量下降明显;) 而且之前看电影的设备都留在了国内,想念呐! 2011 年看过不错的电影有《城中大盗》、《初恋这件小事》、《砰然心动》、《二嫫》、《源代码》、《飓风营救》、《遥远星球的孩子》和《未知死亡》。

  工作方面变化也不小,从做了 10 年(仅从工作后算起的话)的 Windows desktop 开发换跑道到了 Android mobile 开发,不论是语言、工具还是平台都是之前所不曾接触的,不过这也意味着可以学到不少新东西,而且对移动计算/互联网方面我也一直很有兴趣,所以个人对这个变化感觉还是非常兴奋的。

  2012 是一个需要再次奋斗的年份,生活上的变化让人有种从头开始的感觉,有些时候甚至让我回想起了 2002 年孤身一人在杭州白手起家的某些情景。不过人都有惰性,特别是你已经工作过 10 年,在另外一个国度曾有过安逸生活的时候,但越是这样就越要有可以接受随时从头开始的心态!所以 2012 要调整心态,拿出当年的劲头来多做些事情,多做些改变,加油!

  2012 里希望远在地球另一端的爸妈身体健康,心情舒畅!老婆能在异国找到她喜欢并可以为之努力的方向;我的英文和事业有大的提高和发展!

  就在不到一个月前知道了公司一个同事离世的消息,他已经跟癌症抗争了很久,不过最终还是没能挺过来。希望所有的朋友、家人都要爱惜自己的身体,多运动,注意休息,更重要的是天天有个好心情!

AT&T U-Verse 搞定

2011-12-21 13:48 | by 2ndboy

  昨天傍晚去 leasing office update SSN 的时候发现有包裹,原来是 AT&T 的自安装套件(无线路由器)到了,但是定好的激活时间是今晚 8 点,所以只研究了一下说明书和安装手册。原本以为要做什么复杂的设置步骤,结果发现在约定的激活时间后连好电话线接通电源就可以上网了,只不过上网的第一件事是要注册一个 @att.net 的免费邮件帐号当作 AT&T U-Verse 的帐号罢了,如此之简单!那些收费的安装服务有人选才怪!

  晚饭后离 8 点还早,所以先去洗衣房洗衣服。美国的小区一般都不在公寓内提供洗衣机(那些“高档”小区除外,比如我第一个月公司安排的临时公寓),而是在小区内设置一到多个洗衣房,洗衣房里有 n 台洗衣机,n 台烘干机,一般还有操作台(可以用来叠/熨衣服)和垃圾桶(烘干机使用过后会收集很多烘干过程中脱落的织物纤维)等。之前听同事介绍和看网上的介绍,说洗衣房的洗衣机一般都要投 25 美分硬币,所以收集了大堆的硬币,结果到洗衣房后硬是没发现投币口,只有插卡口。刚好边上有对印度夫妇也在洗衣服,于是咨询了一下,得知我们小区的洗衣机只能用洗衣 IC 卡,洗衣卡可以马上到 leasing office 门口的自服务机器上购买、充值和查询。于是留下老婆留守洗衣房,我来到 leasing office 门口,看到了传说中的机器。这机器是洗衣卡专用的,只有 3 个功能,add money, buy card 和 check money,而且只收信用卡,不收现金。买卡 $5,充值额度自选,非常方便,只是信用卡验证的时间略长。

  回到洗衣房,我跟老婆照着墙上的操作指南加好了洗衣液,有 3 种洗衣方式可选,少量衣物 $1.50,中等 $1.75,大量 $2.00。我们内衣这些都是自己手洗,只带来了最近穿过的厚衣裤,选 $1.75,用时 40 分钟,在手机上设好倒计时后就可以回家等着了。40 分钟后回来把衣服倒腾到烘干机里,烘干有 4 种温度设置,价格都是 $1,选了中等温度,用时 45 分钟,再次设置好倒计时后离开。

  回到家后已经过了 8 点,于是拿出 AT&T 发过来的设备开始安装,过程无比简单,只是一开始用 Mac Book 连 WiFi 后网络不通(自从升 10.7 后 WiFi 就有点不太正常),换 ThinkPad 就 ok。顺利设置好,哈哈,终于有 WiFi 用了,晚上再不用在回到家后跟老婆抢唯一一台能上网的电脑用了,也不用担心 iPhone 的 3G 数据套餐超流量了。

  我选的是 AT&T 的 6M U-Verse 上网服务,前 12 个月优惠期每月 $24.5,优惠期以后每月 $43,Wireless Gateway(内置 modem)价值 $100,如果使用一年的话就免费赠送。
AT&T Wireless Gateway

— 分割线 —

  话说自打 11 月 4 号过来以后就没理过发,所以中午吃过饭后就开车到以前走路上班路过的一家小理发店去理发,顺便买邮票和信封(国内平信处于淘汰状态,美国平信还大有用处,这也是中美之间的大不同)。理发店叫 Cris Hair Designs,店主就是 Cris,是个 50 岁上下的美国老太太(不过看长相和听口音应该是南美移民),人非常 nice,跟 Cris 边聊边剪好了头发。Cris 手艺不错(老婆说比我国内在永琪剪得好),价钱也公道($10 一次),打算今后头发都在她这儿解决了:D 美国的平信价格据说已经经历过数次提价,目前 first class 的邮票 $0.44 一张。美国的邮票设计不错,有不干背胶,从版面上撕下来可以直接贴到信封上,不用涂口水或者胶水。
stamps

提车,上路

2011-12-20 11:45 | by 2ndboy

  中午拿着早上开好的 cashier’s check(价值 $10 :))到车行提车,还是 DQ 同行。卖给我车的 S 去滑雪了,他的 manager A 不在办公室,还是找韩国老头办手续,又签了几份文档,过程中还出示了早上电话里搞定的车险凭据。不幸的是,驾照时间被 check 了,所以最终的保费是半年 $573.85,一年下来合人民币 ¥7230.51,不便宜啊!!

  手续办好后恰好 A 回来了,随后他出去把车开过来(还把一张纸贴在了前挡风玻璃的右下角,用于在还没有车牌时上路用),并且交给了我最后一把钥匙。据说车牌会在三到四周后寄给我,自己把牌照挂上去就 OK 了。出了门,看到了我的全新 2012 款 Camry LE,上几张片片:

提车后在 Toyota 专卖店停车场拍的全身照:
2012 Camry LE

在驾驶座上拍的照片,多功能方向盘:
驾驶位视角

中控台,没开电源,触摸屏是关着的:
中控台

  我跟 DQ 围着车转了转,看了看后备箱和备胎,又在车里坐了坐,一切 ok。DQ 开车先行回公司,我开起 GPS 也跟着上路了。已经有两个多月没有摸车,手特别生,出了专卖店在第一个路口右转时就忘了看右侧情况,结果吃了一喇叭,压力比较大!结果一紧张把出来时候看好的路忘了,所以只能跟着 GPS 走。中午路上车不多,不过几个月不开车的后果还是比较明显的,车感明显上不来。开着开着 GPS 居然提示上 101 高速,本来查路的时候看好了,不上高速是完全可以回公司的,不过当时不知身在何处,所以打算硬着头皮走来着,结果早转了一个路口,也因此因“祸”得福。因为转过路口就提示了一个我熟悉的路名,结果发现离公司最多也就 1000 多米远了,这鬼 GPS,一公里的路用得着上高速吗,回去立马把设置改成了避免高速,最近一段时间以找车感,识路为主,坚决不上高速!

  周末没出去购物,所以下午回家接了老婆就直奔大华(在 leasing office 拿到了 AT&T 的包裹,明天可以接通 AT&T 的宽带了),今后一段时间要多跑跑,早日把车感找回来。

  晚上晚饭后跟 MY 聊天,发现 Camry 车宽(一米八二)和车高(一米四七)跟迈腾一样,但是车长居然比迈腾还长,有四米八,这也是我目前为止开过最大的一辆车了!

Camry LE 搞定!

2011-12-18 16:10 | by 2ndboy

  周五下午,我目前住的小区和公司先后发生了火警,真是巧得很。整个 building 的同事都要到楼下去,还不能乘电梯。小区跟公司楼下都出现了消防车,后来证明都是假火警,没有真正烧起来。

  今天上午坐前老大 KD 的车去买车,之前已经锁定了 2012 款的 Toyota Camry LE,优选 Classic Silver,其次可选 Magnetic Gray 和 Super White。由于已经在 TrueCar 上问过价格且已在网上问价过一些 Toyota 专卖店,所以对最终价格基本上心里有数。上午直接杀奔 C 店,结果之前事先联系的 internet sells 居然在 test drive 后就把我们介绍给一个台湾老头闪人了,钱都不想赚?还是觉得中国人的钱太难赚?;) 结果台湾老头态度非常之屌,一改我对台湾人都很 nice 的印象,没说几句就说价格谈不拢,要握手再见。NND,再见就再见。于是闪人,到大华旁边去吃牛肉面。很久没有吃中餐风格的东西,很是美味!KD 说刚才那个台湾 sells 态度很屌其实是一种策略,他们就是要让你觉得这个价格不可能再低了,不行你就到别家,在心理上让你绝望:) 不过话又说回来了,就算你想要个高价,用得着这样吗?卖车的又不是你独一份儿。

  饭后赶赴网上问价的第二优惠店 P,没想到的是同样马上被转给了一个讲中文的销售 S。而且态度同样的屌,不过有了刚才的经验,我已经可以 ignore 这茬儿了。不过只在刚才 C 店的基础上砍下 40 来,于是马上施展走人法,不过当场无效:) 不过说实在的,其实店 C 的价格已经在我的心理价位内了,而且还算合理,所以商量一番后我们觉得回去把合同签了算了,同时再看看有无降价空间。结果回去后又成功杀掉 60,嗯,看在 8 方向电动座椅的份上,这个价格我觉得还是不错滴,于是进入签合同环节。

  不过不爽的是,对于我这种刚到美国没有信用分数的人来说,不接收 personal check,只能用 money order 或者 cashier’s check。由于是周末,银行当时已经关门了,所以只能先把 paper work 做完,周一再来开走。接着做了两把 test drive,KD 上了高速一把,他开了 10 年的 Camry,最有手感。我已经好几个月没开车了,而且还没在美国的路上开过,所以只在停车场兜了一圈而已。比较搞笑的是,上车以后居然发现没手刹(土人啊),而且 2012 款 Camry 用的也不是迈腾上的那种电子手刹,而是在左脚休息踏板上方有一个用脚踩的驻车制动器,这个貌似不能叫手刹了吧,也是个脚刹;) 不知道这个东西可靠性如何,有待检验,但愿不要在高速上的时候不小心碰到。个人感觉这个设计不是很好,如果觉得放个手刹有点低档的话,改成电子手刹也可以呀,以后慢慢适应吧。

  最终大量的合同工作由一个韩国老头跟我们办理,韩国老头很逗,超能侃,居然说我跟他妹夫长的很像,比较晕:) 今天我会的唯一一句韩语派上了用场,那就是“你好”哈哈,对了,其实“谢谢”跟“我爱你”还有“喂(打电话)”我也会,都是被老婆带着看了一点儿韩剧里面学来的。签好合同后 dealer S 已经把俺的 Camry 洗过,加满油停在了 office 外面(里程表只有 6 miles),可惜的是还不能开走,唉,俺的第一辆车,下周一见吧。走时拿走了两把钥匙(一共 3 把钥匙)和厚厚的一叠英文说明书,嗯,有得我看了。

  晚上回家后又赶去附近教堂参加了一个之前就报名了的活动,很久没有看到如此多的国人聚在一起了,晚会有很多节目,话说教堂的音响设施确实不错!神父讲话也挺有意思,第一次到教堂,说实话有时候还是感觉有点怪怪的。

  嗯,买车流水帐记完,车开回来以后上几张片片吧。

Support Package 和 ActionBarSherlock 使用心得

2011-12-16 14:09 | by 2ndboy

  Action BarViewPager 出现以后,使得 Android 程序 cool 了很多。简单的说,ViewPager 使得实现手指横向划过屏幕来切换场景变得简单,这种切换方式在触摸屏上非常符合直觉,远胜 button 跟 tab 的体验。Action Bar 则提供了更为直接快捷的常用功能访问途径,在没有实体 menu 按键或者屏幕尺寸比较大的时候可以有更好的使用体验。

  在没有 ViewPager 之前,各路神仙使用了各种办法来尝试实现平滑的视图切换,目前 ViewPager 已经进入 Support Package,得到了 Google 的官方支持。当然,Support Package 里的好东西还有大把,比如为使用 Honeycomb(Android 3.0.x;API Level 11)之前的开发者准备的 Fragment 等等。不过 Support Package 里目前并不包含 Action Bar,于是网上也出现了一些开源的 Action Bar 实现,比如 android-actionbarGreenDroid 以及 今天要写的 ActionBarSherlock

  ActionBarSherlock 其实内置了一份 Support Package,所以并不需要在你自己的程序中再次引用 Support Package,如果已经做了引用,则需要去掉。ActionBarSherlock 需要使用 Android 3.2 SDK(API Level 13)进行编译,你的程序也需要至少 API Level 13 进行编译,但是编译出来的程序可以跑在 2.3 的系统上,并在低版本的系统上实现 Action Bar 和 ViewPager。

  ActionBarSherlock 目前的最新版本是 v3.4.2,假设我们下载后把它释放在 E:\2ndboy\Android\ActionBarSherlock。ActionBarSherlock 不提供 jar 包下载,因为它内含的资源无法以 jar 的形式使用,所以要单独编译成 library 后被需要使用的程序引用。

  释放后打开 Eclipse,菜单 File,New,Project…。选中 Android 下的 Android Project,Next。接着在 New Android Project 对话框里选中 Create project from existing source。Project Name 填 ActionBarSherlock。Location 使用 E:\2ndboy\Android\ActionBarSherlock\library,Next。在 Select Build Target 对话框中选中 Android 3.2(API Level 13),Finish。

  如果遇到找不到 AndroidManifest.xml 的错误,可以尝试把 E:\2ndboy\Android\ActionBarSherlock 改名,出错原因是 Eclipse 其实是尝试在 ActionBarSherlock 下创建 project(因为我们指定的 Project Name 也叫 ActionBarSherlock),而不是 ActionBarSherlock\library。

  如果看到很多类似“Description Resource Path Location Type
The method add(CharSequence) of type Menu must override a superclass method Menu.java /ActionBarSherlock/src/android/support/v4/view line 5 Java Problem”的错误,可能需要在 Project Properties 里面,把 Java Compiler 的 Compiler compliance level 改成 1.6。

  以上就准备好了 ActionBarSherlock 库。接下来新建一个 Android Project,Select Build Target 时选 Android 3.2 或者更新的版本,Application Info 里面,Minimum SDK 指定一个你需要的最低版本,比如 4(Android 1.6)。

  建好新工程以后我们把 ActionBarSherlock 引入这个 project 里,让这个 app 可以支持 Support Package 和 Action Bar。Project Properties,Android。在 Library 里点 Add…,选中 ActionBarSherlock(这时 ActionBarsherlock 需要在 workspace 里面,并处于打开状态),Ok。

  加好以后如果发现 R class 没有生成(提示 R cannot be resolved to a variable),同时注意到新工程里引用的 Android SDK 低于 Android 3.2 的话,要进入 Project Properties,Android,在 Project Build Target 里选择 Android 3.2 或者更高版本,修改完成后最好 Close Project 后重新打开。

  以上就是编译 ActionBarSherlock 并集成到自己 project 的全过程,我这个 Android 菜鸟摸索了半天才搞定,不容易啊:D 下面简单介绍下 code 部分。

  使用 Action Bar 的 Activity 需要继承自 FragmentActivity,并且在 AndroidManifast.xml 里要指定 Activity 的 theme,示例如下:

  1. <activity
  2.      android:label="@string/app_name"
  3.      android:name=".2ndboy"
  4.      android:theme="@style/Theme.Sherlock" >

  获取 Action Bar 实例要用 getSupportActionBar(),而不是 getActionBar()。由于 ActionBarSherlock 已经自带了一份 Support Package,所以我们不需要再去引入就可以直接使用 ViewPager 和 Fragment 了。Action Bar 上可以加 tab,跟 ViewPager 的 swipe 实现联动,此外 Android-ViewPagerIndicator 也是一个可参考的不错的开源库,用来实现 ViewPager 的各种指示器效果。