2008年5月12日 星期一

禮拜日晚上做了一個夢。
夢見我跟阿銘一起游泳到綠島去,但第二次出發的時候只剩下我一個人,旅途上浪很大,我感到恐懼孤單,還沒到達目的我就醒了。
為什麼會做這樣夢?我思考了很久...

後來找到一位解夢大師,請他替我開導。他說:
『應該是你對目前的生活感到不滿不順利,希望逃離去另一個環境,所以你想到了畢旅去的綠島,它代表的是一個可以放鬆的地方,至於有我的出現,應該是你希望可以跟朋友出去玩,到一個無拘無束的地方。至於第二次只剩自己一個人,是因為你害怕自己一個人離開,你對前方有什麼東西抱有不確定性,所以雖然你同樣游向綠島,希望到一個可以放鬆自己的環境,你朝這個方向前進,卻對自己沒信心,雖然知道前方的美好,可是卻無法跨越過去。
結論是,你該找個時間放鬆一下了,下次可以考慮在夢裡造一艘船,叫幾個人,當然還要有我,一起搭船過去。』

看出來了嗎?其實解夢大師就是阿銘啦~我覺得說得蠻切合我的處境,有安定人心的效果,很高興他找到第二專長了。

近幾個月一直徘徊在低潮期,在煩惱課業上的ooxx,這些寫出來就是一連串的抱怨啦,我像是喜歡抱怨的人嗎~科科。就往好處想摟,處在逆境中人生才有新的體悟。

撇開這個不說,最近找到新房子了,六月底就可以搬過去,終於不用再睡頂樓了。
離學校很近,生活機能好,週邊設備俱全,房東女兒很正...
後來跟學長聊到這邊的環境,越說跟他住的地方越像,原來我們房間就在斜對面QQ

Google Map

弄了一個地圖專區(在左邊⇐),來記錄在台南的生活點滴,吃過的餐廳,想去踏青的地方...
在Google Map裡除了標示地點,還可以寫一些心得,放幾張代表性的照片,不用打一長篇的敘述,很適合我這種懶人.
Google Map有提供API可以使用,可以拿來動態的標示地點,畫路線,結合自己的資料庫創造出不同的世界. 像是在GMap->我的地圖->推薦小工具,就有一些令人驚艷的好物,像是Panoramio 照片集-把全世界的景點照片都連結到同個地圖裡.之前有人把無名相簿跟地圖結合,讓你認識全台各地的美女.其他還有"全台國道即時影像","微笑台灣319鄉"都讓我感到特別. 有朝一日我去環島,就可以開個地圖把沿途景點通通擺上來啦^^. 主要還是跟大家分享一個寫網誌的方式啦.

Map Channels是一個把GMap包裝起來的網站,提供一個更完整的介面來顯示使用者的圖資.這東西的使用方式很簡單:
1. 到Map Channels加入會員
2. 顯選右上角Create New Map Channel
3. 填寫Data Source(就是GMap的連結),按下Creat就可以得到內嵌的html語法


在這邊提供兩個可以把GMap嵌在blog的方法:
1. 在"版面配置"中新增一個"html widget",然後把上面的語法直接貼進去
2. 利用圖層的觀念+一些javascript,一樣是把語法貼在"html widget",不過顯示的位置可以自己調整
<div id="GMap" style="visibility:hidden; position:absolute; top:10px; left:90px; z-index: 9;">想顯示的東東</div>
<script type="text/javascript">
function click(){
document.getElementById("GMap").style.width = 800;
document.getElementById("GMap").style.height = 500;
document.getElementById("GMap").style.visibility ="visible";}
</script>

不過讀取大量的圖資會造成使用者的負擔,所以就在想javascript有沒有動態讀取的方案-
改變iframe的src屬性:
<iframe id="Iframe_GMap" iframe_gmap="" src="" scrolling="no" ...>
<script type="text/javascript">document.getElementById("Iframe_GMap").setAttribute("src", "http://www.xxx...");</script>

其實我也不太懂javascript的執行先後,為何改變src後就會重新loading?
反正這樣就可以在使用者點選以後再去讀取摟,使用多個map也ok.

ref:
syshen's blog:Google Maps API 簡易使用文件: 寫得蠻清楚的,不過目前用不到
如何在Blogger使用UrMap/Google Maps API之HTML: 提醒一些要注意的地方,像是blogspot會自動換行的問題.

2008年5月3日 星期六

Porting MySQL

同樣的事情對岸也有人做過了,照本宣科.
下載: mysql-5.0.51b.tar.gz

./configure --prefix=/home/showtime/mysql --build=i386-linux --host=arm-linux --with-charset=utf8 --without-debug --without-docs --without-man --without-bench --with-named-curses-libs=/home/showtime/mysql/ncurses-5.6/lib/libncurses.a遇到下列錯誤:
1) checking "return type of sprintf"... configure: error: cannot run test program while cross compiling
2) checking for atomic operations... configure: error: cannot run test program while cross compiling
3) checking for int8... configure: error: cannot run test program while cross compiling
4) checking for restartable system calls... configure: error: cannot run test program while cross compiling
5) checking if conversion of longlong to float works... configure: error: cannot run test program while cross compiling
6) error: Your compiler cannot convert a longlong value to a float!
在網路上搜尋發現這幾個似乎是常碰到的問題,表示此版本的mysql尚未支援corss-compile
看別人的解法是直接略過configure裡面的測試(不知道使用的時候會不crash?)
configure script裡在checking若遇到錯誤就會中斷
於是移除上方這些測試的離開語句{ (exit 1); exit 1; }; (請注意大括號的配對)

