2009年12月28日 星期一

webkit/gtk+ thread system not initiated bug

討厭的是,Webkit/Gtk+用Glib這裡的bug沒有fix。
唯一的workaround是在每一個Webkit/Gtk+程式都加上這一行:
g_thread_init (NULL);
強迫將thread啟動,如此可以避免前述的bug.
找到這個workaround也花了很多時間...

2009年12月24日 星期四

webkit & gnome

討厭的是,webkit 1.15.4版本竟然需要 gnome 2.28以上的版本,該版本是2009年12月才release,我用的debian stable版當然還沒用這一版本的gnome,要花一些時間弄清楚如何安裝gnome 2.28。
這一部份一定要記住,因為未來為了mobile device去port webkit時,也會被這樣的問題困住...

layout engine

評估可以用什麼layout engine.因為想在未來使用clutter,來處理animation,可以有很fancy的使用者界面。加上clutter是唯一系統化的處理在Linux上的'touch & signature'的工具,應該是未來mobile device使用者介面有機會成為king的工具。所以一開始就鎖定clutter+openGL+GTK+。
最初考慮用 gtkhtml來layout xhtml的內容,但survey了一陣子才發現gtkhtml已經phase out了,被webkit所取代,原本不想用webkit,主要是因為webkit最早是由apple提供,是用object-c所撰寫,但在評估了其他的layout engine後,看來沒什麼選擇。
開始讀object-c的manual,開始嘗試build webkit from scratch。再慢慢了解layout engine的細節...
webkit是android採用的mobile browser,也是iPhone採用的mobile browser,應該要花一點時間弄清楚,也會是在為自己的技術能量做累積。

2009年12月9日 星期三

libxml中的relaxNG validation

正嘗試了解libxml中處理relaxNG的validaion部份。若這個部份可以好好利用,應該可以達成之前所想像的,基於relaxNG的文法,generate出一個parser供程式用來parse相對應的xml檔。在電子書的例子中,就是給幾個epub的relaxNG檔,然後能產生幾個相對應的parser,被reader用來讀取/validate電子書籍的正確性。
libxml中的relaxNG validation是透過API: xmlTextReaderRelaxNGValidate(reader, rng)來呼叫。reader則是透過 API:xmlReaderForFile(xmlfilename, encoding ,parse options)來建立,reader是一個xmlTextReader的data structure,defined in xmlreader.c中。
看來是先將rng轉成一個內部的struct,再以這個struct來parse xml檔。還要再看看。