12.04 LTS 的釋出,也代表我這份工作兩年了
明天有空要來好好的玩一玩,聽說有不少抱怨,相信也有很多改善
總網頁瀏覽量
咕狗大神
2012年4月26日 星期四
2012年4月19日 星期四
qt 4.8.1 播放 mp4
以下是我一個很佩服的高手 leo 的步驟, po 出來跟大家分享:
1. Download "qt-everywhere-opensource-src- 4.8.1.zip" from official website.
2. Unzip it and then enter the installation location, e.g. C:\Qt\4.8.1
3. Type "configure -opensource -debug-and-release", "nmake"
PS. What if there's a error happened in this file, "DefaultLocalizationStrategy. cpp",
just go to the error line (line 327) and fix it by modifying the capital character error from " to \".
(This error will just happen in a XP system.)
4. Add this value inside the user variable of environment variables, QTDIR, which its value is "C:\Qt\4.8.1",
and then append this value into system variable, Path, value is "C:\Qt\4.8.1\bin".
5. Download "qt-mobility-opensource-src-1. 2.0.zip" from official website.
6. Unzip it and then enter the installation location, e.g. C:\QtMobility\qt-mobility- opensource-src-1.2.0
7. Type "configure -prefix C:\QtMobility -modules sensors" and then "nmake", "nmake install"
8. Type "configure -prefix C:\QtMobility -modules multimedia" and then "nmake", "nmake install"
9. Copy the files "QtMultimediaKit1.dll" and "QtSensors1.dll" just were made by step 7 & 8,
into this location "C:\Qt\4.8.1\qt-everywhere- opensource-src-4.8.1\demos\ browser\release".
10. run browser.exe and throw a html file containing <video> tag of html5 to it. It should play it successfully,
by the way, you should be able to see a play/pause button, the seeking bar and audio volume control button, that is
because your qtwebkit can recognize the video tag finanlly.
11. What if it can't be played, maybe your pc hasn't been installed the correct codec well,
check your pc whether your pc has been installed the correct codec or not, maybe you can
go the website "http://www.free-codecs.com/" to download a suitable codec for directshow to play.
1. Download "qt-everywhere-opensource-src-
2. Unzip it and then enter the installation location, e.g. C:\Qt\4.8.1
3. Type "configure -opensource -debug-and-release", "nmake"
PS. What if there's a error happened in this file, "DefaultLocalizationStrategy.
just go to the error line (line 327) and fix it by modifying the capital character error from " to \".
(This error will just happen in a XP system.)
4. Add this value inside the user variable of environment variables, QTDIR, which its value is "C:\Qt\4.8.1",
and then append this value into system variable, Path, value is "C:\Qt\4.8.1\bin".
5. Download "qt-mobility-opensource-src-1.
6. Unzip it and then enter the installation location, e.g. C:\QtMobility\qt-mobility-
7. Type "configure -prefix C:\QtMobility -modules sensors" and then "nmake", "nmake install"
8. Type "configure -prefix C:\QtMobility -modules multimedia" and then "nmake", "nmake install"
9. Copy the files "QtMultimediaKit1.dll" and "QtSensors1.dll" just were made by step 7 & 8,
into this location "C:\Qt\4.8.1\qt-everywhere-
10. run browser.exe and throw a html file containing <video> tag of html5 to it. It should play it successfully,
by the way, you should be able to see a play/pause button, the seeking bar and audio volume control button, that is
because your qtwebkit can recognize the video tag finanlly.
11. What if it can't be played, maybe your pc hasn't been installed the correct codec well,
check your pc whether your pc has been installed the correct codec or not, maybe you can
go the website "http://www.free-codecs.com/" to download a suitable codec for directshow to play.
2012年4月3日 星期二
2012年3月30日 星期五
OSX 4.3.1 + cmake 2.8.7 + Lion
xcode-select -switch /Applications/Xcode.app/Contents/Developer
cmake -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++
cmake -DCMAKE_OSX_SYSROOT:PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk/
CMAKE_OSX_ARCHITECTURES = x86_64
ps. Lion 只有支援 64 位元程式碼,所以如果加上 i386 就會錯誤,謹記謹記
cmake -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++
cmake -DCMAKE_OSX_SYSROOT:PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk/
CMAKE_OSX_ARCHITECTURES = x86_64
ps. Lion 只有支援 64 位元程式碼,所以如果加上 i386 就會錯誤,謹記謹記
2012年3月9日 星期五
Qt4.8 少了 QtMultimediaKit
2012.03.15
經過測試,答案是:不行
最近有人問我關於 Qt 4.8 當中的 QtWebKit 2.2 無法支援 <audio> 以及 <video> 這兩個標籤的解法。說真的,我自己覺得很丟臉,在這份工作當中,我慢慢地失去了身為技術人該有的尊嚴,逐漸被那些虛無飄渺,巫山小路用的亮點跟癌遞兒所淹沒。這個問題早在去年底我就碰觸了,但是當時無解,我也就沒有繼續追下去。直到這次被問起,才喚起我一絲絲的愧疚與回憶。
當然,我唯一能做的就是找 Google ,很幸運的,這個問題已經有人找出答案了,就是 Qt4.8 捨棄(Deprecate)了 Phonon 模組,改用 QtMultimediaKit 這個模組,來處理 QtWebkit 2.2 所需要的影音處理。但是詭異的是,Qt 4.8 當中竟然沒有包含這個模組,這真是見鬼了,那這個模組跑到哪裡去了呢?原來這個模組放在 Qt-Mobility 裡面,可能因為跟 Qt 4.8 尚未整合完畢,所以還沒有來得及放進去。
所以看起來大家的想法也都一樣,先從 Qt-Mobility 裏頭把 QtMultimediaKit 給 compile 出來。之後重新 compile Qt 4.8 但是要記得使用 -no-webkit 這個參數。最後,把 QtWebKit 2.2 原始碼抓下來,用我們 compile 出來的客製版 Qt4.8 來 compile QtWebkit 2.2,這樣產生出來的 qtwebkit4.dll(so) 就應該重新支援 <audio> 以及 <video> 了。
有空才來 try,不過以目前本組的慘狀,我想大概時間還是得被組長揮霍在巫山的小路上吧。
我真的很想仰天大罵:『eo4』
經過測試,答案是:不行
最近有人問我關於 Qt 4.8 當中的 QtWebKit 2.2 無法支援 <audio> 以及 <video> 這兩個標籤的解法。說真的,我自己覺得很丟臉,在這份工作當中,我慢慢地失去了身為技術人該有的尊嚴,逐漸被那些虛無飄渺,巫山小路用的亮點跟癌遞兒所淹沒。這個問題早在去年底我就碰觸了,但是當時無解,我也就沒有繼續追下去。直到這次被問起,才喚起我一絲絲的愧疚與回憶。
當然,我唯一能做的就是找 Google ,很幸運的,這個問題已經有人找出答案了,就是 Qt4.8 捨棄(Deprecate)了 Phonon 模組,改用 QtMultimediaKit 這個模組,來處理 QtWebkit 2.2 所需要的影音處理。但是詭異的是,Qt 4.8 當中竟然沒有包含這個模組,這真是見鬼了,那這個模組跑到哪裡去了呢?原來這個模組放在 Qt-Mobility 裡面,可能因為跟 Qt 4.8 尚未整合完畢,所以還沒有來得及放進去。
所以看起來大家的想法也都一樣,先從 Qt-Mobility 裏頭把 QtMultimediaKit 給 compile 出來。之後重新 compile Qt 4.8 但是要記得使用 -no-webkit 這個參數。最後,把 QtWebKit 2.2 原始碼抓下來,用我們 compile 出來的客製版 Qt4.8 來 compile QtWebkit 2.2,這樣產生出來的 qtwebkit4.dll(so) 就應該重新支援 <audio> 以及 <video> 了。
有空才來 try,不過以目前本組的慘狀,我想大概時間還是得被組長揮霍在巫山的小路上吧。
我真的很想仰天大罵:『eo4』
2012年1月24日 星期二
2012年1月20日 星期五
2012年1月17日 星期二
編譯支援 audio & video 的 QtWebKit
需要幾個 lib =>
=== libxml2 ===
> wget ftp://xmlsoft.org/libxml2/libxml2-sources-2.7.8.tar.gz
> tar -xvzf libxml2-sources-2.7.8.tar.gz
> cd libxml2-2.7.8
> ./configure --prefix=/home/work/dist --without-python
> make
> make install
=== zlib ===
> wget http://www.zlib.net/zlib-1.2.5.tar.gz
> tar -xvzf zlib-1.2.3.tar.gz
> cd zlib-1.2.3.tar.gz
> ./configure --prefix=/home/work/dist
> make
> make install
> tar -xvzf zlib-1.2.3.tar.gz
> cd zlib-1.2.3.tar.gz
> ./configure --prefix=/home/work/dist
> make
> make install
=== glib ===
- 下載(http://www.icewalkers.com/Linux/Software/515980/GLib2.html) glib2.0_2.30.1.tar.bz2
> apt-get install libffi-dev, gettext
> tar -xvjf glib2.0_2.30.1.tar.bz2
> cd glib2.0_2.30.1
>./configure --prefix=/home/work/dist CFLAGS="-I/home/work/dist/include -L/home/work/dist/lib" glib_cv_stack_grows=no glib_cv_uscore=no ac_cv_func_posix_getpwuid_r=yes ac_cv_func_posix_getgrgid_r=yes ac_cv_lib_rt_clock_gettime=no glib_cv_monotonic_clock=yes
>./configure --prefix=/home/work/dist CFLAGS="-I/home/work/dist/include -L/home/work/dist/lib" glib_cv_stack_grows=no glib_cv_uscore=no ac_cv_func_posix_getpwuid_r=yes ac_cv_func_posix_getgrgid_r=yes ac_cv_lib_rt_clock_gettime=no glib_cv_monotonic_clock=yes
> make
> make install
=== gstreamer ===
- 下載(http://gstreamer.freedesktop.org/src/gstreamer/)gstreamer-0.10.35.tar.gz
> export PKG_CONFIG_PATH=/home/work/dist/lib/pkgconfig
> ./configure --prefix=/home/work/dist CFLAGS=-I/home/work/dist/include --disable-registry --disable-gtk-doc ac_cv_func_register_printf_function=no --disable-tests --disable-valgrind --disable-debug --disable-gst-debug
> make && make install
== gst plugin base ===
- 下载(http://gstreamer.freedesktop.org/src/gst-plugins-base/)gst-plugins-base-0.10.35.tar.gz
> export PKG_CONFIG_PATH=/home/work/dist/lib/pkgconfig
> ./configure --prefix=/home/work/dist CFLAGS=-I/home/work/dist/include --disable-valgrind --disable-gnome_vfs --disable-alsa --disable-pango --disable-theora --disable-examples
> make && make install
=== qt ===
- 先裝 libX11-dev、libXext-dev、libXtst-dev、libqglviewer-dev、libmysql++-dev、g++ 等開發工具包(sudo apt-get install ....)
- 修改 configure,加上"PKG_CONFIG_PATH=/home/work/dist/lib/pkgconfig"
- 記得在 configure 的眾多參數當中,加上 -force-pkg-config
- 在 qt-XXX-4.8.0/src/3party/webkit/Source/WebKit.pro 加上 LIBS += -L/home/work/dist/lib
- 大概建議用這樣的參數
> export PKG_CONFIG_PATH=/home/work/dist/lib/pkgconfig
> sudo ./configure -qt-libmng -qt-zlib -qt-libtiff -qt-sql-mysql -qt-libpng -qt-libjpeg -no-qt3support -webkit -force-pkg-config -opengl -prefix /opt/qt-4.8.0 -nomake examples -nomake demos -nomake docs
> sudo ./configure -qt-libmng -qt-zlib -qt-libtiff -qt-sql-mysql -qt-libpng -qt-libjpeg -no-qt3support -webkit -force-pkg-config -opengl -prefix /opt/qt-4.8.0 -nomake examples -nomake demos -nomake docs
2011年11月29日 星期二
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 暫時不會做功能新增。
昨天實在是沒招了,狠下心來決定對 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,那麼我也會用這種一大包的方式,因為完全沒理由要把這包拆開。
也許有人會說,預留彈性不是很好嗎?說真的,寫了十幾年的程式,預留彈性往往等同於過度設計,幾乎不會用到那個彈性啦~
所以呢?未來有很長一段路要走,因為我必須把接近七八成的程式碼置換,同時必須調整整個架構,這真是龐大的工程。另外,這個編輯器有他的限制,所以不管怎麼努力,其實都會碰到頂,再也上不去。
但是這可是我自己選擇的,我只能堅持往前走囉~
第一個反應就是因為我拿掉稽核的程式碼,由於原作者把稽核的程式碼包裝得很緊密,所以不只是稽核,還會順便洗標籤、縮排等,這部份我目前幾乎沒辦法拆解,所以之前釋出版本時,就直接把整包給取消掉,現在出問題,應該就表示某些補標籤、補內容的部份也包在這包裡面,真是好大一包喔~
所以唯一的辦法,就是把切章節的部份,加回那一大包,當然這也表示,如果原本的內容使用了 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,當然最好的狀況是有人願意一起討論與開發,但這只能隨緣了。
說真的,釋出這個版本其實非常陽春,號稱支援 epub 3.0 也僅止於 OCF 3.0 以及部份的 Publications 3.0 ,所以我想應該會有一堆人咒罵吧~
比較有用的大概是繁體中文的語言包,這次不像上次硬改掉 source code,而是採用 i18n 的作法,算是比較像樣的部分。
以後就靠我自己了,我希望強迫自己,每個月可以多一點功能,或者改善一些 bug,當然最好的狀況是有人願意一起討論與開發,但這只能隨緣了。
2011年8月22日 星期一
2011年7月4日 星期一
結合 Mercurial & Dropbox
最近在修改 Sigil-0.3.4 ,需要一個版本控管的軟體,既然作者使用 Mercurial ,我自然也是從善如流。但是問題來了,當我在其他電腦上面想要修改的時候,我不認為應該使用 Google Code 上面的那一份 clone ,翻了翻網頁,找到了方法,步驟如下:
- 解開 Sigil-0.3.4 ,假設放在 ~/data/Sigil-0.3.4
- 進入此目錄,執行:"hg init","hg addremove","hg commit -m "說明文字"
- 建立新的子目錄 ~/Dropbox/Sigil-0.3.4-HG
- 執行 "hg clone ~/data/Sigil-0.3.4 ~/Dropbox/Sigil-0.3.4-HG --noupdate" ,這會在 Dropbox 建一個『看起來』是空的目錄(因為檔案放在隱藏目錄當中,會不斷看到同步訊息)
- vim ~/data/Sigil-0.3.4/.hg/hgrc,加上 [paths]\n default = /home/
/Dropbox/ - 以後就把 Dropbox 這份當作同步的核心版本,每次使用前就先 "hg pull"取得最新資料,改完以後就 "hg push"把最新資料放回去
2011年6月27日 星期一
升級 10.10 Maverick 之後,中文輸入法消失了
上週五臨時想不開,就把 ubuntu 給升級,結果今天到公司,發現中文輸入法不見了,花了很多時間都無法解決,只好求助谷歌大神了,運氣很不錯,找到一篇可以解決
http://yblog.org/archive/index.php/11537
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,目前卓青跟張敏都認為應該要去報名接手,反正最後也不一定會是我中選。雖然如此,我還是有點猶豫~
現在,可以開啟一個 epub2 的檔案,然後什麼都不做,直接選擇『Save As』,之後選擇 epub3 格式,然後就可以產生新的檔案了
不過還不能公開,因為目前還無法讀取 epub3 的檔案,如果公開一定會被取笑,能存不能開,天大的笑話阿~
下一步當然就是開啟 epub3 的功能了,加油~
當然,這些日子,我也很認真的考慮接手 Sigil 這支 OSS,目前卓青跟張敏都認為應該要去報名接手,反正最後也不一定會是我中選。雖然如此,我還是有點猶豫~
2011年6月17日 星期五
修改 Sigil 0.3.4 全紀錄(一)
最近開始動手改 Sigil ,首先要讓 Sigil 可以產生 epub 3.0 的格式,有以下幾個地方:
Sigil 作者有個壞習慣,他大量的使用了全域變數,而且重複宣告多次。這對我來說是不能容許的,所以花了許多時間,將全域變數使用 static member function 來處理,處理之後透過 compile 抓出引用的地方,真是不少。我想這是我目前看到唯一不認同的地方
感想:看(改)別人的程式真的是比自己寫來的辛苦阿~
- 所有 xhtml 檔頭
- 產生 nav.xhtml
- content.opf 內容
Sigil 作者有個壞習慣,他大量的使用了全域變數,而且重複宣告多次。這對我來說是不能容許的,所以花了許多時間,將全域變數使用 static member function 來處理,處理之後透過 compile 抓出引用的地方,真是不少。我想這是我目前看到唯一不認同的地方
感想:看(改)別人的程式真的是比自己寫來的辛苦阿~
2011年4月27日 星期三
ubuntu 上安裝 nVidia 顯示卡驅動程式
首先進入叫出系統->管理->硬體驅動程式,將現有的驅動程式解除,重開機
選擇『恢復模式』,之後選擇『Resume』,就會進入文字模式
執行之前下載的驅動程式 NVIDIAxxxx.run
就降子
選擇『恢復模式』,之後選擇『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
ex:
sudo apt-get purge ^linux-.*-2.6.28-11
訂閱:
文章 (Atom)