== 事由 == 這次又是到十幾個小時外的地點,進行為期一周的 work week;工作周。 對我們台灣人而言,工作周就是要好好的趕工,衝刺一些東西出來。 這聽起來就天經地義、合情合理。 然而,當來自世界各地的同事,齊聚在在風光明媚的南加州時, 事情卻完全的不同。 一周間,窗外是陽光普照。 和台灣,或者台北不同,總是有一股穩定的氣流,吹來清涼的空氣。 雖然是大太陽,卻是涼爽的日子。 只見我們的台灣同事們,在窗外的陽光普照下,埋頭苦幹,應該是在 做些驚人的東西吧! 我心裡嘆息,真是浪費這大好的天氣啊! 慢慢的,一天一天的過去了。 接近最後一天 demo 的日子了,只見一些同行的台灣同事,開始熬夜趕工, ...
最近又開了一個新的計劃,「Pythonkey」。是的,和 Python 有關。 那 -key 又是怎麼一回事? monKEY! 其實這是一個把 Python (CPython) 的 bytecode 轉譯成 SpiderMonkey bytecode 的計劃。 SpiderMonkey 是 Mozilla 的 JS engine。 為什麼要這麼做呢? 我們大家都知道, CPython 在執行的效能上,一直都沒有明顯的改善。 開發團隊有一些我不懂的堅持或技術上的障礙,遲遲無法在 GIL 和 JIT 上跨出 步伐。 雖然有 pypy,相較之下,成果還是有限。 反觀 Javasscript 的 interpreter,在這幾年進步的非常快速。 ...
linkname:mqskit http://bit.ly/zww8Vh 是個 hg extension, 補強 linkname:mq http://bit.ly/wPtNjh 的功能。 最近因為工作,大量使用 mq,而且同時需使用多個 patch queue。 因為 queue 之間的相依性,必需常在不同的 queue 之間同步、更新 queue 裡面 的 patch。 例如: B queue 相依於 A queue,於是每次 A queue 有更動時,就必需在適當的時 侯把 A queue 裡面的 patch 更新到 B queue 裡。 經常如此更新,是一件浪費生命的事,於是做了這個 ...
在看到 fcamel 的 linkname:[文章] http://bit.ly/unIBmD 之後,有幾點想要 補充一下。 Reference counting 是不是半自動化? 我並不覺的。 在程式語言的支援之下,如 C++ 的 smart pointer, reference counting 是能達到自動化的。 reference counting 只是一種技術,能不能自動化得看工具。 至 mark and sweep 也不能完全為 CPython 解決 cyclic reference 的問題。 主要原因在於 CPython 有一部分 code 是使用 reference counting,特別是 ...
為 Mecurial 寫 extension 的快樂,是冬獼入溫泉,夏童跳冷澗,炎午熏風吹, 雪後暖陽會一般的舒暢。為什麼? 是 Python 的淋漓,智慧烘照之後發出的芬芳, 產生了體內芬多精,至於腦內瑪琲產生也! 雖然是很唬爛,但不中也不遠矣! hg extension 兮 Python module 兮,毋遠矣! 納 cmdtable 變數,是 hg subcommand 的列表也。如 hg commit 、 hg pull 皆是。hg extension 設 cmdtable,使 hg 知 subcommand。有例為證 {{{#!python cmdtable = { 'bzexport': ...
linkname:[Mozilla 台灣辨公室徵人啟事] http://www.104.com.tw/jobbank/custjob/index.php?r=cust&j=386043285e363e6856423c1d1d1d1d5f24437323189j56&jobsource=checkc 。Mozilla 剛在台灣設立辨公室,有興趣者可以在 104 投履歷,或投到 career-tw AT mozilla.com。
這兩天被討論的是 Apple 的兩項專利。有人說,所有手機廠都要遭怏了。 但,真的如此嗎? 先假設這兩項專利以後不會被推翻,那是否就無解了? 我有幾個想法,不知是否能破解、避開該專利。但大家可以參考看看。 == 專利一: 滑蓋解鎖 == 也就是,手機進入待機狀態時,需要從手機畫面的左或右邊,滑到另一側, 手機就會解鎖。 如果,我在手機上面是顯示一排像是公事箱的數字鎖,只要碰一下就會跳往下一個數字。 只要使用者排出正確數字,就會解鎖。 假設預設 password 是 1111,而一開始都是出現 0000 的排列。 那麼使用者只要從左到右,或者反過來滑,這樣所有的數字就會變成 1111, 成功解鎖。 ...
每一個 C/C++ 的 programmer,應該都有遇過程式 core dump 或 segmentation fault 之後,透過 GDB (debugger) 卻無法指出錯位址的窘境。 (應該沒有人例外吧!) 這通常是因為 process 或 thread 的 stack 已經被弄亂了,或者 frame pointer 已經被改亂了,指向無名之處。 而 debugger 需要正確的 stack 資訊,才能分析出正確的 call frame。 遇到這種問題,通常的做法是乖乖去看程式碼,憑感覺推斷一些可能出錯的點, 並在出錯之前做 break point,再一步步的 step 過去,看是否正確。 ...
有用 screen 的人應該都知道,當有個程式發出 beep 聲時,screen 就會顯該 terminal 的編號。但該怎麼方便的發出 beep 聲呢? 例如: 當你在進行 build Android 之類的工作時,會切到其它 terminal,做其它事。 如何在完成 build 工作時,發出 beep 通知你,而不用不斷的切回去檢查呢? beep 的 ASCII 碼為 07,所以你只要想辨法印出 beep 字元,就會發出 beep 聲。 如果你使用 bash,作法為 {{{ echo $'\07' }}} 如果你在編譯個什麼東西,請用下面指令 {{{ make ; echo $'\07' ...
剛才看到一篇新聞 linkname:[科技大老:人才問題最迫切] http://tw.news.yahoo.com/article/url/d/a/111001/4/2zpaa.html ,其中提到 {{{ 以人才供需問題最迫切。王振堂表示,前次就曾提議本勞與外勞薪資制度應脫鉤, 但現在的需求卻比4年前更強烈,企業找不到人,高級人才、工程師的需求更是迫 在眉睫,電子資訊人才缺口1萬人,其中研發軟體對應求職者不到1個人,人才供 給失衡將嚴重影響產業發展。 }}} 我不襟想到,你要找的是人才還是奴才? 本勞和外勞薪資脫鉤,說的應該是外勞 不受本勞的最低工資限制。但如果因為本國找不到足夠的高級人才、工程師等, ...
昨天看到 linkname:[fcamel] http://www.plurk.com/fcamel 分享的一篇linkname:[PTT 文章] http://www.ptt.cc/bbs/Soft_Job/M.1316191715.A.323.html ,主要是談該不該順手 clean code。 在發表一些linkname:[看法] http://www.plurk.com/p/e0o4g6 之後,fcamel 又在今早發表一篇文章說明他的看法。 大致上,我的個人的意見和 fcamel 的文章是一致的,原本昨晚想要寫一篇說明, 但因故作罷。 但今早看到 fcamel 的文章之後,覺的看法雖然一致,有些點我還有一些更細 ...
因為運氣不好,在試圖在 FreeBSD 上玩 B2G (Boot To Gecko) 時,遇到 core dump 的問題。 在細部分解之後,發現是 FreeBSD 的 TLS (Thread-Local Storage) 的實作有些 隱藏的問題。 使用 TLS ,你的程式能夠為每一個 thread 配置一塊專用的記憶體,每當程式向 thread library 要那一塊記憶體的位置時,就會傳回對應到目前 thread 的區塊。 因此,每一個 thread 都可以有自己一塊空間,而不會誤取其它 thread 的區塊。 TLS 最簡單的用法如下 {{{#!cpp __thread int count ...
為了幫某個系統問題除錯,在等不及重新編釋/make world 的情況下,我直接用一個 新版本的 libc.so,蓋掉 /lib/libc.so.7。結果,很不幸的, copy 的動作並未完成, 並留下損毀的 /lib/libc.so.7。於是乎,系統無法執行任何新指令了,也無法重新 進行 copy。就此,我展開了拯救 FreeBSD 小惡魔大作戰。 甲計劃,我開始做開機用的 USB storage。先從另一台 notebook 上,重新 build world 並製作開機用的 image。 但這太慢了,又試著從網路上 download 現有的 binary。 這也不是這麼順利, memory ...
Update 到 Firefox 5 以上的版本後,一直發現 Firefox 吃的 memory 不斷成長。每當我把 browser 開著不關,隔天一醒來,看到就是上 G 的 memory 被吃掉。後來我發覺是 error log 造成的。特別是像 Google plus 和 Yahoo,會不斷產生大量的 CSS error,造成 memory 使量持續上昇。在幾經測試之後,發現只要把 "layout.css.report_errors" 設為 false 就能避免這個問題。 請進 about:config 頁面裡,找到 "layout.css.report_errors",並設為 false。避免 ...
前一篇 linkname:[paraspace] http://www.codemud.net/~thinker/GinGin_CGI.py/show_id_doc/452 的介紹,沒有仔細說明 APK 的封裝方法。只附上linkname:[一篇文章] http://asantoso.wordpress.com/2009/09/15/how-to-build-android-application-package-apk-from-the-command-line-using-the-sdk-tools-continuously-integrated-using-cruisecontrol/ ...
Paraspace 是敝人新起一個 project,是一個能 parse Android DEX file,並 做 code injection 的 Python library。之前在 HIT2011 曾發表過,當時只能 勉強運作,所以遲遲沒在網站上正式的發表。經過不斷的延宕之後,終於有一個 較完整(穩定?)的版本。特此發佈,希望能有所幫助。 DEX 是 Android Java code 的存放格式,裡面存放著 Dalvik bytecode。而 Dalvik 則是 Android 的 VM。 一般我們看到的 Android 程式,是一個 *.apk 的 APK 檔案。 APK 其實是一個 ...
我的工作檯旁,準備幾本詩詞。意煩、無趣之間,信手翻幾頁解悶。 今日讀到幾道孟浩然的詩,數次提到「漁梁」這個詞。 本以為大概是古時侯對某種地形、設施的通稱。 但多次出現之後,開始懷疑是某個地名。 上網查了一下,果然是個地名,而且現存。 {{{#!raw 夜歸鹿門山歌 孟浩然 山寺鐘嗚晝已昏,漁梁渡頭爭渡喧。 人隨沙路向江村,餘亦乘舟歸鹿門。 鹿門月照開煙樹,忽到龐公棲隱處。 岸扉松徑長寂寞,惟有幽人夜來去。 }}} 知道是地名之後,神意全然不同。 開門一句就是「鐘嗚」接著渡頭大家趕著回家的「爭渡喧」,兩種聲音混一起, 畫面也就歷歷在目了。 這樣的詩詞,難怪能流傳千、百年。 「漁梁」是指現安徽黃山南的漁梁古鎮。希望有機會一遊。 ...
這是一份 linkname:[Dalvik 的 opcode 列表] http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html ,如果仔細研究裡面的 opcode,可以分成下面幾個類型: * move 指令 (register 操作) * return 指令 * const/常數指令 (常字串、數字...常數指定給 register) * array 和 object 相關的操作 * method 的呼叫 * 整數和浮點數運算 * flow control (goto/if/switch) 從這裡能發現,Dalvik 除了能處理整數、浮點數和 ...
這是一份 linkname:[Dalvik 的 opcode 列表] http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html ,如果仔細研究裡面的 opcode,可以分成下面幾個類型: * move 指令 (register 操作) * return 指令 * const/常數指令 (常字串、數字...常數指定給 register) * array 和 object 相關的操作 * method 的呼叫 * 整數和浮點數運算 * flow control (goto/if/switch) 從這裡能發現,Dalvik 除了能處理整數、浮點數和 ...
[http://wiki.python.org.tw/PycTW2011?action=AttachFile&do;=get⌖=pyctw2011.png] 久違了, PycTW2011 確定了時間和地點。目前在做講題的最後募集,請各位有意者,移駕到 * http://wiki.python.org.tw/PycTW2011 本著分享的精神,有意分享食物者,也請移駕到上面網址進行預告。 日期:2011 年 6 月 25 日,早上 9 點 30 分到最下午 4 點 40 分 地點:台北市敦南路一段 219 號, B1 (蘋果優仕敦南店,感謝 OpenFoundry ...