參數--with-named-curses-libs是因為錯誤訊息: checking for termcap functions library... configure: error: No curses/termcap library found
請自行下載ncurses,並cross-compile
./configure --host=arm-linux && make

mysql configure通過後, make && make install
將install的東西copy起來準備到target上測試

將lib放到正確的路徑,或使用link達成
開始安裝: ./mysql_install_db --user=root
出現錯誤:
Please configure the 'hostname' command to return a correct
hostname.
If you want to solve this at a later stage, restart this script
with the --force option

執行hostname看看名字是什麼
新增/etc/hosts
127.0.0.1 localhost
127.0.0.1 你的hostname
再安裝一次,成功了.

啟動server: ./mysqld_safe --user=root & (有時後會失敗,但重開機後又正常?)
建立密碼: ./mysqladmin -u root password 'your password' (這一步應該可以省略了)
連接server: ./mysql -u root
成功連接上以後就會出現歡迎訊息
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.51b Source distribution

稍微測試一下:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
3 rows in set (0.00 sec)
mysql> use mysql;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL ser
ver version for the right syntax to use near 'user mysql' at line 1
(不知道為什麼)
mysql> use test;
Database changed
跑一下mysql tutorial的sample
mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
-> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
mysql> INSERT INTO pet VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
mysql> SELECT * FROM pet;
+----------+-------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+-------+
| Puffball | Diane | hamster | f | 1999-03-30 | NULL |
+----------+-------+---------+------+------------+-------+
1 row in set (0.00 sec)

大致上都還蠻正常的;)

ref:
MySQL Typical configure Options
mysql數據庫在arm+linux平台上的移植

2008年4月30日 星期三

Porting Qtopia 4.3.3

這次編譯還算順利,參考人家編譯過的經驗.
Hardware: III PXA270 Platform
Software: QT-X11, Qtopia 4.3.3, Cross-Compile 3.3.6

Install QT-X11 in Ubuntu
sudo apt-get install qt-x11-free-dbg
使用到的執行檔都會安裝到/bin底下,編譯Qtopia的時候就會自行取用

Install Qtopia
下載 qtopia-core-opensource-src-4.3.3.tar.gz
解壓縮到/opt底下
改個名字 mv /opt/qtopia-core-opensource-src-4.3.3 /opt/qtopia
把Toolchain路徑加到$PATH
export QTDIR=/opt/qtopia
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
開始編譯
./configure -embedded arm -xplatform qws/linux-arm-g++ -qt3support -depths 16 -qt-libjpeg -qt-mouse-linuxtp -no-stl
make
-xplatform參數對應到所使用的toolchain,若使用不同的請到./qtopia/mkspecs/qws/linux-arm-g++/qmake.conf去修改
我使用P4 HT 3.2G 大概要40分鐘

完成後,所需要的library都在qtopia/lib底下包括font檔
libQt3Support.so.4.3.3
libQtCore.so.4.3.3
libQtGui.so.4.3.3
libQtNetwork.so.4.3.3
libQtScript.so.4.3.3
libQtSql.so.4.3.3
libQtSvg.so.4.3.3
libQtXml.so.4.3.3
包含link也一併copy起來.我是用隨身碟來存放,格式化成ext3格式就可以存link了
接著再拿./qtopia/example下的範例程式測試

記得在target上執行時要先link一下路徑,因為執行程式的時候會去target上的/opt/qtopia/lib找library
另外我還出了一個錯誤:
QFontDatabase: Cannot find font directory /usr/local/Trolltech/QtopiaCore-4.3.3-arm/lib/fonts - is Qt installe?
"/usr/local/Trolltech/QtopiaCore-4.3.3-arm"算是他預設的安裝路徑,不知道為什麼沒改變? 可能是configure的時候要加prefix參數吧? 沒關係一樣用個link就可以解決

執行起來沒什麼問題,畫面明顯比QT3好看(是錯覺嗎?)
另外我使用背景執行一次開兩個視窗是可以顯示,不過畫面卻不是很理想.

ref:
QT、QPE、Qtopia、Qt/Embedded、Qtopia Core 究竟是什麼?
小弟在Xscale PXA255上移植qtopia 4的經驗
qtopia-opensource-4.2.0交叉編譯記錄
configure參數中文解說

QT4 with IDE

之後要在Linux上寫視窗程式,先來熟悉一下開發介面.
QT與GTK+我會選擇QT,他有專屬的QT-Disigner-一套可以用拖曳來編輯介面的開發軟體,還可以設定屬性,事件...由於介面與程式碼要分開寫,所以還需另外一套利器QDevelop,這也是專門用來開發QT4程式的,他可以直接compile, test, debug, 免去key指令的步驟.

