總網頁瀏覽量

咕狗大神

2011年12月23日 星期五

豪子給的 roadmap


第一階段
  1. 把想法再具體
  2. 根據具體的想法做高階設計
  3. 試做雛型,以確認設計良好,或做為修改設計的依據
  4. 再進一步做細部設計
    1. 先去申請專利,確保智慧財產
    2. 招兵買馬,向募集的成員說明高階設計(被驗證/修正過的)
    3. 和成員一起做細部設計
  5.  實作/測試/發表


第二階段,看是自己再主導一個editor 的 project, 用前面開發出來的 rendering engine,證明這個 engine 可用、好用。 或是把這個 engine 推銷給其他做 editor 的 project ,一起合作。

2011年12月2日 星期五

想走了

前不久才抱怨覺得自己這把刀被拿來砍柴、切菜、挖坑,沒想到這麼快就變成真的了。為什麼我總是遇到想要把工程師訓練成 sales 的主管呢?

前一份工作也是,為了一個大案子,直接把一堆寫程式的工程師,用最高層的力量直接轉任到這個案子,然後去陪客戶喝酒、拍馬屁、灌迷湯。叫工程師直接面對客戶的砲轟,叫工程師開始不用寫程式改寫一堆進度報告,就是因為這樣我才離開的。如今,我又面臨到一樣的狀況,還叫我要學習。

我不懂耶~不是說現在很多企業都找不到寫程式的工程師嗎?怎麼我老是被輕忽這方面的能力,硬要我轉去面對客戶,拉生意、拍馬屁,真的不懂。如果我天生有這種才能也就算了,偏偏我只喜歡面對電腦與程式,我很拙於應對客戶,那根本不是我的興趣,要怎麼培養呢?如果今天是因為我一點兒技術能力都沒有,我認了,努力去學習也是應該的。問題是,我自認技術能力不差,帶過我的主管也都說我的技術能力是數一數二的,為什麼卻都要逼我去兼任一個 sales 呢?我根本一點兒也沒有應對客戶的能力啊。

真的是超灰心的,有沒有什麼公司是真的讓工程師就單純是一個工程師呢?我不是完全不願意面對客戶,我很願意傾聽客戶的需求,但是我並沒有辦法去跟客戶拉生意,博感情,難道我不會應酬,就連我技術方面的能力都一概抹煞嗎?

我真的想走了,真的~

2011年11月29日 星期二

水銀的使用方法


  • 原始碼壓縮:hg archive -t zip xxx.zip
  • 複製一份:hg clone source targe
  • 取回資源庫: hg pull
  • 繳交資源庫: hg push
  • 貼標籤: hg tag xxx
  • 取回某一版本:hg checkout tagname


2011年11月25日 星期五

App & epub

常常會聽到人家問我,『喂~epub那麼麻煩,顯示又那麼呆板,幹麼不推App阿』,我每次聽到都覺得很煩,不是問題本身很煩,是沒辦法找到一個簡單地方式回答。今天想試著把思緒整理一下,看能不能寫出個子丑寅卯,我用問問題的方式來表達好了:

1. 什麼是 App?
Ans: App 應該是 Application 的縮寫,就是應用程式。在微軟的平台,應用程式多到不勝枚舉,就不多作解釋。但是 App 這三個字的火紅,主要是 App Store 來的吧。如果從這個角度,那麼 App 就局限於使用 iOS SDK/Mac SDK 所開發的應用程式了,請見維基百科

2. App 強在哪裡?
Ans: 這個問題應該沒什麼好回答,資訊系統上面能跑的都是應用程式,所有資訊系統可以呈現的,透過應用程式都能做到。所以強在『無所不能』,前提是『在系統所提供的開放功能之下』。所以系統沒給用的,就算應用程式也作不到。

3. 幹麼排斥 App?
Ans: 冤枉喔~我沒有排斥App阿~我本身就是靠寫程式吃飯的(至少過去十年,我沒寫程式就沒收入),怎麼會排斥 App 呢?但是我排斥『幫特定廠商牟利』,我想那些大廠已經賺很飽了,名氣也夠響亮,不需要我們幫忙打知名度吧?『什麼?寫App就是幫他們打知名度嗎?』,站在我的立場,是的。自由軟體每支都是App阿,誰排斥過誰?

4. epub 是什麼?
Ans: epub是一種文件檔案格式,就這樣。

5. epub 有什麼優點?
Ans: 考古題,自己找答案。

6. epub 有什麼缺點或限制?
Ans: 有檔案格式自然就需要讀檔程式。要看 doc 檔得裝 word、要看 pdf 檔得裝 pdf reader、所以要看 epub 檔自然得安裝 epub reader,這是限制,也可以說是相較於 App 的缺點。

7. App 很炫啊,epub 跟得上嗎?
Ans: 這個問題很深,首先要界定範圍喔,假如問問題的人是編輯者,那麼我要反問一句,怎麼讓文字有背景音樂?不知道?找會寫程式的人?如果我告訴你,只要照抄下面幾個字 < audio src="../abc.mp3" autoplay="autoplay" />,就會在背景撥放 abc.mp3 ,這樣炫嗎?我想要強調的是,App 跟 epub 是給不同的人使用的東西,App 一定要靠程式寫作,而 epub 很單純就是給編輯人員使用,而不需要任何寫程式的背景。App 很炫的原因前面講過了,它本身就是程式,程式可以在電腦上面做幾乎任何事。但是寫一本書,為什麼要靠寫程式的人才能編輯成冊呢?

8. 愛睡了,待續

2011年11月24日 星期四

