<?xml version="1.0" encoding="big5"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
	<title>Thinker</title>
	<link>http://www.branda.to/~thinker/GinGin_CGI.py</link>
	<dc:language></dc:language>
	<dc:creator>Thinker</dc:creator>
	<dc:date></dc:date>
	<item ezid="content.feeds.feed">
		<title>Mqskit 和其它相關工具</title>
		<link>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/465</link>
		<description>
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 裡。
經常如此更新，是一件浪費生命的事，於是做了這個 ...</description>
		<guid>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/465</guid>
		<dc:date>2012-01-09T10:35:55-08:00</dc:date>
	</item><item ezid="content.feeds.feed">
		<title>CPython 的 GC 二、三事</title>
		<link>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/464</link>
		<description>
在看到 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，特別是 ...</description>
		<guid>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/464</guid>
		<dc:date>2011-12-04T00:38:38-08:00</dc:date>
	</item><item ezid="content.feeds.feed">
		<title>寫 Mecurial Extension 是件快樂的事!</title>
		<link>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/463</link>
		<description>
為 Mecurial 寫 extension 的快樂，是冬獼入溫泉，夏童跳冷澗，炎午熏風吹，
雪後暖陽會一般的舒暢。為什麼? 是 Python 的淋漓，智慧烘照之後發出的芬芳，
產生了體內芬多精，至於腦內瑪琲產生也! 雖然是很唬爛，但不中也不遠矣!

hg extension 兮 Python module 兮，毋遠矣! 納 cmdtable 變數，是 hg
subcommand 的列表也。如 hg commit 、 hg pull 皆是。hg extension 設
cmdtable，使 hg 知 subcommand。有例為證

