2007年7月21日星期六
2007年7月16日星期一
用 Eclipse, wxWidget 和 wxFormBuilder 來寫 GNOME 程式
使用 wxWidgets,wxFormBuilder和Eclipse來編寫 GNOME 程式
示範程式碼 (Eclipse Project)
2007年7月15日星期日
在 Fedora 7 內編譯 wxFormBuilder 的源始碼
1. 先從 BerliOS Developer 下載 Code::Blocks 最新的 Fedora RPM 版本 (這一陣子是 rev3975):
http://developer.berlios.de/project/showfiles.php?group_id=5358
2. 再下載 wxWidgets 的 RPM 檔案:
compat-wxGTK26-2.6.3-2.i386.rpm
wxGTK-2.8.3-2.fc7.i386.rpm
3. 先安裝 wxWidgets 的 RPM 檔案, 再安裝 Code::Blocks 的 RPM 檔案
4. 如果之前已經安裝好 wxWidgets 的開發版本, 執行 ldconfig /usr/local/lib 來更新 wxWidgets 的 shared library 的路徑
5. 用 SVN Client 來下載 wxFormBuilder 最新源始碼, 它的 URL:
https://wxformbuilder.svn.sourceforge.net/svnroot/wxformbuilder/3.x/trunk
6. 執行 ./create_build_files.sh (不用安裝 premake, 它已經在 /sdk/premake 資料夾內)
7. 完成後我們可以看到 wxFormBuilder.workspace 檔案, 我們只要用 Code::Blocks 來開啟它就可以編譯 wxFormBuilder 最新源始碼了.
2007年7月10日星期二
安裝 RealPlayer, Sun JVM 和 Adobe Reader 7
1. 安裝 RealPlayer
我首先下載 RealPlayer 的 Reahat Linux 版, 然後就安裝它, 其間都沒有什麼問題. 但奇怪就是我在 GNOME 按 RealPlayer 的圖示就是沒反應. 後來上網找資料才知道 RealPlayer 需要 libstdc++ 的舊版本, 結果我要上網下載 compat-libstdc++-33-3.2.3-47.fc4.i386.rpm 及安裝它才可以啟動 RealPlayer.
在找資料其間, 我發現如果 Linux 系統是用 ALSA 作聲音輸出時, RealPlayer 可能不會出聲. 原因就是 RealPlayer 不支援 ALSA 輸出. 所以需要下載 alsa-oss-1.0.12-4.fc7.i386.rpm 和 alsa-oss-libs-1.0.12-4.fc7.i386.rpm 及安裝它們, 然後修改 realplay (/usr/local/RealPlaer/) 這個檔案:
找尋:
if [ -n "$DEBUG" -a -x "$CATCHSEGV" ]; then
$CATCHSEGV $REALPLAYBIN ${1+"$@"}
else
while /bin/true; do
# Restart the player if exit code is 10
$REALPLAYBIN "$@"
if [ $? -ne 10 ]; then
break
fi
done
fi
取代為:
if [ -n "$DEBUG" -a -x "$CATCHSEGV" ]; then
$CATCHSEGV $REALPLAYBIN ${1+"$@"}
else
while /bin/true; do
# Restart the player if exit code is 10
aoss $REALPLAYBIN "$@"
if [ $? -ne 10 ]; then
break
fi
done
fi
目的就是加入 aoss,讓系統使用 alsa-oss 開啟 RealPlayer.
2. 安裝 SUN JVM
雖然 Fedora 7 安以安裝 GCJ 來執行 JAVA 程式, 不過 SUN 的 JVM 才是正宗. 因為我發覺用 GCJ 執行部份 JAVA 程式會有問題.
#!/bin/bash
# Copyright (c) 2006 Dancefire (dancefire#gmail)
#
# 2 Steps to swap to Sun JDK
#
# 1. Download and install Sun Java JDK.
# 2. run this script
# 1) Tell the script the JDK directory
# 2) Help the script choose the Sun's java
# All done
echo "Configure Enviroment..."
read -p "Please tell me the JDK Directory, such as /usr/java/jdk1.5.0_07: " JDKDIR
JAVASH=/etc/profile.d/java.sh
echo "Linking to Mozilla plugins..."
ln -s $JDKDIR/jre/plugin/i386/ns7/libjavaplugin_oji.so /usr/lib/mozilla/plugins/libjavaplugin_oji.so
echo "Swap to Sun JDK ..."
if [ ! -f $JAVASH ]; then
# generate java profile
echo "export J2RE_HOME=$JDKDIR/jre" > $JAVASH
echo "export PATH=\$J2RE_HOME/bin:\$PATH" >> $JAVASH
fi
source $JAVASH
/usr/sbin/alternatives --install /usr/bin/java java $JDKDIR/bin/java 2
echo "Please choose '$JDKDIR/bin/java'"
/usr/sbin/alternatives --config java
/usr/sbin/alternatives --display java
echo "Successfully"
執行其間需要輸入 JDK 的路徑, 完成後選擇 SUN JVM 作為預設的 JAVA JVM 就可以了.
3. 安裝 Adobe Reader 7
其實安裝 Adobe Reader 7 的過程跟安裝 RealPlayer 有點相似, 就是先到 Adobe 網站下載 Adobe Reader 的 Linux 版, 然後安裝 RPM, 結果就是啟動不到 Adobe Reader.....
後來在網上找到解決辦法, 就是要修改 acroread (/usr/local/Adobe/Acrobat7.0/bin/) 這個檔案:
1. 找尋:
echo $mfile| sed 's/libgtk-x11-([0-9]*).0.so.0.([0-9])00.([0-9]*)|(.*)/123/g'
取代為:
echo $mfile| sed 's/libgtk-x11-([0-9]*).0.so.0.([0-9]*)00.([0-9]*)|(.*)/123/g'
2. 找尋:
MIN_GTK_VERSION="240"
取代為:
MIN_GTK_VERSION="2040"
完成後就可以啟動 Adobe Reader 了.
2007年7月8日星期日
Fedora 7 更新軟件二三事
1. 一進入 Package Manager 就會出現以下畫面, 令我覺得好像有什麼大問題似的.....儘管我可以直接按 List 頁就可以選擇需要安裝的軟件.
2. 雖然新軟件可以安裝, 不過當 Package Manager 更新畫面時就會出現以下畫面, 然後我可以做的就是按 Quit 鍵.....
為什麼 Package Manager 會出現 _getGroups:GroupsError 錯誤呢? 原來就是我當初用 createrepo 指令時沒有匯入 comps.xml 檔案. 而這個 comps.xml 就是儲存不同 RPM 檔案的分組資訊. 所以我可以做的是:
1. 無視以上問題! 反正軟件可以安裝就可以了.....
2. 自己動手做一個 comps.xml 檔案
3. 用一個現存的 comps.xml 檔案來欺騙 Package Manager
由於我是用 Fedora 7 DVD, 所以我可以用方法 3:
1. 複製 Fedora 7 DVD 內的 repodata 資料夾的 comps-f7.xml 到 /media 資料夾
2. 當要使用 createrepo 指令時, 輸入 createrepo -g comps-f7.xml ., 目的是匯入 comps-f7.xml 到自己的 repodata 內
然後當我再次啟動 Package Manager 時, 就會看到以下畫面:
不過呢, 如果要安裝的是從 Redhat 的 Fedora 7 更新網站 下載回來的更新檔案時, 不知道可不可以用這個 comps-f7.xml 檔案呢?
2007年7月7日星期六
2007年7月6日星期五
之前為朋友寫的文件
在 Microsoft 的 Windows 32 環境下執行 gcc 編譯器 (compiler)
在 Microsoft Win32 下使用 Subversion
安裝 PHP 5 、MySQL 和設定 Apache 伺服器
2007年7月1日星期日
Fedora 7 下安裝 Mplayer 1.0rc1
1. 先從 http://mplayerhq.hu 下載3個檔案:
mplayer-1.0rc1.tar.bz2 <-- mplayer 的源始碼
essential-20061022.tar.bz2 <-- codecs
clearplayer-0.8.tar.bz2 <-- Skin,當然你可以下載其他的 skins
2. 將 essential-20061022.tar.bz2 解壓 (tar xf essential-20061022.tar.bz2),然後將全部內容複製到 /usr/local/lib/codecs 內
3. 將 mplayer-1.0rc1.tar.bz2 解壓,進入 mplayer-1.0rc1 內,執行 ./configure --enable-gui,如果出現任何問題,請安裝有關軟件。有關的軟件都可以在 Fedora 7 的 DVD 內找到(例如:gcc),不用上網找。如果沒有問題,之後執行 make 和 make install 就可以了。
4. 將 clearplayer-0.8.tar.bz2 解壓,將全部內容複製到 /usr/local/share/mplayer/skins/default 內,完成後你就可以執行 Mplayer 了。如果想在終端機執行 MPlayer,你還需要將一個 TTF 檔案的連結 (link) 放在 ~/.mplayer 內,並改為 subfont.ttf,否則你會看到有關錯誤訊息。
5. 假設我們在GNOME 開啟 MPlayer,我們還需要作以下設定:
5.2在 Preferences 的 Font 頁內,設定 Subtitles & OSD:將 Encoding 設為 None, 選擇 Unicode subtitle。
以我目前的經驗所知,只要將字幕檔案(例如 SSA檔案)轉為 UTF8 編碼,再用以上設定就可以看到字幕,當然你要開啟字幕功能啦。
將字幕檔案(例如 SSA檔案)轉為 UTF8 編碼:
iconv –f <原來編碼> -t utf8 <來源檔案> -o <輸出檔案>
例如:
iconv –f utf16 –t utf8 01.ssa –o 001.ssa
不過,我有時會發現 Mplayer會出怪獸字,解決的方法是:
1. 在 Preferences 的 Font 頁內,設定 Subtitles & OSD:將 Encoding 設為 Unicode。
2. 然後開啟字幕功能及播一部份片,期間你會看到部份字幕會正常。
3. 然後在 Preferences 的 Font 頁內,設定 Subtitles & OSD:將 Encoding 設為 None。
4. 然後重新播片,你會看到字幕會正常。
Fedora 7離線下用 YUM 和/或 Package Manager 來更新 RPM軟件
儘管我們可以用 RPM 來安裝 RPM 的軟件,但一遇上 dependence 的問題就煩了。所以,我們需要修改一下 YUM 的設定檔案,使到我們可以在離線狀態下利用 YUM 來安裝 RPM 軟件。
以下的方法是假設我們已經將所需的 RPM 檔案燒到一隻 CD 或 DVD 內並已經mount在 /media 的子目錄內(在 GNOME 內 double click 光碟機圖示,mount好的話你可以在桌面上看到圖示),或者將軟件放到 /media 的子目錄內。
1. 在終端機內輸入 cd /media
2. 在終端機內輸入 createrepo .,完成後我們可以在 /media 內看到一個 repodata 的目錄
3. 在終端機內輸入 yum clean all
4. 在終端機內輸入 /etc/yum.repos.d
5. 修改 fedora.repo:
5.1 將其他項目內的 enabled 設為 0
5.2 加入:
[Fedora DVD]
name=Fedora DVD
baseurl=file:///media
enabled = 1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY
其中你可以留意到 Fedora DVD 只是個名稱,你可以改為其他名稱。baseurl是指路徑,這和一般 URL 的路徑沒有分別。由於我們的 repodata 目錄在本機的 /media 內,所以路徑便設為 file:///media。
然後我們再將其他 repo 檔案內的項目中的 enabled 改為 0,那麼我們便可以行用 YUM 和/或 Package Manager 來更新 RPM軟件。當然,如果我們更新了 RPM 檔案,我們便需要再執行 createrepo . 和 yum clean all 指令了。