Sigil 0.3.4.3 釋出了

從前幾天知道 0.3.4.2 有蟲以後,就開始惶惶不知終日,每天只想趕快抓蟲,其他事情都沒什麼心思。蟲是很快就發現了,問題是要想個方法,把蟲抓掉又不會影響到 0.3.4.2 的功能,這可真是頭痛。

昨天實在是沒招了,狠下心來決定對 HTMLTidy 這一大包進行拆解。不過這種東西拆完可能已經明年了,所以只好用絕招了,就是猜想他的架構,然後賭賭看我猜的對不對。

運氣不錯猜中了,所以我就把 audio, video 都加入了,這下子這兩個標籤就不會被洗掉了。測試完沒什麼問題,就打包囉~

這次也順便開放一個新功能,就是當儲存為 EPUB 3.0 格式,會跳出詢問框問你要不要檢視套裝文件內容,如果選擇要,就會出現編輯視窗,裡面有 package document 的內容可以修改。

以上~接下來可能要忙好一陣子的工作了,Sigil 暫時不會做功能新增。

2011年11月23日 星期三

你知道 Sigil 要增加一個標籤有多困難?


後記:2011-12-12
---------------------------
試了很久才發現,必須對 tidy-html 作修改,不然無法產生 xhtml1.1 以及 xhtml5 的 DOCTYPE

但是這個問題解決了,卻跑出一個 multi-thread 的 memory leak
繼續努力中







後記:2011-12-08
---------------------------
找到 W3C 後續發展的 HTML5-tidy ,正在試著裝上去
希望成功,那就徹底解決這個問題了


---------------------------
先寫步驟吧,以 audio 做例子:

1. tags.h
#define nodeIsAUDIO( node )      TagIsId( node, TidyTag_AUDIO )

2. tags.c
#define VERS_ELEM_AUDIO      (xxxx|xxxx|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|XH11|XB10)