{{{#!python
cmdtable = {
    'bzexport': ...</description>
		<guid>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/463</guid>
		<dc:date>2011-11-29T00:53:30-08:00</dc:date>
	</item><item ezid="content.feeds.feed">
		<title>Mozilla 台灣辨公室徵人啟事</title>
		<link>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/462</link>
		<description>linkname:[Mozilla 台灣辨公室徵人啟事] http://www.104.com.tw/jobbank/custjob/index.php?r=cust&amp;amp;j=386043285e363e6856423c1d1d1d1d5f24437323189j56&amp;amp;jobsource=checkc 。Mozilla 剛在台灣設立辨公室，有興趣者可以在 104 投履歷，或投到 career-tw AT mozilla.com。
</description>
		<guid>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/462</guid>
		<dc:date>2011-10-30T20:25:40-08:00</dc:date>
	</item><item ezid="content.feeds.feed">
		<title>關於 Apple 的兩項專利</title>
		<link>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/461</link>
		<description>
這兩天被討論的是 Apple 的兩項專利。有人說，所有手機廠都要遭怏了。
但，真的如此嗎?
先假設這兩項專利以後不會被推翻，那是否就無解了?
我有幾個想法，不知是否能破解、避開該專利。但大家可以參考看看。

== 專利一: 滑蓋解鎖 ==
也就是，手機進入待機狀態時，需要從手機畫面的左或右邊，滑到另一側，
手機就會解鎖。
如果，我在手機上面是顯示一排像是公事箱的數字鎖，只要碰一下就會跳往下一個數字。
只要使用者排出正確數字，就會解鎖。
假設預設 password 是 1111，而一開始都是出現 0000 的排列。
那麼使用者只要從左到右，或者反過來滑，這樣所有的數字就會變成 1111，
成功解鎖。 ...</description>
		<guid>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/461</guid>
		<dc:date>2011-10-28T00:16:12-08:00</dc:date>
	</item><item ezid="content.feeds.feed">
		<title>core dump 之前的 frame</title>
		<link>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/460</link>
		<description>
每一個 C/C++ 的 programmer，應該都有遇過程式 core dump 或 segmentation
fault 之後，透過 GDB (debugger) 卻無法指出錯位址的窘境。
(應該沒有人例外吧!)
這通常是因為 process 或 thread 的 stack 已經被弄亂了，或者 frame pointer
已經被改亂了，指向無名之處。
而 debugger 需要正確的 stack 資訊，才能分析出正確的 call frame。
遇到這種問題，通常的做法是乖乖去看程式碼，憑感覺推斷一些可能出錯的點，
並在出錯之前做 break point，再一步步的 step 過去，看是否正確。 ...</description>
		<guid>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/460</guid>
		<dc:date>2011-10-23T17:42:07-08:00</dc:date>
	</item><item ezid="content.feeds.feed">
		<title>怎麼發出 beep 聲?</title>
		<link>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/459</link>
		<description>
有用 screen 的人應該都知道，當有個程式發出 beep 聲時，screen 就會顯該
terminal 的編號。但該怎麼方便的發出 beep 聲呢?
例如: 當你在進行 build Android 之類的工作時，會切到其它 terminal，做其它事。
如何在完成 build 工作時，發出 beep 通知你，而不用不斷的切回去檢查呢?

beep 的 ASCII 碼為 07，所以你只要想辨法印出 beep 字元，就會發出 beep 聲。
如果你使用 bash，作法為
{{{

echo $'\07'

}}}

如果你在編譯個什麼東西，請用下面指令
{{{

make ; echo $'\07' ...</description>
		<guid>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/459</guid>
		<dc:date>2011-10-14T17:09:14-08:00</dc:date>
	</item><item ezid="content.feeds.feed">
		<title>先承認你要找的是奴才吧!</title>
		<link>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/458</link>
		<description>
剛才看到一篇新聞 linkname:[科技大老：人才問題最迫切] http://tw.news.yahoo.com/article/url/d/a/111001/4/2zpaa.html ，其中提到
{{{

以人才供需問題最迫切。王振堂表示，前次就曾提議本勞與外勞薪資制度應脫鉤，
但現在的需求卻比4年前更強烈，企業找不到人，高級人才、工程師的需求更是迫
在眉睫，電子資訊人才缺口1萬人，其中研發軟體對應求職者不到1個人，人才供
給失衡將嚴重影響產業發展。

}}}

我不襟想到，你要找的是人才還是奴才? 本勞和外勞薪資脫鉤，說的應該是外勞
不受本勞的最低工資限制。但如果因為本國找不到足夠的高級人才、工程師等， ...</description>
		<guid>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/458</guid>
		<dc:date>2011-10-01T11:29:27-08:00</dc:date>
	</item><item ezid="content.feeds.feed">
		<title>程式碼要清的多乾淨?</title>
		<link>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/457</link>
		<description>
昨天看到 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 的文章之後，覺的看法雖然一致，有些點我還有一些更細 ...</description>
		<guid>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/457</guid>
		<dc:date>2011-09-18T18:14:41-08:00</dc:date>
	</item><item ezid="content.feeds.feed">
		<title>FreeBSD 的 Thread-Local Storage 實作</title>
		<link>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/456</link>
		<description>
因為運氣不好，在試圖在 FreeBSD 上玩 B2G (Boot To Gecko) 時，遇到 core dump
的問題。
在細部分解之後，發現是 FreeBSD 的 TLS (Thread-Local Storage) 的實作有些
隱藏的問題。
使用 TLS ，你的程式能夠為每一個 thread 配置一塊專用的記憶體，每當程式向
thread library 要那一塊記憶體的位置時，就會傳回對應到目前 thread 的區塊。
因此，每一個 thread 都可以有自己一塊空間，而不會誤取其它 thread 的區塊。
TLS 最簡單的用法如下

{{{#!cpp
__thread int count ...</description>
		<guid>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/456</guid>
		<dc:date>2011-09-14T11:41:52-08:00</dc:date>
	</item><item ezid="content.feeds.feed">
		<title>拯救 FreeBSD 小惡魔</title>
		<link>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/455</link>
		<description>
為了幫某個系統問題除錯，在等不及重新編釋/make world 的情況下，我直接用一個
新版本的 libc.so，蓋掉 /lib/libc.so.7。結果，很不幸的， copy 的動作並未完成，
並留下損毀的 /lib/libc.so.7。於是乎，系統無法執行任何新指令了，也無法重新
進行 copy。就此，我展開了拯救 FreeBSD 小惡魔大作戰。

甲計劃，我開始做開機用的 USB storage。先從另一台 notebook 上，重新 build world
並製作開機用的 image。
但這太慢了，又試著從網路上 download 現有的 binary。
這也不是這麼順利， memory ...</description>
		<guid>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/455</guid>
		<dc:date>2011-09-13T21:09:48-08:00</dc:date>
	</item><item ezid="content.feeds.feed">
		<title>Firefox 5+ 吃大量記憶體的問題</title>
		<link>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/454</link>
		<description>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。避免 ...</description>
		<guid>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/454</guid>
		<dc:date>2011-08-31T10:08:18-08:00</dc:date>
	</item><item ezid="content.feeds.feed">
		<title>如何封裝 Android APK 檔</title>
		<link>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/453</link>
		<description>
前一篇 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/ ...</description>
		<guid>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/453</guid>
		<dc:date>2011-08-18T11:29:44-08:00</dc:date>
	</item><item ezid="content.feeds.feed">
		<title>Paraspace 的第一個 Milestone</title>
		<link>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/452</link>
		<description>
Paraspace 是敝人新起一個 project，是一個能 parse Android DEX file，並
做 code injection 的 Python library。之前在 HIT2011 曾發表過，當時只能
勉強運作，所以遲遲沒在網站上正式的發表。經過不斷的延宕之後，終於有一個
較完整(穩定?)的版本。特此發佈，希望能有所幫助。

DEX 是 Android Java code 的存放格式，裡面存放著 Dalvik bytecode。而
Dalvik 則是 Android 的 VM。
一般我們看到的 Android 程式，是一個 *.apk 的 APK 檔案。
APK 其實是一個 ...</description>
		<guid>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/452</guid>
		<dc:date>2011-08-17T11:29:08-08:00</dc:date>
	</item><item ezid="content.feeds.feed">
		<title>漁梁是什麼東西?</title>
		<link>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/451</link>
		<description>
我的工作檯旁，準備幾本詩詞。意煩、無趣之間，信手翻幾頁解悶。
今日讀到幾道孟浩然的詩，數次提到「漁梁」這個詞。
本以為大概是古時侯對某種地形、設施的通稱。
但多次出現之後，開始懷疑是某個地名。
上網查了一下，果然是個地名，而且現存。

{{{#!raw
夜歸鹿門山歌  孟浩然

山寺鐘嗚晝已昏，漁梁渡頭爭渡喧。
人隨沙路向江村，餘亦乘舟歸鹿門。
鹿門月照開煙樹，忽到龐公棲隱處。
岸扉松徑長寂寞，惟有幽人夜來去。

}}}

知道是地名之後，神意全然不同。
開門一句就是「鐘嗚」接著渡頭大家趕著回家的「爭渡喧」，兩種聲音混一起，
畫面也就歷歷在目了。
這樣的詩詞，難怪能流傳千、百年。

「漁梁」是指現安徽黃山南的漁梁古鎮。希望有機會一遊。 ...</description>
		<guid>http://www.branda.to/~thinker/GinGin_CGI.py/show_id_doc/451</guid>
		<dc:date>2011-08-10T12:14:45-08:00</dc:date>
	</item>
</channel>
</rss>
