作為悲催的程序猿,每天的大部份時間都是陪伴鼠標鍵盤度過的,一套合適的鼠標鍵盤非常重要,可以降低得職業病的機率。尋找人體工學的鼠標鍵盤並不容易,現在這套用了好些時間了,感覺很滿意。

先說鍵盤,普通鍵盤其實並不符合雙手自然的角度,如果要能讓雙手自然,左右手鍵盤需要分離。因此,理想的鍵盤大概是這個樣子的:

這個是Kinesis Advantage Pro,我在荷蘭公司見過有同事用,在網上程序員社區也受到推薦。
作為悲催的程序猿,每天的大部份時間都是陪伴鼠標鍵盤度過的,一套合適的鼠標鍵盤非常重要,可以降低得職業病的機率。尋找人體工學的鼠標鍵盤並不容易,現在這套用了好些時間了,感覺很滿意。
先說鍵盤,普通鍵盤其實並不符合雙手自然的角度,如果要能讓雙手自然,左右手鍵盤需要分離。因此,理想的鍵盤大概是這個樣子的:
這個是Kinesis Advantage Pro,我在荷蘭公司見過有同事用,在網上程序員社區也受到推薦。
小米2手机在Mac OSX上,adb识别不到设备,Eclipse的DDMS也连不上设备,这样手机就不能用来开发了。实际上,只有在Windows上才需要安装USB驱动程序,在Linux、OSX上并不需要,设别不到小米2手机是因为adb不知道这手机的USB Vendor ID。Android SDK文档里就列出了一些Android设备厂商的vendor ID,不过当然不包括小米,因此要自己找出小米的vendor ID。用IORegistryExplorer(据说是包含在Developer Tool里,反正我的机器上装了)可以查看连接上的USB设备的信息。选择IOUSB,可以看到名为“MI 2”的设备,idVendor是0x2717。
将这个Vendor ID作为独立一行加进文件 ~/.android/adb_usb.ini 中。装了Android SDK这个目录和文件应该就存在的,如果不存在就自己创建。修改完adb_usb.ini后执行 adb kill-server 重启adb,再执行 adb devices,就能看到小米2手机了。再打开Eclipse,也能够正常设别到手机,一切OK。
Xperia U 手機用了半年,開始感覺還不錯,可是升級到ICS之後就慢得不行,歸咎下來應該還是因為RAM太小只有512M。於是動了換機的念頭。本來看中的是人稱Google四兒子的 Nexus 4,高配置白菜價,還有Google最新系統的保證,可是開賣以來奇貨可居,市場價炒到上三千。幾個月內都是沒什麼希望買到了。本來我是沒有關注小米2的,偶然的機會朋友可以買到現貨,問我要不要,上網查了一輪,發現小米2也不錯,於是就買了。用了10天,感覺挺滿意。
對於國產手機,最關心的是能不能用Google服務,有沒有ROM可以刷。行貨的閹割系統對於我來說是根本不能用的。小米做得還不錯,保留了Google Service Framework,可以添加Google帳號同步,Google Play等應用自己裝上就可以了。小米手機不算開放,沒有找到任何第三方的ROM,但好在小米除了MIUI外還是提供了原生Android系統ROM,如果不喜歡MIUI還是可以用回native Android。小米2的操作系统已經超越了ICS,是Android 4.1 Jelly Bean,除了四儿子是4.2,小米2也算是版本最高的一款Android手机了吧。手機到手後,刷了個MIUI開發版,因為穩定版不提供root權限。個人感覺MIUI的定製的度把握得比較合適,把很多系統級的有用的功能集成進去了,例如來電短信攔截,LBE的權限管理,通知欄開關等等,而又沒有像其他廠商那樣內置一大堆用不著又刪不掉的應用。因此我試了一下還是決定保留MIUI。
唯一不喜欢的是MIUI的launcher。仿照iOS将图标全平铺在桌面上,用起来不方便;它为第三方应用的图标都缩小并加上一块灰绿色背景,难看死了,本来应用精心设计的透明背景图标都被它搞成一块块牛粪。MIUI的设计风格不错的,真不知道为什么这个launcher会搭配得那么丑,即使自己创建主题将那个灰绿背景改成透明,图标还是被缩小了不好看。我另外找到了一個launcher:Atom Launcher,界面風格簡潔,功能細節也很好,這下就完美了。
小米2給我最大的感受是显示非常细腻,特别是低磅数的Roboto字体特别干净秀气。342ppi的屏幕达到视网膜屏的标准,其实现在新出的好多手机都是视网膜屏了,只不过现在已经不再新鲜,厂商也不会拿这来做特别宣传。Android从ICS起缺省的是Holo蓝色主题,MIUI换成了自己标志性的亮橙色,大片白色背景,黑色/灰色字体加上亮橙的点缀,整个风格很现代和清新。
11月18日,廣州首屆馬拉松賽,也是我跑的第一次半馬拉松。過去大半個月了,還是記錄一下吧。
看回以前寫的blog,應該是在2005年底開始跑步的,也不記得當時爲什麼突然有了要經常性跑步的想法。那時傍晚下班後在天河公園跑,跑步是作爲鍛鍊和放鬆,一次跑半小時左右,最多5、6公里,根本不敢想象自己能跑21公里的半馬拉松。雖然跑了好多年,但都是斷斷續續,有時一停就幾個月,跑的頻率也低,最多一週兩次,一直都是維持在只能連續跑5公里左右水平。
2008年下半年腰椎間盤突出,最嚴重時連走路都一瘸一瘸的,當時真害怕恢復不了,沒法再做運動了。幸好恢復得很快,11月起可以慢跑鍛鍊,那兩三個月跑得比較頻密,到年底跑的狀態還不錯,同樣的距離比之前跑得更輕鬆。
2009年開始嘗試跑長一點的距離,跑了幾次8到10公里左右,但也沒堅持訓練。10月份Nike在廣州舉辦10公里跑,第一次參加了正式的長跑活動,成績58:30,完成了自己跑進1小時的目標(准备10km跑)。試過後覺得參加跑步活動很好玩,打算以後都繼續參與。
2010年亞運會,Nike沒有辦跑步活動,2011年11月,Nike又舉辦10公里跑,這次賽前就比較認真的做了兩個月的訓練計劃,專門練習了提高步頻,效果還是比較顯著的,成績比預想的好不少,48:29,步速邁進了5分鐘每公里大關(Nike Lunar Run 10公里跑总结)。
近幾天把以前做的跑步步频训练软件 RunningCadence 加上了多語言支持,可以在應用中設定界面以及語音播報所用的語言。
對多語言的支持,Android已經做得很完善,開發者只需要在應用中加入各種locale的資源文件。但是,應用只會使用系統全局設置的locale,而要在應用自己的設定中選擇locale,以及要讓設定立即生效,就需要開發者自己去實現了。
本來,一般應用並沒必要自己提供語言設定,用系統全局設定就好了。但這個 RunningCadence 使用了語音合成(TTS)功能,而一般手機上安裝的TTS引擎支持的語言都有限,如果TTS不支持系統locale的語言,那就聽不到聲音了,所以需要花力氣去搞這個應用內的語言選擇。
開發應用時要爲不同locale準備不同的資源,在應用中通過 Resources 類來加載資源,各個界面組件的構建都需要用到資源。而具體資源如何選擇是受 Configuration 影響的,Configuration帶有設備的硬件相關配置信息(如屏幕分辨率,屏幕方向)和系統全局配置信息(如locale),由系統底層框架提供。
Java内存模型中,有主内存和每个线程各自的工作内存,虚拟机和硬件可能会让线程工作内存优先存储于寄存器和高速缓存中,以提高性能。
所有变量都存储在主内存中,线程工作内存中保存了此线程使用到的变量的副本。工作内存在线程之间是隔离的,对其他线程不可见。线程对变量的所有操作都必须在工作内存中进行,修改后的变量副本要写回主内存。这样就会出现同一个变量在某个瞬间,在一个线程的工作内存中的值可能与另外一个线程工作内存中的值,或者主内存中的值不一致的情况。
一个变量声明为volatile,就意味着这个变量被修改时其他所有使用到此变量的线程都立即能见到变化(称之为可见性)。具体是在每次使用前都要先刷新,以保证别的线程中的修改已经反映到本线程工作内存中,因此可以保证执行时的一致性。以下例子展现了volatile的作用:
1 | public class StoppableTask extends Thread { |
色彩管理的第一篇是在2004年写的,当时本来想连续写,可写了一篇就没有下文了。现在再来继续色彩的话题,不过这次的主题其实不算色彩管理,而是看看色彩的本质是什么。
颜色是什么?学物理的时候说太阳光通过菱镜会分离成彩色的光带,不同颜色的光的波长是不一样的。这给我们一个印象:颜色就是可见光波长这个物理量的反映。但是问题来了,白色对应什么波长的光?为什么红光和绿光混合在一起变成了黄光,难道混合后波长产生变化了?原因在于,颜色并不是某一個物理量的直接反映,而是人对光线的心理反映,称之为色觉。
人眼有三种色彩感受器(视锥细胞),每种感受器可以感应不同波长范围的光,分别的感受峰值波长为:420nm,534nm,564nm,差不多相当于蓝、绿、红三色光的波长。对于某一种光谱,三种感受器得到三组信号送往大脑,大脑根据这三组信号值的不同组合感知到不同的色彩。
现实世界中的光线通常都不会是单一波长的(只有激光光源产生的才是单一波长的光吧,要么是经过分光镜得到的),而是不同波长组合的混合光。视觉感受器并不能区分这些光谱,反正各种感受器只对自己能感应的波长范围内的光作出反应,最后大脑拿到的就是三组信号而已。不同的光谱组合的光线,可能对三种视觉感受器产生的刺激恰好是一样的,这样大脑就会将它们感受为同一种颜色,术语称为“异谱同色”。例如波长600nm左右的光线人感受是黄色,而波长540nm绿光和700nm红光一定强度比例的混合,人感觉到的也是黄色。
环岛一周约4.4km,其实只能算环半岛,因为岛西面一大段的沿江堤岸是公众不能进入的。车道大部分是沥青路面,晴澜路段水泥路面,人行道是铺石路面。环岛道路汽车不多,在注意安全的前提下可以靠边跑车道。
虽然算不上有什么景观,但二沙岛上的都是别墅和高级会所,环境幽静,江边视野开阔,跑起来挺舒服。
晚上晴波路音乐厅美术馆一段江边比较热闹点,有游客、玩单车和玩音乐的,其他路段都比较僻静,特别的北面晴澜路段。但每隔一段距离就有保安坐在路旁,毕竟这里是富人区,治安有保障。
岛中央是几个大草坪,上面有橡胶铺设的步道,跑步也不错,但就是拐弯多,断断续续,总长度也不够长。
麓湖的跑步路线是环绕着湖一周的路。路面包括木栈道、柏油车道、砖铺人行道,麓湖路属于绿道系统的部分有木栈道,其余环湖路线的人行道很窄,可以跑到车道边上,但有来车时需要注意安全。
麓湖是广州为数不多的大湖泊,比一般公园的湖要大很多,周边都是山头绿地,环境和景色都不错。可惜环湖的车道虽然不是主干道,但来往车辆还是不少,汽车尾气导致空气还是一般。
虽然周边环境偏僻些,但白天游人不少,路上也不时会见到跑友,安全不成问题。我没有晚上去跑过,估计会比较僻静,安全上需要小心。附近麓景路、麓湖路都有公交车站。
环湖一圈约3.5km,总上升59m,基本上不算多大起伏。