static const Dict tag_defs[] =
{ /**增加下面這行 */
    { TidyTag_AUDIO,      "audio",      VERS_ELEM_AUDIO,      &TY_(W3CAttrsFor_AUDIO)[0],      (CM_BLOCK|CM_EMPTY),                           TY_(ParseEmpty),    NULL           },

3. tidynum.h
enum { /** 增加下面這行 */
    TidyTag_AUDIO,    /**< AUDIO */
} TidyTagId;


4. attrdict.h
extern const AttrVersion TY_(W3CAttrsFor_AUDIO)[];

5. attrdict.c

const AttrVersion TY_(W3CAttrsFor_AUDIO)[] =
{
  { TidyAttr_ACCESSKEY,      xxxx|xxxx|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|XH11|xxxx },
  { TidyAttr_AUTOPLAY,       xxxx|xxxx|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|XH11|XB10 },
  { TidyAttr_CLASS,          xxxx|xxxx|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|XH11|XB10 },
  { TidyAttr_CONTROLS,       xxxx|xxxx|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|XH11|XB10 },
  { TidyAttr_DIR,            xxxx|xxxx|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|xxxx|xxxx },
  { TidyAttr_ID,             xxxx|xxxx|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|XH11|XB10 },
  { TidyAttr_LANG,           xxxx|xxxx|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|xxxx|xxxx },
  { TidyAttr_LOOP,           xxxx|xxxx|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|XH11|XB10 },
  { TidyAttr_OnCLICK,        xxxx|xxxx|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|XH11|xxxx },
  { TidyAttr_OnDBLCLICK,     xxxx|xxxx|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|XH11|xxxx },
  { TidyAttr_OnKEYDOWN,      xxxx|xxxx|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|XH11|xxxx },
  { TidyAttr_OnKEYPRESS,     xxxx|xxxx|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|XH11|xxxx },
  { TidyAttr_OnKEYUP,        xxxx|xxxx|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|XH11|xxxx },
  { TidyAttr_OnMOUSEDOWN,    xxxx|xxxx|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|XH11|xxxx },
  { TidyAttr_OnMOUSEMOVE,    xxxx|xxxx|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|XH11|xxxx },
  { TidyAttr_OnMOUSEOUT,     xxxx|xxxx|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|XH11|xxxx },
  { TidyAttr_OnMOUSEOVER,    xxxx|xxxx|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|XH11|xxxx },
  { TidyAttr_OnMOUSEUP,      xxxx|xxxx|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|XH11|xxxx },
  { TidyAttr_PRELOAD,        xxxx|xxxx|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|XH11|XB10 },
  { TidyAttr_SDAPREF,        HT20|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx },
  { TidyAttr_SRC,            HT20|HT32|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|XH11|XB10 },
  { TidyAttr_STYLE,          xxxx|xxxx|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|XH11|xxxx },
  { TidyAttr_TABINDEX,       xxxx|xxxx|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|XH11|xxxx },
  { TidyAttr_TITLE,          xxxx|xxxx|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|XH11|XB10 },
  { TidyAttr_XML_LANG,       xxxx|xxxx|xxxx|xxxx|X10T|xxxx|xxxx|X10F|xxxx|xxxx|X10S|XH11|XB10 },
  { TidyAttr_XMLNS,          xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|XH11|XB10 },
  { TidyAttr_UNKNOWN,        0                                                                },
};

6. 凡是沒有定義過的 attributes ,一律回到 tidynum.h 去增加
TidyAttr_PRELOAD,           /**< PRELOAD= */

大概就這樣~有夠麻煩

2011年11月22日 星期二

Sigil 0.3.4.2 有蟲

今天跑去逛電子書跑去逛電子書研究基地,發現不少人下載了 Sigil 0.3.4.2 來試驗,而且很多人反應有蟲,只要切章節就會當掉,這可真是嚇死人了,因為本來好好的被我改壞了~真是遜啊!

第一個反應就是因為我拿掉稽核的程式碼,由於原作者把稽核的程式碼包裝得很緊密,所以不只是稽核,還會順便洗標籤、縮排等,這部份我目前幾乎沒辦法拆解,所以之前釋出版本時,就直接把整包給取消掉,現在出問題,應該就表示某些補標籤、補內容的部份也包在這包裡面,真是好大一包喔~

所以唯一的辦法,就是把切章節的部份,加回那一大包,當然這也表示,如果原本的內容使用了 HTML5 專有的標籤,如: audio, video 等,那麼這些標籤會被洗掉。

我在這裡必須聲明,這並不是原作者功力不好,如果現在的時代還是 HTML4 + CSS 2.0 + EPUB 2.0.1,那麼我也會用這種一大包的方式,因為完全沒理由要把這包拆開。

也許有人會說,預留彈性不是很好嗎?說真的,寫了十幾年的程式,預留彈性往往等同於過度設計,幾乎不會用到那個彈性啦~

所以呢?未來有很長一段路要走,因為我必須把接近七八成的程式碼置換,同時必須調整整個架構,這真是龐大的工程。另外,這個編輯器有他的限制,所以不管怎麼努力,其實都會碰到頂,再也上不去。

但是這可是我自己選擇的,我只能堅持往前走囉~

2011年11月18日 星期五

Sigil 0.3.4.2 釋出了

經過了好一陣子的 trace code 以及新增功能, Sigil-0.3.4.2 終於可以釋出了。我把它放到 Source Forge ,網址: http://sourceforge.net/p/sigil4epub3

說真的,釋出這個版本其實非常陽春,號稱支援 epub 3.0 也僅止於 OCF 3.0 以及部份的 Publications 3.0 ,所以我想應該會有一堆人咒罵吧~

比較有用的大概是繁體中文的語言包,這次不像上次硬改掉 source code,而是採用 i18n 的作法,算是比較像樣的部分。

以後就靠我自己了,我希望強迫自己,每個月可以多一點功能,或者改善一些 bug,當然最好的狀況是有人願意一起討論與開發,但這只能隨緣了。

2011年10月25日 星期二

有點沮喪

這兩天我們這組負責舉辦了兩場國際會議,但是我卻有種失落的感覺。整個過程中,我從一個辛苦了解 EPUB 3 規範的工程師,以及開發 Sigil branched 版本的軟體開發者,在國內 EPUB 3.0 規範說明會擔任了數場講師的身份,突然變成一個沒沒無聞於國際的小角色。在整個過程中,出來露臉的,出來攀談的,都是那些掛個名沒做事情的人,我們這組組員辛辛苦苦的想把整個活動辦好,換來的,其實什麼都沒有,還必須受到那些掛名的協辦單位的頭頭們的頤指氣使,忽然之間,我有種茫然不知所措的感覺。

另外,我覺得主管在這整個過程中,沒有好好的保護組員,也沒有善用組員的能力,更沒有做好整個規劃與工作分配,到了現場急吼吼的,這應該就是令我們感到沮喪的主要原因。

我之所以離開前一份工作,離開那份薪水優渥、休假特多、福利特好、又幹了十年熟悉整個大環境的工作,原因就是我感覺到自己成為主管手中的工具,而不是一個組員。工具有幾個特色:不會累,不需要鼓勵,生來就是被人利用的,...等,而工具的下場也只有一個,就是用到壞掉的那一天,然後扔掉。

在這份新工作滿一年半的現在,加上舉辦這兩場國際會議的整個過程,我又產生這種感覺了,又開始覺得被當成工具來使用。而且這次更慘,以前是刀子當刀子用到壞,這次是刀子拿來砍樹、切菜、挖土、劈柴、樣樣都來,我覺得自己這把刀實在是開始有點鈍了,因為被拿來作太多不當的用途了。

常常聽人說,換工作要徹底檢討自己,不要再犯。我一直在反省自己,為什麼又有這種感覺,是我自視甚高嗎?是我特立獨行嗎?如果我真的是一把削鐵如泥的寶刀,就算砍金斷玉都不當一回事,那麼偶爾拿來劈柴、切菜、挖坑又有什麼不行?

也許我根本就不是一把寶刀。

或者我又到了該離開的時候?

2011年10月14日 星期五

EPUB 3.0 閱讀器

很多人都有一個疑惑,EPUB 3.0 規範了這麼多的事情,擁有這麼多的功能,對內容作者而言,是一件天大的好事,那為什麼國內的出版社,在現階段還是選擇 App 這種需要專業資訊人員才能製作的方式呢?我個人的想法是,因為閱讀器的實做存在著很大的困難度與門檻。

簡單來說, EPUB 3.0 是一個多領域出版品的內容格式規範,像是需要科學與數學符號相關的出版品、漫畫、相簿、電影書、動畫書、有聲書等出版品所需的標準規範,都被包含在 EPUB 3.0 當中。我們可以想像,上述的任何一種出版品,都有其專業領域所需的經驗及知識,把這麼多的專業領域的需求,全部包在一起,這是何等龐大的一項規範啊~

而在 EPUB 3.0 制定的過程當中,有超過三十項的需求被提出來討論,最後決定是否納入的主要考量點,幾乎都在於閱讀系統實做的可行性。光是專門處理有聲書的閱讀系統,很可能就得花費相當的時間才能被開發出來,然後還要經過市場與消費者的洗禮,不斷的改善以符合使用著真正的要求。更何況整個 EPUB 3.0 跨了那麼多的領域,要做出一個通解,其困難度可想而知。

以我個人開發程式的經驗,這樣的閱讀系統,假如存在一個中性的核心架構,那麼各個領域相關的功能,倒是可以透過元件的方式開發,然後根據消費者需求來決定,應該選購哪些元件,以達成閱讀某個專門領域電子書的最小組合。這並不是什麼創新的想法,這樣的架構隨便就可以舉出好幾個,例如使用 Rule Engine 、 SOA 、 Rendering Engine 等方式。但是無論使用哪種架構,都需要經過良好的設計,簡單來說,架構本身使用的技術不是問題,重點在於這樣的架構是否是一個 Neutral Architecture ,如果架構本身有所偏倚,那麼元件的發展將會受到很嚴重的限制,尤其是越後面開發的元件,所需要接受的挑戰就會越嚴苛。

愛睡了,先寫到這裡 

2011年10月13日 星期四

EPUB 3.0 隨筆

今年由於工作的關係,由北到南演講了十多場 EPUB 3.0 規範說明會,加上 IDPF 也正式於 10//12 公告了 EPUB 3.0 標準,這天正巧是我的生日,這些因緣際會,促使我想要把自己知道的東西,花點時間整理在網頁上,希望為自己的人生留下一些腳印。

接觸 EPUB 是從去年五月開始,由於工作內容的關係,我在去年離開了我生命中第一份工作。這份工作做了十年,離開自然有點捨不得,不過有太多因素讓我不得不轉換跑道,現在回頭看,發現當時作這個衝動的決定,竟然鬼使神差的是個正確的抉擇。

新的工作讓我接觸到 IDPF 這個組織,加上 iPad 的正式推出,採用了過去默默無聞的 EPUB 格式,作為其 iBook 的電子書格式,這才使得 EPUB 一夕成名。就在我新工作到職後一個月, EPUB 3.0 WG 正式啟動運作,我也開始了每週一次的清晨五點鐘電話會議。

整個標準的制訂過程,我等於是同步參與、全程參與,許多規範為什麼會這樣制定,我算是擁有第一手情報的人員之一。當然,這不是什麼了不起的事情,但是相對於之後接觸規範的人,我在 Domain Know How 的部份稍微勝出了些。這些過程中,有許多的趣事,如果埋沒了,其實很可惜,所以我決定,透過回憶的方式,或許用專題、倒敘、或者引述的方式,在後續的 EPUB 相關文章中,逐步的描述出整個制定過程所發生的特殊事件。

在 EPUB 3.0 的規範本身,雖然經過這麼多場的說明會以及演講,我仍然有著層出不窮的新體會,我是個容易緊張的人,每次上台前都會失眠好幾天,反反覆覆的修改投影片,每天喃喃自語神經兮兮的,希望將自己知道的有趣的事情,透過演講過程分享給所有的聽眾。但是往往發現,準備了很久的內容,可能因為緊張以及時間的關係,所以沒有分享出去。我覺得這是很可惜的,這也促成了我今天希望透過網誌的方式,把這些準備了好久好久的內容,記錄下來。

我知道這個工程很浩大,也不容易。我有工作,也有家庭,而且寫作對我來說,是非常需要有 fu 的一件事,當靈感出現時,我未必恰好有空寫下來,所以一切還是得隨緣,隨緣或許才能長久。

總之,今天先跨出第一步,趁著自己還有熱忱的時候,先衝個幾篇再說。

2011年9月18日 星期日

書籍清單

資訊相關書籍

已經看完
  • Effective C - Meyers
  • Effective C++ - Meyers
  • More Effective C++ - Meyers
  • The C++ Programming Language - Stroustrup
  • Extreme Programming Explained: Embrace Change - Kent Beck <極限編程>
  • Refactoring: Improving the Design of Existing Code - Kent Beck <重構>
  • The Mythical Man Month: Essays on Software Engineering <人月神話>
  • Design Patterns: Elements of Reusable Object-Oriented Software - Gang of Four <設計模式>
  • Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman - Dave & Ade <學徒模式>
  • Enterprise JavaBeans 3.0 - Richard Monson-Haefel
  • UML Distilled 3th Edition - Fowler
還沒看完
  • Effective STL - Meyers
  • Refactoring to Patterns - Kerievsky
  • Advanced Qt Programming: Creating Great Software with C++ and Qt 4 (Hardcover) - Mark Summerfield
  • Analysis Patterns - Fowler
打算要看
  • Code Complete - Steve McConnell <軟體建構之道>
  • JQuery Cookbook - Cody Lindley


中醫相關書籍

已經看完
  • 圓運動的古中醫學(上) - 彭子益
  • 傷寒論新義 - 余無言
  • 傷寒發微 - 曹穎甫
  • 金匱發微 - 曹穎甫
  • 胡希恕越辨越明釋傷寒 - 胡希恕
  • 金匱要略新義淺注 - 陳修園
  • 經方實驗錄 - 曹穎甫
  • 自己開藥方(上)(下) - 張步桃
  • 人體陽氣與疾病 - 李可
  • 胡希恕讀傷寒雜病論 - 胡希恕
還沒看完
  • 圓運動的古中醫學(下) - 彭子益
  • 鄭欽安醫學三書 - 鄭欽安
  • 血證論 - 唐容川
  • 李可老中醫急難重症疑難病經驗專輯 - 李可
  • 傷寒卒病論台灣本 - 陳淼和
打算要看
  • 醫林改錯 - 王清任

2011年9月5日 星期一

修改 Sigil 0.3.4 全紀錄(四)

自從換了 Mac OSX 10.7 Lion 以後,就沒辦法 compile 過 Sigil,苦惱了很久。

終於今天發現問題所在了,原來 CMakeLists.txt 內定 SDK 目錄為 MacOSX10.5.sdk ,但是在 Lion 裡面已經移除這個目錄了,所以只要把 CMakeLists.txt 的目錄改為 MacOSX10.6.sdk 或者 MacOSX10.7.sdk 就可以了

2011年8月26日 星期五

修改 Sigil 0.3.4 全紀錄(三)

首先, Sigil 作者已經找到接手維護的新任作者了,當然不是區區在下,是個 open source 界挺出名的人。

但是不管有沒有接手 Sigil ,該做的還是要做。翩翩工作很多也很雜,真正能寫程式的時間,一個月不到四天,所以修改的速度一整個的慢,到今天大概完成的進度如下:

  1. 可以編輯 EPUB 3.0 格式電子書
  2. 製作中文語系檔案
基本上,依照工作任務來看這件事情,我想差不多就到此為止了。雖然與我對程式的要求還有一段距離,不過畢竟這是別人開發的程式,我接手改,很難在一個月四天修改之中整個翻掉。

赴潮州就醫記(十二)

2011/08/25
科中如下:
芍藥甘草湯 2g, 茯菟丹 1g, 五爪金英 0.5g, 龍膽草 0.5g, 澤瀉 1g, 黃柏 1g, 昆布 1g, 海藻 1g, 砂仁 1g, 肝炎草 1g, 血琥碧粉 1g, 珠貝 1g

這次好忙喔,超過一個月許久才有空去潮州。最近組覺得晚上睡得很不熟,白天則覺得很沒有精神。好不容易修了兩天假期,陪家人玩了趟太平山,人不但沒有舒服些,反而開始口苦、胃漲、嘔吐感頻仍、眼睛酸澀、眼屎、腹痛腹瀉,真是亂七八糟的。剛好週四早上要開會,就趁著開會早起,順便跑一趟潮州了。

鄭醫師一把脈就說,身體又開始產生黏液與痰了。這次開得藥就是解毒化瘀去痰的,吃了會比較愛睡。愛睡好阿~我只怕睡不熟而已。這次還是六根伏針,兩根送給胃,其他四根照舊。

不知道哪一天,我才能完全康復呢?

2011年7月12日 星期二

赴潮州就醫記(十一)

7/7 科學中藥:
黨參 x 1g、茯苓 x 1g、白朮 x 1g、炙甘草 x 0.5g、白皮耆 x 1.5g、當歸 x 1g、白芍 x 1g、酸棗仁 x 1g、枸杞子 x 1g、虎乳靈芝 x 0.5g、血琥碧粉 x 0.5g、黃水茄 x 1g

這次倒是沒有任何的症狀,但是一把脈嚇一跳,鄭醫師說六脈都是虛脈,偷偷看醫師畫的脈圖,真的是沒有一個例外的。鄭醫師說得趕快補一補。另外,例行性的伏針倒是出我意外,鄭醫師在我的左右下背部下針,真是痛到一個不行。鄭醫師說這是胃有問題造成的。

回到家裏,拔出伏針,結果左邊下背部的血流個不停,好在曾經有過經驗,拿張衛生紙壓住,幾分鐘就止住了。記得上次是心臟有問題,膏肓穴的伏針也是一拔出來就血流不止,這是巧合嗎?還是鄭醫師真的這麼神!~

2011年7月4日 星期一

結合 Mercurial & Dropbox

最近在修改 Sigil-0.3.4 ,需要一個版本控管的軟體,既然作者使用 Mercurial ,我自然也是從善如流。但是問題來了,當我在其他電腦上面想要修改的時候,我不認為應該使用 Google Code 上面的那一份 clone ,翻了翻網頁,找到了方法,步驟如下:
  1. 解開 Sigil-0.3.4 ,假設放在 ~/data/Sigil-0.3.4
  2. 進入此目錄,執行:"hg init","hg addremove","hg commit -m "說明文字"
  3. 建立新的子目錄 ~/Dropbox/Sigil-0.3.4-HG
  4. 執行 "hg clone ~/data/Sigil-0.3.4 ~/Dropbox/Sigil-0.3.4-HG   --noupdate" ,這會在 Dropbox 建一個『看起來』是空的目錄(因為檔案放在隱藏目錄當中,會不斷看到同步訊息)
  5. vim ~/data/Sigil-0.3.4/.hg/hgrc,加上 [paths]\n default = /home//Dropbox/
  6. 以後就把 Dropbox 這份當作同步的核心版本,每次使用前就先 "hg pull"取得最新資料,改完以後就 "hg push"把最新資料放回去

2011年6月27日 星期一

升級 10.10 Maverick 之後,中文輸入法消失了

上週五臨時想不開,就把 ubuntu 給升級,結果今天到公司,發現中文輸入法不見了,花了很多時間都無法解決,只好求助谷歌大神了,運氣很不錯,找到一篇可以解決

http://yblog.org/archive/index.php/11537

2011年6月22日 星期三

修改 Sigil 0.3.4 全紀錄(二)

到昨天終於將儲存為 epub3 的部份完成了,總計動到八到九個 class,除了新增 ExportEPUB2、ExportEPUB3、NavigationWriter、NAVWriter這四個 class外,也動到原本好幾個class

現在,可以開啟一個 epub2 的檔案,然後什麼都不做,直接選擇『Save As』,之後選擇 epub3 格式,然後就可以產生新的檔案了

不過還不能公開,因為目前還無法讀取 epub3 的檔案,如果公開一定會被取笑,能存不能開,天大的笑話阿~

下一步當然就是開啟 epub3 的功能了,加油~

當然,這些日子,我也很認真的考慮接手 Sigil 這支 OSS,目前卓青跟張敏都認為應該要去報名接手,反正最後也不一定會是我中選。雖然如此,我還是有點猶豫~

2011年6月17日 星期五

修改 Sigil 0.3.4 全紀錄(一)

最近開始動手改 Sigil ,首先要讓 Sigil 可以產生 epub 3.0 的格式,有以下幾個地方:

  1. 所有 xhtml 檔頭
  2. 產生 nav.xhtml
  3. content.opf 內容
由於希望保留 epub 2.0 的格式,以提供 convert 的功能,所以大量的使用重構手法,將原本的物件改為抽象類別,然後實做去繼承並特殊化為兩種版本

Sigil 作者有個壞習慣,他大量的使用了全域變數,而且重複宣告多次。這對我來說是不能容許的,所以花了許多時間,將全域變數使用 static member function 來處理,處理之後透過 compile 抓出引用的地方,真是不少。我想這是我目前看到唯一不認同的地方

感想:看(改)別人的程式真的是比自己寫來的辛苦阿~

2011年6月9日 星期四

赴潮州就醫記(十)

6/9
通竅活血湯 x2g, 金錢草 x1.5g, 海金沙 x1g, 內金 x0.3g, 虎杖 x1g, 車前子 x1g, 澤瀉 x1g, 生地黃 x1.5g, 大黃 x0.3g, 黃柏 x 0.4g, 木通 x 0.3g, 白茅根 x 1.5g, 茯苓 x 1g, 蘇碧膽肉 x0.5g, 丁豎杇 x1g

這個禮拜問題就多了,首先呢,因為某種緣故所以我發了很大一頓脾氣,但是必須強壓下來,所以我覺得血壓一整個的高了起來,甚至照鏡子覺得左側嘴角有點歪斜,超怕中風一把的。其次,我覺得這個月尿尿非常痛,尿多一點還好,只要尿量不太足夠,那就有得痛的了,尿完大概只能撐住閉氣等痛過去,那種痛楚有時候是刺痛,有時候是伴隨著灼熱;第三個症狀是我看電視看到一半忽然腰痛,痛到無法彎腰的程度。

鄭醫師判斷尿尿的問題以及腰痛都是屬於尿道排沙以及輕微腎結石,而血壓高的部份他也覺得是生氣造成的,而且他注意到我手指有微微的顫抖現象

真的,千萬不要為了工作上得事情發脾氣,爛人太多了,不值得阿

赴潮州求醫記(九)

5/19
苓桂朮甘湯 x 1.5g, 半夏 x 1.5g, 龍眼肉 x 2g, 酸棗仁 x 2g, 龍骨(五彩) x 1g, 牡蠣 x1g, 淫羊藿 x1g, 宜梧根 x1g, 一支香 x1g, 足水沈香x 0.5g

感冒在 4/28 日已經接近尾聲了,到了 5/19 日已經完全痊癒了。 5/19 日鄭醫師主要判斷腦缺氧,我覺得這是客氣的說法吧,正確應該是腎虛,說實話,我發現自己白頭髮多了好幾根,然後記憶力變得不太好,總之,感冒確定完全痊癒,接下來應該屬於調養階段吧,這或許代表我的身體開始可以好好的調整了。

2011年4月30日 星期六

赴潮州求醫記(八)

4月28日,科中如下:
貝母 1.5g、茯苓 1.5g、桂枝 1g、乾薑 1g、烏梅 1g、桃仁 0.5g、紅花 0.5g、生地黃 1g、五味子 1g、熟地黃 1g、含羞草 1g、血琥碧粉 1g

感冒還是沒有完完全全的痊癒,不過喉嚨不痛了,剩下咳嗽跟痰。而且一咳嗽,就覺得嘴巴都是痰的味道,實在很噁心。

這禮拜運氣很不好,跟張老大原本開開心心的,三點半想說輕輕鬆鬆排第一順位,沒想到才到巷子口,哇靠~已經有四個人排隊。張老大一問之下,人家是兩點半就到了,沒什麼好怨歎的,排吧~張老大偷偷地說:『今天可能會搞到很晚了,看起來都是很愛聊天的~』

還有更霹靂的,掛號的時候,明明只有四個,我們卻是六號跟七號,那五號呢?原來他們有一位是幫婆婆來拿藥的。吼~六號跟七號,看完不知道已經幾點了。然後很神奇的,張老大的話應驗了,果然一個比一個還愛聊天,然後問的問題竟然都一樣,不知為什麼那麼巧,他們一夥人都吃旋覆花,明明早就知道如果吃了會昏眩,可以用生薑來解,可是每個人進去還是都從頭問一次,鄭醫師也很有耐心的重頭講一次。但是我實在等到很抓狂,時間一分一秒的過去,眼看著火車時間都快到了。

等看完我們兩個,加上一個人各挨了四根針,都快要六點了。問一下藥處理好了嗎?宇宙無敵超級大霹靂的事情發生了,原來前面五個人,每個都拿一個月的份量,哇靠~他們等於拿了20人份的藥阿~看看時間實在來不及了,只好請護士小姐用寄的,多付個200元運費趕快搭車去。

不過吃了兩三天藥,我真的完全好了,這次的藥好酸喔~應該是烏梅的關係,酸死人囉~

赴潮州求醫記(七)

4月11日,科中如下:
香附子 1.5g、紫蘇葉 11.5g、陳皮 1g、甘草 1g、生薑 1g、蔥白 1g、七葉蓮 1g、魚腥草 1g、貝母 1g、冇骨消 1g、鑽地風 0.5g、蘇碧膽肉 0.5g

這次感冒真是有夠久的,每次都吃藥兩三天痊癒了,然後好不到一個禮拜又復發了,最慘的是狀況還都不一樣,每次都不一樣,真的很煩,難道自己身體真的那麼差嗎?

鄭醫師認為,這是類似退伍軍人症的細菌群感染造成的,想想也很有可能,我們公司全部靠空調,前陣子一層樓將近一半的人都感冒了,要消化這些病毒跟細菌,也許需要不少時間,而虛弱如我,就是病毒細菌的再造恩人了。其實我真的覺得身體有比較好,只是症狀不消除,沒有說服力,但是感冒症狀變得輕微的多,中間也有將近一個禮拜是健康的。

不過去屏東看病有我們張老大陪著去,感覺跟放假也差不多,張老大開刀以後,忽然不怕伏針了,照他的說法,肚子一條刀疤那麼大條,誰還會怕那小小的針頭。

期待康復阿~

2011年4月27日 星期三

ubuntu 上安裝 nVidia 顯示卡驅動程式

首先進入叫出系統->管理->硬體驅動程式,將現有的驅動程式解除,重開機

選擇『恢復模式』,之後選擇『Resume』,就會進入文字模式

執行之前下載的驅動程式 NVIDIAxxxx.run

就降子

2011年4月26日 星期二

刪除多餘的 Kernel Module

ls /boot 可以看到所有的模組編號,執行 sudo apt-get purge   ^linux-.*-x.x.x.x-xx


ex:
sudo apt-get purge ^linux-.*-2.6.28-11

2011年4月19日 星期二

把新的磁碟區掛載到 Ubuntu

先檢查有哪些磁碟區被系統辨識出來
$ sudo fdisk -l
可能會出現以下的資料:
Disk /dev/hda: 40.0 GB, 40020664320 bytes
255 heads, 63 sectors/track, 4865 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hda1 * 1 4678 37576003+ 83 Linux
/dev/hda2 4679 4865 1502077+ 5 Extended
/dev/hda5 4679 4865 1502046 82 Linux swap / Solaris
接下來,建立一個掛載點的目錄,並且開放所有權限
$ sudo mkdir /home/ext
$ chmod 777 /home/ext
再將所要掛載的硬碟掛上去
$ mount /dev/hdd1 /home/ext 
編輯檔案,讓系統自動於開機時掛上
$ gedit /etc/fstab
加上下面這一行
/dev/hdd1 /home/ext ext3 defaults 0 0
不用重開機,只要執行下面指令即可
$ sudo mount -a

讓 Win-VM 可以使用 Ubuntu-Host 的 USB 裝置

先在 VirtualBox 中勾選所要使用的裝置,之後打開 『系統』->『管理』->『使用者及群組』,再選擇『管理群組』,選擇 vboxuser 並且將使用者加入,之後就可以在 VM 裡面使用 USB 了

2011年4月18日 星期一

在 Ubuntu 10.04 LTS 上面安裝 Qt 4.7.2

為了 compile Sigil ,需要使用 Qt-4.7以上的版本,但是 Lucid 不支援。所以必須手動來編譯。首先下載 Qt-4.7.2,步驟如下:


wget http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.2.tar.gz
tar -xvzpf qt-everywhere-opensource-src-4.7.2.tar.gz
cd qt-everywhere-opensource-src-4.7.2


接下來,開始進行編譯的動作


  1. 先裝 libX11-dev、libXext-dev、libXtst-dev、libqglviewer-dev、libmysql++-dev、g++ 開發工具包(sudo apt-get install ....)
  2. ./configure -qt-zlib -qt-libmng -qt-libtiff -qt-sql-mysql -qt-libpng -qt-libjpeg -qt-gif -opengl -prefix /opt/qt-4.7.2
  3. make
  4. sudo make install


另外,從 Sigil 網站的訊息,如果要 compile Sigil,建議使用以下參數

./configure -qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg

為了減少 compile Qt 的時間,可以在 configure 加上 -nomake 的參數,以下是建議的參數

-nomake examples -nomake demos -nomake docs -nomake translations


最後記得,/etc/environment 這個檔案的 PATH 要加上 Qt4.7.2的路徑,而且要放在前面,才不會被舊版的蓋掉。重新登入或者執行 .   /etc/environment 就可以囉

2011年3月25日 星期五

不爽

你曾經寫過幾支程式放在 sourceforge 上供人下載?
你寫過 Eclipse 的 Plugin 而且有超過 8000 次下載數嗎?
你擁有不輸給文學院的英文水準嗎?
你能在社群擁有很高知名度,成為顧問等級負責解答問題嗎?
你曾經參與過超過百萬行程式碼的大型系統開發工程嗎?


如果以上的答案都是肯定的,你覺得要多少月薪、多少年薪才能請的到這個人呢?

告訴各位,有家號稱資訊龍頭的單位,開價 $42000 NTD 月薪要聘請這樣的一個人,理由是因為他不是碩士畢業。

所以台灣資訊業為什麼這麼弱,大家應該得到答案了吧。

是哪家公司呢?當然是我現在的這家囉~

ps. 如果你對這樣的人(天)才有興趣,只要願意給1500K年薪,就請跟我聯絡吧~

2011年3月21日 星期一

WebM & WebGL

最近接觸到一些訊息,都是跟Html5有關的,也都很有趣,先看看這兩個東西吧


WebM
這是一個BSD License的技術,使用VP8作視訊加解碼,Vorbis(Ogg)作為音訊加解碼,容器則使用Matroska。老實說,除了Ogg 以前有玩過一陣子,其他的我都沒聽過。不過這個技術標準是Google帶頭推的,所以跟Apple應該有得拼才是。又很重要的一點,它是不用繳交版稅的(加解碼的部份)


WebGL
Wiki寫到:『WebGL是一項在網頁瀏覽器呈現3D畫面的技術,有別於過往需加裝瀏覽器外掛程式,透過WebGL的技術,只需要編寫網頁代碼即可實現3D圖像的展示。WebGL的規格尚在發展中,由非營利Khronos Group管理。』
WebGL基於OpenGL ES 2.0,提供了3D影像的程式介面。它使用HTML5 Canvas並允許利用文件物件模型介面。可利用部分Javascript實作自動內部記憶體管理。』


由於這兩個技術都跟EPUB3.0有關,所以還得繼續追蹤了解一下

2011年3月15日 星期二

赴潮州求醫記(六)

科中藥方:小青龍湯 1g、桂枝 1g、藿香 1g、石膏 1g、蒼耳子 1g、板藍根 2g、七葉蓮 2g、玄參 1g、冇骨消 1g、宜梧根 1g、珠貝 1g

我從2月過完年以後一個禮拜就感冒了,所以之前還有臨時跑去一次,不過那次因為之前拿三週的藥,所以必須自費,而且我拿不到藥方。上次鄭醫生說狀況是『風寒風熱都有,而且都跑到腎去了』,我其實很想知道這種狀況吃什麼藥,很可惜沒有如願

這次則是『風寒入裡化熱,寒熱夾雜』,我看藥方是以小青龍湯加石膏為主,加上有鼻塞、流鼻涕嚴重的現象,所以醫生也加了蒼耳子。鄭醫師說,臨床上看到的感冒,多半都是寒熱夾雜,鮮少有書上寫的那種很單純的太陽中風、太陽傷寒之類的單一症狀

說真的,我自己已經吃小青龍湯三天了(拿自己作實驗),吃完有感覺好些,可是睡醒往往又感覺變差,這次鄭醫師的藥方也是以小青龍湯為基本,可是鄭醫師的藥方,吃了以後,整個症狀都明顯好轉,看來中藥的確不能以方為主,還是要一味一味的加上去

看到小青龍湯裡面,加上板藍根、七葉蓮之類的『寒涼藥』,相信一堆所謂『經方派』的網路大師大概要罵翻天了,哈哈哈~

當然,我還是要求醫生幫我扎個幾針,呵呵~

2011年2月12日 星期六

赴潮州求醫記(五)

科中:芍藥甘草湯 1, 赤芍 0.5, 沙參 1, 生地黃 1, 麥門冬 1, 枸杞子 1, 川楝子 0.5, 烏梅 0.5, 白殭蠶 0.5, 地龍 0.5, 酸棗仁 0.5, 虎杖 0.5, 桃仁 0.5, 連翹 1, 觀音串 1, 田基黃 1


僅剩餘一些痰還沒清除,醫生說『清肝化痰』就沒問題了。膏肓穴右側變得容易感覺疼痛,左側肩膀硬塊尚未完全消失,依然使用四根伏針

2011年1月22日 星期六

赴潮州求醫記(四)

2011/01/20

科中藥方大改:芍藥甘草湯 2g、紅花 1g、鬱金 1g、桃仁 1g、蘇木 1g、延胡索 1g、乳香 1g、天南星 1g、貝母(浙) 1g、鐵馬鞭 1g、土煙頭 1g、鐵包金 0.5g、足水沈香 0.5g

本次醫師告知有轉脈跡象,同時也發現心臟與肺臟有嚴重淤積(或積血,我忘了),因此使用去瘀血藥,並且提醒服藥後會愛睡,或發癢起疹子現象,皆屬正常。經醫師提醒,忽然想起尾椎附近長了一片疹子,會發癢,醫師告知此乃排毒現象,不需擔心

本次伏針4根,左右肩膀與膏肓部位各1針,肩膀可感覺左右各一處緊繃且突起部位,左邊小於右邊,醫師笑稱原本5克拉被打成碎鑽。膏肓穴依然疼痛,且起針發現右膏肓之伏針附著大量瘀血,其他3處伏針皆無血漬

後記:於就診後第4天起,持續心悸,感覺似乎回到初診前,狀況維持約4天,之後又一切如常,

2011年1月7日 星期五

赴潮州求醫記(三)

2011/01/6


科中藥方同上次,中藥茶包大改。感覺上,第一次是七葉膽為主、第二次酸味很重,可能是烏梅為主、這次則是桂枝或者肉桂的味道。


這次用了四根伏針,右肩、頸椎各一根、兩邊膏肓穴各一針,針完之後,脖子感覺完全鬆開,左右上下可轉動角度甚至超越原本正常狀態,目前右側脖子與肩膀交接之處的疼痛已經非常輕微。

後記:於下次就診前四天,左側落枕無法轉動,搜尋肩膀無明顯疼痛部位,按摩背上膏肓穴部位,緊繃且疼痛,隨按摩逐日疼痛漸減,落枕狀況三日內逐日顯著減輕