同樣是API,GTK+的我真不太會用,gtkmm算是把GTK再包裝一層,是不是比較人性化? 而GTK也有graphical user interface builder - Glade,有機會再來用用看.

在Ubutnu下使用APT安裝QT4sudo apt-get install libqt4-core libqt4-debug libqt4-dev libqt4-gui libqt4-qt3support libqt4-sql qt4-designer qt4-doc qt4-qtconfig
剛裝好我還真的不知道qt-designer怎麼叫出來,原來是直接打指令 designer
qt4-qtconfig 是用來設定視窗介面的style
qtdemo 可以看到展示
assistant 可以叫出QT的教學電子書

QDevelop請到官網下載,他有for Ubuntu的package
安裝好以後在選單上就可以看到了,開啟以後介面是中文的,不過他的文字相當模糊而且像是對岸翻譯出來的,建議使用英文介面,下達指令 qdevelop -l en 即可. 第一次使用可以參考Quick Start

透過這些工具很輕易就可以建立起一隻視窗程式. 再來就試著移植到arm的平台上.

ref:
What's New in Qt 4 譯: A Taste of Qt 4─Qt 4 初體驗
永遠的UNIX-介紹X Programming, GUI Library, GUI Toolkit

2008年4月29日 星期二

Porting GTK+ on DirectFB

移植GTK的過程真的很繁雜,要先編幾十個library.
過程請直接參考強者同學的網誌: GTK+ on DirectFB on Creator PXA270
遇到error時通常把message原封不動的拿到google搜尋都可以找到解決的辦法, 以下提供新手參考.

編譯glib-2.9.6時
Error: cannot run test program while cross compiling See 'config.log' for more details
Solution:
echo ac_cv_type_long_long=yes>arm-linux.cache
echo glib_cv_stack_grows=no>>arm-linux.cache
echo glib_cv_uscore=no>>arm-linux.cache
echo ac_cv_func_posix_getpwuid_r=yes>>arm-linux.cache
configure參數多加 --cache-file=arm-linux.cache

編譯atk-1.10.3時
Error: glib-genmarshal: error while loading shared libraries: /opt/DYNAMIC/lib/libglib-2.0.so.0: ELF file OS ABI invalid
Solution: 先將環境變數LD_LIBRARY改為空白, make後再復原

執行GTK程式時
Error: (!) Direct/Modules: Could not open module directory `/usr/myproj/usr/myproj/lib/directfb-1.0-0/systems'! --> No such file or directory
Solution: 可以看到路徑重複兩次, 不知道是為什麼. 自行建立link即可

Error: (!) Direct/Modules: Could not open module directory `/usr/myproj/usr/myproj/lib/directfb-1.0-0/gfxdrivers'! --> No such file or directory
Solution: 在編譯directfb的時候gfxdrivers已經選擇none, 應該是不需要額外的driver才對, make一個空的資料夾可以過

Error: GdkPixbuf-WARNING **: Cannot open pixbuf loader module file '/usr/myproj/etc/gtk-2.0/gdk-pixbuf.loaders': No such file or directory
Solution:
在target執行/usr/myproj/bin/gdk-pixbuf-query-loaders > /usr/myproj/etc/gtk-2.0/gdk-pixbuf.loaders
參考: problem with realplayer

Error: (!) DirectFB/FBDev: Panning display failed! --> Invalid argument
Solution: (目前未解)

Error: No fonts found; this probably means that the fontconfig library is not correctly configured. You may need to edit the fonts.conf configuration file.
Solution: 修改etc/fonts/fonts.conf, 加入字型檔的路徑
然後把字型複製到預定的路徑裡面, 可以是windows的ttf

Error:
Gdk-DirectFB-WARNING **: gdk_window_set_keep_above() not implemented.
Gdk-DirectFB-WARNING **: gdk_window_set_keep_below() not implemented.
視窗畫面上的toolbar都顯示不出來, 不支是否跟這有關係
Solution: Warning而已不用理他, 強者同學說沒有window manager的觀念所以視窗不會有toolbar

Ref:
GTK+ on DirectFB on Creator PXA270
Porting GTK+ on DirectFB
與afreez一起學習DirectFB之:編譯最小的DirectFB

2008年3月15日 星期六

鹿鳴山

這是上個月老伯載我們去爬山的照片。

鳥瞰南化水庫、陰森森的神秘階梯

登頂合照。其實只走了幾百公尺QQ

好心人的背影。叔叔阿姨請我們吃中餐

老伯開車英姿。Play Boy太陽眼鏡

其實這次計畫還要去關山村,那是全台最大的村莊擁有最少的人,位居里山脈支脈的延伸,昔稱「西阿里關」。特殊的景點『大地谷』只有在2~4月枯水期的時候會露出來,問了一下當地居民要步行40分鐘才會到就放棄了QQ。其他還有千層瀑布、瑞峰國小、出火奇景算是蠻原始的風貌,希望四月份能夠再探訪一次。
壹蘋果旅遊王-台南 南化關山林 山林溪壑別有洞天