<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8142113334815576231</id><updated>2012-01-18T19:45:25.318-08:00</updated><category term='linux'/><category term='prex'/><category term='arm'/><category term='embedded'/><category term='meego'/><category term='office'/><category term='introduction'/><category term='toolchain'/><category term='omap'/><category term='programming'/><category term='s3c2440a'/><category term='VIA'/><category term='graphics'/><category term='music'/><category term='book'/><category term='file system'/><category term='multimedia'/><category term='misc'/><category term='life'/><category term='firefox'/><category term='audio'/><category term='study'/><category term='bookmark'/><category term='vp8'/><category term='video'/><category term='Android'/><category term='OS'/><category term='google'/><title type='text'>網路黑貓 BlackCat dot Net</title><subtitle type='html'>我的生活雜記, 包含了心得感想, 電腦新聞和技術探討等</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>88</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-1943696357799462103</id><published>2012-01-18T19:45:00.000-08:00</published><updated>2012-01-18T19:45:25.333-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Xubuntu on EeePC 701 4G</title><content type='html'>雖然個人有多台機子, 但很少帶來帶去&lt;br /&gt;幾乎是在每個會停留的地方都有台電腦可以使用&lt;br /&gt;在桃園家中, 用的是 2007年推出的 EeePC 701 4G &lt;br /&gt;平日最多的用途就是 Web + Music&lt;br /&gt;&lt;br /&gt;以僅有的 4G 容量來說, 對現今系統來說都顯得捉襟見肘&lt;br /&gt;而 Ubuntu 現今預設也都需要 4.x G 才能夠安裝&lt;br /&gt;&lt;br /&gt;這篇算是留個紀錄, 最終調整好的結果:&lt;br /&gt;champ@champ-eee701:~$ df&lt;br /&gt;檔案系統&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1K-區段&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 已用&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 可用 已用% 掛載點&lt;br /&gt;/dev/sda1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3783213&amp;nbsp;&amp;nbsp; 1685305&amp;nbsp;&amp;nbsp; 1902584&amp;nbsp; 47% /&lt;br /&gt;&lt;br /&gt;使用約 1.6G (而WinXP SP3 版, 裝完就使用了 3.xGB(80%~83%) 左右)&lt;br /&gt;&lt;br /&gt;在這之前, 做了小小的前置作業&lt;br /&gt;為了不額外安裝控制軟體&lt;br /&gt;安裝前將BIOS 升級為能夠選擇 CPU 速度的 0511 測試版本&lt;br /&gt;&lt;br /&gt;安裝採用的方式是製作Xubuntu Deskop ISO 製作開機 SD Card&lt;br /&gt;開機不選擇直接安裝, 而是進入 Live環境&lt;br /&gt;進入桌面後編輯 /usr/lib/ubiquity/plugins/ubi-prepare.py&lt;br /&gt;搜尋 min_disk_size = size * 2 一行, 並將" * 2 "移除&lt;br /&gt;如此最低要求就會是 2.1GB&lt;br /&gt;&lt;br /&gt;接著安裝與後置步驟所參考的是&lt;br /&gt;https://wiki.ubuntu.com/ReducingDiskFootprint&lt;br /&gt;使用Live 環境terminal, 自行先以 mkfs.ext4 -T small /dev/sda1 格式化作為 / 的 partition&lt;br /&gt;之後安裝過程中選用為 / , 並且不再格式化&lt;br /&gt;光這個步驟, 就會將使用的空間自原本的 65% 降到 59%&lt;br /&gt;&lt;br /&gt;以這樣的方式安裝完後,&amp;nbsp; 接著移除不需要的 package&lt;br /&gt;大致上移除了與下列相關的套件&lt;br /&gt;gimp, thunderbird, transmission, gnome-games, linux-headers, gcc, xorg drivers, bluetooth, cups, sane, abiword, gnumeric, nvidia-common, manpages-dev&lt;br /&gt;套件部份, 熟悉套件內容的可以再自行斟酌&lt;br /&gt;移除不需要的package後, 先 apt-get clean&lt;br /&gt;再請參考ReducingFootPrint 的 disable apt cache 之後再進行系統更新&lt;br /&gt;&lt;br /&gt;接著可以參考&lt;br /&gt;上述的ReducingFootPrint 的 document/locale 部份&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;最後如果沒有在使用 synaptic, 單純用 apt-get 可以再參考 Compress File 部份&lt;br /&gt;對 apt 的 index 做壓縮 (否則 synaptic&amp;nbsp; 會很慢)&lt;br /&gt;&lt;br /&gt;剩下的 5x% 空間可以有相當的使用彈性&lt;br /&gt;安裝喜歡的軟體, 放資料與音樂...etc&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;原本有意使用 btrfs 搭配 compress option&lt;br /&gt;然而 btrfs 的 metadata 以佔去相當容量, 已經佔不了便宜&lt;br /&gt;加上ubuntu 這幾版使用 btrfs w/ compress 似乎都有問題&lt;br /&gt;而且在 SSD 上沒有節省到時間外,&amp;nbsp; 反而更慢&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-1943696357799462103?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/1943696357799462103/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=1943696357799462103' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/1943696357799462103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/1943696357799462103'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2012/01/xubuntu-on-eeepc-701-4g.html' title='Xubuntu on EeePC 701 4G'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-3485337855547666659</id><published>2011-07-20T22:31:00.000-07:00</published><updated>2011-07-20T22:31:14.657-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Linux Undervolting - Toshiba NB550D</title><content type='html'>再調整過 MSI X410 後, 不再那麼燙手了&lt;br /&gt;(最後還將最高頻率設為 1.3Ghz)&lt;br /&gt;就能享受其帶來的輕薄大螢幕的好處. &lt;br /&gt;&lt;br /&gt;於是又看看另一台 Toshiba NB550D有無機會&lt;br /&gt;如之前所說, 這台使用的是 AMD APU C-50 &lt;br /&gt;透過搜尋, 找到了&lt;a href="http://forum.tabletpcreview.com/acer/42824-instructions-undervolting-c-50-cpu-w500-make-w500-run-bit-cooler-longer.html"&gt;一篇文章&lt;/a&gt;講述詳細內容的&lt;br /&gt;要降低電壓, 主要是調整 msr 中對應 VID 的數值&lt;br /&gt;按照文章說得, Acer W500 使用電壓組合為&lt;br /&gt;1.0625V/1Ghz, 0.9375V/800Mhz&lt;br /&gt;&lt;br /&gt;按文查表, 發現, NB550D 使用的電壓組合為&lt;br /&gt;1.2250V/1Ghz, 1.025V/800Mhz&lt;br /&gt;&lt;br /&gt;找到方法了, 接著就是測試, 並且寫入&amp;nbsp; /etc/rc.local 中&lt;br /&gt;以下為我加入的內容&lt;br /&gt;主要是改為0.9375V/1Ghz, 0.8250V/800Mhz&lt;br /&gt;按照文章說明, 這樣應該可以降低功耗 2~3Watt&lt;br /&gt;找機會來測試電池使用時間是否增加.&lt;br /&gt;&lt;br /&gt;#to allow msr manipulation&lt;br /&gt;modprobe msr&lt;br /&gt;&lt;br /&gt;#here we undervolting C50 to 0.9375V/1000Mhz 0.8250V/800Mhz&lt;br /&gt;#original is VID:34 - 1.225V/1000Mhz, VID:54 - 1.025V/800Mhz&lt;br /&gt;#CPU 0&lt;br /&gt;wrmsr -p 0 0xc0010064 0x800002ba00006230&lt;br /&gt;wrmsr -p 0 0xc0010065 0x8000026a00007440&lt;br /&gt;&lt;br /&gt;#CPU 1&lt;br /&gt;wrmsr -p 1 0xc0010064 0x800002ba00006230&lt;br /&gt;wrmsr -p 1 0xc0010065 0x8000026a00007440&lt;br /&gt;&lt;br /&gt;相關資訊在該文章都有, 有需要可以參考&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-3485337855547666659?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/3485337855547666659/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=3485337855547666659' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/3485337855547666659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/3485337855547666659'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2011/07/linux-undervolting-toshiba-nb550d.html' title='Linux Undervolting - Toshiba NB550D'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-6248911881114178718</id><published>2011-07-13T22:32:00.000-07:00</published><updated>2011-07-16T19:06:49.911-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Linux PHC Undervolting - MSI X410</title><content type='html'>老婆偶爾玩 Facebook 的 flash game, 閒買給她的 X410 慢&lt;br /&gt;於是好一陣子之前, 拿先前的 MSI CX420 跟老婆換&lt;br /&gt;(這麼說我還蠻愛 MSI 筆電的, MSI 是否該找我寫測試文...XD) &lt;br /&gt;&lt;br /&gt;X410當時也是我決定買的, 主要看上輕薄又有 14" 大螢幕&lt;br /&gt;安裝Ubuntu 使用一陣子後, 發現CPU效能對我倒是其次&lt;br /&gt;總是最大轉速的風扇聲, 與左手腕放置地方過熱&lt;br /&gt;&lt;br /&gt;搜尋了一下, Windows 上有人使用 RM CPU Clock Utility 來降壓&lt;br /&gt;除了降低CPU電壓, 另外還可以使用額外的 P-state&lt;br /&gt;而在Linux 上要靠 Linux PHC kernel, 達到相同的效果&lt;br /&gt;&lt;br /&gt;MSI X410 使用的是 AMD Neo MV-40&lt;br /&gt;基本上預設電壓 1.0V&lt;br /&gt;也只提供 800Mhz 與 1.6Ghz 兩種頻率切換&lt;br /&gt;&lt;br /&gt;有了這些資訊, 就開始使用 Linux PHC 來降壓&lt;br /&gt;首先可以透過下列指令加入 Linux PHC PPA&lt;br /&gt;&lt;br /&gt;sudo add-apt-repository ppa:linux-phc/ppa&lt;br /&gt;&lt;br /&gt;接著更新套件庫與安裝 Linux PHC kernel&lt;br /&gt;sudo apt-get update&lt;br /&gt;&lt;br /&gt;sudo apt-get install linux-generic-pae-phc linux-headers-generic-pae-phc linux-image-generic-pae-phc&lt;br /&gt;&lt;br /&gt;如果不需要原本 kernel 可以順便移除..&lt;br /&gt;安裝完成後, grub 選擇 phc 的項目重開即可&lt;br /&gt;&lt;br /&gt;登入後, 接著要安裝 phc-k8 module&lt;br /&gt;請&lt;a href="http://www.linux-phc.org/forum/download/file.php?id=122"&gt;到此&lt;/a&gt;下載&lt;br /&gt;&lt;br /&gt;安裝phc-k8前請安裝 dkms&lt;br /&gt;sudo apt-get install dkms&lt;br /&gt;&lt;br /&gt;接著以 root 做下列動作&lt;br /&gt;1. cp phc-k8_v0.4.4b1.tar.gz /roo&lt;br /&gt;2. cd /root&lt;br /&gt;3. tar jxvf phc-k8_v0.4.4b1.tar.gz &lt;br /&gt;4. cd phc-k8_v0.4.4b1&lt;br /&gt;5. make dkms install&lt;br /&gt;&lt;br /&gt;到這如沒出現錯誤訊息 phc-k8 安裝就完成了&lt;br /&gt;重新開機讓系統載入 phc-k8 module&lt;br /&gt;&lt;br /&gt;要測試是否 OK 可以用下列指令&lt;br /&gt;cat /sys/devices/system/cpu/cpu0/cpufreq/phc_controls&lt;br /&gt;這時候你應該會看到下列資訊&lt;br /&gt;8:22 0:22&lt;br /&gt;&lt;br /&gt;這是 FID:VID 的組合, 按照說明文件&lt;br /&gt;FID 的意義是 Freq = 800Mhz + (FID*100Mhz)&lt;br /&gt;以筆電預設電壓 1.0V 去看&lt;br /&gt;VID 的意義似乎是 Volt = 1550mv - VID*25mv&lt;br /&gt;&lt;br /&gt;為了能夠切換更多的頻率&lt;br /&gt;編譯 /etc/modprobe.d/phc-k8.conf&lt;br /&gt;將&amp;nbsp; options phc-k8 direct_transitions=1 行前的 # 移除&lt;br /&gt;&lt;br /&gt;接著在 /etc/rc.local 加入一行&lt;br /&gt;echo "8:26 4:31 0:35" &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/phc_controls&lt;br /&gt;即可&lt;br /&gt;(這裡 上述的 26,31,35 是保守值, 可以自行將上述指令調整輸入, 找出最適合的數值)&lt;br /&gt;&lt;br /&gt;重新開機後就可以感受不同了...&lt;br /&gt;&lt;br /&gt;可以重開機後交換輸入下列指令, 去體會風扇的變化&lt;br /&gt;echo "8:22 4:32 0:22" &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/phc_controls&lt;br /&gt;echo "8:26 4:31 0:35" &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/phc_controls&lt;br /&gt;&lt;br /&gt;Update:&lt;br /&gt;最近看&lt;a href="http://www.mobile01.com/topicdetail.php?f=241&amp;amp;t=1518489"&gt;這篇&lt;/a&gt;, 發現, X410 其中用了散熱'墊', 其實散熱效果很不好, 於是也塗了之前存放的散熱膏, 效果的確不錯. 廢熱明顯不容易累積, 搭配上面的方法, 就不再燙手了.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-6248911881114178718?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/6248911881114178718/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=6248911881114178718' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/6248911881114178718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/6248911881114178718'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2011/07/linux-phc-undervolting-msi-x410.html' title='Linux PHC Undervolting - MSI X410'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-2148197645865500170</id><published>2011-01-30T19:15:00.000-08:00</published><updated>2011-01-30T19:15:04.227-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='office'/><title type='text'>LibreOffice 3.3 released</title><content type='html'>由於 Oracle 併購 Sun 公司後, 對於 Open Source 專案有著不友善的態度與作法&lt;br /&gt;OpenOffice 成員與社群於是創立了 &lt;a href="http://www.libreoffice.org/"&gt;The Document Foundation&lt;/a&gt; (TDF)&lt;br /&gt;而其 Office Suite 命名為 LibreOffice&lt;br /&gt;LibreOffice 的理念也受到 Ubuntu, Fedora, OpenSuse, Go-OO, Google 等社群/公司的支持&lt;br /&gt;相信在 Linux 套件的大宗上, LibreOffice 將會是主流&lt;br /&gt;&lt;br /&gt;在TDF經過一段時間的運作, 正式釋出了第一個版本 -&lt;a href="http://www.libreoffice.org/download/"&gt; LibreOffice 3.3&lt;/a&gt;&lt;br /&gt;從網頁上可以看到&lt;a href="http://www.libreoffice.org/download/new-features-and-fixes/"&gt;新的功能特性&lt;/a&gt; (OpenOffice 3.3 新特性&lt;a href="http://www.openoffice.org/dev_docs/features/3.3/"&gt;在此&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Ubuntu 上可以透過&lt;a href="https://launchpad.net/%7Elibreoffice/+archive/ppa"&gt;官方 ppa&lt;/a&gt; 的方式安裝&lt;br /&gt;支援 Lucid/Maverick/Natty&lt;br /&gt;&lt;br /&gt;安裝方式如下:&lt;br /&gt;sudo add-apt-repository ppa:libreoffice/ppa&lt;br /&gt;sudo apt-get update&lt;br /&gt;sudo apt-get install libreoffice&lt;br /&gt;&lt;br /&gt;安裝過程會自動將 OpenOffice 移除&lt;br /&gt;個人有安裝 libreoffice-pdfimport, 如此能針對 PDF 檔案做編修&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_NqrwyXvfMh4/TUYi276q8_I/AAAAAAAABno/1lcmC7jOpIo/s1600/LibreOffice.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="233" src="http://4.bp.blogspot.com/_NqrwyXvfMh4/TUYi276q8_I/AAAAAAAABno/1lcmC7jOpIo/s400/LibreOffice.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;LibreOffice 編修 PDF 檔案&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;基本使用上與 OpenOffice 大同小異&lt;br /&gt;而使用上可以感受到 LibreOffice 的啟動與反應速度加快了些&lt;br /&gt;如果是一路從LibreOffice開發時期版本用到現在, 應該可以感到其進展&lt;br /&gt;&lt;br /&gt;相信 LibreOffice 的出現, 也能帶給 FOSS 的 Office Suite 更好的生態&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-2148197645865500170?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/2148197645865500170/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=2148197645865500170' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/2148197645865500170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/2148197645865500170'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2011/01/libreoffice-33-released.html' title='LibreOffice 3.3 released'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_NqrwyXvfMh4/TUYi276q8_I/AAAAAAAABno/1lcmC7jOpIo/s72-c/LibreOffice.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-8427478534874369064</id><published>2011-01-26T19:25:00.000-08:00</published><updated>2011-01-26T19:27:06.273-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>理想的 Linux Netbook - Toshiba NB550D</title><content type='html'>使用 Asus EeePC 900 邁入了第三個年頭&lt;br /&gt;除了當時就略顯過時的 Intel Celeron M ULV 353&lt;br /&gt;另外感到最不滿意的即為 Intel GMA 9x0 IGP&lt;br /&gt;而當時俱備相當顯示能力的機種, 多半體積大&amp;amp;過重/過熱/價格過高 (ex:Asus N10J)&lt;br /&gt;&lt;br /&gt;個人理想 Netbook 的條件為:&lt;br /&gt;1. Dual-Core&lt;br /&gt;2. 支援OpenGL 3.2以上版本 &lt;br /&gt;3. 支援OpenCL 1.x &lt;br /&gt;5. 電力連續使用 5 小時以上&lt;br /&gt;&lt;br /&gt;於是在 AMD APU規格公開後, 相當吸引個人&lt;br /&gt;近日AMD 發售 APU 後, 各大廠也紛紛宣佈使用 APU 的機種&lt;br /&gt;在台灣, Toshiba NB550D 算是其中最早發售的&lt;br /&gt;&lt;br /&gt;原本還想觀望 Asus 1015B (使用較高一階的AMD E-350, 但是怕跟1015N一樣遙遙無期)&lt;br /&gt;然而逛店家時發現, NB550D 的喇叭效果令人驚豔&lt;br /&gt;經詢價後也感到不錯 (13.1K), 於是就入手了 &lt;br /&gt;&lt;br /&gt;TOSHIBA NB550D :&lt;br /&gt;Processor: AMD C-50&lt;br /&gt;RAM: 1GB DDR3&lt;br /&gt;Graphics: AMD Radeon HD 6250&lt;br /&gt;WIFI: Atheros AR9285 PCI-Express&lt;br /&gt;Ethernet: Realtek RTL8101E/RTL8102E&lt;br /&gt;WebCam/SD: Realtek USB device (WebCam: 0bda:5801, SD: 0bda:0138)&lt;br /&gt;&lt;br /&gt;在安裝Ubuntu時原以為會奮戰許久,&lt;br /&gt;然而在 LiveCD下使用時,&lt;br /&gt;Hotkey, WebCam, Wifi 到 SD slot 無須特別處理, 就可以正常運作&lt;br /&gt;另外發現APU除了省電外, 溫度上也相當低,&lt;br /&gt;比起用過的 Atom/Celeron Netbook 都低許多&lt;br /&gt;&lt;br /&gt;另外剛入手時, 一開始最為惱人的是Ubuntu 安裝 fglrx 後,&lt;br /&gt;右下角會有 "Unsupported hardware" 浮水印&lt;br /&gt;安裝今日 AMD 釋出 11.1 版 driver 後, 就無此問題了&lt;br /&gt;(網路上有個能去除的 script,&lt;br /&gt;但是我試用發現僅對手動安裝的AMD driver有效,&lt;br /&gt;如果是透過apt 安裝的版本並無效果)&lt;br /&gt;&lt;br /&gt;如果有類似考量者, 建議可以考慮 NB550D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-8427478534874369064?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/8427478534874369064/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=8427478534874369064' title='7 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/8427478534874369064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/8427478534874369064'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2011/01/linux-netbook-toshiba-nb550d.html' title='理想的 Linux Netbook - Toshiba NB550D'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-5887494467185134258</id><published>2010-11-12T04:17:00.000-08:00</published><updated>2010-11-12T04:17:03.034-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>AMD Phenom X4 9450e vs Core i5 430M</title><content type='html'>這樣比較, 是蠻怪的&lt;br /&gt;主要是因為近日升級了原有桌機 Acer Aspire X3200&lt;br /&gt;自 Athlon 64 X2 4400+ 換成 Phenom X4 9450e&lt;br /&gt;(礙於X3200 僅有 220W的電源, 搭配 ATI 5570 1GB 顯卡)&lt;br /&gt;而目前在用的 Notebook 用的是MSI CX420其CPU為Core i5 430M&lt;br /&gt;&lt;br /&gt;沒有做甚麼各項評比,無論NB/Desktop換硬體都是希望編譯時間短些&lt;br /&gt;&lt;br /&gt;兩者都以 make -j8 方式去編譯同一份 Android code&lt;br /&gt;Phemon X4 9450e: 44 mins&lt;br /&gt;Core i5 430M:&amp;nbsp; 50mins&lt;br /&gt;&lt;br /&gt;參照PassMark 的&lt;a href="http://www.cpubenchmark.net/high_end_cpus.html"&gt;評比分數&lt;/a&gt;&lt;br /&gt;Phenom X4 9450e: 2663&lt;br /&gt;Core i5 430M: 2361&lt;br /&gt;&lt;br /&gt;換算下來的確 2663x44(117172) 約略等同 2361x50(118050)&lt;br /&gt;看來PassMark還蠻值得參考的&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-5887494467185134258?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/5887494467185134258/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=5887494467185134258' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/5887494467185134258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/5887494467185134258'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2010/11/amd-phenom-x4-9450e-vs-core-i5-430m.html' title='AMD Phenom X4 9450e vs Core i5 430M'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-6057776313341833274</id><published>2010-10-27T22:14:00.000-07:00</published><updated>2010-10-27T22:14:16.940-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Clang 成功編譯能運作的 Linux kernel 2.6.36</title><content type='html'>Linux 2.6.36 在上週釋出了&lt;br /&gt;關心進展的可以追 &lt;a href="http://kernelnewbies.org/Linux_2_6_36"&gt;KernelNewbie&lt;/a&gt; 和 &lt;a href="http://www.h-online.com/open/features/What-s-new-in-Linux-2-6-36-1103009.html"&gt;The H Open Source&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;著名的 LLVM 的 C frontend - &lt;a href="http://clang.llvm.org/"&gt;Clang&lt;/a&gt;&lt;br /&gt;繼去年宣佈能成功編譯 FreeBSD kernel 之後&lt;br /&gt;&lt;a href="http://lwn.net/Articles/411654/"&gt;LWN 上得知&lt;/a&gt;, 現在已經能夠編譯能運作的 Linux 2.6.36 Kernel&lt;br /&gt;&lt;br /&gt;相信不久之後, 除了GCC 外 編譯 Linux 就有 Clang 這個新選擇&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-6057776313341833274?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/6057776313341833274/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=6057776313341833274' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/6057776313341833274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/6057776313341833274'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2010/10/clang-linux-kernel-2636.html' title='Clang 成功編譯能運作的 Linux kernel 2.6.36'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-5210733715238669890</id><published>2010-10-20T22:37:00.000-07:00</published><updated>2010-10-20T22:37:11.325-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><title type='text'>急起直追的 Firefox 4</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_NqrwyXvfMh4/TL_PQL_A_JI/AAAAAAAABdY/GlmbhZWxcRg/s1600/firefox.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_NqrwyXvfMh4/TL_PQL_A_JI/AAAAAAAABdY/GlmbhZWxcRg/s1600/firefox.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;跨入十月之後, Firefox帶來了值得高興的消息&lt;br /&gt;從持續紀錄 Firefox 最新 JavaScript 效能的&lt;a href="http://arewefastyet.com/"&gt;arewefastyet&lt;/a&gt;網站上&lt;br /&gt;&lt;br /&gt;Firefox 在自己的 sunspider 與 Google 的 v8bench 兩項效能評估指標&lt;br /&gt;都有超越 Apple Nitro 的成績&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_NqrwyXvfMh4/TL_K66TZKMI/AAAAAAAABdU/3Pt_b3rQDWA/s1600/arewefastyet_june.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="209" src="http://1.bp.blogspot.com/_NqrwyXvfMh4/TL_K66TZKMI/AAAAAAAABdU/3Pt_b3rQDWA/s320/arewefastyet_june.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;上圖為 6月時 Firefox對比於 Apple Nitro/Google V8 優勢的窘境&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;隨著網頁技術的演進, 瀏覽器的角色日益重要&lt;br /&gt;新興瀏覽器(Chrome, Opera, IE9)皆有著不錯的技術背景&lt;br /&gt;Firefox 新的競爭者重心由以往的 IE6/7 轉向了這些新挑戰者&lt;br /&gt;&lt;br /&gt;回顧在6月時, chrome v8/apple nitro 對於firefox 還是如此的遙不可及&lt;br /&gt;在Chrome的蠶食逼近, IE9 的改頭換面下&lt;br /&gt;甚至有要Mozilla放棄自有的 Gecko 投入 Webkit 的言論出現&lt;br /&gt;&lt;br /&gt;在Chrome V8點燃的瀏覽器 JavaScript 效能競爭&lt;br /&gt;並隨著之後HTML5取代Flash 以及 GPU在網頁瀏覽的應用等話題&lt;br /&gt;新的瀏覽器戰爭已經揭開了序幕&lt;br /&gt;&lt;br /&gt;在以 Firefox 揭開瀏覽器革命時代之後&lt;br /&gt;Mozilla再次用行動向大眾證明了維護 Firefox/Gecko 技術平台的信念&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-5210733715238669890?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/5210733715238669890/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=5210733715238669890' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/5210733715238669890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/5210733715238669890'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2010/10/firefox-4.html' title='急起直追的 Firefox 4'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_NqrwyXvfMh4/TL_PQL_A_JI/AAAAAAAABdY/GlmbhZWxcRg/s72-c/firefox.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-1245702925142412822</id><published>2010-10-20T18:53:00.000-07:00</published><updated>2010-10-20T18:53:27.467-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>續 Xubuntu On MSI CX420 - RT3070 dkms support</title><content type='html'>昨日更新系統到 Xubuntu 10.10&lt;br /&gt;&lt;br /&gt;由於kernel版本更新, 一再重複安裝 rt3070 驅動程式, 也是相當煩瑣&lt;br /&gt;想要讓它像目前使用的 fglrx 一樣透過dkms 更新&lt;br /&gt;&lt;br /&gt;其實一方面也是因為沒嘗試過dkms&lt;br /&gt;於是參考了&lt;a href="http://www.halibutdepot.org/how_to_build_rt3090_for_ubuntu_lucid/"&gt;RT3090的範例&lt;/a&gt;, 昨晚花了點時將 rt3070 driver 打包為 dkms 形式&lt;br /&gt;&lt;br /&gt;由於kernel 2.6.35改動了一些usb function的名稱, 所以ubuntu 10.04 與 10.10 稍有不同&lt;br /&gt;(其實正確來說是 kernel &amp;lt;= 2.6.34 用 10.04, kernel &amp;gt;= 2.6.35 用10.10)&lt;br /&gt;有需要者請自行取用: &lt;a href="https://sites.google.com/site/champyen/Home/rt3070-dkms_2.3.0.4-ubuntu10.04_all.deb?attredirects=0&amp;amp;d=1"&gt;10.04版&lt;/a&gt; &lt;a href="https://sites.google.com/site/champyen/Home/rt3070-dkms_2.3.0.4-ubuntu10.10_all.deb?attredirects=0&amp;amp;d=1"&gt;10.10版&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;後註: 其實 RALINK 官網上有對應新版的 RT3370 驅動程式, 然而 dmesg 看來雖然有驅動, 但卻無法正常運作, 所以這裡使用的是次新的版本, 有時間再來看新版的問題&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-1245702925142412822?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/1245702925142412822/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=1245702925142412822' title='5 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/1245702925142412822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/1245702925142412822'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2010/10/xubuntu-on-msi-cx420-rt3070-dkms.html' title='續 Xubuntu On MSI CX420 - RT3070 dkms support'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-1161700439239875506</id><published>2010-10-09T05:14:00.000-07:00</published><updated>2010-10-09T05:14:04.373-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='meego'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><title type='text'>Meego on OpenSuse - Smeegol</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_NqrwyXvfMh4/TLBZARz81bI/AAAAAAAABcs/gfyE3STb6TA/s1600/Smeegol.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://1.bp.blogspot.com/_NqrwyXvfMh4/TLBZARz81bI/AAAAAAAABcs/gfyE3STb6TA/s320/Smeegol.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;上圖為在 EeePC 701 上安裝後調整的效果&lt;br /&gt;(Wifi icon旁原有bluetooth的icon, eeepc沒有就移除掉了)&lt;br /&gt;&lt;br /&gt;OpenSuse 近日發布了 Meego 的&lt;a href="http://news.opensuse.org/2010/10/06/announcing-smeegol-1-0/"&gt;新聞&lt;/a&gt;&lt;br /&gt;該計畫有個有趣的名字 - Smeegol (Suse Meego Linux, 諧音於Lord of Ring中的角色),&amp;nbsp; &lt;br /&gt;LiveCD 的下載位址&lt;a href="http://download.opensuse.org/repositories/Meego:/Netbook/images/iso/"&gt;在此&lt;/a&gt; &lt;br /&gt;使用 LiveCD 開機後選取 Yast-&amp;gt;Live Installer 就可以安裝好&lt;br /&gt;&lt;br /&gt;由於這個Smeegol計畫, 所以初嘗Suse的系統&lt;br /&gt;老實說支援很不錯, zypper也很好用&lt;br /&gt;安裝在 EeePC 701 上, 效果算很不錯 (讓我的EPC 701 有復活的fu)&lt;br /&gt;Meego社交網站整合已經有很多平台了&lt;br /&gt;包含 flickr, facebook, twitter, last.fm, MySpace, digg 等&amp;nbsp; &lt;br /&gt;&lt;br /&gt;由於政治因素, 很可惜 Meego 官方比較親近 rpm 體系&lt;br /&gt;所以目前 Debian/Ubuntu 沒有正式支援 Meego  &lt;br /&gt;(是有人嘗試編譯 Meego UX 安裝在 Debian 上, 並且有所成果)&lt;br /&gt;雖然Canonical很用心的建構 Ubuntu Netbook Unity&lt;br /&gt;但單以User Experience來看, 個人比較看好 Meego&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-1161700439239875506?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/1161700439239875506/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=1161700439239875506' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/1161700439239875506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/1161700439239875506'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2010/10/meego-on-opensuse-smeegol.html' title='Meego on OpenSuse - Smeegol'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_NqrwyXvfMh4/TLBZARz81bI/AAAAAAAABcs/gfyE3STb6TA/s72-c/Smeegol.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-6893280240986786778</id><published>2010-09-22T09:44:00.000-07:00</published><updated>2010-09-22T09:44:03.542-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>續 Xubuntu On MSI CX420</title><content type='html'>由於有人向我詢問CX420 WIFI on Ubuntu 的驅動方式&lt;br /&gt;&lt;br /&gt;近日我針對ubuntu 10.04打包了最新版本的driver&lt;br /&gt;有需要者可以下載 &lt;a href="https://sites.google.com/site/champyen/Home/rt3070usb-drv-2.6.34-24-generic_i386.deb?attredirects=0&amp;amp;d=1"&gt;i386版&lt;/a&gt; 與 &lt;a href="https://sites.google.com/site/champyen/Home/rt3070usb-drv-2.6.34-24-generic_amd64.deb?attredirects=0&amp;amp;d=1"&gt;amd64版&lt;/a&gt;&lt;br /&gt;有人回報結果是可以正常驅動的&lt;br /&gt;&lt;br /&gt;下載測試者, 煩請留言告知版本與狀況&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-6893280240986786778?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/6893280240986786778/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=6893280240986786778' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/6893280240986786778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/6893280240986786778'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2010/09/xubuntu-on-msi-cx420.html' title='續 Xubuntu On MSI CX420'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-5604936082044015640</id><published>2010-09-02T17:50:00.000-07:00</published><updated>2010-09-02T17:50:50.762-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Blogger 的另類用途</title><content type='html'>在碩士時期, 曾因為lab計劃認識一個很不錯的朋友&lt;br /&gt;當時就曾聽他說打算要出國留學的事情&lt;br /&gt;&lt;br /&gt;後來隨著lab計劃的告一段落, 加上之後各奔東西&lt;br /&gt;雖曾斷續地聽到它的消息, 但也就因此失了聯絡&lt;br /&gt;&lt;br /&gt;昨日驚喜地收到他寄來的 Email&lt;br /&gt;即將要取得學位了,我在這裡也再次恭喜他&lt;br /&gt;&lt;br /&gt;只是我沒想過 blogger 還有這點功用 ^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-5604936082044015640?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/5604936082044015640/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=5604936082044015640' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/5604936082044015640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/5604936082044015640'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2010/09/blogger.html' title='Blogger 的另類用途'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-1737860545704399235</id><published>2010-08-26T20:52:00.000-07:00</published><updated>2010-08-26T20:52:56.083-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='multimedia'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>HiRadioTray 20100826 release</title><content type='html'>近日 Ubuntu 10.04 的軟體更新, 更新內容包含了 wxwidget library&lt;br /&gt;因此造成了 HiRadioTray 的問題&lt;br /&gt;&lt;br /&gt;已經重新打包放在&lt;a href="http://code.google.com/p/hiradiotray/downloads/list"&gt;專案下載頁面&lt;/a&gt;&lt;br /&gt;需要者請自行下載更新&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-1737860545704399235?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/1737860545704399235/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=1737860545704399235' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/1737860545704399235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/1737860545704399235'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2010/08/hiradiotray-20100826-release.html' title='HiRadioTray 20100826 release'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-1606085397971719538</id><published>2010-08-18T08:44:00.000-07:00</published><updated>2010-08-18T08:44:57.078-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Linux Kernel 2.6.35</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_NqrwyXvfMh4/SeKjLYK2hoI/AAAAAAAAAzg/pZOha5v3C6g/s1600/sit3-shine.7.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/_NqrwyXvfMh4/SeKjLYK2hoI/AAAAAAAAAzg/pZOha5v3C6g/s200/sit3-shine.7.gif" width="181" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;基本上這是舊聞了&lt;br /&gt;Linux Kernel 2.6.35 於 Aug. 1st. 2010 釋出&lt;br /&gt;按慣例, 相關的更動細節可以至 &lt;a href="http://kernelnewbies.org/Linux_2_6_35"&gt;KernelNewbies&lt;/a&gt; 看&lt;br /&gt;The H Open 也有篇詳細的 &lt;a href="http://www.h-online.com/open/features/What-s-new-in-Linux-2-6-35-1047707.html"&gt;What's New in Linux 2.6.35&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;簡單說這版的改進主要在於網路效能與功能上的增進&lt;br /&gt;&lt;br /&gt;像是能更有效的分散網路流量的loading 到 CPUs 上, 相信這對 server 效能有一定的增進&lt;br /&gt;在者就是支援多個 Multicast(群播) 的 routing table &lt;br /&gt;&lt;br /&gt;相信許多人會感到興趣的 i915 對於 VC1, H.264 的硬體加速支援&lt;br /&gt;改善了對於AMD ATI Radeon的支援(主要是系統上的, 像是reset與降低功耗, 而非效能上)&lt;br /&gt;&lt;br /&gt;另外檔案系統上改善了 Btrfs/XFS &lt;br /&gt;&lt;br /&gt;最後引人注目的核心改進功能是 Memory Compaction&lt;br /&gt;Memory Compaction 對於實體記憶體管理有相當的影響&lt;br /&gt;其功能主要在減少 memory 中的 fragmentation (斷離)&lt;br /&gt;並且增加實體上連續的free pages供核心系統與驅動程式應用 &lt;br /&gt;&lt;br /&gt;簡短的列舉到此,有興趣的趕快去挖寶吧~&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-1606085397971719538?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/1606085397971719538/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=1606085397971719538' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/1606085397971719538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/1606085397971719538'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2010/08/linux-kernel-2635.html' title='Linux Kernel 2.6.35'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_NqrwyXvfMh4/SeKjLYK2hoI/AAAAAAAAAzg/pZOha5v3C6g/s72-c/sit3-shine.7.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-746858680032961961</id><published>2010-08-18T03:54:00.000-07:00</published><updated>2010-08-18T07:15:30.739-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Emerald 佈景 - Moka.改</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_NqrwyXvfMh4/TGu3JPr90WI/AAAAAAAABbo/K-8Wxg6l9u4/s1600/Emerald.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="211" src="http://4.bp.blogspot.com/_NqrwyXvfMh4/TGu3JPr90WI/AAAAAAAABbo/K-8Wxg6l9u4/s320/Emerald.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;自從為了簡潔因素而改用 Xubuntu 後&lt;br /&gt;即無法繼續在EeePC 701/900上使用GNOME上慣用的&lt;a href="http://gnome-look.org/content/show.php/Almond+%285+version%29?content=39632"&gt;Almond Mini&lt;/a&gt; metacity佈景&lt;br /&gt;(主要還是因為其Window Decoration 佔用空間小)&lt;br /&gt;為了享受Desktop的硬體加速, 個人習慣使用 Compiz (scrollbar 比較順...)&lt;br /&gt;而xfwm無法在compiz下使用, 而必須以 Emerald 取代&lt;br /&gt;原本用的是仿 Xubuntu 下預設的 Albatross 佈景&lt;br /&gt;無奈於視覺上感覺佔用了太多空間&lt;br /&gt;&lt;br /&gt;搜尋了一下 Emerald 佈景, 發現可以接受的 &lt;a href="http://compiz-themes.org/content/show.php/Moka?content=111986"&gt;Moka 佈景&lt;/a&gt;&lt;br /&gt;按鈕圖案上, 個人偏愛&lt;a href="http://compiz-themes.org/content/show.php/Shiki+Minimal+Match+Emerald+Theme?content=107184"&gt;Shiki Minimal Match&lt;/a&gt;所使用的風格&lt;br /&gt;(Shiki Minimal主要在於視窗沒有文字標題) &lt;br /&gt;於是花了點時間做圖案的剪裁與替換&lt;br /&gt;修改inactive window 的標題文字顯示(看設定是有顯示, 但是根本看不出來)&lt;br /&gt;並且減少了Window Border(3-&amp;gt;2)&lt;br /&gt;效果上比原有 Moka 來得令我滿意&lt;br /&gt;有興趣者可以&lt;a href="https://sites.google.com/site/champyen/Home/Moka_Modified.emerald?attredirects=0&amp;amp;d=1"&gt;到此&lt;/a&gt;下載&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-746858680032961961?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/746858680032961961/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=746858680032961961' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/746858680032961961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/746858680032961961'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2010/08/emerald-moka.html' title='Emerald 佈景 - Moka.改'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_NqrwyXvfMh4/TGu3JPr90WI/AAAAAAAABbo/K-8Wxg6l9u4/s72-c/Emerald.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-4498499957590422499</id><published>2010-08-15T08:32:00.000-07:00</published><updated>2010-08-15T08:34:43.313-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>續 Firefox on Netbook</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_NqrwyXvfMh4/TFxBgHuaUyI/AAAAAAAABbE/zSmcq0cP5dc/s1600/firefox_netbook.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://1.bp.blogspot.com/_NqrwyXvfMh4/TFxBgHuaUyI/AAAAAAAABbE/zSmcq0cP5dc/s320/firefox_netbook.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;在女兒開始會爬之後, 就需要有人隨時在側的陪伴&lt;br /&gt;原本用來利用來做監視系統的EeePC 701也就又成為我的床頭機&lt;br /&gt;&lt;br /&gt;在長時間不常使用 800x480 解析度後, 對於垂直解析度的浪費變得更無法容忍&lt;br /&gt;對於這樣的topic原本寫了篇&lt;a href="http://champyen.blogspot.com/2009/05/firefox-on-netbook.html"&gt;Firefox on Netbook&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;經過如此調整後 titlebar 還是覺得太粗了&lt;br /&gt;於是又加入 &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/3699/"&gt;Compact Classic&lt;/a&gt; 與 &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/6969/"&gt;Compact Classic Options&lt;/a&gt;&lt;br /&gt;最後就是把系統的 task panel 改為直式&lt;br /&gt;&lt;br /&gt;這麼一來就從畫面上榨出最後的垂直顯示空間&lt;br /&gt;使用 FireBBS 甚至還可以將字型大小設到 18, 還算堪用&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-4498499957590422499?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/4498499957590422499/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=4498499957590422499' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4498499957590422499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4498499957590422499'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2010/08/firefox-on-netbook.html' title='續 Firefox on Netbook'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_NqrwyXvfMh4/TFxBgHuaUyI/AAAAAAAABbE/zSmcq0cP5dc/s72-c/firefox_netbook.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-1039085106916254758</id><published>2010-08-09T06:16:00.000-07:00</published><updated>2010-08-09T06:16:15.599-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='multimedia'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>HiRadioTray 20100809 release</title><content type='html'>對於 HiRadioTray 的維護是對於使用者比較抱歉的地方&lt;br /&gt;並沒有投入相當的時間在維護與更新上&lt;br /&gt;今日將 script 更新並且針對ubuntu 10.04 i386/amd64 編譯並提供兩個版本&lt;br /&gt;&lt;br /&gt;有需要者請到&lt;a href="http://code.google.com/p/hiradiotray/downloads/list"&gt;下載頁面&lt;/a&gt;下載&lt;br /&gt;&lt;br /&gt;新的 script 使用更新功能也可以下載&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-1039085106916254758?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/1039085106916254758/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=1039085106916254758' title='9 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/1039085106916254758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/1039085106916254758'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2010/08/hiradiotray-20100809-release.html' title='HiRadioTray 20100809 release'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-4440141212842658037</id><published>2010-07-22T07:05:00.000-07:00</published><updated>2010-07-22T07:58:52.864-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='office'/><title type='text'>Office 軟體的新選擇 - IBM Lotus Symphony 3</title><content type='html'>Linux 桌面使用者對於 OpenOffice 都不陌生&lt;br /&gt;OpenOffice 的確也逐漸成熟了, 儘管功能性上已經很充足&lt;br /&gt;然而在易用與便利性上的確還有許多改善空間&lt;br /&gt;&lt;br /&gt;近日安裝 Xubuntu 想安裝 OpenOffice 時忽然想起沈寂已久的 Lotus Symphony&lt;br /&gt;IBM 在三年前推出 OpenOffice 1.x 為基礎的 Lotus Symphony 1.x 後&lt;br /&gt;很可惜的是當年OpenOffice 以進展至 2.x 相容性與速度上都領先不少&lt;br /&gt;&lt;br /&gt;跑去&lt;a href="http://symphony.lotus.com/software/lotus/symphony/home.nsf/home"&gt;IBM Lotus Symphony&lt;/a&gt;官網看了之後, 大為驚人&lt;br /&gt;Lotus Symphony 竟然悄悄推出 Symphony 3 beta 而且已經進展到 beta 3&lt;br /&gt;官方的說明是 Lotus Symphony 是建構在 OpenOffice 3 上&lt;br /&gt;搜尋了一下, 繁中網頁竟然少有資訊, 也沒有任何介紹(或許得拜台灣教育與盜版成功吧..)&lt;br /&gt;除了有 Ubuntu 版本外還有 Windows, Mac OS X 與 RedHat 版本, 下載安裝後, 除了一開始一堆問號似乎是 License 的資訊&lt;br /&gt;&lt;br /&gt;下圖為啟動程式後, 映入眼中的第一個畫面, 安裝後語言套件後即有中文&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NqrwyXvfMh4/TEhVtZljrnI/AAAAAAAABZ4/G9XDAMhE_SY/s1600/Symphony_Start.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 230px;" src="http://3.bp.blogspot.com/_NqrwyXvfMh4/TEhVtZljrnI/AAAAAAAABZ4/G9XDAMhE_SY/s400/Symphony_Start.png" alt="" id="BLOGGER_PHOTO_ID_5496737583656578674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;網路上隨便找個 DOC 檔來開看看, 介面的配置看來很適合寬螢幕&lt;br /&gt;UI 的配色與格式看來有再設計過, 1.x 版的顯得比較擁擠&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_NqrwyXvfMh4/TEhWdSz2kTI/AAAAAAAABaA/jhubliJNZ_s/s1600/Symphony_Documents.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 230px;" src="http://2.bp.blogspot.com/_NqrwyXvfMh4/TEhWdSz2kTI/AAAAAAAABaA/jhubliJNZ_s/s400/Symphony_Documents.png" alt="" id="BLOGGER_PHOTO_ID_5496738406471209266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;再開個 XLS 檔來看看, 這時有特別的感覺了, 維持了一貫的分頁設計&lt;br /&gt;但是 Lotus Symphony 3 有做小 icon 的區別, 1.x 都是 Symphony icon&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_NqrwyXvfMh4/TEhXz-sPZJI/AAAAAAAABaI/zd0KeVQ3jCs/s1600/Symphony_Spreadsheets.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 230px;" src="http://1.bp.blogspot.com/_NqrwyXvfMh4/TEhXz-sPZJI/AAAAAAAABaI/zd0KeVQ3jCs/s400/Symphony_Spreadsheets.png" alt="" id="BLOGGER_PHOTO_ID_5496739895719191698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;接著開個 ODP 簡報檔, 在製作時, 我覺得頗為 Smart, 當你做不同屬性的編輯時&lt;br /&gt;右側的頁面會自動切換於不同個功能頁面, 下圖為開啟預設介面&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NqrwyXvfMh4/TEhZ5VWL4KI/AAAAAAAABaQ/TgeA0B0yRBc/s1600/Symphony_Presentations_1.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 230px;" src="http://3.bp.blogspot.com/_NqrwyXvfMh4/TEhZ5VWL4KI/AAAAAAAABaQ/TgeA0B0yRBc/s400/Symphony_Presentations_1.png" alt="" id="BLOGGER_PHOTO_ID_5496742186723303586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;選取方塊物件, 右方立刻可以編輯顏色, 外框等資訊&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NqrwyXvfMh4/TEhaE5DRD8I/AAAAAAAABaY/0SzFNeKMCgU/s1600/Symphony_Presentations_2.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 230px;" src="http://3.bp.blogspot.com/_NqrwyXvfMh4/TEhaE5DRD8I/AAAAAAAABaY/0SzFNeKMCgU/s400/Symphony_Presentations_2.png" alt="" id="BLOGGER_PHOTO_ID_5496742385286188994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;選擇編輯文字方塊, 旁邊便是字型選擇, 大小, 顏色&lt;br /&gt;甚至是行距的調整&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NqrwyXvfMh4/TEhaSlqylGI/AAAAAAAABag/8qiGMMTdadc/s1600/Symphony_Presentations_3.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 230px;" src="http://3.bp.blogspot.com/_NqrwyXvfMh4/TEhaSlqylGI/AAAAAAAABag/8qiGMMTdadc/s400/Symphony_Presentations_3.png" alt="" id="BLOGGER_PHOTO_ID_5496742620601422946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;試用幾天後, 個人覺得雖然記憶體消耗較高些&lt;br /&gt;然而 Lotus Symphony 3 的便利性相當令人滿意&lt;br /&gt;如果看膩了 OOo 較為單調的介面, 不妨試試看新的 Lotus Symphony 3&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-4440141212842658037?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/4440141212842658037/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=4440141212842658037' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4440141212842658037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4440141212842658037'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2010/07/office-ibm-lotus-symphony-3.html' title='Office 軟體的新選擇 - IBM Lotus Symphony 3'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_NqrwyXvfMh4/TEhVtZljrnI/AAAAAAAABZ4/G9XDAMhE_SY/s72-c/Symphony_Start.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-795160096027837184</id><published>2010-07-21T07:17:00.000-07:00</published><updated>2010-07-26T22:59:35.446-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='multimedia'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>淺談 OpenCore execution model</title><content type='html'>由於新工作與 OpenCore 有關, 前輩考量到未來對效能調整, 希望我能了解 OpenCore 架構&lt;br /&gt;為此而稍微細看OpenCore, 感到非常"新奇", "有趣"&lt;br /&gt;&lt;br /&gt;在此先不細談 OpenCore 整體 Object Model, 而這部份網路上的談論也不少&lt;br /&gt;大致上即是分為 Engine - PVMF Node - Component 三層&lt;br /&gt;&lt;br /&gt;這裡談 OpenCore 中的執行運作模式&lt;br /&gt;或許是OpenCore 受到 Symbian Active Object Framework 諸多影響(文件上也有諸多Symbian字眼)&lt;br /&gt;基本上, 對於Symbian 個人認知不深&lt;br /&gt;然而對於OpenCore這樣注重 realtime 特性的 Multimedia Framework 採用這樣的方式感到"新奇"&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_NqrwyXvfMh4/TEcCdYtg7CI/AAAAAAAABZw/BdGhgGiTZkI/s1600/opencore_exec.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5496364574101793826" src="http://3.bp.blogspot.com/_NqrwyXvfMh4/TEcCdYtg7CI/AAAAAAAABZw/BdGhgGiTZkI/s400/opencore_exec.jpg" style="cursor: pointer; height: 300px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;上圖為運作的圖解&lt;br /&gt;OpenCore 內基本執行單位為 PVActiveBase&lt;br /&gt;而衍生出的 class 為 OsclActiveObject(AO) 與 OsclTimerObject(TO)&lt;br /&gt;實作中需要被執行的元件繼承 AO or TO&lt;br /&gt;而每個繼承AO/TO的類別需要個別實作其要不斷被執行的 Run() 介面&lt;br /&gt;&lt;br /&gt;OpenCore 執行模式為 single thread&lt;br /&gt;在 OsclScheduler::BlockLoopL() 這個無線迴圈當中&lt;br /&gt;透過 WaitForActiveObject() 來取得下一個需要被執行的AO/TO&lt;br /&gt;接著呼叫 CallRunExec() 來執行 AO/TO 的 Run()&lt;br /&gt;&lt;br /&gt;對於規劃中需要被執行的AO/TO物件&lt;br /&gt;只要沒腦地執行 PVActiveBase::AddToScheduler() 即可&lt;br /&gt;接著便會依序被執行該AO/TO所實作的 Run()&lt;br /&gt;&lt;br /&gt;看似簡單的行為, 然而直覺操作上卻讓人毫無頭緒&lt;br /&gt;是的, 介面上無需透過具體的 scheduler instance, 從何來, 哪裡去就像黑盒子般&lt;br /&gt;這點一時間讓我有點難以接受&lt;br /&gt;細看實作上透過 macro 的方式取得 current thread 的 scheduler&lt;br /&gt;只能說如此的 execution model 機制顯得不太clean&lt;br /&gt;這樣的 model 基本上如果是為了 single thread/co-operative multitasking 的考量&lt;br /&gt;也算說得過去, 只能說真的不是很優雅與直覺&lt;br /&gt;&lt;br /&gt;再來, 其中最有趣的一點便在於 OsclTimer  與  PVMFMediaClock 這兩個 timer 類別&lt;br /&gt;實作中AO/TO通常向此兩者註冊callback function 希望通知特定 time event 的發生&lt;br /&gt;OsclTimer (oscl/oscl/osclproc/src/oscl_timer.h) 仰賴著 CallbackTimer&lt;br /&gt;CallbackTimer 繼承自 "OsclTimerObject" ~ Wow~&lt;br /&gt;看看 PVMFMediaClock (pvmi/pvmf/include/pvmf_media_clock.h)&lt;br /&gt;一堆繼承物件中, 第一個物件即為 "OsclTimerObject"&lt;br /&gt;而兩者的 Constructor 都呼叫了 AddToScheduler()&lt;br /&gt;其時間的資訊是去 polling 系統的 OsclTickCount 得知&lt;br /&gt;&lt;br /&gt;這麼看來 Timer 這點可"有趣"了, Timer 的運作與通知機制也仰賴著這個 BlockLoopL&lt;br /&gt;而如果某一 AO/TO Run() 稍微久一點, Timer Event 可能就失真不少&lt;br /&gt;&lt;br /&gt;ex:&lt;br /&gt;試想, 假若一個 decoder 具有硬體加速, 然而 interrupt 有問題&lt;br /&gt;因此採用 polling 方式以得知硬體狀態&lt;br /&gt;component 中期望 timer 能夠每 10 ms 通知一次,&lt;br /&gt;方便於 check 硬體狀態來決定是否要命令硬體 decode 下一張 frame&lt;br /&gt;而在此同時 audio decoder 為軟體實作, 每解一個單位需要 30ms&lt;br /&gt;這麼一來 ......&lt;br /&gt;&lt;br /&gt;是的, 如果要遷就這樣的 model, 每個 component 實作上必須特別考量到 timing&lt;br /&gt;而軟體實作上可能必須是 progressive 的方式, 不要一次將全部結果解出, 減少 Run() 單一執行時間長度&lt;br /&gt;以這樣的方式, 來換得 timing 的精確度&lt;br /&gt;&lt;br /&gt;如果是為了遷就不用 thread 而使用這樣的 timer 實作呢?&lt;br /&gt;那 Audio 處理與 proxy interface 中就不該大剌剌地使用 OsclThread&lt;br /&gt;&lt;br /&gt;anyway, 很高興在 trace 期間自 jserv 那聽到 2.2 已是預設的 StageFright&lt;br /&gt;雖然目前實作不若 OpenCore 完整, 然而看來就個人的理解是"正常"多了 ...&lt;br /&gt;&lt;br /&gt;20100727 後記: 應該好好說明一下 proxy interface, 其實本文中舉的例子並不一定會出現, 這裡用這樣的例子來解釋這樣的方式的問題, 文中例子的發生與否取決於是否使用proxy interface(是的, 這是compile option, 而且意義並非網路proxy), 在OpenCORE 中 codec 以 openmax 封裝為 omx_xxx_component, 若透過 proxy interface 即 create 了各 codec 的 thread. 儘管 OpenCORE 中透過使用proxy interface如此與設計不同的方式來避開 codec 的時間問題, timer 依舊容易受到 system I/O 與 parser 之類的影響.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-795160096027837184?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/795160096027837184/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=795160096027837184' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/795160096027837184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/795160096027837184'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2010/07/opencore-execution-model.html' title='淺談 OpenCore execution model'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_NqrwyXvfMh4/TEcCdYtg7CI/AAAAAAAABZw/BdGhgGiTZkI/s72-c/opencore_exec.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-7802203680753866583</id><published>2010-07-20T06:12:00.000-07:00</published><updated>2010-07-20T07:19:19.108-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Xubuntu On MSI CX420</title><content type='html'>近日由於工作需要編譯 Android 環境, 原有的配有 Sempron Mobile 3800+ 筆電不敷使用&lt;br /&gt;到了附近的賣場看了後, 決定了購入新的筆電 - &lt;a href="http://tw.msi.com/index.php?func=proddesc&amp;amp;maincat_no=135&amp;amp;prod_no=1991"&gt;MSI CX420&lt;/a&gt;&lt;br /&gt;所俱備的性能與價格搭配看來是具有相當高性價比的機子&lt;br /&gt;&lt;br /&gt;當然, 拿到手第一件事當然是想辦法安裝 Linux 環境&lt;br /&gt;安裝本身並不是難事, 問題發生在安裝完成後&lt;br /&gt;&lt;br /&gt;1. 安裝 ATI 驅動程式, 無論透過 Ubuntu 的啟動ATI專有驅動程式, 或是手動安裝ATI Driver, 安裝後重新開機都會是黑螢幕(Yap, 為此我重裝一次....).&lt;br /&gt;這部份的線索是從 MSI CX420 驅動程式頁上對於 XP 需要設定 Primary Display為 PEG&lt;br /&gt;是的 Linux 同 XP 不支援 SG(Switchable Graphics) 特性&lt;br /&gt;需要刷新 BIOS 版本, 將 Primary Display 設為 PEG(PCI-Express Graphics)&lt;br /&gt;刷新後, 原本黑濛濛的畫面就變得非常亮眼~ (無需重裝Linux, 刷新後就正常了)&lt;br /&gt;&lt;br /&gt;2. Ralink 1T1R 802.11bgn 無線網路裝置無法驅動&lt;br /&gt;從 Windows 上可以看到為 USB 裝置, 也可以看到所在的 Port &amp;amp; Hub 位置&lt;br /&gt;於 Linux 上 lsusb 可以得到下列訊息:&lt;br /&gt;Bus 002 Device 002: ID 8087:0020&lt;br /&gt;Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;br /&gt;Bus 001 Device 003: ID 0db0:3870 Micro Star International&lt;br /&gt;Bus 001 Device 002: ID 8087:0020&lt;br /&gt;Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;br /&gt;&lt;br /&gt;喔!? 竟然顯示微星 (lsusb -v 的 verbose mode 也只能看出是 Ralink裝置, 就省略了)&lt;br /&gt;搜尋 device id 0db0:3870 可以看到 rt2800 的訊息&lt;br /&gt;加上看到MSI官網上的驅動程式, 解開後閱讀 inf, 標明為 rt2870, 第一時間我就以為是Ralink RT2870&lt;br /&gt;跑到 Ralink 的&lt;a href="http://www.ralinktech.com/support.php?s=2"&gt;Linux驅動程式頁面&lt;/a&gt;下載RT2870USB 驅動程式&lt;br /&gt;還自作聰明地將device id 加入來偵測, 結果是裝置驅動了, 然而無法scan ap 與連線&lt;br /&gt;不能 work 的 driver 等於沒有,  於是回到了原點&lt;br /&gt;&lt;br /&gt;接著想找社群的 open source 方案&lt;br /&gt;由於 google 0DB0 3870第一時間會看到&lt;a href="http://cateee.net/lkddb/web-lkddb/RT2800USB.html"&gt;這個頁面&lt;/a&gt;&lt;br /&gt;這表示 rt2800usb 還是與 CX420 上的裝置有關&lt;br /&gt;從&lt;a href="http://lxr.linux.no/#linux+v2.6.34.1/drivers/net/wireless/rt2x00/rt2800usb.c"&gt;頁面聯結的 rt2800usb.c&lt;/a&gt; 原始碼可以看到 裝置歸類於 RT2800USB_UNKNOWN&lt;br /&gt;然而這檔案看來也不是最新的, 當然立刻看 &lt;a href="http://lxr.linux.no/#linux+v2.6.34.1/drivers/net/wireless/rt2x00/rt2800usb.c"&gt;git.kernel.org 上最新的 rt2800usb.c&lt;/a&gt;&lt;br /&gt;ok, 這裝置在 rt2800usb driver  中被歸類為 RT2800USB_RT30XX&lt;br /&gt;於是, 這時恍然大悟, 被搞錯的型號也呼之欲出&lt;br /&gt;0x0db0:0x3870 的 Ralink USB 裝置應該為 RT3070&lt;br /&gt;重新去網頁下載RT3070USB驅動程式, WIFI 速度非常!&lt;br /&gt;&lt;br /&gt;到此終於解決了 Video 與 Wifi 兩大問題.&lt;br /&gt;WebCam 後來測試是ok的, bluetooth 我沒在用也就無從測起了..^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-7802203680753866583?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/7802203680753866583/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=7802203680753866583' title='6 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/7802203680753866583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/7802203680753866583'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2010/07/xubuntu-on-msi-cx420.html' title='Xubuntu On MSI CX420'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-2416187493454380536</id><published>2010-07-10T22:01:00.000-07:00</published><updated>2010-07-10T22:49:29.340-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>無意取悅小螢幕裝置的 Ubuntu Unity 介面</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_NqrwyXvfMh4/TDlUUYXJLQI/AAAAAAAABZM/wR2BwRq0KRo/s1600/ubuntu-unity.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 240px;" src="http://2.bp.blogspot.com/_NqrwyXvfMh4/TDlUUYXJLQI/AAAAAAAABZM/wR2BwRq0KRo/s400/ubuntu-unity.png" alt="" id="BLOGGER_PHOTO_ID_5492513929668668674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;近日注意到Ubuntu 新的Distribution - &lt;a href="http://www.canonical.com/engineering-services/oem-services/why-ubuntu/products"&gt;Ubuntu Light &lt;/a&gt;&lt;br /&gt;其 UI 系統稱之為 &lt;a href="http://www.markshuttleworth.com/archives/383"&gt;Unity&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;由於是屬於 Ubuntu Netbook Edition 的系列 UI&lt;br /&gt;於是就裝到 EeePC 701 上測試&lt;br /&gt;對於視覺呈現上並不滿意&lt;br /&gt;&lt;br /&gt;常用的 Web Browsing 應用即能顯示出 Unity 在 800x480 解析度上的不便&lt;br /&gt;首先, 螢幕上方的 toolbar 並無任何設定選項&lt;br /&gt;由於高度不夠, gcin icon 就被截去了一段&lt;br /&gt;側邊的 toolbar 很華麗, 整合了快速啟動與程式切換的功能&lt;br /&gt;於是, 高度就在上方的 toolbar 與 視窗 titlebar 雙重的浪費下, 垂直顯示範圍縮小不少&lt;br /&gt;不若原有UI 在使用顯示面積上來得有效率&lt;br /&gt;&lt;br /&gt;當然, 現今Netbook 提升至 10" 以上, 解析度上也高了一到兩階&lt;br /&gt;誰還在乎EeePC 701的 800x480?&lt;br /&gt;但是手持裝置的 MID(ex: SmartQ5/Q7), 中小型Tablet 這樣的解析度也是常有&lt;br /&gt;&lt;br /&gt;然而以定位看來 Unity 目標與適用範圍在於解析度夠高的 Netbook 與 iPad 等級的 Tablet&lt;br /&gt;這樣的結果看來也是無可厚非&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-2416187493454380536?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/2416187493454380536/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=2416187493454380536' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/2416187493454380536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/2416187493454380536'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2010/07/ubuntu-unity.html' title='無意取悅小螢幕裝置的 Ubuntu Unity 介面'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_NqrwyXvfMh4/TDlUUYXJLQI/AAAAAAAABZM/wR2BwRq0KRo/s72-c/ubuntu-unity.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-3930499231723250382</id><published>2010-06-15T04:25:00.000-07:00</published><updated>2010-06-15T05:06:16.780-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='vp8'/><title type='text'>VP8 spec study - Chapter 4 壓縮資料格式概論</title><content type='html'>每個frame的 bitstream 包含了3個以上的部份. 開頭為未壓縮資料, 在 intra frame 為 10 bytes, inter frame 為 3 bytes. 緊接著的是2個或以上的段落(被稱為 partition), 每個 partition 皆為 byte alignment.&lt;br /&gt;&lt;br /&gt;第一個 partition 包含兩個段落&lt;br /&gt;1. 套用於整個 frame 的 header 資訊&lt;br /&gt;2. per-macroblock 資訊, 指定讓 decoder 推測 macroblock 內容的 prediction mode.&lt;br /&gt;macroblock 資訊以 raster-scan 方式存放.&lt;br /&gt;&lt;br /&gt;剩餘的 partition 包含了每個 macroblock 用以計算 residue signal 的 DCT/WHT 參數(coefficient). 這部份大約佔用 70% 的資料量. VP8 支援將序列的 macroblock 壓縮後之 DCT/WHT 參數, pack 為分開的數個 partition. 若有不只一個 partition 用以存放這些 DCT/WHT 參數, 除了最後一個 partition 之外, 每個 partition 的位元長度, 以 little endian/3bytes 格式存放於每個 partition 的開頭. 長度欄位使得 decoder 能夠一次存取數個 partition,  平行處理這些參數.&lt;br /&gt;&lt;br /&gt;將 predicton data 與 coefficient data 分開於不同的partiton存放, 允許 decoder 的實作更有彈性. 實作可能先存放 frame prediction 資料, 之後再計算 frame 的 residue signal. 也有可能同時處理兩個 partition 資料以 macroblock 為單位計算 prediciton 與 residue signal.&lt;br /&gt;&lt;br /&gt;不同的 partition 必須以分開的 entropy decoder 解壓縮. 而 in-partition 的搜尋並不被支援.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-3930499231723250382?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/3930499231723250382/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=3930499231723250382' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/3930499231723250382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/3930499231723250382'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2010/06/vp8-spec-study-chapter-4.html' title='VP8 spec study - Chapter 4 壓縮資料格式概論'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-2871425207471246461</id><published>2010-05-20T00:30:00.000-07:00</published><updated>2010-05-20T01:59:33.205-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='multimedia'/><title type='text'>Google 公開 On2 VP8 Tech.</title><content type='html'>Google 又丟了一顆震憾彈, 在今日成立 &lt;a href="http://www.webmproject.org/"&gt;WebM&lt;/a&gt; 計劃&lt;br /&gt;該計劃以 BSD-License, royalty-free 方式公開釋出 VP8 格式標準與相關程式碼&lt;br /&gt;並同時地在 Youtube HTML5 beta 支援中加入了 VP8 支援&lt;br /&gt;&lt;br /&gt;儘管在Google 收購 On2 之後, 公開 VP8 的傳言就沒有斷過&lt;br /&gt;但看到&lt;a href="http://tech.slashdot.org/story/10/05/19/1753233/Theora-Development-Continues-Apace-VP8-Now-Open-Source"&gt;相關&lt;/a&gt;&lt;a href="http://www.osnews.com/story/23322/BREAKING_Google_Opens_VP8_Codec_Enables_it_on_YouTube"&gt;新聞&lt;/a&gt;的第一時間, 想法還只是圍繞在 VP8 規格&lt;br /&gt;之後細看與思考後, 才體會到這樣作法的背後可能有著多強的效應&lt;br /&gt;&lt;br /&gt;在視訊瀏覽服務以成為主流服務的今日&lt;br /&gt;這些服務以往多半只仰賴著 Adobe Flash 技術&lt;br /&gt;對於 Adobe 而言, Flash 平台可以說是金雞母, 對於 PC 有著極高的安裝率&lt;br /&gt;因此也理所當然成為網頁動態/互動效果與多媒體服務的一時之選&lt;br /&gt;&lt;br /&gt;然而對一些人對於Flash感到頭疼&lt;br /&gt;像是問題早已存在於既有的智慧型手機使用者&lt;br /&gt;因此手持裝置與非 x86 平台裝置開發商也對此感到感冒&lt;br /&gt;著名的有如: 蘋果的 Jobs 因為不支援 Flash 問題而動怒,&lt;br /&gt;ARM 也因為 Flash 延誤 Smartbook 市場策略而公開斥責&lt;br /&gt;意會到手機使用者的潛在市場的網站, 也增加了HTML5 的支援 (scribd, youtube...)&lt;br /&gt;&lt;br /&gt;這些林林總總與瀏覽器戰爭所帶來的教訓&lt;br /&gt;人們都意識到與其寄望單一廠商的開放, 不如訴諸公開標準&lt;br /&gt;在 Apple Inc. 提到 HTML5 後, 除了知名度大升之外, 的確也被人們寄予厚望.&lt;br /&gt;&lt;br /&gt;然而HTML5只是格式, 對於多媒體支援並無侷限.&lt;br /&gt;頓時&lt;a href="http://diveintohtml5.org/video.html"&gt;瀏覽器都必須選邊站&lt;/a&gt;, 於是就成了經濟實力的角力&lt;br /&gt;有錢人組的 Google, Microsoft, Apple 對於旗下瀏覽器HTML5 選擇支援 H.264&lt;br /&gt;支援公開標準組的 Mozilla, Opera, ... etc 選擇支援 Theora(事實上這是On2 的VP3技術)&lt;br /&gt;(這麼說是很簡化的說法, Google Chrome 也有支援 Theora)&lt;br /&gt;&lt;br /&gt;一時間, HTML5 的視訊支援的選擇陷入了分歧, 且少有交集&lt;br /&gt;H.264除了商業瀏覽器的採用外, 加上最大線上視訊服務 Youtube 採用&lt;br /&gt;可以說 H.264 在 HTML5 的視訊服務採用上佔有極大優勢&lt;br /&gt;&lt;br /&gt;或許 Google 意會到這與其網路服務業務有極大關係&lt;br /&gt;選擇在這樣的方式提供了兩個陣營都可以接受的方案(微軟第一時間也&lt;a href="http://www.osnews.com/story/23323/Microsoft_Internet_Explorer_9_To_Support_VP8"&gt;決定 IE9 將支援 VP8&lt;/a&gt;)&lt;br /&gt;同時地, Youtube HTML5 beta 服務也加入了 WebM(VP8) 的支援&lt;br /&gt;也因此 VP8 非常有可能成為 HTML5 中最被廣泛採用的視訊格式.&lt;br /&gt;&lt;br /&gt;儘管現在 Flash 依然在 Web 佔有相當重要的地位&lt;br /&gt;然而在 Adobe 開放不足, 加上缺乏善意的情況下&lt;br /&gt;當大眾有共識地要擺脫 Flash 的當下, Adobe 或許該好好反省&lt;br /&gt;不然 Flash 很有可能要面臨成為另一個 Java 的窘境.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-2871425207471246461?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/2871425207471246461/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=2871425207471246461' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/2871425207471246461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/2871425207471246461'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2010/05/google-on2-vp8-tech.html' title='Google 公開 On2 VP8 Tech.'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-5587624503552585258</id><published>2010-05-18T06:41:00.000-07:00</published><updated>2010-05-18T07:53:40.477-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Linux kernel 2.6.34</title><content type='html'>Linux kernel 2.6.34 日前釋出了, 在 &lt;a href="http://www.osnews.com/story/23312/Linux_2_6_34_Released"&gt;OSNews&lt;/a&gt; 與 &lt;a href="http://linux.slashdot.org/story/10/05/17/0218214/Linux-2634-Released?art_pos=21"&gt;slashdot&lt;/a&gt; 上已看得到相關新聞訊息&lt;br /&gt;概略的 kernel change log 可以參考 &lt;a href="http://kernelnewbies.org/Linux_2_6_34"&gt;KernelNewbies&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;除此之外, 推荐 The H Open 的在釋出之前就針對 Linux kernel 2.6.34 系列介紹文章&lt;br /&gt;&lt;a href="http://www.h-online.com/open/features/Kernel-Log-Coming-in-2-6-34-Part-1-Network-Support-975937.html"&gt;Kernel Log: Coming in 2.6.34 (Part 1) - Network Support&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.h-online.com/open/features/Kernel-Log-Coming-in-2-6-34-Part-2-File-Systems-985128.html"&gt;Kernel Log: Coming in 2.6.34 (Part 2) - File Systems&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.h-online.com/open/features/Kernel-Log-Coming-in-2-6-34-Part-3-Graphics-994262.html"&gt;Kernel Log: Coming in 2.6.34 (Part 3) - Graphics&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.h-online.com/open/features/Kernel-Log-Coming-in-2-6-34-Part-4-Architecture-and-virtualisation-998583.html"&gt;Kernel Log: Coming in 2.6.34 (Part 4) - Architecture and Virtualisation&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.h-online.com/open/features/Kernel-Log-Coming-in-2-6-34-Part-5-Drivers-999566.html"&gt;Kernel Log: Coming in 2.6.34 (Part 5) - Drivers&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;若是覺得把"落落長"的五篇看完太耗費精神,&lt;br /&gt;還可以看The H Open在釋出後的概略介紹文 - &lt;a href="http://www.h-online.com/open/features/What-s-new-in-Linux-2-6-34-1000122.html"&gt;What's new in Linux 2.6.34&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;個人覺得 slashdot 上第一則 comment 真的蠻無厘頭搞笑的..XD&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-5587624503552585258?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/5587624503552585258/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=5587624503552585258' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/5587624503552585258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/5587624503552585258'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2010/05/linux-kernel-2634.html' title='Linux kernel 2.6.34'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-1663085683749021942</id><published>2010-04-21T23:27:00.000-07:00</published><updated>2010-04-22T00:02:55.088-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VIA'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>VIA ARTiGO A1100 released</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.via.com.tw/en/images/products/embedded/artigo/a1100/a2000_6.jpg"&gt;&lt;img style="cursor: pointer; width: 600px; height: 499px;" src="http://www.via.com.tw/en/images/products/embedded/artigo/a1100/a2000_6.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;在facebook上注意到威盛電子(VIA) 本週釋出了新款 PicoITX-based 產品 &lt;a href="http://www.via.com.tw/en/products/embedded/artigo/a1100/index.jsp"&gt;ARTiGO A1100&lt;/a&gt;&lt;br /&gt;與上一代產品 &lt;a href="http://www.via.com.tw/en/products/embedded/artigo/a1000/index.jsp"&gt;ARTiGO A1000&lt;/a&gt; 最大的不同點在於:&lt;br /&gt;使用了新一代的 Via Nano 與 &lt;a href="http://www.via.com.tw/en/products/chipsets/v-series/vx855/"&gt;VX855 &lt;/a&gt;取代了原有的 Via C7 與 &lt;a href="http://www.via.com.tw/en/products/chipsets/v-series/vx700/"&gt;VX700&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;除了 Nano 所帶來的效能增進外&lt;br /&gt;由於VX855的關係, 視訊播放的硬體支援除了提升到1080p外&lt;br /&gt;格式上亦新增了H.264 (具有 CABAD, 看來應該到Main Profile)&lt;br /&gt;此外 ARTiGO A1100還具備了 HDMI 界面&lt;br /&gt;VIA 目的應該是想藉由強大的多媒體處理能力來吸引市場注目.&lt;br /&gt;(而這也是採用 ATOM 平台需要額外成本加強的部份)&lt;br /&gt;&lt;br /&gt;個人也在 facebook 上提到, 在 x86 市場操作/推廣上&lt;br /&gt;VIA 市場策略應盡量提升 x86 在消費性電子的應用性&lt;br /&gt;在主流的 Desktop/Notebook 上, 可以預見的是由於知名度, 與不願得罪intel等綜合因素&lt;br /&gt;VIA x86 PC接受度上依然是個問題&lt;br /&gt;加上提供的特性&amp;amp;價格上並無讓人眼睛一亮的感覺&lt;br /&gt;接著, 不錯的平台就容易掩蓋在 CPU性能 與價格的單一評比之中..&lt;br /&gt;&lt;br /&gt;購買請&lt;a href="http://tw.page.bid.yahoo.com/tw/auction/f15716599"&gt;到此&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-1663085683749021942?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/1663085683749021942/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=1663085683749021942' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/1663085683749021942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/1663085683749021942'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2010/04/via-artigo-a1100-released.html' title='VIA ARTiGO A1100 released'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-3540925496901503492</id><published>2010-04-06T00:18:00.000-07:00</published><updated>2010-04-06T04:39:04.119-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Firmware 沒有那麼容易 不只 Function Call 來 Call 去...</title><content type='html'>個人於上個月底離職了&lt;br /&gt;主要因素是需要一段時間休息運動和調養身體&lt;br /&gt;這段空檔時間, 按照慣例一樣作了一些目標設定&lt;br /&gt;算是去年一月空檔時弄Prex的延續, 然而平台已經不是S3C2440&lt;br /&gt;在告一段落後, 希望能藉此能有更進一步的突破&lt;br /&gt;&lt;br /&gt;回想這幾年, 由於工作因素不斷地在 linux 與 embedded os 間交錯&lt;br /&gt;對於 firmware 相關工作日漸有些許不平之鳴&lt;br /&gt;而這些林林總總, 多半在所謂良善管理與時程下而掩蓋&lt;br /&gt;&lt;br /&gt;改寫"沒那麼簡單"歌詞: "Firmware 沒有那麼容易, 不只 Function Call 來 Call 去"&lt;br /&gt;道出了 firmware 的甘苦辛酸&lt;br /&gt;&lt;br /&gt;若以公司為出發點的角度去思考&lt;br /&gt;Firmware 最大的困難之處或許不在於 coding 實作本身&lt;br /&gt;而是在於相關工作難免接手的人來來去去.&lt;br /&gt;這樣的情形下, 一旦 Firmware 在介面與架構缺乏良好規劃的前提&lt;br /&gt;在接手/參與的人無法完全熟悉的情況下, 為了&lt;span style="font-weight: bold;"&gt;盡快地&lt;/span&gt;完成任務, 也只能依樣畫葫蘆&lt;br /&gt;只是如此時間一拉長, 經手的人一多, 就會轉變為一個悲劇.&lt;br /&gt;換來的是, 日漸膨脹混亂, 開發與除錯時間逐漸地延長.&lt;br /&gt;即便在此看來簡短而淺顯易懂, 但諷刺的地方在於, 這部分很容易被管理階層所忽略&lt;br /&gt;&lt;br /&gt;這裡舉個常見現象作為例子&lt;br /&gt;一個以 MP3 player作為起始產品時可能僅支援 MP3&lt;br /&gt;而在 IC 中需要 Hw 需要的功能是 Audio playback, SD Card, LED display, Buttons.&lt;br /&gt;軟體上需要的就是 FAT FileSystem 與 MP3 decoder&lt;br /&gt;硬體的 Audio Hw 通常透過 Interrupt 去擷取需要輸出的 audio buffer&lt;br /&gt;這個 case 就是 mp3 decoder output buffer.&lt;br /&gt;接著藉由某種 message 傳遞通知 decoder 繼續 decode&lt;br /&gt;這樣的情況下, 很有可能的方式就是直接在 ISR 中取用 MP3 decoder buffer&lt;br /&gt;&lt;br /&gt;然而隨著 audio 格式一多 aac, ogg ... etc&lt;br /&gt;依樣畫葫蘆的結果就是針對不同codec的一堆Audio ISR&lt;br /&gt;最後就是演變成 policy 與  mechanism 混亂的情形&lt;br /&gt;隨著規格要求不同有不同與交錯混亂的 path&lt;br /&gt;這樣的問題並不侷限在這方面, 而是廣泛見於各種軟硬體程式介面上&lt;br /&gt;像是 File System, 多半好一點都會將 FS 與 flash device 做個 layer&lt;br /&gt;慘一點的 flash device 與  filesystem 混著寫也是有的&lt;br /&gt;鮮少見再將 SD/NAND/NOR 的 protocol 與 device 分離的實作&lt;br /&gt;&lt;br /&gt;更不用再多說由於多數Firmware 的 monolithic 特性&lt;br /&gt;很容易在缺乏訓練之下或是為了急就章, 任意呼叫不適當的 function&lt;br /&gt;因而造成日後專案維護性與移植性的低落&lt;br /&gt;&lt;br /&gt;的確很多時候是用不到 Linux 這樣龐大架構的系統&lt;br /&gt;然而相對而言的lightweight OS更需要心力去維護良架構.&lt;br /&gt;&lt;br /&gt;最後是之前隨手改的詞, 博君一笑..&lt;br /&gt;&lt;br /&gt;=================================================&lt;br /&gt;&lt;br /&gt;沒那麼簡單  就能寫出想要的方案&lt;br /&gt;尤其是在 firmware 年久失修又雜亂&lt;br /&gt;總是不安 只好硬幹&lt;br /&gt;誰謀殺了我的責任感&lt;br /&gt;&lt;br /&gt;沒那麼簡單 就能去改 別的全不看&lt;br /&gt;變得實際 也許好也許壞各一半&lt;br /&gt;不愛加班 一久也習慣&lt;br /&gt;被老婆唸勝過被老闆狗幹&lt;br /&gt;&lt;br /&gt;靈感來了就快Coding去&lt;br /&gt;感覺累了就聊天打屁&lt;br /&gt;主管的意見 隨便聽一聽 自己作決定&lt;br /&gt;開會不想投入情緒&lt;br /&gt;一杯咖啡配coding&lt;br /&gt;在周五晚上 關上了手機 免得六日被Call去&lt;br /&gt;&lt;br /&gt;Firmware沒有那麼容易 不只 function call來 call去&lt;br /&gt;過了有理想的年紀 架構翻新不如穩定&lt;br /&gt;架構沒有那麼容易 才會特別讓人著迷&lt;br /&gt;剛出社會的年紀&lt;br /&gt;曾經最用心 所以最開心 曾經&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-3540925496901503492?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/3540925496901503492/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=3540925496901503492' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/3540925496901503492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/3540925496901503492'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2010/04/firmware-function-call-call.html' title='Firmware 沒有那麼容易 不只 Function Call 來 Call 去...'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-6440068796376241240</id><published>2010-03-14T19:22:00.000-07:00</published><updated>2010-03-14T19:50:54.238-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><title type='text'>OpenGL 4.0 specification released.</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_NqrwyXvfMh4/S52bfXeh_mI/AAAAAAAABTo/pvbFgVp6k-U/s1600-h/opengl.png"&gt;&lt;img style="cursor: pointer; width: 160px; height: 75px;" src="http://2.bp.blogspot.com/_NqrwyXvfMh4/S52bfXeh_mI/AAAAAAAABTo/pvbFgVp6k-U/s400/opengl.png" alt="" id="BLOGGER_PHOTO_ID_5448682087368490594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;上週引起廣大討論的新聞莫過於 &lt;a href="http://www.khronos.org/opengl/"&gt;OpenGL 4.0&lt;/a&gt; 規格的釋出&lt;br /&gt;眼尖的人可以發現 GLSL 的版本編號與 OpenGL 一致了&lt;br /&gt;(不再像以往有著不同的編號: ex: GLSL 1.4 - OpenGL 3.1, GLSL 1.5 - OpenGL 3.2)&lt;br /&gt;同一時間 OpenGL 3.3 規格也釋出了&lt;br /&gt;OpenGL 3.3主要目的在於盡可能導入4.0的功能, 提供OpenGL 3.x世代硬體所能利用的 4.0 特性&lt;br /&gt;詳細關於 4.0 的介紹可以參考&lt;a href="http://fireuser.com/blog/opengl_release_breathes_new_life_into_existing_graphics_hardware_paves_the_/"&gt;這篇&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;特別的新功能在於&lt;br /&gt;1. 兩個新的 shader 來處理 &lt;a href="http://en.wikipedia.org/wiki/Geometry_shader"&gt;geometry&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Tessellation"&gt;tesselation&lt;/a&gt;&lt;br /&gt;2. 能夠使用 OpenGL/OpenCL 計算出的資料來繪圖 ( 如此將可大幅降低CPU運算, 也降低CPU 對於CG, Gaming 的重要性, 可以預期的是與其花大錢買高速CPU, 其效應可能不如省下來買張中階顯卡還有找 )&lt;br /&gt;3. shader 支援 倍精準(double) 浮點數運算, 以增進繪圖的正確性與品質.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-6440068796376241240?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/6440068796376241240/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=6440068796376241240' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/6440068796376241240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/6440068796376241240'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2010/03/opengl-40-specification-released.html' title='OpenGL 4.0 specification released.'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_NqrwyXvfMh4/S52bfXeh_mI/AAAAAAAABTo/pvbFgVp6k-U/s72-c/opengl.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-8519155000872538086</id><published>2010-03-14T18:50:00.000-07:00</published><updated>2010-03-14T19:22:32.794-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Linux kernel 2.6.33</title><content type='html'>Linux kernel 2.6.33 在 Feb 24th, 2010 釋出了&lt;br /&gt;主要的更動可以參考 &lt;a href="http://kernelnewbies.org/Linux_2_6_33"&gt;kernelnewbies&lt;/a&gt; 與 H-Online 的&lt;a href="http://www.h-online.com/open/features/What-s-new-in-Linux-2-6-33-933312.html"&gt;What's new in linux 2.6.33&lt;/a&gt;這篇&lt;br /&gt;&lt;br /&gt;這個版本受到注目在於&lt;br /&gt;1. 整合&lt;a href="http://nouveau.freedesktop.org/wiki/"&gt;Nouveau&lt;/a&gt; - open source nvidia 3D driver (Nvidia 並無提供協助, 主要是以逆向工程實作)&lt;br /&gt;2. 整合&lt;a href="http://www.drbd.org"&gt;DRBD&lt;/a&gt; - Distributed Replicated Block Device, 能視為基於網路的 RAID-1 實作&lt;br /&gt;3. 整合&lt;a href="http://compcache.googlecode.com/"&gt;Compcahe&lt;/a&gt; - 提供 Ram-Based Compressed Swap Device, 主要是切割出一塊記憶體空間, 將需要swap-out page資料, 壓縮後存放. 如此達到在記憶體中放置更多page 的目的, 減少 Harddisk IO(現今 CPU 壓縮/解壓縮 速度勝過對 HardDisk 讀寫), 提高效能.&lt;br /&gt;4. Android removed from the linux kernel - 相關細節請參考 &lt;a href="http://www.kroah.com/log/linux/android-kernel-problems.html"&gt;Android and the Linux kernel community&lt;/a&gt; (關於文章作者&lt;a href="http://en.wikipedia.org/wiki/Greg_Kroah-Hartman"&gt;Kroah&lt;/a&gt;), 在今年二月初時此事在各大資訊相關網站廣受討論.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-8519155000872538086?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/8519155000872538086/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=8519155000872538086' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/8519155000872538086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/8519155000872538086'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2010/03/linux-kernel-2633.html' title='Linux kernel 2.6.33'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-8756664157083235424</id><published>2010-03-08T07:10:00.000-08:00</published><updated>2010-03-15T05:35:59.636-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>from linux thread to protothread</title><content type='html'>去年在使用 buildroot/uClibc 環境移植 linux 過程中&lt;br /&gt;由於編譯時對於 thread 選項選取預設的 &lt;a href="http://en.wikipedia.org/wiki/LinuxThreads"&gt;linuxthreads&lt;/a&gt; 而非較為完整的 &lt;a href="http://en.wikipedia.org/wiki/Native_POSIX_Thread_Library"&gt;NTPL &lt;/a&gt;&lt;br /&gt;因 thread 行為模式的緣故, 造成 IP 廠商提供的 OpenGL ES 環境無法正常運作&lt;br /&gt;當時觀察到主要的錯誤在於每個 thread 取得的 pid 是不相同的&lt;br /&gt;明顯地, 這不符合 thread 一般的認知, 然而這也與 linux thread 實作演進有相當的關係&lt;br /&gt;(而linuxthreads 演進到 NTPL 的過程, 請參考 wikipedia 上的關於linux thread的歷史, 這裡就不詳加說明.)&lt;br /&gt;&lt;br /&gt;在碰到這樣結果的當下, 稍微感到有些訝異&lt;br /&gt;現今 thread 的概念在 OS 教科書中是一大重點&lt;br /&gt;而 thread programming tutorial/guide 更是垂手可得&lt;br /&gt;利用 thread 來改善系統效能, 更是常見於日常的程式中&lt;br /&gt;這些資訊多到讓人產生一種 &lt;a href="http://en.wikipedia.org/wiki/Thread_%28computer_science%29"&gt;thread&lt;/a&gt; 的存在是理所當然似地&lt;br /&gt;看著 wikipedia 中對於 thread 的說明, 跟教科書其實相去不遠&lt;br /&gt;&lt;br /&gt;撇開 user-level/kernel-level 的優缺 和 1:1, N:1, N:M 的 Model 不同的理論不談&lt;br /&gt;kernel-level threads 間的 context switch 可能可以較容易理解, 或是寄情於OS的能力&lt;br /&gt;其中最引人入勝的莫過於 user-level threads 間又是如何達成的?&lt;br /&gt;&lt;br /&gt;對於 user-level thread 的考量點有二&lt;br /&gt;1. 如何於 user space 維護 thread context&lt;br /&gt;2. thread switch 的時機點&lt;br /&gt;  preemptive or non-preemptive&lt;br /&gt;&lt;br /&gt;其中 1.又取決於針對 2.的考量決定複雜的程度&lt;br /&gt;可以想見, 可能必須在 process 中建構屬於 thread 的context&lt;br /&gt;從 PC register, stack, 甚至可能細到 signal, 取決於實作的規劃&lt;br /&gt;&lt;br /&gt;複雜者可能如 &lt;a href="http://moss.csc.ncsu.edu/%7Emueller/pthreads/"&gt;FSU Thread&lt;/a&gt; 在user-level 中實作了 POSIX thread&lt;br /&gt;&lt;br /&gt;另外常見的 user-level thread 方式是提供特定的 I/O 與 switch API&lt;br /&gt;讓 programmer 決定可以選擇切換的時機&lt;br /&gt;這類者像&lt;a href="http://www.gnu.org/software/pth/"&gt;GNU Portable Thread&lt;/a&gt; 即為一例&lt;br /&gt;對於 GNU Pth 的細節技術可以參考&lt;a href="http://www.gnu.org/software/pth/rse-pmt.ps"&gt;這篇論文&lt;/a&gt;&lt;br /&gt;主要在於使用泛 unix 的 ucontext/setjmp 支援&lt;br /&gt;&lt;br /&gt;然而確也可能簡單到像 Contiki 中使用的 &lt;a href="http://www.sics.se/%7Eadam/pt/"&gt;protothread&lt;/a&gt;&lt;br /&gt;(與 coroutine 不同的地方在於 protothread 是 stack-less)&lt;br /&gt;其概念可以拜讀 Simon Tatham 關於 coroutine 的&lt;a href="http://www.chiark.greenend.org.uk/%7Esgtatham/coroutines.html"&gt;大作&lt;/a&gt;&lt;br /&gt;jserv 於 2006 年也對 coroutine 做了&lt;a href="http://blog.linux.org.tw/%7Ejserv/archives/001848.html"&gt;簡單的介紹&lt;/a&gt;&lt;br /&gt;其精神在於僅存放 thread 所在的狀態, 以利於切換時跳至正確的位置&lt;br /&gt;&lt;br /&gt;由於不停地在 thread 中切換, 若 thread 的 execution time 過小&lt;br /&gt;搭配 sleep 的時機不佳, 簡單者是浪費 cpu 的 busywaiting&lt;br /&gt;然而延伸而言, 卻也會影響 scheduling 與 cpu freqency 切換的判斷&lt;br /&gt;而需要 computation 時, thread 間執行時間的比例, 與 sleep 可能造成降低效能&lt;br /&gt;而這些都與使用 user-level thread API 實作 thread routine 的方式有很大的關係&lt;br /&gt;&lt;br /&gt;儘管 thread 帶給 programmer 許多便利性&lt;br /&gt;然而需要注意 thread 在各種環境下的特性, 才能夠正確地使用&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-8756664157083235424?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/8756664157083235424/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=8756664157083235424' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/8756664157083235424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/8756664157083235424'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2010/03/from-linux-thread-to-protothread.html' title='from linux thread to protothread'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-2516005625930338341</id><published>2010-01-09T04:45:00.000-08:00</published><updated>2010-01-09T20:37:24.584-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>HiRadioTray 20100109 &amp; Hinet Radio Script 20100110</title><content type='html'>HiRadioTray 20100109&lt;br /&gt;檔案連結: &lt;a href="http://hiradiotray.googlecode.com/files/HiRadioTray_20100109_ubuntu910_i386.deb"&gt;HiRadioTray_20100109_ubuntu910_i386.deb&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;1. 根據 Hinet 更動了 mms 取得方式&lt;br /&gt;2. 修正 奇美古典音樂網 格式&lt;br /&gt;3. 修正更新功能&lt;br /&gt;&lt;br /&gt;由於個人疏忽, 20091010版無法使用更新功能&lt;br /&gt;&lt;br /&gt;使用 20091010 版本的使用者:&lt;br /&gt;安裝更新檔者:&lt;br /&gt;請移除 ~/.HiRadioTray 目錄後再執行程式即可&lt;br /&gt;&lt;br /&gt;不想安裝更新檔者&lt;br /&gt;請&lt;a href="http://sites.google.com/site/champyen/hiradiotray/update.sh?attredirects=0&amp;amp;d=1"&gt;到此&lt;/a&gt;下載 update.sh 並覆寫原本 ~/.HiRadioTray 下的檔案, 以修正更新功能&lt;br /&gt;請&lt;a href="http://sites.google.com/site/champyen/hiradiotray/get_mms.sh?attredirects=0&amp;amp;d=1"&gt;到此&lt;/a&gt;下載 get_mms.sh 並覆寫原本 ~/.HiRadioTray 下的檔案, 以修正收聽功能&lt;br /&gt;&lt;br /&gt;Hinet Radio Script 20100110&lt;br /&gt;檔案連結: &lt;a href="http://hiradiotray.googlecode.com/files/radio_20100110.tgz"&gt;radio_20100110.tgz&lt;/a&gt;&lt;br /&gt;或執行 update.sh 更新即可&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-2516005625930338341?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/2516005625930338341/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=2516005625930338341' title='8 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/2516005625930338341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/2516005625930338341'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2010/01/hiradiotray-20100109.html' title='HiRadioTray 20100109 &amp; Hinet Radio Script 20100110'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-941559605186738830</id><published>2009-12-13T19:10:00.000-08:00</published><updated>2009-12-13T21:26:06.146-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>打造簡易監控系統 - ffmpeg + lighttpd</title><content type='html'>(TODO: 附圖)&lt;br /&gt;&lt;br /&gt;由於個人與老婆必須工作, 平日就將寶貝女兒託給爸媽照顧&lt;br /&gt;在家中, 女兒目前待在三樓塌塌米房間&lt;br /&gt;然而難免會有需要短時間離開處理一些事務&lt;br /&gt;能清楚知道baby何時醒了和哭了的時間很重要&lt;br /&gt;因此母親希望能夠架設視訊系統, 方便在一樓能知道三樓狀況&lt;br /&gt;&lt;br /&gt;的確, 最快的方式就是購買現成IP Cam產品&lt;br /&gt;想想這部份的技術並不是非常高&lt;br /&gt;所以第一時間想到的就是擺放在家中當床頭機的 EeePC 701&lt;br /&gt;(老實說, 現在有點慶幸當時買的是有Webcam的版本, 那時嚷嚷我只需要長效電池)&lt;br /&gt;&lt;br /&gt;接著就是作 video streaming 了&lt;br /&gt;其實依開始我想到的是使用 VideoLan 來作&lt;br /&gt;然而設定/使用與過高的CPU loading都不讓人滿意&lt;br /&gt;加上是給父母操作使用, 使用過程愈簡單愈好&lt;br /&gt;&lt;br /&gt;朝 flash video 方向尋找方案, 發現 &lt;a href="http://ffmpeg.org/ffserver-doc.html"&gt;ffserver/ffmpeg&lt;/a&gt; 是個不錯的選擇&lt;br /&gt;參考ffmpeg的這篇&lt;a href="http://lists.mplayerhq.hu/pipermail/ffmpeg-user/2008-July/016110.html"&gt;討論文章&lt;/a&gt;, 搭配需求將設定檔做了些許更動&lt;br /&gt;像是加入了Audio部份, (ffmpeg 的啟動指令亦必須加入 -f oss -i /dev/dsp)&lt;br /&gt;另外提高VideoFrameRate至15, 移除了 VideoIntraOnly, 加入VideoGopSize 以降低bitrate&lt;br /&gt;原本只打算使用 swf 格式, 如此browser 可以直接開啟播放&lt;br /&gt;然而個人設定 SWF 搭配 Audio一直無法順利啟動&lt;br /&gt;(如有設置上限制, 歡迎告知指正)&lt;br /&gt;只好轉而使用FLV, 測試後,VGA frame, 15FPS 加上 Audio&lt;br /&gt;在 630Mhz 的 EeePC, CPU loading 約為 50~60% (打開900Mhz 模式, 降低到 33%~40%)&lt;br /&gt;設定好後, 假設存檔為 webcam.conf, 如此執行指令 "ffserver -f webcam.conf"&lt;br /&gt;就可以在 http://MACHINE_IP:8090/webcam.flv 收到 streaming video/audio&lt;br /&gt;&lt;br /&gt;使用 FLV 相較於 SWF 比較麻煩的是需要 flv player&lt;br /&gt;browser 上需要 swf 元件來處理 flv video&lt;br /&gt;網路上免費solution不少, 像是&lt;a href="http://www.bezzmedia.com/swfspot/samples/flash8/FLV_Player"&gt;37-flvplayer.swf&lt;/a&gt;與GPL的&lt;a href="http://flowplayer.org/"&gt;flowplayer&lt;/a&gt;&lt;br /&gt;最簡單的方式, 就是寫個 HTML, 連到提供該元件的主機, 搭配 flv 來源URL&lt;br /&gt;為了降低對外部網路系統的依賴, 搭配輕巧快速的 lighttpd 來使用是不錯的選擇&lt;br /&gt;(Apache?! 殺雞焉用牛刀.)&lt;br /&gt;下載好 swf 元件, 依照各個swf flvplayer 規格撰寫個簡單的 HTML&lt;br /&gt;放置於 /var/www 後就完成了&lt;br /&gt;&lt;br /&gt;如此, 一樓電腦打開browser, 設好首頁, 就完成了&lt;br /&gt;&lt;br /&gt;想想, 在 embedded 產品上, 將 hw codec 整合至 ffmpeg 是個不錯的作法&lt;br /&gt;如此很快就可以建立具有網路傳輸功能的分散式 IPCam&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-941559605186738830?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/941559605186738830/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=941559605186738830' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/941559605186738830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/941559605186738830'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/12/ffmpeg-lighttpd.html' title='打造簡易監控系統 - ffmpeg + lighttpd'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-8610708888969330961</id><published>2009-12-03T04:56:00.000-08:00</published><updated>2009-12-03T05:06:37.683-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>關於 Chrome OS 的另一觀點</title><content type='html'>今日很榮幸受到先前在NCHC主管Steven的邀請&lt;br /&gt;分享一些關於Chrome OS 與 GO 程式語言的心得&lt;br /&gt;&lt;br /&gt;&lt;div style="width: 425px; text-align: left;" id="__ss_2640283"&gt;&lt;a style="margin: 12px 0pt 3px; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; text-decoration: underline;" href="http://www.slideshare.net/champ_yen/chrome-os-observation-2640283" title="Chrome OS Observation"&gt;Chrome OS Observation&lt;/a&gt;&lt;object style="margin: 0px;" height="355" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=chrome-091203065119-phpapp02&amp;amp;rel=0&amp;amp;stripped_title=chrome-os-observation-2640283"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=chrome-091203065119-phpapp02&amp;amp;rel=0&amp;amp;stripped_title=chrome-os-observation-2640283" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;"&gt;View more &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/"&gt;documents&lt;/a&gt; from &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/champ_yen"&gt;Champ Yen&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;在Chrome OS推出時, 難免將此與Google 要正面挑戰 Microsoft 做連結&lt;br /&gt;並且以個人裝置的用途來思考, 因此Chrome OS也就相形見絀&lt;br /&gt;在此回歸以Chrome OS的三大特性 - 快速, 簡單, 安全的方向思考&lt;br /&gt;也許 Google 所規劃的是不同方向的佈局&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-8610708888969330961?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/8610708888969330961/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=8610708888969330961' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/8610708888969330961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/8610708888969330961'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/12/chrome-os.html' title='關於 Chrome OS 的另一觀點'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-8314580971306550083</id><published>2009-11-20T06:38:00.000-08:00</published><updated>2009-11-20T08:51:21.287-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Chrome OS - 網路作業系統時代的來臨?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_NqrwyXvfMh4/Swa0qjQSnPI/AAAAAAAABI4/jx5oIuW1W-k/s1600/chrome.png"&gt;&lt;img style="cursor: pointer; width: 55px; height: 55px;" src="http://1.bp.blogspot.com/_NqrwyXvfMh4/Swa0qjQSnPI/AAAAAAAABI4/jx5oIuW1W-k/s400/chrome.png" alt="" id="BLOGGER_PHOTO_ID_5406207045815934194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;回想當年, 微軟為了擊敗如日中天的Netscape&lt;br /&gt;刻意將Internet Explorer 內建於Windows 系統&lt;br /&gt;在反托拉斯官司中, 微軟宣稱 IE 是 Windows 系統不可分割的一部份&lt;br /&gt;今日Google 推出的 Chrome OS 中, Browser 的確是系統不可分割的一部份&lt;br /&gt;&lt;br /&gt;在Google發佈&lt;a href="http://www.chromium.org/chromium-os"&gt;Chrome OS計劃&lt;/a&gt;細節後,&lt;br /&gt;相關的新聞已經在網路上迅速蔓延了開來&lt;br /&gt;Chrome OS之所以受到如此的注目&lt;br /&gt;是因為媒體將Chrome OS解讀為Google用以挑戰微軟的開始&lt;br /&gt;而若不是Google盛名, Chrome OS或許也無其特殊性.&lt;br /&gt;&lt;br /&gt;今日原本抱著期待的心尋找Chrome OS的資訊&lt;br /&gt;反覆觀看計劃相關的技術文件與設計說明後,&lt;br /&gt;甚至覺得有些許說不上來的感覺&lt;br /&gt;Chrome OS 計劃很難與創新聯想在一起&lt;br /&gt;在看完&lt;a href="http://www.tgdaily.com/software-features/44704-chrome-os-lame-copy-or-amazing-new-os-"&gt;這篇文章&lt;/a&gt;後, 我也釐清了一些想法&lt;br /&gt;&lt;br /&gt;網路上對於Chrome OS介紹相當的多, 這裡就不做詳細的介紹&lt;br /&gt;Chrome OS 是個 Web Browsing/Application 導向的作業系統&lt;br /&gt;最重要的特性是不支援也不仰賴任何其他程式,&lt;br /&gt;所有應用全部依靠Web Application&lt;br /&gt;因此使用者資訊完全存放於網路上, 在電腦上完全不存放任何資訊&lt;br /&gt;因為如此, 系統的確能夠精簡到基本的OS, Driver &amp;amp; Browser, 開機快速&lt;br /&gt;而不做任何更動的檔案系統, 做檢測相對上較容易, 安全性上也很好&lt;br /&gt;&lt;br /&gt;對於Chrome OS這樣的設計,&lt;br /&gt;最大的問題也在於全面網路化的時代來臨與否&lt;br /&gt;說穿了, thin client並不是甚麼特別新的觀念&lt;br /&gt;從早先的終端機到宏碁提出的專用電腦XC,&lt;br /&gt;都是類似概念下遭到淘汰的產物&lt;br /&gt;儘管現今網路應用在比以往充實許多&lt;br /&gt;而這些Web Application是否真的能夠大幅取代原生軟體應用?&lt;br /&gt;單單 Youtube/Lala 能夠取代一般使用者的影音需求?&lt;br /&gt;列印, 照片處理, LAN檔案分享, 這都已經是普遍的一般應用&lt;br /&gt;&lt;br /&gt;的確, 有人可能會說Chrome OS 可能定位不在此&lt;br /&gt;但這樣的情況 Chrome OS 只能定位為電腦上第二個作業系統&lt;br /&gt;快速開機, 上網, 安全無負擔, 在許多臨時應用上確實有其市場&lt;br /&gt;然而在這個市場上已有既有實作像是著名的Hyperspace&lt;br /&gt;類似環境所提供的軟體也遠甚於一個browser&lt;br /&gt;甚至個人認為同樣在Web App導向的思維下&lt;br /&gt;Intel Moblin v2在系統設計上的也優於Chrome OS&lt;br /&gt;實用性遠遠超過 Chrome OS&lt;br /&gt;&lt;br /&gt;而除了技術觀點上的問題外&lt;br /&gt;Chrome OS 還需要挑戰人們對於資料放在網路上不安的心理&lt;br /&gt;本地端資料檔案處理 &amp;amp; 多媒體的大量需求&lt;br /&gt;以及對於原生軟體功能性的需求與追求多多益善的心態..&lt;br /&gt;&lt;br /&gt;若Google 後續不正視與修正Chrome OS 對於 local 原生軟體應用需求的策略&lt;br /&gt;那麼Chrome OS 難免落入對於網路應用一廂情願的泥淖中..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-8314580971306550083?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/8314580971306550083/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=8314580971306550083' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/8314580971306550083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/8314580971306550083'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/11/chrome-os.html' title='Chrome OS - 網路作業系統時代的來臨?'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_NqrwyXvfMh4/Swa0qjQSnPI/AAAAAAAABI4/jx5oIuW1W-k/s72-c/chrome.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-5896297450482468889</id><published>2009-11-19T09:15:00.000-08:00</published><updated>2009-11-19T09:29:23.937-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>令人期待的 GIMP 2.8</title><content type='html'>GIMP 2.7 的 single window mode&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NqrwyXvfMh4/SwV9gqpl62I/AAAAAAAABIw/xrk8K02yJt8/s1600/gimp-single.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 234px;" src="http://3.bp.blogspot.com/_NqrwyXvfMh4/SwV9gqpl62I/AAAAAAAABIw/xrk8K02yJt8/s400/gimp-single.png" alt="" id="BLOGGER_PHOTO_ID_5405864927886175074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;先前就聽說GIMP 2.8將要支援許多人引領期盼的 single window mode&lt;br /&gt;雖說個人並不是很排斥GIMP原有的multiple window&lt;br /&gt;但在Ubuntu Netbook Remix 下, 過多視窗就顯得不易使用&lt;br /&gt;原本是指望Paint.Mono, 然而目前在Linux上有許多問題, 連堪用都稱不上&lt;br /&gt;&lt;br /&gt;今日看到了一篇國外的blog&lt;a href="http://www.omgubuntu.co.uk/2009/10/first-pictures-of-single-window-gimp.html"&gt;文章&lt;/a&gt;&lt;br /&gt;發現Single Window Mode 看來真的是很棒&lt;br /&gt;相當簡潔, 不會有凌亂的視窗&lt;br /&gt;&lt;br /&gt;於是叫出安裝已久的GIMP 2.7&lt;br /&gt;果然single window mode 有相當雛型&lt;br /&gt;目前看來UI的版面配置的調整有些問題&lt;br /&gt;但是配置好後, 看來真的是挺有那麼一回事&lt;br /&gt;&lt;br /&gt;由此看來, 等穩定後推出的正式版本 2.8 應該是相當令人期待&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-5896297450482468889?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/5896297450482468889/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=5896297450482468889' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/5896297450482468889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/5896297450482468889'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/11/gimp-28.html' title='令人期待的 GIMP 2.8'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_NqrwyXvfMh4/SwV9gqpl62I/AAAAAAAABIw/xrk8K02yJt8/s72-c/gimp-single.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-3459376366398384289</id><published>2009-11-17T07:30:00.000-08:00</published><updated>2009-11-18T08:52:59.174-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Google Go - C 語言的進化</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NqrwyXvfMh4/SwLCkHAyE1I/AAAAAAAABIo/TbyvRAoEHB8/s1600/gordon.png"&gt;&lt;img style="cursor: pointer; width: 250px; height: 249px;" src="http://3.bp.blogspot.com/_NqrwyXvfMh4/SwLCkHAyE1I/AAAAAAAABIo/TbyvRAoEHB8/s400/gordon.png" alt="" id="BLOGGER_PHOTO_ID_5405096428411425618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Go Language 吉祥物 - Gordon 田鼠&lt;br /&gt;&lt;br /&gt;自上次更新blog 至今有許多大則的資訊相關新聞&lt;br /&gt;像是 Ubuntu 9.10 與 Android 2.0的發佈&lt;br /&gt;MontaVista 與 3Com 被併購 等等&lt;br /&gt;&lt;br /&gt;令個人注目的就是標題上談到的Google所提出的 Go Language&lt;br /&gt;個人認為, 對於喜歡 C 語言的程式設計師而言, Go 會是另一個開發利器&lt;br /&gt;&lt;br /&gt;對於Go 的背景資料, 個人就不在此詳加介紹了&lt;br /&gt;在搜尋網站上搜尋就可以輕鬆找到一大堆&lt;br /&gt;&lt;br /&gt;Let's Go.&lt;br /&gt;&lt;br /&gt;一進入 Go 官方網站, 即說明了Go 語言的特點 - simple, fast, safe, concurrent and fun&lt;br /&gt;的確, 沒有比這更簡潔有力的介紹了&lt;br /&gt;&lt;br /&gt;從官網的範例看來, 乍看之下會以為Go又是個了無新意類似 C++/Java 的語言&lt;br /&gt;&lt;pre style="font-weight: bold;" class="code"&gt;package main&lt;br /&gt;import "fmt"&lt;br /&gt;&lt;br /&gt;func main() {&lt;br /&gt;fmt.Printf("Hello, 世界\n")&lt;br /&gt;}&lt;/pre&gt;是吧? 可是官網開頭範例竟然是個天大的陷阱, 從package, import 到 fmt.Printf()&lt;br /&gt;一旦接著好好咀嚼 &lt;a href="http://golang.org/doc/go_tutorial.html"&gt;Tutorial &lt;/a&gt;的話, 會發現 Go 真的蠻奇特的, 甚至與原本所想的相去甚遠&lt;br /&gt;&lt;br /&gt;C++/Java 程式設計師第一時間可能是發現到了 - 沒有class, object!&lt;br /&gt;(沒有繼承多型, 我怎麼唬人(誤))&lt;br /&gt;接著會注意不太一樣的variable/function declaration (Goroutine 這是啥!?)&lt;br /&gt;與不太順眼的 if-else, switch, for ...&lt;br /&gt;還有看都沒看過的資料型別 - Slices/Maps/Channels (有 String 囉)&lt;br /&gt;一開始摸不著頭緒的 interface&lt;br /&gt;&lt;br /&gt;在語法上 Go 提供了精練且概念呈現較清晰的方式&lt;br /&gt;像是變數宣告:&lt;br /&gt;var Foo [10]int;&lt;br /&gt;&lt;br /&gt;且流程控制的語法更為彈性&lt;br /&gt;像是switch:&lt;br /&gt;&lt;pre style="font-weight: bold;"&gt;switch {&lt;br /&gt;  case '0' &lt;= c &amp;amp;&amp;amp; c &lt;= '9':               return c - '0'       case 'a' &lt;= c &amp;amp;&amp;amp; c &lt;= 'f':        return c - 'a' + 10       case 'A' &lt;= c &amp;amp;&amp;amp; c &lt;= 'F':               return c - 'A' + 10    } &lt;/pre&gt;另外像是 function  可以有多個 return values&lt;br /&gt;語法上有諸多新的特性, 就留給大家慢慢發覺&lt;br /&gt;&lt;br /&gt;除了語法的改良外&lt;br /&gt;&lt;br /&gt;如同 C 語言, Go 依然是以 struct 為主&lt;br /&gt;資料處理的方式, Go 採用了與 C++/Java 物件導向不同的 data - interface&lt;br /&gt;在 OOP 中  data (member) 是依附特定 function (member function)處理&lt;br /&gt;data - interface 中, 並不將資料與介面做緊密的結合, 而僅是有其關係&lt;br /&gt;這樣的方式除了具有彈性外, 資料的操作上也較為直覺, 並且負擔較小&lt;br /&gt;相對地也是達到code reuse 的另一種方式&lt;br /&gt;&lt;br /&gt;官網 Tutorial 的 範例 - Sorting:&lt;br /&gt;這是個能夠排序的function (Interface 是 interface 名稱)&lt;br /&gt;&lt;pre&gt;&lt;span style="font-weight: bold;"&gt;func Sort(data Interface) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    for i := 1; i &lt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        for j := i; j &gt; 0 &amp;amp;&amp;amp; data.Less(j, j-1); j-- {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;            data.Swap(j, j-1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;所制定的 interface&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;type Interface interface {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    Len() int;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    Less(i, j int) bool;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    Swap(i, j int);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;如此 Sort 可以套用在任何實作此 Interface 的資料型態&lt;br /&gt;範例中列舉了int array (non-struct)與 day(struct)&lt;br /&gt;&lt;pre style="font-weight: bold;"&gt;&lt;br /&gt;type IntArray []int&lt;br /&gt;func (p IntArray) Len() int           &lt;br /&gt;{ return len(p); }&lt;br /&gt;func (p IntArray) Less(i, j int) bool &lt;br /&gt;{ return p[i] &lt; p[j]; }&lt;br /&gt;func (p IntArray) Swap(i, j int)&lt;br /&gt;{ p[i], p[j] = p[j], p[i]; } &lt;/pre&gt;&lt;br /&gt;&lt;pre style="font-weight: bold;"&gt;func ints() {&lt;br /&gt;  data := []int{905, 0, 0, 42, 7586, -5467984, 7586};&lt;br /&gt;  a := sort.IntArray(data);&lt;br /&gt;  sort.Sort(a);&lt;br /&gt;  if !sort.IsSorted(a) {&lt;br /&gt;      panic()&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre style="font-weight: bold;"&gt;type day struct {&lt;br /&gt;  num        int;&lt;br /&gt;  shortName  string;&lt;br /&gt;  longName   string;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;type dayArray struct {&lt;br /&gt;  data []*day;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;func (p *dayArray) Len() int           &lt;br /&gt;{ return len(p.data); }&lt;br /&gt;func (p *dayArray) Less(i, j int) bool &lt;br /&gt;{ return p.data[i].num &lt; p.data[j].num; }&lt;br /&gt;func (p *dayArray) Swap(i, j int)&lt;br /&gt;{ p.data[i], p.data[j] = p.data[j], p.data[i]; } &lt;/pre&gt;&lt;br /&gt;而其他還有許多值得玩味的部份 - 像是Go 所強調支援的 concurrent 的支援, 與 Memory Model (Go 具有 Garbage Collection)&lt;br /&gt;在此就不詳盡一一介紹了, 官網上的 Tutorial, &lt;a href="http://golang.org/pkg/"&gt;Package Document&lt;/a&gt; 與 &lt;a href="http://golang.org/doc/effective_go.html"&gt;Effective Go&lt;/a&gt; 都是優質的文件資料&lt;br /&gt;&lt;br /&gt;如官網 FAQ 所回答的, Go 概念上很多部份源自於 C&lt;br /&gt;然而特性上有混合不少其他類型語言的感覺&lt;br /&gt;相信喜愛 C 的人多半會樂於接受這樣的演進&lt;br /&gt;另外Go 還是發展中的語言, Compiler 還在開發中&lt;br /&gt;目前還缺乏動態連結的能力, 目前僅能編出靜態連結後的執行檔&lt;br /&gt;儘管目前 Go 尚未廣泛地被應用, 然而依然可以從 Go 的設計看出所俱備的潛力&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-3459376366398384289?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/3459376366398384289/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=3459376366398384289' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/3459376366398384289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/3459376366398384289'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/11/google-go-c.html' title='Google Go - C 語言的進化'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_NqrwyXvfMh4/SwLCkHAyE1I/AAAAAAAABIo/TbyvRAoEHB8/s72-c/gordon.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-2907718246797684309</id><published>2009-10-28T22:59:00.000-07:00</published><updated>2009-10-29T02:04:05.128-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android 已移植至 PowerPC 平台 &amp; Android 2.0 釋出</title><content type='html'>在兩年前的拙作"到底 Google Android 是甚麼"一文中提到&lt;br /&gt;Google Android 建構了標準 library 環境與使用Dalvik VM是相當聰明的規劃&lt;br /&gt;相較於WinMobile 與 其他Embedded Linux Distribution而言,&lt;br /&gt;Android這樣的系統特性使得在硬體平台轉換時, 依然保有長期累積的應用軟體資源&lt;br /&gt;當時已可看出Android的架構並非依附在特定硬體平台上.&lt;br /&gt;&lt;br /&gt;這樣的特性對於系統與SoC廠商這都是樂觀其成的事情, 特別是使用非ARM Processor的廠商&lt;br /&gt;而這個效應正逐漸發酵中, 繼Android&lt;a href="http://www.linuxfordevices.com/c/a/News/Android-port-to-MIPS-completed/"&gt;移植&lt;/a&gt;到&lt;a href="http://www.linuxfordevices.com/c/a/News/Android-port-to-MIPS-completed/"&gt;MIPS&lt;/a&gt;後&lt;br /&gt;近日LinuxDevices.Com上的&lt;a href="http://www.linuxfordevices.com/c/a/News/Freescale-Mentor-Graphics-MPC8536EADK/"&gt;新聞&lt;/a&gt;顯示現在也已經移植到&lt;a href="http://www.mentor.com/products/embedded_software/events/maximize-freescale-powerquicc-qoriq-webinar?clp=1&amp;amp;v=mentorgraphics&amp;amp;g=esd&amp;amp;s=1x1&amp;amp;c=ocid_2955&amp;amp;cmpid=5464"&gt;PowerPC&lt;/a&gt;&lt;br /&gt;可以遇見的是, Android 平台的優勢會漸漸浮現&lt;br /&gt;&lt;br /&gt;同樣面對多元的硬體平台, 然而Microsoft 由於 Wintel 的成功經驗&lt;br /&gt;預期相同的策略能夠在手持式平台市場複製&lt;br /&gt;在Handheld Device上 Windows Mobile 硬體平台上決定限制使用ARM平台&lt;br /&gt;雖然以此解決了硬體平台多元的問題, 如此的決策也造成了硬體的排他性&lt;br /&gt;並非根本解決軟體相容性問題, 而相對地也同時樹立了非ARM平台業者的敵人&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;另外在 1.6 版發佈的一個半月後, &lt;a href="http://developer.android.com/sdk/android-2.0-highlights.html"&gt;Android 2.0&lt;/a&gt; 釋出了&lt;br /&gt;在功能的改進與新增上有不少的更動&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-2907718246797684309?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/2907718246797684309/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=2907718246797684309' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/2907718246797684309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/2907718246797684309'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/10/android-powerpc-android-20.html' title='Android 已移植至 PowerPC 平台 &amp; Android 2.0 釋出'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-6027634963365248109</id><published>2009-10-25T00:54:00.000-07:00</published><updated>2009-10-25T01:27:53.343-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><title type='text'>Symbian 基金會釋出Symbian Kernel 原始碼</title><content type='html'>Symbian 終於釋出 kernel source 了&lt;br /&gt;今日 Symbian Fundation &lt;a href="http://symbian.org/media/news/pr2009_10.php"&gt;公告&lt;/a&gt;以Eclipse Public License授權釋出Symbian microkernel&lt;br /&gt;相關的細節請至公告中提到的&lt;a href="http://tiny.symbian.org/SymbianKernel"&gt;連結&lt;/a&gt;(下載source需要註冊帳號)&lt;br /&gt;&lt;br /&gt;整份Kernel Taster Kit 包含了&lt;br /&gt;* Symbian^3 核心原始碼&lt;br /&gt;* 可立即使用的 QEMU 模擬器&lt;br /&gt;* Symbian^3 對於 QEMU 與 Beagleboard 的基本移植&lt;br /&gt;* 用以編譯原始碼的相關工具程式(免費授權於低於20人的公司)&lt;br /&gt;* 可以立刻使用的 ARMV5 binary&lt;br /&gt;&lt;br /&gt;儘管腳步比起 Android 晚了許多, 比起Windows Mobile的專制封閉, Symbian 終究走向了開放&lt;br /&gt;期望開放後社群應能為Symbian帶來功能與穩定上的增進&lt;br /&gt;而 Symbian 優秀的 microkernel 架構也能夠給予OS hacker 一探究竟的樂趣&lt;br /&gt;並持續帶給這個領域良性的競爭與互動&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-6027634963365248109?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/6027634963365248109/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=6027634963365248109' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/6027634963365248109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/6027634963365248109'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/10/symbian-symbian-kernel.html' title='Symbian 基金會釋出Symbian Kernel 原始碼'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-7215307190634919638</id><published>2009-10-24T23:48:00.000-07:00</published><updated>2009-10-25T00:54:41.577-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arm'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><title type='text'>ARM 發表新低功耗處理器 Cortex-A5</title><content type='html'>ARM Cortext-A5 處理器單核內部架構&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_NqrwyXvfMh4/SuP2C1NLthI/AAAAAAAABE8/vGm_cNixNdk/s1600-h/cortex_a5_uni.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 365px;" src="http://4.bp.blogspot.com/_NqrwyXvfMh4/SuP2C1NLthI/AAAAAAAABE8/vGm_cNixNdk/s400/cortex_a5_uni.jpg" alt="" id="BLOGGER_PHOTO_ID_5396427307022530066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ARM Cortex-A5 多核架構&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NqrwyXvfMh4/SuP2HraTjuI/AAAAAAAABFE/a0lwlGO-ayY/s1600-h/cortex_a5_mp.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 358px;" src="http://3.bp.blogspot.com/_NqrwyXvfMh4/SuP2HraTjuI/AAAAAAAABFE/a0lwlGO-ayY/s400/cortex_a5_mp.jpg" alt="" id="BLOGGER_PHOTO_ID_5396427390292561634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;在 Slashdot上看到&lt;a href="http://it.slashdot.org/story/09/10/24/234206/ARM-Launches-Cortex-A5-Processor-To-Take-On-Atom"&gt;這則消息&lt;/a&gt;&lt;br /&gt;ARM官方網站已可以看到Cortex-A5相關的&lt;a href="http://www.arm.com/products/CPUs/ARM-Cortex-A5.html"&gt;訊息&lt;/a&gt;&lt;br /&gt;iThome上也可以看到一則&lt;a href="http://www.ithome.com.tw/itadm/article.php?c=57704"&gt;新聞&lt;/a&gt;(細節多翻譯自ARM官網)&lt;br /&gt;&lt;br /&gt;從規格上看來, Cortex-A5是Cortext-A8/A9的精簡版&lt;br /&gt;儘管公告與說明上強調與Cortex-A8/A9的相容性&lt;br /&gt;然而從官網的規格細節可以看出相當的差異&lt;br /&gt;* pipeline自13 stages減為 8 stages&lt;br /&gt;* instruction 自 dual-issue 減為 single-issue&lt;br /&gt;* NEON/FPU 為選配&lt;br /&gt;* 不具有 L2 Cache&lt;br /&gt;&lt;br /&gt;另外在記憶體系統項目強調, Cortex-A5有著最佳化的AXI bus, 提供相當於3X ARM11頻寬&lt;br /&gt;&lt;br /&gt;從自Cortex-A8架構的精簡化到NEON/FPU的選配&lt;br /&gt;可以看出ARM希望在舊有的 ARM9/ARM11 到 Cortex-A8 之間的價格與功能落差&lt;br /&gt;提供一個低功耗, 低成本且具有競爭優勢與架構彈性的進階處理器&lt;br /&gt;如官網所述, Cortex-A5的目標市場在於依然使用ARM9/ARM11的廠商&lt;br /&gt;&lt;br /&gt;儘管Cortex-A5本身可能具有成本優勢,  然而依舊是single-issue的處理器&lt;br /&gt;可以說性能上與ARM9/ARM11的差異性並無相當的吸引力&lt;br /&gt;然而對於ARM Cortex-A5 市場區隔的重點在於NEON/FPU的授權價格&lt;br /&gt;對於使用ARM9/ARM11的廠商而言, 除了具有較快的AXI bus頻寬&lt;br /&gt;吸引升級的動力多半來自於SoC應用上對於NEON/FPU的需求 (Ex: 與GPU搭配)&lt;br /&gt;若搭配NEON/FPU價格過於接近 Cortex-A8&lt;br /&gt;廠商也有相當的可能選擇繼續使用 ARM9/ARM11 或選擇 Cortex-A8&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-7215307190634919638?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/7215307190634919638/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=7215307190634919638' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/7215307190634919638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/7215307190634919638'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/10/arm-cortex-a5.html' title='ARM 發表新低功耗處理器 Cortex-A5'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_NqrwyXvfMh4/SuP2C1NLthI/AAAAAAAABE8/vGm_cNixNdk/s72-c/cortex_a5_uni.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-645621354847187656</id><published>2009-10-21T06:20:00.000-07:00</published><updated>2009-10-21T06:40:58.702-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>My Baby~ Ubuntu 還是比較好用</title><content type='html'>我家的妹妹&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_NqrwyXvfMh4/St8K-2KrTxI/AAAAAAAAA9E/96tKKHFQ8NY/s1600-h/0109.JPG"&gt;&lt;img style="cursor: pointer; width: 266px; height: 400px;" src="http://4.bp.blogspot.com/_NqrwyXvfMh4/St8K-2KrTxI/AAAAAAAAA9E/96tKKHFQ8NY/s400/0109.JPG" alt="" id="BLOGGER_PHOTO_ID_5395042953421606674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Oct 19, 2009 我家多了新成員 - 我的寶貝女兒&lt;br /&gt;當然不免俗地拿起了相機拍了幾張照片&lt;br /&gt;&lt;br /&gt;由於怕老婆空檔會想用電腦, 帶的是老婆慣用的 MSI M673&lt;br /&gt;原本想透過Windows XP 來處理照片 (3.5G - Huawei E220 在9.04下還是有點小問題)&lt;br /&gt;然而發現在Ubuntu下能正常使用的內建讀卡機, 竟然一直讀取不到 8GB SDHC&lt;br /&gt;(O2Micro Integrated MMC/SD, 已經是XP SP3, 更新driver)&lt;br /&gt;搞了許久, 插卡後Windows 就直接停在那&lt;br /&gt;&lt;br /&gt;一整個火大後重新開機進入 Ubuntu 9.04, 無須特別設定, 就能輕鬆地把照片複製.&lt;br /&gt;於是設定好3.5G後就更新系統到9.10&lt;br /&gt;&lt;br /&gt;Baby~ 告訴你喔 Ubuntu 還是比較好用...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-645621354847187656?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/645621354847187656/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=645621354847187656' title='4 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/645621354847187656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/645621354847187656'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/10/my-baby-ubuntu.html' title='My Baby~ Ubuntu 還是比較好用'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_NqrwyXvfMh4/St8K-2KrTxI/AAAAAAAAA9E/96tKKHFQ8NY/s72-c/0109.JPG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-8618851242888188068</id><published>2009-10-09T20:22:00.000-07:00</published><updated>2009-10-10T20:48:26.000-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>HiRadioTray 20091010</title><content type='html'>這版是新增預約錄音前的整理版本&lt;br /&gt;本版本開始產生 .deb file&lt;br /&gt;新功能為 斷線偵測, 自動重新連線(基本錄音功能顯示STOPPPED)&lt;br /&gt;&lt;br /&gt;source code: &lt;a href="http://hiradiotray.googlecode.com/files/HiRadioTray_20091010-2.tgz"&gt;HiRadioTray_20091010-2.tgz&lt;/a&gt;&lt;a href="http://sites.google.com/site/champyen/hiradiotray/HiRadioTray_20091010-2.tgz"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;Ubuntu 9.04&lt;br /&gt;x86 deb package: &lt;a href="http://hiradiotray.googlecode.com/files/HiRadioTray_20091010-2_ubuntu904_i386.deb"&gt;HiRadioTray_20091010-2_ubuntu904_i386.deb&lt;/a&gt;&lt;br /&gt;amd64 deb package: &lt;a href="http://hiradiotray.googlecode.com/files/HiRadioTray_20091010-2_ubuntu904_amd64.deb"&gt;HiRadioTray_20091010-2_ubuntu904_amd64.deb&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ubuntu 9.10&lt;br /&gt;x86 deb package: &lt;a href="http://hiradiotray.googlecode.com/files/HiRadioTray_20091010-2_ubuntu910_i386.deb"&gt;HiRadioTray_20091010-2_ubuntu910_i386.deb&lt;/a&gt;&lt;br /&gt;amd64 deb package: &lt;a href="http://hiradiotray.googlecode.com/files/HiRadioTray_20091010-2_ubuntu910_amd64.deb"&gt;HiRadioTray_20091010-2_ubuntu910_amd64.deb&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;錄音檔案會存放於 $HOME/RadioRecord/ 目錄下&lt;br /&gt;由於錄音是新增一個  mplayer 在背景連線抓取 bitstream (如此之後才能夠聽一台錄另一台)&lt;br /&gt;&lt;br /&gt;有使用相關問題歡迎不吝指教&lt;br /&gt;&lt;br /&gt;Google Code Project : &lt;a href="http://code.google.com/p/hiradiotray/"&gt;hiradiotray&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;PS. 下午測試後發現一些狀況, 目前將斷線偵測的週期拉長為 5 秒測試中, 已安裝者請重新下載安裝&lt;br /&gt;PS2. 有人反應安裝執行後有錯誤訊息, 測試後發現應是 library mismatch, 新增 ubuntu 9.04 package&lt;br /&gt;PS3. 修正檔案開啟過多問題&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-8618851242888188068?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/8618851242888188068/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=8618851242888188068' title='12 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/8618851242888188068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/8618851242888188068'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/10/hiradiotray-20091010.html' title='HiRadioTray 20091010'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-1036042217538711183</id><published>2009-10-06T20:46:00.000-07:00</published><updated>2009-10-07T02:00:02.506-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>HiRadioTray 20091007</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_NqrwyXvfMh4/SswRgNzd9SI/AAAAAAAAA88/TeSoqyt1Lyo/s1600-h/hiradiotray20091007.png"&gt;&lt;img style="cursor: pointer; width: 386px; height: 376px;" src="http://4.bp.blogspot.com/_NqrwyXvfMh4/SswRgNzd9SI/AAAAAAAAA88/TeSoqyt1Lyo/s400/hiradiotray20091007.png" alt="" id="BLOGGER_PHOTO_ID_5389702099214660898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;看了一下, 有蠻多人有錄音相關需求&lt;br /&gt;這版本主要是提供初步的實作, 驗證所構想的錄音方式&lt;br /&gt;檔案請&lt;a href="http://sites.google.com/site/champyen/Home/HiRadioTray_20091007.tgz"&gt;到此&lt;/a&gt;下載&lt;br /&gt;&lt;br /&gt;HiRadioTray 需要 wxWidget 2.8 與 mplayer 請事先安裝好&lt;br /&gt;本版加入了基本錄音功能, 點選選單的 "Start/Stop Record" 就可以開始/停止錄音&lt;br /&gt;檔案名為: 年月日時分.wma  ex: 200910071143.asf&lt;br /&gt;未來規劃包裝.deb檔案與加入預約錄音的功能&lt;br /&gt;&lt;br /&gt;另外更新了 URL 擷取的方式, 方便快速播放/換台, 不需錄音功能者, 使用 Update 功能即可.&lt;br /&gt;&lt;br /&gt;有任何意見與問題, 請不吝指教&lt;br /&gt;&lt;br /&gt;ChangeList:&lt;br /&gt;      * modify get_mms.sh to replace mms to http for quick audio access&lt;br /&gt;      * use slave mode to quit&lt;br /&gt;      * use non-block file mode&lt;br /&gt;      * add record function&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-1036042217538711183?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/1036042217538711183/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=1036042217538711183' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/1036042217538711183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/1036042217538711183'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/10/hiradiotray-20091007.html' title='HiRadioTray 20091007'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_NqrwyXvfMh4/SswRgNzd9SI/AAAAAAAAA88/TeSoqyt1Lyo/s72-c/hiradiotray20091007.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-2144725541164918619</id><published>2009-10-03T08:18:00.000-07:00</published><updated>2009-10-03T10:08:05.997-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Ubuntu Netbook/Moblin Remix</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_NqrwyXvfMh4/SsdsOFhrH1I/AAAAAAAAA80/Lr8VEDjWwYE/s1600-h/910umr.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 234px;" src="http://1.bp.blogspot.com/_NqrwyXvfMh4/SsdsOFhrH1I/AAAAAAAAA80/Lr8VEDjWwYE/s400/910umr.jpg" alt="" id="BLOGGER_PHOTO_ID_5388394468429471570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ubuntu Moblin Remix (安裝後忘了擷取圖案, 引用ubuntu官方圖片)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_NqrwyXvfMh4/Ssdri5NQp2I/AAAAAAAAA8s/-XROJCmfexs/s1600-h/910unr.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 240px;" src="http://1.bp.blogspot.com/_NqrwyXvfMh4/Ssdri5NQp2I/AAAAAAAAA8s/-XROJCmfexs/s400/910unr.png" alt="" id="BLOGGER_PHOTO_ID_5388393726388250466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ubuntu Netbook Remix 9.10, gcin 搭配 Pure 的icon(En的圖案) 竟有意想不到的整體感&lt;br /&gt;&lt;br /&gt;由於個人桃園家中有台 EeePC 701&lt;br /&gt;礙於Desktop UI 不太適合 7" 螢幕&lt;br /&gt;(由於顯示的元件過多, 浪費不少空間, 另外部份文字顯示過小)&lt;br /&gt;&lt;br /&gt;考慮到近日 Android for EeePC 701 的支援也日漸成熟&lt;br /&gt;(近日0xlab olv 採用Mesa 7.6的支援, 連OpenGL ES 3D 支援都有了)&lt;br /&gt;為了便於使用, 原本是有打算改安裝 Android&lt;br /&gt;然而雖然增進便利性&lt;br /&gt;另外一方面, 理性又告訴我, 如此在功能性上大減&lt;br /&gt;&lt;br /&gt;除了基本的輸入法支援缺乏外&lt;br /&gt;另外像是 Flash Player 與 Office 軟體&lt;br /&gt;其他的功能像是 網路 ATM, File Sharing(samba..)&lt;br /&gt;這些在安裝了 Android後就無法使用, 而這並不是全部&lt;br /&gt;如此一來, 在平日桌面應用上來說在 EeePC 701裝 Android 並不方便&lt;br /&gt;可以這麼說, 若Android要跨越道Netbook 軟體支援與功能性的需求上需要更多的支援&lt;br /&gt;&lt;br /&gt;做了一些搜尋之後感覺, &lt;a href="http://www.moblin.org/"&gt;Intel Moblin v2.0&lt;/a&gt;似乎是個不錯的選擇&lt;br /&gt;有著針對 Web/Netbook 應用的 UI 設計(media player 的設計真的不錯), 開機快速等等的優點&lt;br /&gt;很可惜的是, Intel 官方的 image 僅支援使用 SSE3 的 CPU (像是 ATOM 與 Core 系列 CPU)&lt;br /&gt;Intel 官方宣稱如此可以加速 Moblin v2 20~30% 的效能&lt;br /&gt;Yeah, you got it...&lt;br /&gt;由於上述原因, EeePC 701 所使用的 Celeron 無法使用 Intel 官方的 image&lt;br /&gt;&lt;br /&gt;繼續挖下去發現了原本的 Moblin v1是建構在 ubuntu 上, 而 2.0 轉而選擇了 RedHat&lt;br /&gt;然而有如連續劇一般, Ubuntu &lt;a href="http://www.ubuntu.com/news/canoical-commits-ubuntu-moblin"&gt;官方公告&lt;/a&gt;支援 Moblin v2&lt;br /&gt;因此 Ubuntu 推出了自己的 Moblin 套件 - &lt;a href="http://cdimage.ubuntu.com/ubuntu-moblin-remix/daily-live/current/"&gt;Ubuntu Moblin Remix&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;相較於官方Moblin來說, Ubuntu Moblin Remix結合了Moblin的優點與ubuntu套件管理的好處&lt;br /&gt;然而由於目前Ubuntu Moblin Remix尚未正式釋出&lt;br /&gt;可以明顯感覺尚未完成, 安裝過程中並無正確中文顯示&lt;br /&gt;(由於缺乏字型, 即便試用liveCD, 安裝字型後, toolbar 也無法正確顯示)&lt;br /&gt;中文支援上需要安裝字型與語言支援的package並且重新開機&lt;br /&gt;加上瀏覽器似乎使用上有些問題, 只能使用附上的另外一個Qt/Webkit-based的&lt;br /&gt;此外對於每個一般程式是以 zone 來區別, 這點上來說, 切換並不是很方便&lt;br /&gt;而應用程式toolbar上只有單一項目, 再以頁面項目分類, 無法很方便快速找到軟體&lt;br /&gt;以 Web 應用導向的 UI 確實很快很炫, 然而對照其他一般程式上使用的體驗似乎不過generic&lt;br /&gt;而最可惜的是目前 Toolbar 的 layout 是寫死的, 無法透過修改CSS更改, 必須改寫程式碼&lt;br /&gt;對於解析度寬度為800(含)以下的 layout 各種功能的icon會與系統狀態的icon混在一起&lt;br /&gt;&lt;br /&gt;Ubuntu Netbook Remix(UNR) 9.10&lt;br /&gt;UNR不是新東西了, 自 Ubuntu 8.04 就有的針對 Netbook 套件&lt;br /&gt;然而建構於 Ubuntu 9.10 的 UNR, 有著與以往不同的外觀, UI的呈獻上變得更加的洗煉簡潔&lt;br /&gt;Toolbar 在有限空間下提供了Main Menu, Task List, Window Title System Status/Info等功能&lt;br /&gt;而每個程式的工作視窗就利用Toolbar之外的全部空間&lt;br /&gt;Main Menu 提供了軟體主要分類的類別, 每個類別下可能還有次類別&lt;br /&gt;雖然是簡單的概念, 在 Netbook 系統下確顯得直接明瞭&lt;br /&gt;使用上雖不如Moblin 搶眼, 然而確相當實用&lt;br /&gt;&lt;br /&gt;如果有 9" 以上的Netbook, 開機時間是重要因素的, 可以考慮使用Ubuntu Moblin Remix&lt;br /&gt;而針對Netbook 使用者個人偏向推荐 Ubuntu Netbook Remix (EeePC 70x 就沒有選擇了)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-2144725541164918619?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/2144725541164918619/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=2144725541164918619' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/2144725541164918619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/2144725541164918619'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/10/ubuntu-netbookmoblin-remix.html' title='Ubuntu Netbook/Moblin Remix'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_NqrwyXvfMh4/SsdsOFhrH1I/AAAAAAAAA80/Lr8VEDjWwYE/s72-c/910umr.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-5915515155623913880</id><published>2009-09-28T07:45:00.000-07:00</published><updated>2009-09-28T09:19:20.576-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='multimedia'/><category scheme='http://www.blogger.com/atom/ns#' term='audio'/><title type='text'>Matroska File Format</title><content type='html'>Matroska is a multimedia container format like AVI and aim to be an open standard.&lt;br /&gt;It is open and absolutely free for use. Everyone can get &lt;a href="http://matroska.org/files/matroska.pdf"&gt;specification&lt;/a&gt; easily and develop for their own purpose(personal, research or commercial).&lt;br /&gt;The format adopts &lt;a href="http://matroska.org/technical/specs/rfc/index.html"&gt;EBML&lt;/a&gt;(Extensible Binary Meta Language) design for extension flexibility.&lt;br /&gt;&lt;br /&gt;There are some free implementations for matroska.&lt;br /&gt;The most famous projectss are libebml &amp;amp; libmatroska released under LGPL.&lt;br /&gt;&lt;br /&gt;For most case, LGPL is ok. But for commercial usage and companies,  BSD License is prefered.&lt;br /&gt;Before 2007, a &lt;a href="http://haali.cs.msu.ru/mkv/"&gt;parser&lt;/a&gt; released under BSD License &lt;a href="http://osdir.com/ml/multimedia.matroska.devel/2006-06/msg00002.html"&gt;can be found easily&lt;/a&gt; on internet.&lt;br /&gt;But it is hard to get a copy now.&lt;br /&gt;For those who try to get it, you can get it (2 files:&lt;a href="http://aegibug.nyo.dk/tags/2.1.7/aegisub/src/MatroskaParser.c"&gt;MatroskaParser.c&lt;/a&gt; &lt;a href="http://aegibug.nyo.dk/tags/2.1.7/aegisub/src/MatroskaParser.h"&gt;MatroskaParser.h&lt;/a&gt;)&lt;br /&gt;via &lt;a href="http://www.aegisub.net/"&gt;aegisub&lt;/a&gt; project (whole project released under 3-clause BSD License).&lt;br /&gt;&lt;br /&gt;For InputStream implementation reference, mkv_wrap.cpp and mkv_wrap.h can be refered.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-5915515155623913880?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/5915515155623913880/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=5915515155623913880' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/5915515155623913880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/5915515155623913880'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/09/matroska-file-format.html' title='Matroska File Format'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-6643299535014155558</id><published>2009-09-27T19:01:00.000-07:00</published><updated>2009-09-27T22:00:11.660-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Ubuntu 9.10</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NqrwyXvfMh4/SsBCKzBZnDI/AAAAAAAAA8k/m1NWAOlSbwo/s1600-h/ubuntu-logo.png"&gt;&lt;img style="cursor: pointer; width: 240px; height: 240px;" src="http://3.bp.blogspot.com/_NqrwyXvfMh4/SsBCKzBZnDI/AAAAAAAAA8k/m1NWAOlSbwo/s400/ubuntu-logo.png" alt="" id="BLOGGER_PHOTO_ID_5386377907597319218" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;近日改裝了Ubuntu 9.10 daily build&lt;br /&gt;&lt;br /&gt;第一時間可以明顯感覺到的是開機速度又比 Ubuntu 9.04 快些&lt;br /&gt;而開機splash比較有科技感了&lt;br /&gt;而系統預設的中文輸入法從 SCIM 改為 iBus&lt;br /&gt;即便如此, 前者個人使用穩定性上不足, 後者反應速度上不佳&lt;br /&gt;我都移除改安裝gcin&lt;br /&gt;&lt;br /&gt;許多主要軟體都有重大的版本更新&lt;br /&gt;linux kernel 2.6.31/GNOME 2.28/Mesa 7.6 (採用了新的Gallium3D 架構)&lt;br /&gt;桌面環境的使用上可以感受到所帶來的效能增進&lt;br /&gt;另外也修正了一些問題&lt;br /&gt;(ex: 我使用的華為 E220, 原本需要做些檔案修正才可以正常使用, 現在可以直接正常上網了)&lt;br /&gt;&lt;br /&gt;另外像是更新帶來的新特性&lt;br /&gt;Firefox 3.5(TraceMonkey JavaScript Engine)&lt;br /&gt;OpenOffice 3.1(強化圖形顯示)&lt;br /&gt;Pidgin 2.6.2(支援Google Talk Voice chat)&lt;br /&gt;gcin 1.4.5(解決著名的小灰問題)&lt;br /&gt;&lt;br /&gt;對於 Ubuntu 的日漸成熟, 我想應該是有目共睹的&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-6643299535014155558?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/6643299535014155558/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=6643299535014155558' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/6643299535014155558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/6643299535014155558'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/09/ubuntu-910.html' title='Ubuntu 9.10'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_NqrwyXvfMh4/SsBCKzBZnDI/AAAAAAAAA8k/m1NWAOlSbwo/s72-c/ubuntu-logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-4203351307845054304</id><published>2009-09-21T01:36:00.000-07:00</published><updated>2009-09-21T06:48:54.163-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Play with Android 簡報上線</title><content type='html'>從決定開始要 porting android 到 zaurus 當練習&lt;br /&gt;這段期間看了一些資料, 也看到一些關於Android有趣的實做與專案&lt;br /&gt;以軟體架構的角度看來, Android 的確是個饒富趣味的系統&lt;br /&gt;其特殊的軟體架構, 也讓Android在Symbian, WM, Linux 三強鼎立中走出自己的路外&lt;br /&gt;&lt;br /&gt;這份簡報的主旨並不在於教導 porting 或是 marketing 分析&lt;br /&gt;僅僅輕描淡寫地談了系統架構, 動手編譯Android 到客製系統&lt;br /&gt;從慢慢地動手深入 Android, 進而瞭解其相較於其他系統不同的開放與特殊性&lt;br /&gt;或是進而體會到其未至成熟的部份&lt;br /&gt;&lt;br /&gt;可以確定的是即便到了 1.6, Android 還需要更多的實作與改善&lt;br /&gt;套句物理頑童費曼的名言: "這下面的空間還大著呢!"&lt;br /&gt;是的, 這下面的進步的空間還大著呢&lt;br /&gt;&lt;br /&gt;&lt;div style="width:425px;text-align:left" id="__ss_2030807"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/champ_yen/play-with-android-2030807" title="Play With Android"&gt;Play With Android&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=playwithandroid-090921084524-phpapp01&amp;rel=0&amp;stripped_title=play-with-android-2030807" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=playwithandroid-090921084524-phpapp01&amp;rel=0&amp;stripped_title=play-with-android-2030807" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/champ_yen"&gt;Champ Yen&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-4203351307845054304?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/4203351307845054304/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=4203351307845054304' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4203351307845054304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4203351307845054304'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/09/play-with-android.html' title='Play with Android 簡報上線'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-1639452221335084018</id><published>2009-09-17T09:59:00.000-07:00</published><updated>2009-09-17T10:07:46.901-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Cont. Android on Zaurus - swap</title><content type='html'>finally, i compiled a static linked busybox for swap. now browsing is much responsive and smoonth. these words are input by my zaurus.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-1639452221335084018?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/1639452221335084018/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=1639452221335084018' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/1639452221335084018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/1639452221335084018'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/09/cont-anddsaanddr.html' title='Cont. Android on Zaurus - swap'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-2789545776707428013</id><published>2009-09-16T09:04:00.000-07:00</published><updated>2009-09-16T09:17:38.257-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>續 Android 1.6 on Zaurus C750 - Keypad/Screen View</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_NqrwyXvfMh4/SrENf_9Xz4I/AAAAAAAAA8c/C0GmUBWCv48/s1600-h/Android_ZaurusC750_Landscape.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 267px;" src="http://2.bp.blogspot.com/_NqrwyXvfMh4/SrENf_9Xz4I/AAAAAAAAA8c/C0GmUBWCv48/s400/Android_ZaurusC750_Landscape.JPG" alt="" id="BLOGGER_PHOTO_ID_5382097873080405890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;當初構想中的Android Zaurus床頭機是Landscape View&lt;br /&gt;因此無線網路通了之後, 就開始著手修改&lt;br /&gt;&lt;br /&gt;在移植過程中就已經發現一件事,&lt;br /&gt;當Zaurus蓋起來時Orientation會切換到Landscape&lt;br /&gt;而一旦打開時就會切到Portrait&lt;br /&gt;這一切都是因為螢幕編框有的凸起, 將鍵盤上方的一個switch 壓下&lt;br /&gt;透過 getevent 指令, 可以確認這是 keyboard 所發出的事件&lt;br /&gt;詳細的修改就不說了, 主要是 driver/input/keyboard/corgikbd.c&lt;br /&gt;針對 SWA (Switch-A) 的結果, 傳回相反值&lt;br /&gt;&lt;br /&gt;Android 1.6 已經很聰明的會轉換 Touchscreen 的事件座標&lt;br /&gt;而keyboard 的方向鍵也是 .... 這才讓我注意鍵盤方向對應我的設定有誤&lt;br /&gt;Android 原本的 Screen Orientation 和 方向鍵是針對 手機去設計的&lt;br /&gt;所以要再次調整 /system/usr/keylayout/qwerty.kl 的數值&lt;br /&gt;&lt;br /&gt;如此就是一台堪用的床頭機...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-2789545776707428013?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/2789545776707428013/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=2789545776707428013' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/2789545776707428013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/2789545776707428013'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/09/android-16-on-zaurus-c750-keypadscreen.html' title='續 Android 1.6 on Zaurus C750 - Keypad/Screen View'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_NqrwyXvfMh4/SrENf_9Xz4I/AAAAAAAAA8c/C0GmUBWCv48/s72-c/Android_ZaurusC750_Landscape.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-3301466762115456624</id><published>2009-09-15T06:31:00.001-07:00</published><updated>2009-09-16T09:18:34.390-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>續 Android 1.6 on Zaurus C750 - Touchscreen/Wifi</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_NqrwyXvfMh4/Sq-XVbmprWI/AAAAAAAAA8U/zLl_b78WvNQ/s1600-h/Android_ZaurusC750_Wifi.JPG"&gt;&lt;img style="cursor: pointer; width: 267px; height: 400px;" src="http://4.bp.blogspot.com/_NqrwyXvfMh4/Sq-XVbmprWI/AAAAAAAAA8U/zLl_b78WvNQ/s400/Android_ZaurusC750_Wifi.JPG" alt="" id="BLOGGER_PHOTO_ID_5381686474173951330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;近日已將 Touchscreen 與 Wireless 相關驅動程式與設定調整好&lt;br /&gt;Touchscreen 驅動後即可使用, Wireless 方面是參考&lt;a href="http://labs.beatcraft.com/ja/index.php?bc9%2FSoftware%2FAndroid%2FAndroid_Wi-Fi"&gt;這篇&lt;/a&gt;&lt;br /&gt;之後要將Screen自Portrait 轉為 Landscape&lt;br /&gt;&lt;br /&gt;目前的執行結果如上圖&lt;br /&gt;ZC750 + Android 在網頁瀏覽的反應與速度上差強人意&lt;br /&gt;但是作為熟悉Android Porting是個很好的練習&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-3301466762115456624?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/3301466762115456624/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=3301466762115456624' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/3301466762115456624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/3301466762115456624'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/09/android-16-on-zaurus-c750_15.html' title='續 Android 1.6 on Zaurus C750 - Touchscreen/Wifi'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_NqrwyXvfMh4/Sq-XVbmprWI/AAAAAAAAA8U/zLl_b78WvNQ/s72-c/Android_ZaurusC750_Wifi.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-4886119676416678065</id><published>2009-09-10T07:37:00.000-07:00</published><updated>2009-09-16T09:19:16.320-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arm'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android 1.6 on Zaurus C750 - Basic System Works!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_NqrwyXvfMh4/SqkP5tLGMGI/AAAAAAAAA8M/vOqsN1H8-H8/s1600-h/Android_ZaurusC750.JPG"&gt;&lt;img style="cursor: pointer; width: 267px; height: 400px;" src="http://4.bp.blogspot.com/_NqrwyXvfMh4/SqkP5tLGMGI/AAAAAAAAA8M/vOqsN1H8-H8/s400/Android_ZaurusC750.JPG" alt="" id="BLOGGER_PHOTO_ID_5379848713923866722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Zaurus 是個人在 2003 年時夠入, 近日也不太使用&lt;br /&gt;這段期間從 Cacko, OpenZaurus, pdaXrom 到 Angstrom 都玩過&lt;br /&gt;最近工作需要熟悉Android 移植流程, 在硬體平台尚未完備前&lt;br /&gt;就先行拿這台舊PDA 研究 Android&lt;br /&gt;&lt;br /&gt;圖上是 Android 1.6 在 Zaurus C750 開機完成後的畫面&lt;br /&gt;kernel 部份是使用 OE 2.6.26 for Zaurus C7x0&lt;br /&gt;對應的Android 修改是參考 &lt;a href="http://git.omapzoom.org/?p=repo/omapkernel.git;a=shortlog;h=refs/heads/android-2.6.26"&gt;OMAP kernel android-2.6.26&lt;/a&gt;&lt;br /&gt;並且加入了 2.6.27 部份的更新與 PMEM 與 w100fb 的 &lt;a href="http://ozetchi.cocolog-nifty.com/zaurus/w100_double_buffer.patch"&gt;double buffer&lt;/a&gt;與&lt;a href="http://www.handhelds.org/hypermail/kernel-discuss/att-2389/w100-extaccel.patch__charset_UTF-8"&gt;加速&lt;/a&gt;的修正&lt;br /&gt;目前尚未完成, 無法使用, 還需要針對鍵盤輸入與電源偵測做處理&lt;br /&gt;啟動CF WIFI 來使用也是必定的&lt;br /&gt;&lt;br /&gt;相關 source code 與 binary 會在完工後一併釋出&lt;br /&gt;(這陣子survey 發現很多相關網站只釋出binary, 但一直迴避釋出source ex: &lt;a href="http://www.omegamoon.com/"&gt;Omegamoon&lt;/a&gt; 釋出許多binary, Zubuntu 已經到 2.0 確從未釋出任何 kernel source)&lt;br /&gt;&lt;br /&gt;總之, 這就是開放平台的好處&lt;br /&gt;與C750 同時期的PDA, 硬體或許過時然而卻也不是不堪使用&lt;br /&gt;SONY CLIE UX50 or WinCE/WM PDA 如今又能拿來做些甚麼?&lt;br /&gt;然而相關軟體都已經過時許久, 而且也無持續更新&lt;br /&gt;而規格與軟體不開放, 就算有心也難為無米之炊&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-4886119676416678065?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/4886119676416678065/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=4886119676416678065' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4886119676416678065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4886119676416678065'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/09/android-16-on-zaurus-c750.html' title='Android 1.6 on Zaurus C750 - Basic System Works!'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_NqrwyXvfMh4/SqkP5tLGMGI/AAAAAAAAA8M/vOqsN1H8-H8/s72-c/Android_ZaurusC750.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-8008137017177489706</id><published>2009-08-28T07:23:00.000-07:00</published><updated>2009-08-30T08:08:59.421-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>這就是淺景深(錢井深)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_NqrwyXvfMh4/SpqVE8q51JI/AAAAAAAAA8E/68W9A1NPnfQ/s1600-h/500D.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 267px;" src="http://1.bp.blogspot.com/_NqrwyXvfMh4/SpqVE8q51JI/AAAAAAAAA8E/68W9A1NPnfQ/s400/500D.JPG" alt="" id="BLOGGER_PHOTO_ID_5375773017458201746" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Canon 500D + 50mm f1.8, 1.8大光圈 的拍攝效果&lt;br /&gt;圖中為老婆的妹妹去日本時購買給我們的平安符, 作為顯示淺景深的效果&lt;br /&gt;光圈快門沒注意, 所以重新調整過色階&lt;br /&gt;&lt;br /&gt;用了好一陣子的消費型相機, 一直很想擁有台數位單眼(DSLR)&lt;br /&gt;現今的DC儘管輕巧, 儘管成像也不差, 儘管倍率也很可觀&lt;br /&gt;然而一般DC在成像品質與雜訊處理上與DSLR還是有差距&lt;br /&gt;而更重要的是景深的控制, 操控性上是很難望其項背的&lt;br /&gt;淺景深在一般DC並非不可能, 而是在一些條件下才可以成立&lt;br /&gt;對於我這個不專業的人而言, 都可以感受到DSLR的等級差&lt;br /&gt;&lt;br /&gt;今日為了迎接即將到來的家庭新成員, 跑去物色適合的DSLR&lt;br /&gt;最初是想看看有無 Nikon D60庫存品&lt;br /&gt;D5000的旋轉螢幕不敢恭維,&lt;br /&gt;D90的價格實在是讓人下不了手&lt;br /&gt;D3000的CCD成像品質是敬謝不敏&lt;br /&gt;&lt;br /&gt;原本一家 D90 + 18-55m kit 開價近 33K, 發現比X發賣的便宜 4K還蠻心動的&lt;br /&gt;後來到另一櫃才發現這個價格還貴了 2K&lt;br /&gt;就在轉向Canon 450D的同時, 被某位店員說服決定夠入Canon 500D&lt;br /&gt;除了整組kit 外還加買了顆 50mm f1.8 鏡頭,&lt;br /&gt;而買了些週邊, 總價格只比D90機身高些&lt;br /&gt;一句關於攝影的俏皮話是"淺景深, 錢井深", 說來也是其來有自&lt;br /&gt;&lt;br /&gt;剛拿到Canon 500D的第一印象是"對焦真快"&lt;br /&gt;而f1.8 的大光圈拍攝人像很不錯, 對於練習攝影上也相當方便.&lt;br /&gt;希望這台DSLR能讓我的攝影技術好一點....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-8008137017177489706?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/8008137017177489706/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=8008137017177489706' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/8008137017177489706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/8008137017177489706'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/08/blog-post.html' title='這就是淺景深(錢井深)'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_NqrwyXvfMh4/SpqVE8q51JI/AAAAAAAAA8E/68W9A1NPnfQ/s72-c/500D.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-5733840455980162813</id><published>2009-08-25T06:30:00.000-07:00</published><updated>2009-08-25T06:52:29.415-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Linux 上使用網路ATM</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_NqrwyXvfMh4/SpPoQVglLHI/AAAAAAAAA70/pmWpJbaBiFk/s1600-h/esun.jpg"&gt;&lt;img style="cursor: pointer; width: 280px; height: 70px;" src="http://4.bp.blogspot.com/_NqrwyXvfMh4/SpPoQVglLHI/AAAAAAAAA70/pmWpJbaBiFk/s400/esun.jpg" alt="" id="BLOGGER_PHOTO_ID_5373894147732483186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;其實, 這是舊聞了, 只是我今天第一次使用&lt;br /&gt;已往想在Linux上使用網路ATM是求之而不可得,&lt;br /&gt;儘管讀卡機在Linux已經都有driver,&lt;br /&gt;然而國內的銀行多以Windows特有的ActiveX建構網路ATM服務&lt;br /&gt;&lt;br /&gt;先前就已經在 ubuntu-tw 上看到&lt;br /&gt;玉山銀行(E.SUN Bank)就感心地提供了Linux網路ATM支援&lt;br /&gt;然而一直都沒有使用上的需求, 所以也沒特別去嘗試&lt;br /&gt;&lt;br /&gt;今日按照&lt;a href="http://paar.kh.edu.tw/wp/?p=159"&gt;這篇文章&lt;/a&gt;, 就順利使用手邊的讀卡機完成匯款&lt;br /&gt;再次感謝玉山銀行提供Linux 網路ATM服務&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-5733840455980162813?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/5733840455980162813/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=5733840455980162813' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/5733840455980162813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/5733840455980162813'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/08/linux-atm.html' title='Linux 上使用網路ATM'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_NqrwyXvfMh4/SpPoQVglLHI/AAAAAAAAA70/pmWpJbaBiFk/s72-c/esun.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-4633508659960376546</id><published>2009-08-10T22:56:00.000-07:00</published><updated>2009-08-10T23:04:17.667-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><title type='text'>Introduction to Linux SD/MMC Driver Stack 簡報上線</title><content type='html'>近日工作與此有關&lt;br /&gt;因此做了份簡短的簡報&lt;br /&gt;主要只是針對Linux SD/MMC Driver Stack中,&lt;br /&gt;所使用的資料結構作簡短提示&lt;br /&gt;搭配參考其他實作, 應可較快上手實作&lt;br /&gt;&lt;br /&gt;Linux Porting 該篇 slides 有缺漏字, 近日會更新版本&lt;br /&gt;PDF 檔也會近日放上&lt;br /&gt;&lt;br /&gt;&lt;div style="width: 425px; text-align: left;" id="__ss_1841157"&gt;&lt;a style="margin: 12px 0pt 3px; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; text-decoration: underline;" href="http://www.slideshare.net/champ_yen/linux-sdmmc-driver-stack" title="Linux SD/MMC Driver Stack"&gt;Linux SD/MMC Driver Stack&lt;/a&gt;&lt;object style="margin: 0px;" height="355" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=linuxsdmmcdriver-090811004618-phpapp02&amp;amp;rel=0&amp;amp;stripped_title=linux-sdmmc-driver-stack"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=linuxsdmmcdriver-090811004618-phpapp02&amp;amp;rel=0&amp;amp;stripped_title=linux-sdmmc-driver-stack" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;"&gt;View more &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/"&gt;documents&lt;/a&gt; from &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/champ_yen"&gt;Champ Yen&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-4633508659960376546?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/4633508659960376546/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=4633508659960376546' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4633508659960376546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4633508659960376546'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/08/introduction-to-linux-sdmmc-driver.html' title='Introduction to Linux SD/MMC Driver Stack 簡報上線'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-8308386143091424947</id><published>2009-07-20T06:45:00.000-07:00</published><updated>2009-07-20T07:52:53.067-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><title type='text'>Mesa 7.5 released</title><content type='html'>著名的open-source OpenGL 實作 - &lt;a href="http://www.mesa3d.org/"&gt;Mesa&lt;/a&gt; 釋出了最新的 &lt;a href="http://mesa3d.org/relnotes-7.5.html"&gt;7.5&lt;/a&gt; 版&lt;br /&gt;在此版最引人注目的莫過於新特性 - &lt;a href="http://wiki.freedesktop.org/wiki/Software/gallium"&gt;Gallium3D&lt;/a&gt; 架構&lt;br /&gt;&lt;br /&gt;此新架構目的在於提供更簡潔與彈性的3D 實作介面&lt;br /&gt;以因應多元化的 3D API 實作 (ex: OpenGL 3.x , OpenGL ES 1.x/2.x)&lt;br /&gt;&lt;br /&gt;以下兩圖解引用自 Gallium3D talk from XDS 2007&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_NqrwyXvfMh4/SmR8uRU2iAI/AAAAAAAAA7k/AhJVjCN0nMo/s1600-h/mesa.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 183px;" src="http://2.bp.blogspot.com/_NqrwyXvfMh4/SmR8uRU2iAI/AAAAAAAAA7k/AhJVjCN0nMo/s400/mesa.png" alt="" id="BLOGGER_PHOTO_ID_5360546590844422146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;在已往的Mesa 的實作仰賴著 DRI Driver&lt;br /&gt;由於實作的概念上緊密依附於 OpenGL,&lt;br /&gt;硬體加速上也僅止於 OpenGL 與硬體間的轉換&lt;br /&gt;對於作業系統上也有著高度相依性&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NqrwyXvfMh4/SmR_P2o11MI/AAAAAAAAA7s/FPOeV2d6B74/s1600-h/gallium.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 177px;" src="http://3.bp.blogspot.com/_NqrwyXvfMh4/SmR_P2o11MI/AAAAAAAAA7s/FPOeV2d6B74/s400/gallium.png" alt="" id="BLOGGER_PHOTO_ID_5360549366819312834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;新的Gallium3D 架構將DRI Driver 一分為三&lt;br /&gt;原有的 DRI Driver 分為 State tracker, HW Driver, OS Dependencies(Winsys Layer)&lt;br /&gt;藉由抽換此3個模組就能夠簡單地達到&lt;br /&gt;多樣的3D API 實作(OpenGL 1.x/2.x/3.x, OpenGL ES 1.x/2.x, D3D), 簡潔的driver model, 與OS re-targetability&lt;br /&gt;也提昇了系統實作的彈性&lt;br /&gt;&lt;br /&gt;目前新架構上已經有 software pipe, i915 driver, Cell driver, ATI R300 與 nouveau (Nvidia) 實作&lt;br /&gt;相信未來會有更廣泛的支援與實作&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-8308386143091424947?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/8308386143091424947/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=8308386143091424947' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/8308386143091424947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/8308386143091424947'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/07/mesa-75-released.html' title='Mesa 7.5 released'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_NqrwyXvfMh4/SmR8uRU2iAI/AAAAAAAAA7k/AhJVjCN0nMo/s72-c/mesa.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-3817099571526010430</id><published>2009-07-15T08:08:00.000-07:00</published><updated>2009-07-15T08:21:16.429-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>HiRadioTray &amp; Hinet radio script 20090715</title><content type='html'>今日發現不能聽Hinet 網路廣播了 (抱歉, 最近工作忙, 需要安靜)&lt;br /&gt;而且看到有人反應並且提供了解法, 我就更新了一下&lt;br /&gt;分析了一下更新 &lt;a href="http://sites.google.com/site/champyen/Home/HiRadioTray_20090715.tgz"&gt;HiRadioTray&lt;/a&gt; 和 &lt;a href="http://sites.google.com/site/champyen/Home/radio_20090715.tgz"&gt;Script&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;因為只改reg. rule, 我覺得這樣太沒誠意了&lt;br /&gt;HiRadioTray, Hinet Radio Script 這版就加入了據說坊間沒有的更新功能&lt;br /&gt;有甚麼好意見就留個言, 有時間就來實作&lt;br /&gt;&lt;br /&gt;.deb .rpm .xxx package!?&lt;br /&gt;要改的太多, 那就改天吧...:P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-3817099571526010430?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/3817099571526010430/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=3817099571526010430' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/3817099571526010430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/3817099571526010430'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/07/hiradiotray-hinet-radio-script-20090715.html' title='HiRadioTray &amp; Hinet radio script 20090715'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-6460186722116558296</id><published>2009-07-05T20:38:00.000-07:00</published><updated>2009-07-20T08:21:21.691-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='omap'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>雜記</title><content type='html'>晃眼一個月就過了....&lt;br /&gt;一個半月前還在思索這幾年來的歷程&lt;br /&gt;想在一個月前的今日寫下自己而立之年的一些想法&lt;br /&gt;&lt;br /&gt;月中, 也有想要把近日比較有心得的3D相關數理做個簡報,&lt;br /&gt;進而探究ES Shading Language&lt;br /&gt;或是把工作相關的系統建構上的issue在blog上做心得討論&lt;br /&gt;&lt;br /&gt;然而在工作比較繁忙以及身體微恙下, 就這樣都一一拖了過去&lt;br /&gt;因此blog 的六月也就成了一段空白, 現在想想還有些愧疚&lt;br /&gt;&lt;br /&gt;週末好不容易花了點時間&lt;br /&gt;研究了到手一些時日的Devkit8000,&lt;br /&gt;以隨板附上的linux kernel的針對平台修正的部份&lt;br /&gt;已經把ubuntu弄了上去, 接近了初期的目標&lt;br /&gt;而beagleboard也因老婆工作上的需要, 已離開我好一陣子,&lt;br /&gt;近日也在思索, 想購入Rev.C3&lt;br /&gt;&lt;br /&gt;如此也算是小有展獲吧...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-6460186722116558296?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/6460186722116558296/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=6460186722116558296' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/6460186722116558296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/6460186722116558296'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/07/blog-post.html' title='雜記'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-4694209589529861445</id><published>2009-06-04T07:15:00.001-07:00</published><updated>2009-06-04T20:51:20.136-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='book'/><title type='text'>Shading Language Prework - 3D Math</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_NqrwyXvfMh4/SifownJSaSI/AAAAAAAAA2E/8cijzv4OOgM/s1600-h/opengles_logo.png"&gt;&lt;img style="cursor: pointer; width: 204px; height: 75px;" src="http://2.bp.blogspot.com/_NqrwyXvfMh4/SifownJSaSI/AAAAAAAAA2E/8cijzv4OOgM/s400/opengles_logo.png" alt="" id="BLOGGER_PHOTO_ID_5343495404737685794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;OpenGL 是個人在大二時接觸的, 當時也沒有特別深入&lt;br /&gt;大概是瞭解OpenGL提供的座標系統, 會貼圖和使用 Display List 的程度&lt;br /&gt;由於一直停留在 OpenGL 1.2 以前的印象&lt;br /&gt;在剛看到OpenGL (ES) 2.x 時, 個人還深深懷疑是否真的學過OpenGL&lt;br /&gt;&lt;br /&gt;在接觸到OpenGL ES 2.0&lt;br /&gt;並且開始瞭解這幾年的GLSL到 ESSL之後&lt;br /&gt;對於 OpenGL SuperBible 中的描述:&lt;br /&gt;"This isn't your father's OpenGL" 不禁莞爾一笑&lt;br /&gt;事隔十多年, 對於CS後進而言, 這真的不是上一輩的OpenGL&lt;br /&gt;&lt;br /&gt;延續&lt;a href="http://champyen.blogspot.com/2009/03/opengl-es-20-hello-triangle.html"&gt;OpenGL ES 2.0: Hello Triangle!&lt;/a&gt;文章&lt;br /&gt;即便有了相關的Emulator, 若非已經在Desktop上熟悉於撰寫&lt;a href="http://www.opengl.org/documentation/glsl/"&gt;OpenGL Shading Language&lt;/a&gt;&lt;br /&gt;在撰寫OpenGL ES 2.0程式上應該會感到不得其門而入&lt;br /&gt;這是由於 OpenGL ES 2.0 是精簡自OpenGL 2.0&lt;br /&gt;已經不若 ES 1.x 採用 fixed function的方式&lt;br /&gt;&lt;br /&gt;在OpenGL ES 1.x 中採用的 Graphics pipeline 示意圖如下&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_NqrwyXvfMh4/SifgC0-p82I/AAAAAAAAA10/60tt9D-lRHg/s1600-h/opengles_1x_pipeline.gif"&gt;&lt;img style="cursor: pointer; width: 400px; height: 252px;" src="http://2.bp.blogspot.com/_NqrwyXvfMh4/SifgC0-p82I/AAAAAAAAA10/60tt9D-lRHg/s400/opengles_1x_pipeline.gif" alt="" id="BLOGGER_PHOTO_ID_5343485822084182882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;其中每個部份OpenGL 都有提供對應的 API&lt;br /&gt;像是Transforming部份的 glTranslate, glRotate, glPushMatrix 和 glPopMatrix 等&lt;br /&gt;如此規劃的缺點是, 所產生的效果受限於 OpenGL (ES) 1.x 內所採用對於顏色和光線的演算法&lt;br /&gt;在產生的效果上受限, 對於新的演算法上實作的複雜度高和效率上的低落&lt;br /&gt;&lt;br /&gt;然而OpenGL (ES) 1.x 也不是全然沒有好處&lt;br /&gt;相較於駕馭OpenGL (ES) 2.x shading language高門檻&lt;br /&gt;只要對於Coordinate和Camera View 有點瞭解, 知道所需使用的 OpenGL (ES) 1.x API&lt;br /&gt;一般人無需瞭解複雜的數理運算, 就可以寫出不錯的 3D 程式&lt;br /&gt;&lt;br /&gt;在OpenGL ES 2.0中 pipeline 如下&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_NqrwyXvfMh4/Sifm-AiLa2I/AAAAAAAAA18/1kqOfzKxZFQ/s1600-h/opengles_20_pipeline.gif"&gt;&lt;img style="cursor: pointer; width: 400px; height: 256px;" src="http://1.bp.blogspot.com/_NqrwyXvfMh4/Sifm-AiLa2I/AAAAAAAAA18/1kqOfzKxZFQ/s400/opengles_20_pipeline.gif" alt="" id="BLOGGER_PHOTO_ID_5343493435868015458" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;其中可以看出原本的 Transformation &amp;amp; Lighting 由 Vertex Shader 處理&lt;br /&gt;在Rasterization 後的Texture, Color, Fog, Alpha都由 Fragment Shader 處理&lt;br /&gt;而shader 的實作就是靠 shading language 針對此兩部份撰寫兩個程式&lt;br /&gt;由於programmable 的緣故 Vertex/Fragment Shader 能提供的能力與彈性超過於上述的項目&lt;br /&gt;&lt;br /&gt;而由於上述以shading language處理的部份功能上被取代,&lt;br /&gt;在制定的&lt;a href="http://www.khronos.org/registry/gles/api/2.0/gl2.h"&gt; API &lt;/a&gt;上相較於 &lt;a href="http://www.khronos.org/registry/gles/api/1.1/gl.h"&gt;ES 1.1&lt;/a&gt; 顯得精簡&lt;br /&gt;而這些彈性與強大的功能所需付出的代價是:&lt;br /&gt;由於shading language 必須直接處理幾何/光學/著色效果.&lt;br /&gt;必須對於 3D 背後的數理運算有相當的認識.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NqrwyXvfMh4/SifeTzxCHzI/AAAAAAAAA1s/3JcIiL0Wdn4/s1600-h/3DMath.jpg"&gt;&lt;img style="cursor: pointer; width: 325px; height: 400px;" src="http://3.bp.blogspot.com/_NqrwyXvfMh4/SifeTzxCHzI/AAAAAAAAA1s/3JcIiL0Wdn4/s400/3DMath.jpg" alt="" id="BLOGGER_PHOTO_ID_5343483914793131826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;在3D數理上, 其實並沒有一般人懼怕的高深,&lt;br /&gt;只複習一小部份的Linear Algebra與簡單的向量/幾何運算&lt;br /&gt;即可以理解與掌握絕大部分的3D 計算&lt;br /&gt;想好好複習一下可以看看&lt;a href="http://gamemath.com/"&gt;"3D Math Primer for Graphics and Game Development"&lt;/a&gt;&lt;br /&gt;(對於 Shading Language 也用不到裡面全部的內容)&lt;br /&gt;可惜的是, 本書運算式上以 left-handed coordinate/row vector 為主&lt;br /&gt;對於OpenGL 採用的 right-handed coordinate/column vector需要稍微對應轉換一下&lt;br /&gt;然而這對於概念與數理的瞭解上並不構成太多問題.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-4694209589529861445?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/4694209589529861445/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=4694209589529861445' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4694209589529861445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4694209589529861445'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/06/shading-language-prework-3d-math.html' title='Shading Language Prework - 3D Math'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_NqrwyXvfMh4/SifownJSaSI/AAAAAAAAA2E/8cijzv4OOgM/s72-c/opengles_logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-8305433880324637077</id><published>2009-05-28T09:12:00.000-07:00</published><updated>2009-05-28T20:35:21.955-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><title type='text'>ARM - Building Multimedia Devices with ARM and ARM Partners Solutions</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NqrwyXvfMh4/Sh64dL42qHI/AAAAAAAAA1I/I79TD6QdLsI/s1600-h/ARM_logo.gif"&gt;&lt;img style="cursor: pointer; width: 98px; height: 45px;" src="http://3.bp.blogspot.com/_NqrwyXvfMh4/Sh64dL42qHI/AAAAAAAAA1I/I79TD6QdLsI/s400/ARM_logo.gif" alt="" id="BLOGGER_PHOTO_ID_5340909019654957170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;週二參加了這個活動&lt;br /&gt;簡單的說, 這是 ARM 推廣自己的 Mali 系列相關 IP 的活動&lt;br /&gt;儘管有其他像是 MontaVista, Ittiam, Aplix 等廠商的簡報,&lt;br /&gt;然而水準上不若於 ARM 一般重視&lt;br /&gt;而另一個可惜的是與會者做的功課不夠, 常可聽到缺乏sense的問題&lt;br /&gt;&lt;br /&gt;著名的日商 Aplix 的簡報算是不錯, 然而定位上比較與活動主題無關&lt;br /&gt;Ittiam 有如照本宣科的簡報&lt;br /&gt;加上最後的 MontaVista 的簡報在內容與問答上有相當的錯謬&lt;br /&gt;&lt;br /&gt;Mali GPU:&lt;br /&gt;從 Mali 55 到 Mali 200/400&lt;br /&gt;而自sigle frag. processor, vertex + frag. processor&lt;br /&gt;到 vertex + 4 frag processor (with internal cache)&lt;br /&gt;看得出 ARM 在這個領域上的架構與軟體支援日趨成熟&lt;br /&gt;而對於之後的規劃與規格以很明確 - Vithar &amp;amp; Thor&lt;br /&gt;甚至未來在規劃上有打算支援 OpenCL&lt;br /&gt;回想當時, 應該詢問對於競爭者 Imagination, Vivante 的看法 與 Mali GPU 相較的優勢為何&lt;br /&gt;&lt;br /&gt;Mali VE:&lt;br /&gt;這技術源自於 ARM 所收購的 Logipard&lt;br /&gt;在Mali GPU 簡報中強調可以將 VE 的輸出直接作為 GPU 的 texture&lt;br /&gt;DM上可以看出 VE 俱備了 Memory, ME, MC, Transform, Control, Parser, Output 等7個部份&lt;br /&gt;由於具有彈性支援各式video format的特性&lt;br /&gt;因此每個部份都具有相當的programmable flexibility&lt;br /&gt;這樣的做法應該相當接近 configurable video codec 理想&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-8305433880324637077?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/8305433880324637077/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=8305433880324637077' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/8305433880324637077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/8305433880324637077'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/05/arm-building-multimedia-devices-with.html' title='ARM - Building Multimedia Devices with ARM and ARM Partners Solutions'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_NqrwyXvfMh4/Sh64dL42qHI/AAAAAAAAA1I/I79TD6QdLsI/s72-c/ARM_logo.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-4199518547437706939</id><published>2009-05-27T09:23:00.000-07:00</published><updated>2009-05-27T16:16:20.294-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='toolchain'/><title type='text'>buildroot - Enable setjmp/longjmp exceptions?</title><content type='html'>這週花了大部分的時間在處理這件事上&lt;br /&gt;&lt;br /&gt;繼先前&lt;a href="http://champyen.blogspot.com/2009/04/share-buildroot-toolchain-with-others.html"&gt;share buildroot toolchain with others&lt;/a&gt;之後&lt;br /&gt;接著近日又被詢問了 c++ compiler 的環境&lt;br /&gt;當下看了看buildroot configuration 中 Toolchain 項目有著一行&lt;br /&gt;&lt;br /&gt;[] Build/install c++ compiler and libstdc++?&lt;br /&gt;&lt;br /&gt;心想著這應該不過 30 分鍾就可以搞定了&lt;br /&gt;接著就是一連串疑問的開始&lt;br /&gt;&lt;br /&gt;編譯過程中, 編譯 libsupc++ 時錯誤發生了&lt;br /&gt;&lt;br /&gt;/tmp/ccxY0pxQ.s: Assembler messages:&lt;br /&gt;/tmp/ccxY0pxQ.s:423: Error: duplicate .personality directive&lt;br /&gt;/tmp/ccxY0pxQ.s:580: Error: duplicate .personality directive&lt;br /&gt;/tmp/ccxY0pxQ.s:581: Error: duplicate .handlerdata directive&lt;br /&gt;/tmp/ccxY0pxQ.s:948: Error: duplicate .personality directive&lt;br /&gt;/tmp/ccxY0pxQ.s:949: Error: duplicate .handlerdata directive&lt;br /&gt;make[5]: *** [eh_alloc.lo] Error 1&lt;br /&gt;&lt;br /&gt;而即便以相似設定以 crosstool-ng 編譯也會在相同點出問題&lt;br /&gt;&lt;br /&gt;以buildroot和錯誤訊息作為關鍵字搜索, 可以看到一些資訊, 然而無有效線索&lt;br /&gt;只好嘗試往 source code 找尋蛛絲馬跡&lt;br /&gt;最後找到的是處理 exceptions 相關的部份&lt;br /&gt;於是檢視一下buildroot有關exception的設定, 同在 Toolchain 內有著另外一行&lt;br /&gt;&lt;br /&gt;[*] Enable setjmp/longjmp exceptions?&lt;br /&gt;&lt;br /&gt;該項目主要是在編譯 gcc 時增加了一個設定項目&lt;br /&gt;--enable-sjlj-exceptions&lt;br /&gt;&lt;br /&gt;簡單地說, 是以呼叫 &lt;a href="http://en.wikipedia.org/wiki/Setjmp"&gt;setjmp/longjmp&lt;/a&gt; 的方式來作exception handling&lt;br /&gt;而事實上 libsupc++ 亦是C++中處理exception的部份&lt;br /&gt;雖然沒有繼續trace, 然而應該是該部份與 C library 的部份有衝突&lt;br /&gt;所以這問題應該與 uClibc 是有相關的&lt;br /&gt;&lt;br /&gt;另外, 如果不使用 setjmp/longjmp 的 exception handling model&lt;br /&gt;則採用的是 call frame unwinding 的方式&lt;br /&gt;&lt;br /&gt;這兩者間的差異和優缺就不多說了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-4199518547437706939?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/4199518547437706939/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=4199518547437706939' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4199518547437706939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4199518547437706939'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/05/buildroot-enable-setjmplongjmp.html' title='buildroot - Enable setjmp/longjmp exceptions?'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-5322855086236431780</id><published>2009-05-18T21:44:00.000-07:00</published><updated>2009-05-18T22:12:55.140-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Firefox on Netbook</title><content type='html'>經調整後的Firefox 視窗顯示&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NqrwyXvfMh4/ShI5Zeih5OI/AAAAAAAAA1A/ZYIR902geqY/s1600-h/firefox_netbook.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 261px;" src="http://3.bp.blogspot.com/_NqrwyXvfMh4/ShI5Zeih5OI/AAAAAAAAA1A/ZYIR902geqY/s400/firefox_netbook.png" alt="" id="BLOGGER_PHOTO_ID_5337391618244863202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;儘管Google Chrome 推出了Linux版本, 有著快速的Javascrip Engine - V8&lt;br /&gt;然而對Browsing 除了performance 外, user experience 也是很重要&lt;br /&gt;firefox 3.5 之後將有新的 javascript engine - TraceMonkey&lt;br /&gt;雖比不上 V8, 然而卻也沒有到顯著的懸殊差異&lt;br /&gt;再加上Firefox 的擴充套件, 在使用便利性上Firefox還是較為方便&lt;br /&gt;(長期倚賴, stylish, adblock plus, 新同文堂 與 forecastfox)&lt;br /&gt;但是chrome的外觀讓我瞭解一件事, titlebar 對於 browser的多餘&lt;br /&gt;當然, 很多時候, 多餘的就不只是titlebar&lt;br /&gt;&lt;br /&gt;儘管現在液晶螢幕尺寸越來越大, 然而Notebook卻是越來越輕巧&lt;br /&gt;以個人長期使用EeePC 900 瀏覽網頁來說, 網頁顯示面積相當重要&lt;br /&gt;1024x600 的解析度雖稱不上不足, 然而在垂直方向的顯示就相當吃緊&lt;br /&gt;加上4+1大元件: titlebar, menubar, navigation bar, statusbar 和系統的 taskbar 佔去了不少空間&lt;br /&gt;真正網頁顯示面積, 扣掉上面的元件部份, 恐怕只剩下不足500 pixel的高度&lt;br /&gt;雖然我利用了&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/4550"&gt;Compact Menu 2&lt;/a&gt; 套件, 省去了menubar, 在網頁顯示高度上還是略顯不足&lt;br /&gt;&lt;br /&gt;近日看到&lt;a href="http://www.ghacks.net/2008/11/19/setup-firefox-to-use-minimal-screen-estate/"&gt;這篇文章&lt;/a&gt;, 感到相見恨晚, 既不失原有的功能性, 又能儘量縮減佔用的空間&lt;br /&gt;於是就把Audohide Statusbar, Hide Caption 與 Hide Tab Bar 這些擴充套件安裝了&lt;br /&gt;我想圖示就是這些套件最好的說明了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-5322855086236431780?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/5322855086236431780/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=5322855086236431780' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/5322855086236431780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/5322855086236431780'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/05/firefox-on-netbook.html' title='Firefox on Netbook'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_NqrwyXvfMh4/ShI5Zeih5OI/AAAAAAAAA1A/ZYIR902geqY/s72-c/firefox_netbook.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-202834500108012825</id><published>2009-05-12T08:09:00.000-07:00</published><updated>2009-05-13T20:48:52.279-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><title type='text'>ofono - open source telephony stack (revised - 2009/05/14)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_NqrwyXvfMh4/SgmSgrKuiEI/AAAAAAAAA0o/V7mk87JtFow/s1600-h/ofono.png"&gt;&lt;img style="cursor: pointer; width: 300px; height: 74px;" src="http://4.bp.blogspot.com/_NqrwyXvfMh4/SgmSgrKuiEI/AAAAAAAAA0o/V7mk87JtFow/s400/ofono.png" alt="" id="BLOGGER_PHOTO_ID_5334956323638249538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;在Android platform火熱的今日, Nokia同時走著不同的路&lt;br /&gt;一方面以開放並且成立&lt;a href="http://www.symbian.org/index.php"&gt;Symbian Foundation&lt;/a&gt;來強化Symbian平台&lt;br /&gt;另一方面開發&lt;a href="http://maemo.org/"&gt;Maemo&lt;/a&gt;與收購&lt;a href="http://www.qtsoftware.com/"&gt;Trolltech&lt;/a&gt;厚植自身Linux平台技術&lt;br /&gt;再加上本篇主題的 ofono&lt;br /&gt;顯見Nokia在平台佈局的規劃上,&lt;br /&gt;一方面在於鞏固自身利基, 另一方面在於主導與開放&lt;br /&gt;&lt;br /&gt;拜Nokia 之賜有著良好設計的 Maemo platform&lt;br /&gt;而Qt 除了&lt;a href="http://www.qtsoftware.com/about/news/lgpl-license-option-added-to-qt"&gt;轉為 LGPL&lt;/a&gt;, 並且也&lt;a href="http://labs.trolltech.com/blogs/2009/05/11/qt-public-repository-launched/"&gt;加強與社群的互動&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;今日 intel 與 nokia 共同宣佈了 &lt;a href="http://ofono.org/"&gt;ofono&lt;/a&gt; 軟體專案&lt;br /&gt;而對於ofono而言&lt;br /&gt;如果說Android打破了手機軟體開發的硬體平台限制&lt;br /&gt;那麼 ofono 要在長久封閉的電信服務上解放(Voice, SMS, Cell Broadcast...etc)&lt;br /&gt;&lt;br /&gt;ofono 架構圖&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NqrwyXvfMh4/Sgmck8bYj-I/AAAAAAAAA0w/KYDUOamYMOA/s1600-h/ofono-640.png"&gt;&lt;img style="cursor: pointer; width: 368px; height: 400px;" src="http://3.bp.blogspot.com/_NqrwyXvfMh4/Sgmck8bYj-I/AAAAAAAAA0w/KYDUOamYMOA/s400/ofono-640.png" alt="" id="BLOGGER_PHOTO_ID_5334967392107270114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ofono 採用的是 GPLv2 授權, 在API上使用D-Bus 介面 (因此GPL不會是大問題)&lt;br /&gt;對於程式開發者, ofono提供使用電信服務的標準API;&lt;br /&gt;而對於手機開發商, ofono提供標準plugin-in framework, 以加速開發整合產品&lt;br /&gt;&lt;br /&gt;在官網上列出ofono API的四個原則&lt;br /&gt;&lt;ul&gt;&lt;li&gt;consistent (一致) : Interface properties 有著一致的操作介面&lt;br /&gt;&lt;/li&gt;&lt;li&gt;minimal (精簡) : 避免相同的目的有多種方式達成&lt;br /&gt;&lt;/li&gt;&lt;li&gt;easy to use (易於使用) : 儘可能的簡單, 讓程式開發者專注在軟體開發本身.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;complete (完整) : 必須豐富且完整到足以開發功能完整的行動電話.&lt;/li&gt;&lt;/ul&gt;目前已有初期版本可以&lt;a href="http://ofono.org/downloads"&gt;下載&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ofono stack 的出現增加了許多可能性&lt;br /&gt;語音通話, 簡訊就不再只是手機的專利,&lt;br /&gt;而電信語音的應用上也會因為軟體創意, 將會更為多元&lt;br /&gt;&lt;br /&gt;ofono的詳細資訊請參考&lt;a href="http://www.linuxdevices.com/news/NS6762676329.html"&gt;linuxdevices&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;後記:&lt;br /&gt;今日看到一則&lt;a href="http://financenews.sina.com/sinacn/304-000-106-109/2009-05-13/19241068702.html"&gt;中文新聞 &lt;/a&gt;, 看到時差點沒當場笑出來&lt;br /&gt;套句批踢踢的常見推文: 記者,  不意外&lt;br /&gt;這篇是對 ofono project 相當錯誤的解讀&lt;br /&gt;儘管我在文中也提到了面對Andorid, Nokia走了不同的路&lt;br /&gt;然而這並不代表Nokia/Intel 推出的ofono 與 Android 是相衝突的&lt;br /&gt;基本上ofono, android這是兩個層面不同的事情&lt;br /&gt;更可以說在這樣的專案推出下,對 Android 是相得益彰&lt;br /&gt;整合後, Android 平台也可以藉此提昇在電信服務上的應用性&lt;br /&gt;所以無論是Nokia 的 Maemo, Intel 的 Moblin 與 Google Android 都能因ofono而受惠..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-202834500108012825?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/202834500108012825/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=202834500108012825' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/202834500108012825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/202834500108012825'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/05/ofono-open-source-telephony-stack.html' title='ofono - open source telephony stack (revised - 2009/05/14)'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_NqrwyXvfMh4/SgmSgrKuiEI/AAAAAAAAA0o/V7mk87JtFow/s72-c/ofono.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-6940390770719605744</id><published>2009-05-10T08:19:00.000-07:00</published><updated>2009-05-10T09:55:36.631-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>回到17歲 (17 Again)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_NqrwyXvfMh4/SgbzSOIMVvI/AAAAAAAAA0g/qScMIvI_fvo/s1600-h/17again.jpg"&gt;&lt;img style="cursor: pointer; width: 270px; height: 400px;" src="http://1.bp.blogspot.com/_NqrwyXvfMh4/SgbzSOIMVvI/AAAAAAAAA0g/qScMIvI_fvo/s400/17again.jpg" alt="" id="BLOGGER_PHOTO_ID_5334218303022585586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;面對稱不上順遂的生活, 是不是會想要重新作選擇?&lt;br /&gt;學生時代的精彩, 是不是讓你難以忘懷&lt;br /&gt;&lt;br /&gt;周日晚跟老婆看了這部電影&lt;br /&gt;事實上, 光看電影"回到17歲"的劇情簡介, 可以感覺題材並非新穎, 更可以說是老掉牙&lt;br /&gt;甚至觀看劇中的內容,&lt;br /&gt;在"回到未來", "扭轉奇蹟", "蝴蝶效應", "辣媽辣妹", "王牌天神" ... 等, 都可以看到類似的元素&lt;br /&gt;然而這樣的劇情鋪陳依舊引人入勝, 帶來亮眼票房&lt;br /&gt;&lt;br /&gt;人生就像是不可逆的化學反應, 現況就是過往的決定所累積的結果&lt;br /&gt;很有趣的是, 往往人們都想知道, 如果能夠有不同的選擇, 結果又會是甚麼&lt;br /&gt;當然, 沒有人真能如此,&lt;br /&gt;因此人們也樂於寄情在電影多樣的詮釋之中, 而這也是這些電影的切入點..&lt;br /&gt;&lt;br /&gt;年輕, 總有充沛的精神與體力, 有著對於未來的憧憬與無限可能&lt;br /&gt;然而, 當一段時間過後, 未達理想的現實, 工作無所發揮的消磨&lt;br /&gt;當好好地檢視, 會用甚麼樣的想法和心情去面對自己與周遭?&lt;br /&gt;很多時候真正的答案必須探究自己的內心...&lt;br /&gt;&lt;br /&gt;或許因為如此的題材本身帶著嚴肅的人生哲理,&lt;br /&gt;因此需要用歡樂的題材去包裝, 我想這也是為何這類電影多是喜劇&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-6940390770719605744?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/6940390770719605744/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=6940390770719605744' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/6940390770719605744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/6940390770719605744'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/05/17-17-again.html' title='回到17歲 (17 Again)'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_NqrwyXvfMh4/SgbzSOIMVvI/AAAAAAAAA0g/qScMIvI_fvo/s72-c/17again.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-3938996840923416155</id><published>2009-05-08T09:42:00.000-07:00</published><updated>2009-05-08T10:36:59.716-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><title type='text'>謠言紛飛的Windows 7?</title><content type='html'>今日除了Theora 修正forward DCT 的問題大幅提昇影像品質的新聞外&lt;br /&gt;最吸引我的就是 Slashdot上的 &lt;a href="http://tech.slashdot.org/article.pl?sid=09/05/07/1338206"&gt;Windows 7 "Not Much Faster" Than Vista&lt;/a&gt;&lt;br /&gt;slashdot 引用了pcworld 的&lt;a href="http://www.pcworld.com/article/164485/windows_7_rc_benchmarks.html"&gt;測試結果&lt;/a&gt;, 結果是Windows 7 並沒有比Vista 好到那去&lt;br /&gt;&lt;br /&gt;測試的結論並不讓我感到訝異, 因為當微軟決定以Vista為Windows 7基礎, 改造時間又如此短暫&lt;br /&gt;以Vista 龐大的新架構, 微軟只想花少少的力氣, 在短短的時間匆促上架, 如此就想改變局面!?&lt;br /&gt;(想想XP 相容性問題, M$並不是以技術翻新架構來達成, 而是妄想用可笑的Virtualization&lt;a href="http://tech.slashdot.org/article.pl?sid=09/04/25/1135211&amp;amp;tid=201"&gt;砸錢方式&lt;/a&gt;帶過)&lt;br /&gt;&lt;br /&gt;問題是Windows 7 就在beta 釋出後, 各種說法也紛紛出籠&lt;br /&gt;速度大幅提昇, 硬體需求不高, 軟體相容性高 各方面效能直逼XP 等等的說法紛紛出籠&lt;br /&gt;(甚至是與XP相比, 但是XP 模式真的是很諷刺)&lt;br /&gt;如此, 很難不去聯想有操作資訊的成分存在&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;說真的, 可以接受可笑的XP 模式, 不如裝個Ubuntu + VirtualBox 用無縫模式吧...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-3938996840923416155?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/3938996840923416155/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=3938996840923416155' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/3938996840923416155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/3938996840923416155'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/05/windows-7.html' title='謠言紛飛的Windows 7?'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-8674327978402493555</id><published>2009-05-06T19:06:00.000-07:00</published><updated>2009-05-13T09:03:17.782-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Debian 全面採用 EGLIBC</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_NqrwyXvfMh4/SgrvL3f0ELI/AAAAAAAAA04/QDUb8CMTxqU/s1600-h/debian.png"&gt;&lt;img style="cursor: pointer; width: 50px; height: 61px;" src="http://4.bp.blogspot.com/_NqrwyXvfMh4/SgrvL3f0ELI/AAAAAAAAA04/QDUb8CMTxqU/s400/debian.png" alt="" id="BLOGGER_PHOTO_ID_5335339695728758962" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;今日看slashdot 看到了&lt;a href="http://developers.slashdot.org/article.pl?sid=09/05/06/2050216"&gt;這則新聞&lt;/a&gt;&lt;br /&gt;大意是Debian 將全面改用與&lt;a href="http://www.gnu.org/software/libc/"&gt;glibc&lt;/a&gt; source/binary-compatible 的&lt;a href="http://www.eglibc.org/home"&gt;eglib&lt;/a&gt;&lt;br /&gt;主要的原因可能是glibc維護者(Ulrich Drepper)與debian間的爭議&lt;br /&gt;(Drepper 拒絕修正glibc一個關於 embedded的問題, 且出言不遜)&lt;br /&gt;而文中的一個&lt;a href="http://blog.aurel32.net/?p=47"&gt;連結&lt;/a&gt;文章, 更洋洋灑灑數項採用eglibc的好處&lt;br /&gt;&lt;br /&gt;長期使用linux的人應該對glibc相當熟悉&lt;br /&gt;一直以來 glibc 在 GNU/Linux 世界中扮演著關鍵角色&lt;br /&gt;或許因為世界改變得很快, glibc也面臨著考驗&lt;br /&gt;除了eglibc, 還有 &lt;a href="http://www.uclibc.org/"&gt;uClibc&lt;/a&gt;, &lt;a href="http://sourceware.org/newlib/"&gt;newlib&lt;/a&gt;, &lt;a href="http://www.fefe.de/dietlibc/"&gt;dietlibc&lt;/a&gt; 甚至 Android的 Bionic libc&lt;br /&gt;儘管如此, glibc 依舊保有重量級的地位 (至少desktop linux都是 glibc)&lt;br /&gt;如今這樣的情形可能開始有變化&lt;br /&gt;&lt;br /&gt;由於應用特性與硬體平台的多元&lt;br /&gt;現今GNU/Linux不若以往那以 x86 為中心的時代&lt;br /&gt;若Drepper不改變思維, 那具代表性的Debian 也只是起了個開頭&lt;br /&gt;相信之後會有後續的連鎖效應&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-8674327978402493555?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/8674327978402493555/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=8674327978402493555' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/8674327978402493555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/8674327978402493555'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/05/debian-eglibc.html' title='Debian 全面採用 EGLIBC'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_NqrwyXvfMh4/SgrvL3f0ELI/AAAAAAAAA04/QDUb8CMTxqU/s72-c/debian.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-4643181988233583263</id><published>2009-05-02T05:26:00.000-07:00</published><updated>2009-05-02T06:06:59.477-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>2009 台南行</title><content type='html'>安平豆花&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_NqrwyXvfMh4/Sfw_7LfZQQI/AAAAAAAAA0Y/2IpNZ2qayu8/s1600-h/tainan_3.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 303px;" src="http://4.bp.blogspot.com/_NqrwyXvfMh4/Sfw_7LfZQQI/AAAAAAAAA0Y/2IpNZ2qayu8/s400/tainan_3.JPG" alt="" id="BLOGGER_PHOTO_ID_5331206344829124866" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;安平古堡&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_NqrwyXvfMh4/Sfw_mEJRmsI/AAAAAAAAA0Q/NVmhR95LbUg/s1600-h/tainan_2.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 303px;" src="http://4.bp.blogspot.com/_NqrwyXvfMh4/Sfw_mEJRmsI/AAAAAAAAA0Q/NVmhR95LbUg/s400/tainan_2.JPG" alt="" id="BLOGGER_PHOTO_ID_5331205982080047810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;德記洋行&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_NqrwyXvfMh4/Sfw_SKEV34I/AAAAAAAAA0I/_uoWHBFtWdg/s1600-h/tainan_1.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 303px;" src="http://4.bp.blogspot.com/_NqrwyXvfMh4/Sfw_SKEV34I/AAAAAAAAA0I/_uoWHBFtWdg/s400/tainan_1.JPG" alt="" id="BLOGGER_PHOTO_ID_5331205640072585090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;本blog轉型為吃喝玩樂blog (大誤)&lt;br /&gt;&lt;br /&gt;趁著勞動節連假, 趁著天氣不錯開車帶著老婆往外跑&lt;br /&gt;隔了兩年又再次回到台南市的街道&lt;br /&gt;開車環繞成大附近的街道, 已經又有些不同&lt;br /&gt;成大成功校區的圍牆消失了, 勝利校區有了新的宿舍&lt;br /&gt;&lt;br /&gt;下午閒晃在成大週邊,  暖洋洋的天氣讓人充滿精神&lt;br /&gt;而街道上點心/飲料/冰店家讓人垂涎欲滴&lt;br /&gt;而車站前依舊人來人往, 深刻感受到府城的都市活力&lt;br /&gt;&lt;br /&gt;相對於新竹工作(音近 "辛苦工作"!?)的生活&lt;br /&gt;在這裡不用費心去找美食文章, 特意避開地雷(似乎貴又不好吃成了共同心得!?)&lt;br /&gt;也不用去找假日往那去, 隨時都可以開始屬於你的觀光/古跡/藝文/美食小吃之旅&lt;br /&gt;&lt;br /&gt;或許可以考慮規劃一段時日後到台南工作定居?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-4643181988233583263?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/4643181988233583263/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=4643181988233583263' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4643181988233583263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4643181988233583263'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/05/2009.html' title='2009 台南行'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_NqrwyXvfMh4/Sfw_7LfZQQI/AAAAAAAAA0Y/2IpNZ2qayu8/s72-c/tainan_3.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-4161600668877671512</id><published>2009-04-29T06:53:00.000-07:00</published><updated>2009-04-29T07:17:07.709-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>夏川里美 - 你的原點(故鄉)</title><content type='html'>"心靈之歌"專輯封面為瑞芳車站一景&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NqrwyXvfMh4/SfhccpqyeGI/AAAAAAAAA0A/pWRtjBFtmUM/s1600-h/rimi.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 350px;" src="http://3.bp.blogspot.com/_NqrwyXvfMh4/SfhccpqyeGI/AAAAAAAAA0A/pWRtjBFtmUM/s400/rimi.jpg" alt="" id="BLOGGER_PHOTO_ID_5330111806284396642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;夏川里美最為台灣人熟悉的, 應該是已經廣被翻唱的"淚光閃閃"和"島歌"了&lt;br /&gt;&lt;br /&gt;這個月月中下班開車聽廣播時&lt;br /&gt;聽到新專輯"心靈之歌"的廣告, 當下覺得不錯就想要去買這張專輯&lt;br /&gt;然而平時沒有時間跑唱片行, 而工作附近的家樂福也沒賣這張&lt;br /&gt;&lt;br /&gt;就這樣拖到了上週末, 陪大姊去大潤發時看到了&lt;br /&gt;回程放了來聽, 發現當時吸引我注意的是曲目的第一首 - "你的原點"&lt;br /&gt;之後細看歌詞, 與曲風相當符合&lt;br /&gt;再加上夏川里美輕亮柔美的歌聲, 為緊張忙碌的生活帶來一絲悠閒&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;你的原點(故鄉)&lt;br /&gt;&lt;br /&gt;歡迎回來 一定累了吧 用南風包裡著你&lt;br /&gt;母親依然沒有變在田中忙碌 只是增加了幾莖白髮&lt;br /&gt;漫步在出生至今的旅程上 這是你的原點(故鄉)阿&lt;br /&gt;要不要 再一次 再一次 回去看看&lt;br /&gt;&lt;br /&gt;不變的歌 不論何時總是溫柔的海&lt;br /&gt;連煩惱的事 也隨之忘卻&lt;br /&gt;遮蔽靈魂 到手的東西 真的真的就是重要的東西嗎?&lt;br /&gt;再見了 歡迎回來 你該回去的地方在哪裡&lt;br /&gt;&lt;br /&gt;過來這裡 擦掉淚水 我能瞭解 你努力過了&lt;br /&gt;偶爾和哥哥一起喝喝泡盛酒吧 雖然知道你會不好意思&lt;br /&gt;&lt;br /&gt;凝視從前搖盪過的鞦韆 懷念起純真的自己&lt;br /&gt;是不是 如此正真直地 一路走來&lt;br /&gt;&lt;br /&gt;不變的歌 不論何時總是溫柔的海&lt;br /&gt;連煩惱的事 也隨之忘卻&lt;br /&gt;遮蔽靈魂 到手的東西 真的真的就是重要的東西嗎?&lt;br /&gt;再見了 歡迎回來 你該回去的地方在哪裡&lt;br /&gt;&lt;br /&gt;時代在逐漸擴張的黑暗中 逐漸失去了互助&lt;br /&gt;逐漸習慣了 悲傷 想要回去 那個地方&lt;br /&gt;&lt;br /&gt;不變的歌 不論何時總是溫柔的海&lt;br /&gt;連煩惱的事 也隨之忘卻&lt;br /&gt;遮蔽靈魂 到手的東西 真的真的就是重要的東西嗎?&lt;br /&gt;再見了 歡迎回來 你該回去的地方在哪裡&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-4161600668877671512?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/4161600668877671512/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=4161600668877671512' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4161600668877671512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4161600668877671512'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/04/blog-post.html' title='夏川里美 - 你的原點(故鄉)'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_NqrwyXvfMh4/SfhccpqyeGI/AAAAAAAAA0A/pWRtjBFtmUM/s72-c/rimi.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-6055208694246283331</id><published>2009-04-29T05:46:00.000-07:00</published><updated>2009-05-06T20:30:27.734-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='toolchain'/><title type='text'>share buildroot toolchain with others</title><content type='html'>由於工作平台環境限制的緣故(見&lt;a href="http://champyen.blogspot.com/2009/03/buildroot.html"&gt;buildroot: 三個願望一次滿足&lt;/a&gt;一文),&lt;br /&gt;所以當時採用了buildroot, 以利於產生toolchain與使用uClibc&lt;br /&gt;&lt;br /&gt;當然, 單單在個人環境下使用buildroot不太會有問題&lt;br /&gt;(意外是會接二連三發生的...:P)&lt;br /&gt;最近要與他人co-work, 所以要把開發環境設好&lt;br /&gt;天真如我, 反射性地, 就把 buildroot目錄下的 build_arm/staging_dir 打包後丟了出去&lt;br /&gt;直到同事遇到了一堆 include/library search path 問題, 向我反映, 這才發現&lt;a href="http://buildroot.uclibc.org/buildroot.html#using_toolchain"&gt;不妙&lt;/a&gt;&lt;br /&gt;套句國見比呂的話, 現在才&lt;a href="http://buildroot.uclibc.org/buildroot.html#external_toolchain"&gt;想要&lt;/a&gt;轉用&lt;a href="http://ymorin.is-a-geek.org/dokuwiki/projects/crosstool"&gt;crosstool-ng&lt;/a&gt;實在是太遜了&lt;br /&gt;而使用alias 去傳入 sysroot 參數對於別人也不是好主意&lt;br /&gt;&lt;br /&gt;問題發生的主要原因在於toolchain 對於 include/library search path找不到所需檔案&lt;br /&gt;簡單的說, 就去觀察toolchain的path 設置, 並且把找不到的檔案放在適當位置即可&lt;br /&gt;預設的include path可以透過 arm-linux-cpp -v 來取得&lt;br /&gt;而library path 是由 arm-linux-gcc -print-search-dirs 取得&lt;br /&gt;&lt;br /&gt;接著就是做一些file link or move&lt;br /&gt;比較要注意的是libc.so 這個文字檔, 把裡面GROUP的path prefix 移除就可以了&lt;br /&gt;&lt;br /&gt;anyway, 不這麼做的話, 比呂和英雄是不會對決的...&lt;br /&gt;但是我們可不會水平外曲球, 下次還是改用crosstool-ng or scratchbox吧&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-6055208694246283331?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/6055208694246283331/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=6055208694246283331' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/6055208694246283331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/6055208694246283331'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/04/share-buildroot-toolchain-with-others.html' title='share buildroot toolchain with others'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-4819202612561219420</id><published>2009-04-26T19:30:00.000-07:00</published><updated>2009-04-27T01:55:38.162-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='introduction'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><title type='text'>0x1ab</title><content type='html'>好一陣子前與&lt;a href="http://blog.linux.org.tw/%7Ejserv/"&gt;jserv&lt;/a&gt;聊天談到他對於之後的規劃&lt;br /&gt;&lt;br /&gt;他提到了&lt;a href="http://www.0xlab.org/"&gt;0xlab&lt;/a&gt;, 該組織亦在今日也開了成立記者會&lt;br /&gt;&lt;br /&gt;0xlab成員們自我期許開創出更好的軟體環境,為台灣提昇軟體技術紮根且與世界接軌&lt;br /&gt;&lt;br /&gt;而這樣的抱負和理想也讓我聯想起現今失落已久的工匠精神&lt;br /&gt;&lt;br /&gt;細看0xlab的專案細目, 涵蓋範圍相當廣,&lt;br /&gt;&lt;br /&gt;從platform construction, software and compilation technology, robotics 到 computer graphics&lt;br /&gt;&lt;br /&gt;不甚瞭解的人可能以為單單是充數的&lt;br /&gt;&lt;br /&gt;這可是這群人一路走來累積的成果&lt;br /&gt;&lt;br /&gt;可以如此說0xlab只是具體的組織化&lt;br /&gt;&lt;br /&gt;在此之前, 它即已存在了&lt;br /&gt;&lt;br /&gt;是的, 充滿理想抱負的行動, 比精心設計的講演更能感動和激勵人心&lt;br /&gt;&lt;br /&gt;儘管規模並不大, 然而我相信會持續帶給人耳目一新的作品&lt;br /&gt;&lt;br /&gt;Rocks the world! 0x1ab&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-4819202612561219420?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/4819202612561219420/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=4819202612561219420' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4819202612561219420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4819202612561219420'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/04/0x1ab.html' title='0x1ab'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-3858381912464722039</id><published>2009-04-20T08:48:00.000-07:00</published><updated>2009-04-20T09:08:41.726-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><title type='text'>zotero - 整理資料的好幫手</title><content type='html'>由於手邊有不少電子文件檔案&lt;br /&gt;起先也只是用OpenOffice 編個 spreadsheet 來歸類處理&lt;br /&gt;問題在文件累積到一定的數量後開始出現&lt;br /&gt;&lt;br /&gt;很簡單的問題像是, 假設你有兩個類別 linux 與 network&lt;br /&gt;而當你拿到了"linux network programming guide" 的文章, 你會如何分類?&lt;br /&gt;當然, 應該還是會歸類在linux類別, 但是心裡又覺得它應該也要有network屬性&lt;br /&gt;&lt;br /&gt;這時心裡難免會想, 資料的整理功能若能像寫blog 或是 gmail的標籤一樣, 那該多好!?&lt;br /&gt;&lt;br /&gt;有了這樣的需求, 當然就開始找方案&lt;br /&gt;一開始是從file tagging著手, 但是看到了相關的方案(gnome/kde/tag2find...etc)&lt;br /&gt;看了看又覺得太簡略了, 畢竟除了標籤外, 每個文件還有各字的屬性&lt;br /&gt;&lt;br /&gt;就這樣, 中途還嘗試使用&lt;a href="http://www.gcstar.org/"&gt;GcStar&lt;/a&gt;, 但是似乎又不太好用&lt;br /&gt;之後的過程就看到了&lt;a href="http://icculus.org/referencer/"&gt;referencer&lt;/a&gt;, 雖是管理引用資料的程式, 但心裡已經覺得功能上很接近了&lt;br /&gt;最後是在wiki的相關軟體&lt;a href="http://en.wikipedia.org/wiki/Comparison_of_reference_management_software"&gt;比較列表&lt;/a&gt;看到了&lt;a href="http://www.zotero.org/"&gt;zotero&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;zotero的slogon為 The Next-Generation Research Tool&lt;br /&gt;個人用過的感想是, 這樣的說法一點也不誇張&lt;br /&gt;也建議好好看一下網路上的功能展示影片&lt;br /&gt;相信一定會愛上這個擴充套件&lt;br /&gt;&lt;br /&gt;最近找到這個套件後, 就開始使用zotero來重編手邊資料的索引&lt;br /&gt;使用中發現超出預期的好用, 除了拿來寫論文引用&lt;br /&gt;像我拿來管理資料的用途, 如果想要拿來管理會議記錄, 雜項資料也是不錯的&lt;br /&gt;甚至功能上取代google notebook也是可行的&lt;br /&gt;真的是相當實用的firefox套件&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-3858381912464722039?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/3858381912464722039/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=3858381912464722039' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/3858381912464722039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/3858381912464722039'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/04/zotero.html' title='zotero - 整理資料的好幫手'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-3443195589323190648</id><published>2009-04-17T06:36:00.001-07:00</published><updated>2009-10-06T22:17:59.343-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>HiRadioTray Beta 20090417</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NqrwyXvfMh4/SeiGDciLGOI/AAAAAAAAAzw/p6AHAGlVOHI/s1600-h/HiRadioTray_2.png"&gt;&lt;img style="cursor: pointer; width: 328px; height: 259px;" src="http://3.bp.blogspot.com/_NqrwyXvfMh4/SeiGDciLGOI/AAAAAAAAAzw/p6AHAGlVOHI/s400/HiRadioTray_2.png" alt="" id="BLOGGER_PHOTO_ID_5325653953122867426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;今晚做了些修正&lt;br /&gt;主要是實作了mplayer slave mode控制&lt;br /&gt;目前用在切換電台, 靜音 與 音量控制&lt;br /&gt;&lt;br /&gt;另外新增了停止選項, 提示顯示目前收聽電台名稱&lt;br /&gt;有時間改為使用home中的隱藏目錄&lt;br /&gt;到時就會包成 deb file&lt;br /&gt;&lt;br /&gt;有興趣請&lt;a href="http://sites.google.com/site/champyen/Home/HiRadioTray_20090417_2.tgz"&gt;到此&lt;/a&gt;下載&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-3443195589323190648?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/3443195589323190648/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=3443195589323190648' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/3443195589323190648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/3443195589323190648'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/04/hiradiotray-beta-20090417.html' title='HiRadioTray Beta 20090417'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_NqrwyXvfMh4/SeiGDciLGOI/AAAAAAAAAzw/p6AHAGlVOHI/s72-c/HiRadioTray_2.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-6533975390824010853</id><published>2009-04-16T21:42:00.000-07:00</published><updated>2009-04-16T22:40:55.988-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>HiRadioTray</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_NqrwyXvfMh4/SegKb_K6vXI/AAAAAAAAAzo/ZVp4nrWZfiY/s1600-h/HiRadioTray.png"&gt;&lt;img style="cursor: pointer; width: 344px; height: 205px;" src="http://4.bp.blogspot.com/_NqrwyXvfMh4/SegKb_K6vXI/AAAAAAAAAzo/ZVp4nrWZfiY/s400/HiRadioTray.png" alt="" id="BLOGGER_PHOTO_ID_5325518035295583602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;雖然個人偏好script, 但是....&lt;br /&gt;Yeah..everyone loves GUI&lt;br /&gt;昨晚花了點空餘時間(事實上被老婆念了一下),撰寫了HiRadio這支程式&lt;br /&gt;程式目的跟hinet radio script一樣, 只是整合了GUI&lt;br /&gt;目前的版本可&lt;a href="http://sites.google.com/site/champyen/Home/HiRadioTray_20090417.tgz"&gt;到此&lt;/a&gt;下載&lt;br /&gt;這只是堪用的初始版本&lt;br /&gt;&lt;br /&gt;未來要透過mplayer的slave mode加上音量控制之類的選項&lt;br /&gt;切換電台也會使用不同的機制, 另外建立.hiradiotray 目錄&lt;br /&gt;&lt;br /&gt;有不錯的想法也歡迎提供&lt;br /&gt;&lt;br /&gt;話說wxWidgets挺好上手的, 下午看文件學wxWidgets&lt;br /&gt;晚上就把這支程式主架構完成了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-6533975390824010853?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/6533975390824010853/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=6533975390824010853' title='7 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/6533975390824010853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/6533975390824010853'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/04/hiradiotray.html' title='HiRadioTray'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_NqrwyXvfMh4/SegKb_K6vXI/AAAAAAAAAzo/ZVp4nrWZfiY/s72-c/HiRadioTray.png' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-4930859894173783713</id><published>2009-04-14T07:52:00.000-07:00</published><updated>2009-04-14T18:46:53.944-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Hinet radio script 20090414</title><content type='html'>今日忽然發現連不上Hinet網路電台了&lt;br /&gt;透過Firefox連上網頁, 看了看頁面全改了&lt;br /&gt;看來Hinet 打算在Hichannel全面採用DRM了&lt;br /&gt;看來臺灣網路電台被Hinet壟斷的苦果開始出現了....&lt;br /&gt;&lt;br /&gt;今日依照&lt;a href="http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?post_id=73890#forumpost73890"&gt;這篇留言&lt;/a&gt;改了一下script&lt;br /&gt;有需要者請&lt;a href="http://sites.google.com/site/champyen/Home/radio_20090414.tgz"&gt;到此&lt;/a&gt;下載&lt;br /&gt;&lt;br /&gt;有時間得來想想其他solution了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-4930859894173783713?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/4930859894173783713/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=4930859894173783713' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4930859894173783713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4930859894173783713'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/04/hinet-radio-script-20090414.html' title='Hinet radio script 20090414'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-720571056181083092</id><published>2009-04-12T19:12:00.000-07:00</published><updated>2009-04-23T02:10:49.298-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><title type='text'>linux porting for new ARM platform 簡報上線</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NqrwyXvfMh4/Seizs6MpSXI/AAAAAAAAAz4/SF04cNyBmqk/s1600-h/logo.png"&gt;&lt;img style="cursor: pointer; width: 136px; height: 163px;" src="http://3.bp.blogspot.com/_NqrwyXvfMh4/Seizs6MpSXI/AAAAAAAAAz4/SF04cNyBmqk/s400/logo.png" alt="" id="BLOGGER_PHOTO_ID_5325704143483521394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;工作緣故, 這陣子將手邊關於在ARM平台上的Linux Porting過程,&lt;br /&gt;以及收集到的相關資料整理了一番, 製作了份簡報&lt;br /&gt;&lt;br /&gt;&lt;div style="width:425px;text-align:left" id="__ss_1330569"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/champ_yen/linux-porting-1330569?type=powerpoint" title="Linux Porting"&gt;Linux Porting&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=linux-090422224346-phpapp01&amp;stripped_title=linux-porting-1330569" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=linux-090422224346-phpapp01&amp;stripped_title=linux-porting-1330569" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/champ_yen"&gt;Champ Yen&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Apr 23rd, 2009: slides updated for DMA and make use of slideshare&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-720571056181083092?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/720571056181083092/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=720571056181083092' title='4 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/720571056181083092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/720571056181083092'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/04/linux-porting-for-new-arm-platform.html' title='linux porting for new ARM platform 簡報上線'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_NqrwyXvfMh4/Seizs6MpSXI/AAAAAAAAAz4/SF04cNyBmqk/s72-c/logo.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-4967786415429310362</id><published>2009-04-08T09:41:00.000-07:00</published><updated>2009-04-08T10:08:15.754-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Essential Linux Device Drivers</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_NqrwyXvfMh4/SdzUkA5NdCI/AAAAAAAAAzY/LH9noIWl5XQ/s1600-h/ELDD.jpg"&gt;&lt;img style="cursor: pointer; width: 302px; height: 400px;" src="http://4.bp.blogspot.com/_NqrwyXvfMh4/SdzUkA5NdCI/AAAAAAAAAzY/LH9noIWl5XQ/s400/ELDD.jpg" alt="" id="BLOGGER_PHOTO_ID_5322362574825419810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;上一份的工作主要是個人踏入撰寫linux driver的起點&lt;br /&gt;而Linux Device Driver的撰寫以往只有Oreilly 的 &lt;a href="http://lwn.net/Kernel/LDD3/"&gt;Linux Device Drivers&lt;/a&gt; 一書&lt;br /&gt;(後簡稱LDD, 目前出到第三版)&lt;br /&gt;個人在去年十月注意到2008年8月出版的&lt;a href="http://www.pearsonhighered.com/educator/academic/product/0,3110,0132396556,00.html"&gt;Essential Linux Device Drivers&lt;/a&gt;(後簡稱ELDD)這本書&lt;br /&gt;而這次的工作, 這兩本書也都用上了&lt;br /&gt;&lt;br /&gt;個人的想法是:&lt;br /&gt;LDD該書的內容, 比較偏向以linux kernel的角度來談linux device driver&lt;br /&gt;對於了解driver 與 Linux系統內部行為以及底層的意義上相當不錯&lt;br /&gt;然而在Device Model上, 對於現今Linux Kernel中眾多的Subsystem就顯得力不從心&lt;br /&gt;相對地, ELDD這本書的內容比較單純的以Device Driver的角度&lt;br /&gt;一開始系統的從kernel 提供 device driver的服務&lt;br /&gt;接著切入 linux kernel中各個subsystem (從input, audio, video 到 PCI, PCMCIA)&lt;br /&gt;對於想直接以device driver著手的人來說, 相較於LDD是值得列為優先閱讀的書籍&lt;br /&gt;等上手之後再閱讀LDD以了解更深入的部分.&lt;br /&gt;&lt;br /&gt;當然個人最推薦同時擁有這兩本切入角度不同的書&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-4967786415429310362?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/4967786415429310362/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=4967786415429310362' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4967786415429310362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4967786415429310362'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/04/essential-linux-device-drivers.html' title='Essential Linux Device Drivers'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_NqrwyXvfMh4/SdzUkA5NdCI/AAAAAAAAAzY/LH9noIWl5XQ/s72-c/ELDD.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-1825983626055674654</id><published>2009-04-06T22:11:00.000-07:00</published><updated>2009-04-17T09:55:21.402-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><title type='text'>Embedded Linux Porting</title><content type='html'>Framebuffer device 驅動後的Tux logo&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_NqrwyXvfMh4/SdrhXAPzzwI/AAAAAAAAAzI/2DwoHtbNdvA/s1600-h/FB_Tux.png"&gt;&lt;img style="cursor: pointer; width: 300px; height: 400px;" src="http://4.bp.blogspot.com/_NqrwyXvfMh4/SdrhXAPzzwI/AAAAAAAAAzI/2DwoHtbNdvA/s400/FB_Tux.png" alt="" id="BLOGGER_PHOTO_ID_5321813695011213058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;使用PicoTK在Framebuffer上隨機繪圖(線圓/長方形, 實心圓/長方形)&lt;br /&gt;來產生類似screensaver的效果&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NqrwyXvfMh4/Sdrh6pgI_7I/AAAAAAAAAzQ/CpcjX48E2bs/s1600-h/FB_picotk.png"&gt;&lt;img style="cursor: pointer; width: 300px; height: 400px;" src="http://3.bp.blogspot.com/_NqrwyXvfMh4/Sdrh6pgI_7I/AAAAAAAAAzQ/CpcjX48E2bs/s400/FB_picotk.png" alt="" id="BLOGGER_PHOTO_ID_5321814307380985778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;新工作一個多月了, 上面兩張圖是這一陣子來的工作成果&lt;br /&gt;工作內容的緣故需要在工作平台上建構Linux 環境&lt;br /&gt;儘管port過幾個embedded os, 針對embedded linux platform寫過driver&lt;br /&gt;然而從頭到尾作Linux kernel porting這倒是頭一遭&lt;br /&gt;兩張圖是porting後實作framebuffer device driver, 並且在kernel與application上的結果&lt;br /&gt;(picotk的畫圓的過程, 是相當著名的演算法)&lt;br /&gt;&lt;br /&gt;出乎我意料的是, linux porting相關的資訊並不算是豐富&lt;br /&gt;有機會再在blog上分享一些心得&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;以下是boot log (敏感部份, 經過馬賽克處理)&lt;br /&gt;&lt;br /&gt;Uncompressing Linux.........................&lt;div id=":7b" class="ii gt"&gt;&lt;wbr&gt;.. done, booting the kernel.&lt;br /&gt;Linux version 2.6.27.15 (champ@champ-laptop) (gcc version 4.3.2 (GCC)&lt;br /&gt;) #423 Fri Apr 3 15:05:02 CST 2009&lt;br /&gt;CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177&lt;br /&gt;Machine: XXXXX XXXXX Technology XXXXXX processor&lt;br /&gt;Memory policy: ECC disabled, Data cache writeback&lt;br /&gt;CPU0: D VIVT write-back cache&lt;br /&gt;CPU0: I cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets&lt;br /&gt;CPU0: D cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets&lt;br /&gt;Built 1 zonelists in Zone order, mobility grouping off.  Total pages: 508&lt;br /&gt;Kernel command line: mem=2M@0x1000000 initrd=0x1180000,161524&lt;br /&gt;Trying to install interrupt handler for IRQ0&lt;br /&gt;Trying to install interrupt handler for IRQ1&lt;br /&gt;Trying to install interrupt handler for IRQ2&lt;br /&gt;Trying to install interrupt handler for IRQ3&lt;br /&gt;Trying to install interrupt handler for IRQ4&lt;br /&gt;Trying to install interrupt handler for IRQ5&lt;br /&gt;Trying to install interrupt handler for IRQ6&lt;br /&gt;Trying to install interrupt handler for IRQ7&lt;br /&gt;Trying to install interrupt handler for IRQ8&lt;br /&gt;Trying to install interrupt handler for IRQ9&lt;br /&gt;Trying to install interrupt handler for IRQ10&lt;br /&gt;Trying to install interrupt handler for IRQ11&lt;br /&gt;Trying to install interrupt handler for IRQ12&lt;br /&gt;Trying to install interrupt handler for IRQ13&lt;br /&gt;Trying to install interrupt handler for IRQ14&lt;br /&gt;Trying to install interrupt handler for IRQ15&lt;br /&gt;Trying to install interrupt handler for IRQ16&lt;br /&gt;Trying to install interrupt handler for IRQ17&lt;br /&gt;Trying to install interrupt handler for IRQ18&lt;br /&gt;Trying to install interrupt handler for IRQ19&lt;br /&gt;Trying to install interrupt handler for IRQ20&lt;br /&gt;Trying to install interrupt handler for IRQ21&lt;br /&gt;Trying to install interrupt handler for IRQ22&lt;br /&gt;Trying to install interrupt handler for IRQ23&lt;br /&gt;Trying to install interrupt handler for IRQ24&lt;br /&gt;Trying to install interrupt handler for IRQ25&lt;br /&gt;Trying to install interrupt handler for IRQ26&lt;br /&gt;Trying to install interrupt handler for IRQ27&lt;br /&gt;Trying to install interrupt handler for IRQ28&lt;br /&gt;Trying to install interrupt handler for IRQ29&lt;br /&gt;Trying to install interrupt handler for IRQ30&lt;br /&gt;Trying to install interrupt handler for IRQ31&lt;br /&gt;PID hash table entries: 16 (order: 4, 64 bytes)&lt;br /&gt;console [ttyXXX0] enabled&lt;br /&gt;Dentry cache hash table entries: 1024 (order: 0, 4096 bytes)&lt;br /&gt;Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)&lt;br /&gt;Memory: 2MB = 2MB total&lt;br /&gt;Memory: 1036KB available (660K code, 45K data, 60K init)&lt;br /&gt;Calibrating delay loop... 47.82 BogoMIPS (lpj=239104)&lt;br /&gt;Mount-cache hash table entries: 512&lt;br /&gt;CPU: Testing write buffer coherency: ok&lt;br /&gt;done&lt;br /&gt;Freeing initrd memory: 157K&lt;br /&gt;fb0: XXXXXX frame buffer alive and kicking !&lt;br /&gt;Serial: XXXXXX driver&lt;br /&gt;ttyXXX0 at I/O 0xe0006400 (irq = 25) is a XXXXXX&lt;br /&gt;Freeing init memory: 60K&lt;br /&gt;sh: can't access tty; job control turned off&lt;br /&gt;#&lt;/div&gt;&lt;br /&gt;是的, 你沒看錯, 記憶體只有2MB&lt;br /&gt;經過調整, 開機後還有600KB 左右的空間&lt;br /&gt;&lt;br /&gt;過程中使用的是buildroot 建構toolchain, 以降低application的大小&lt;br /&gt;有興趣的或是工作相關者, 歡迎討論, 並交換一下訊息與意見.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-1825983626055674654?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/1825983626055674654/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=1825983626055674654' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/1825983626055674654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/1825983626055674654'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/04/embedded-linux-porting.html' title='Embedded Linux Porting'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_NqrwyXvfMh4/SdrhXAPzzwI/AAAAAAAAAzI/2DwoHtbNdvA/s72-c/FB_Tux.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-7169708310172284122</id><published>2009-04-02T22:39:00.000-07:00</published><updated>2009-10-06T22:18:36.134-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>Hinet radio script 20090403</title><content type='html'>昨天還可以聽的. 今日發現怎麼也連不上&lt;br /&gt;&lt;br /&gt;是的Hinet又更動了連結方式&lt;br /&gt;&lt;br /&gt;如有需要最新的script 請&lt;a href="http://champ.yen.googlepages.com/radio_20090403.tgz"&gt;到此&lt;/a&gt;下載&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-7169708310172284122?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/7169708310172284122/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=7169708310172284122' title='5 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/7169708310172284122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/7169708310172284122'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/04/hinet-radio-script-20090403.html' title='Hinet radio script 20090403'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-2664239583622614902</id><published>2009-03-18T06:36:00.000-07:00</published><updated>2009-03-18T07:37:09.883-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>OpenGL ES 2.0: Hello Triangle!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_NqrwyXvfMh4/ScD9jr8zClI/AAAAAAAAAzA/jlBoZ_OKQSA/s1600-h/HelloTriangle_Example"&gt;&lt;img style="cursor: pointer; width: 400px; height: 316px;" src="http://4.bp.blogspot.com/_NqrwyXvfMh4/ScD9jr8zClI/AAAAAAAAAzA/jlBoZ_OKQSA/s400/HelloTriangle_Example" alt="" id="BLOGGER_PHOTO_ID_5314526349832161874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;上圖是OpenGL ES 2.0 Programming Guide第二章的範例&lt;br /&gt;書中的範例是使用&lt;a href="http://developer.amd.com/gpu/opengl/Pages/default.aspx"&gt;AMD OpenGL ES Emulator&lt;/a&gt;&lt;br /&gt;很可惜的是AMD的OpenGL ES SDK僅只提供Windows平台版本&lt;br /&gt;個人是使用PowerVR OpenGL ES SDK&lt;br /&gt;&lt;br /&gt;除了書中的範例外也參考了PowerVR提供的example寫成&lt;br /&gt;將書中使用而無Linux版的esUtil部份補上, 完成整個example&lt;br /&gt;提供在Linux上學OpenGL ES 2.0的另一途徑&lt;br /&gt;Linux版的範例請&lt;a href="http://champ.yen.googlepages.com/OpenGLES_HelloTriangle.c"&gt;在此&lt;/a&gt;下載&lt;br /&gt;懶得寫Makefile 可以覆蓋PowerVR SDK的example編譯&lt;br /&gt;&lt;br /&gt;未來希望能夠將整個esUtil 在Linux上實做&lt;br /&gt;(有部份是OS independent ex:Transform)&lt;br /&gt;&lt;br /&gt;shader的方式是比以往透過function來得到效果, 顯得彈性且自由多了...:)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-2664239583622614902?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/2664239583622614902/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=2664239583622614902' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/2664239583622614902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/2664239583622614902'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/03/opengl-es-20-hello-triangle.html' title='OpenGL ES 2.0: Hello Triangle!'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_NqrwyXvfMh4/ScD9jr8zClI/AAAAAAAAAzA/jlBoZ_OKQSA/s72-c/HelloTriangle_Example' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-5217166631374787412</id><published>2009-03-10T21:52:00.000-07:00</published><updated>2009-04-08T09:44:02.373-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='study'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='book'/><title type='text'>OpenGL ES 2.0 Programming Guide</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NqrwyXvfMh4/SbdLXcbUfnI/AAAAAAAAAyg/Y6YgHhGMLT4/s1600-h/OGL20.jpg"&gt;&lt;img style="cursor: pointer; width: 305px; height: 400px;" src="http://3.bp.blogspot.com/_NqrwyXvfMh4/SbdLXcbUfnI/AAAAAAAAAyg/Y6YgHhGMLT4/s400/OGL20.jpg" alt="" id="BLOGGER_PHOTO_ID_5311797151646645874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;上次個人寫OpenGL程式, 已是碩士班時期的事情了&lt;br /&gt;那時還停留在OpenGL 1.x, 因此對於2.x可說是知悉甚微....&lt;br /&gt;&lt;br /&gt;由於beagleboard所用的OMAP3530的緣故&lt;br /&gt;(OMAP 3530 使用 &lt;a href="http://www.imgtec.com/powervr/insider/powervr-insider.asp"&gt;PowerVR &lt;/a&gt;的3D Accelerator)&lt;br /&gt;個人開始注意到&lt;a href="http://www.khronos.org/opengles/2_X/"&gt;OpenGL ES 2.0&lt;/a&gt;&lt;br /&gt;與&lt;a href="http://www.khronos.org/opengles/1_X/"&gt;OpenGL ES 1.x&lt;/a&gt; 源自OpenGL 1.5不同&lt;br /&gt;OpenGL ES 2.0 源自於OpenGL  2.0&lt;br /&gt;而上圖的&lt;a href="http://www.amazon.com/OpenGL-ES-2-0-Programming-Guide/dp/0321502795"&gt;OpenGL ES 2.0 Programming Guide&lt;/a&gt;,&lt;br /&gt;可以說是目前唯一的參考書目了&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;而稍微看了一下簡介&lt;br /&gt;OpenGL (ES) 2.x相對1.x強調programmable pipeline以及shading language&lt;br /&gt;一些範例也相當有趣, 而OpenGL 與  OpenGL ES間的相容性是相當不錯的&lt;br /&gt;以OpenGL ES 2.0作為另一個起點,  似乎是不錯的選擇&lt;br /&gt;&lt;br /&gt;苦無OpenGL ES 2.0的硬體練習嗎?&lt;br /&gt;沒關係PowerVR貼心地提供了&lt;a href="http://www.imgtec.com/PowerVR/insider/sdkdownloads/"&gt;PC Emulation SDK(Linux/Windows Platform)&lt;/a&gt;&lt;br /&gt;let's OpenGL~&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-5217166631374787412?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/5217166631374787412/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=5217166631374787412' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/5217166631374787412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/5217166631374787412'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/03/opengl-es-20.html' title='OpenGL ES 2.0 Programming Guide'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_NqrwyXvfMh4/SbdLXcbUfnI/AAAAAAAAAyg/Y6YgHhGMLT4/s72-c/OGL20.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-8508007818308526407</id><published>2009-03-10T09:38:00.000-07:00</published><updated>2009-03-10T10:06:09.982-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Choice of Programming Editor</title><content type='html'>最近又得長時間在Windows下寫程式, 所以又做了editor的survey&lt;br /&gt;吃寫程式這行飯的人, 因為必須長使間使用code editor&lt;br /&gt;對於用來編寫程式的環境, 多多少少有自己的偏好和選擇&lt;br /&gt;&lt;br /&gt;個人很羨慕我相當好的朋友, 在碩士期間習得vim大法, 搭配tag, cscope&lt;br /&gt;在windows上有gvim, 回泛Unix環境也如魚得水, 各種環境應該對他都不是問題&lt;br /&gt;&lt;br /&gt;很可惜, 個人沒有這麼勤勞去學習, 只會用用簡單的GUI Editor&lt;br /&gt;很多人都習慣使用Source Insight 或是微軟的 Visual Studio環境&lt;br /&gt;個人盡量不去使用非法軟體, 而又不想被綁在M$的牢籠中&lt;br /&gt;因此多半是靠著Makefile + Scite作為主要開發環境&lt;br /&gt;想學已久的cmake也還沒開始啃 ^^;&lt;br /&gt;&lt;br /&gt;而對於初學者以及一些Programmer而言&lt;br /&gt;整合開發環境(IDE:Integrated Development Environment)是不可或缺的&lt;br /&gt;長久以來, 我一直都停留在&lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt;/&lt;a href="http://anjuta.sourceforge.net/"&gt;Anjuta&lt;/a&gt;/&lt;a href="http://www.kdevelop.org/"&gt;KDevelope&lt;/a&gt;的印象&lt;br /&gt;也或許因為疏於注意, 這類工具我從來沒有好好學習和使用過&lt;br /&gt;近日看了看Wiki的&lt;a href="http://http://en.wikipedia.org/wiki/Comparison_of_integrated_development_environments"&gt;IDE比較表&lt;/a&gt;, &lt;a href="http://www.codelite.org/"&gt;CodeLite&lt;/a&gt;/&lt;a href="http://www.codeblocks.org/"&gt;CodeBlock&lt;/a&gt;倒是相當吸引我的興趣&lt;br /&gt;&lt;br /&gt;看來是該找時間把 cmake/eclipse/(codelite or codeblock) 好好地學一學&lt;br /&gt;&lt;br /&gt;對了, 還有QT近日最新力作&lt;a href="http://www.qtsoftware.com/products/appdev/developer-tools/developer-tools"&gt;QT Creator&lt;/a&gt;, 看來也是不錯的工具&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-8508007818308526407?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/8508007818308526407/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=8508007818308526407' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/8508007818308526407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/8508007818308526407'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/03/choice-of-programming-editor.html' title='Choice of Programming Editor'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-9142635545405067395</id><published>2009-03-10T08:30:00.000-07:00</published><updated>2009-04-29T06:24:38.542-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='toolchain'/><title type='text'>buildroot: 三個願望一次滿足</title><content type='html'>由於新工作開始了, Prex的部份以後會慢慢推進&lt;br /&gt;(目前mp3 decoder ok了, 還要弄audio driver/daemon)&lt;br /&gt;而buildroot就是因為新工作的內容而開始接觸 (以前就聽過, 只是一直沒機會去玩.)&lt;br /&gt;&lt;br /&gt;在開發embedded system中, crossplatform toolchain的選擇是相當重要的一環&lt;br /&gt;在數年前, 產生對應平台的 gcc cross toolchain是相當麻煩的一件事情&lt;br /&gt;glibc/gcc/binutils..版本的排列組合有可能會造成不同的問題&lt;br /&gt;(ex: compiler編不過, compiler編完了不能編kernel)&lt;br /&gt;因此需要花時間嘗試組合, 找到較佳的組合, 過程冗長繁複&lt;br /&gt;而這幾年來令個人印象深刻的是Dan Kegel當時所撰寫的&lt;a href="http://www.kegel.com/crosstool/"&gt;build script&lt;/a&gt;&lt;br /&gt;方便的設定, 大大地簡化了如此測試的程序&lt;br /&gt;&lt;br /&gt;現今cross toolchain可以說垂手可得了, 相當方便&lt;br /&gt;稍微google一下就可以得到不少訊息和編譯好的工具&lt;br /&gt;像是移植prex的過程中, 個人選擇&lt;a href="http://www.codesourcery.com/"&gt;CodeSourcery&lt;/a&gt;的Toolchain&lt;br /&gt;主要的目標硬體平台(x86, ARM, MIPS, ColdFire, PowerPC)都有&lt;br /&gt;也貼心地提供Linux/Windows兩種版本,&lt;br /&gt;而CodeSourcery也隨著時間不斷地提供新版本和新平台的支援&lt;br /&gt;不想親自動手準備相關環境情況下, 算是相當高品質的選擇&lt;br /&gt;&lt;br /&gt;對於Embedded Linux而言, 除了toolchain, kernel外&lt;br /&gt;除了Toolchain還得張羅root file system&lt;br /&gt;&lt;a href="http://buildroot.uclibc.org/"&gt;buildroot&lt;/a&gt;提供相當方面的介面(類似編譯linux kernel的menuconfig), 滿足這三種需求&lt;br /&gt;buildroot是&lt;a href="http://uclibc.org/"&gt;uClibc&lt;/a&gt;的相關project, 提供uClibc-based的gcc toolchain&lt;br /&gt;相對glibc/gcc所建構的環境, 在所需空間上節省不少&lt;br /&gt;而且也編譯好busybox, 方便迅速地建構適用的環境&lt;br /&gt;套句廣告詞: 三個願望一次滿足!&lt;br /&gt;&lt;br /&gt;另外, 除了CodeSourcery toolchain, buildroot 外, &lt;a href="http://www.scratchbox.org/"&gt;Scratchbox&lt;/a&gt;也是不錯的選擇&lt;br /&gt;而較龐大且全面的Embedded Linux專案可以考慮&lt;a href="http://www.openmoko.com/"&gt;OpenMoko&lt;/a&gt;所採用的&lt;a href="http://wiki.openembedded.net/index.php/Main_Page"&gt;OpenEmbedded&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-9142635545405067395?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/9142635545405067395/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=9142635545405067395' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/9142635545405067395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/9142635545405067395'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/03/buildroot.html' title='buildroot: 三個願望一次滿足'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-2644663118234445997</id><published>2009-02-17T05:00:00.000-08:00</published><updated>2009-02-17T05:54:42.661-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='file system'/><category scheme='http://www.blogger.com/atom/ns#' term='bookmark'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><title type='text'>Embedded FAT implementations</title><content type='html'>並不是所有的embedded system都具有良好的file system support, 在此方面使用FAT 還是相當普遍. 而使用FAT的原因相當簡單, 因為FAT 沒有複雜的設計, 降低實做的code size, 多數3C產品與一般OS屬於預設的支援.&lt;br /&gt;&lt;br /&gt;目前屬於Open Source FAT implementation有下&lt;br /&gt;&lt;a href="http://elm-chan.org/fsw/ff/00index_e.html"&gt;ELM - FAT File System Module&lt;/a&gt;&lt;br /&gt;具有相當不錯的介面設計, 很接近一般VFS的介面&lt;br /&gt;具有格式化功能, 算是相當完整的實做&lt;br /&gt;並無明顯的授權聲明, 在source 中的 readme.txt 聲明自負風險下不限制使用於任何用途&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/efsl/"&gt;EFSL - Embedded File System Library&lt;/a&gt;&lt;br /&gt;有相當完整的文件說明&lt;br /&gt;授權: LGPL&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/libfat/"&gt;libfat&lt;/a&gt;&lt;br /&gt;授權: GPL&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.larwe.com/zws/products/dosfs/index.html"&gt;dosfs&lt;/a&gt;&lt;br /&gt;source中的readme.txt 聲明自負風險下不限制使用於任何用途.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-2644663118234445997?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/2644663118234445997/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=2644663118234445997' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/2644663118234445997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/2644663118234445997'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/02/embedded-fat-implementations.html' title='Embedded FAT implementations'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-4151466655715240733</id><published>2009-02-15T08:48:00.000-08:00</published><updated>2009-02-17T21:23:29.577-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='file system'/><category scheme='http://www.blogger.com/atom/ns#' term='prex'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><title type='text'>Prex - FAT32</title><content type='html'>原本是打算將&lt;a href="http://elm-chan.org/fsw/ff/00index_e.html"&gt;ELM FAT implementation&lt;/a&gt;移植到Prex上&lt;br /&gt;然而因為Prex的Embedded &lt;a href="http://en.wikipedia.org/wiki/Virtual_file_system"&gt;VFS&lt;/a&gt;設計的緣故(該設計相當接近於&lt;a href="http://www.arl.wustl.edu/%7Efredk/Courses/cs523/fall01/Papers/kleiman86vnodes.pdf"&gt;VFS in Sun Unix&lt;/a&gt;),&lt;br /&gt;若採用整合ELM FAT的方式需要相當的時間&lt;br /&gt;而其中原因在於資料結構上的考量&lt;br /&gt;因此就改為直接修改Prex本身具有的FAT 12/16以支援FAT32&lt;br /&gt;如此還能針對FAT深入瞭解&lt;br /&gt;&lt;br /&gt;而經過數日的奮戰&lt;br /&gt;目前Prex 已經能夠操作 FAT32 檔案系統&lt;br /&gt;也簡短地測試過, 檔案/目錄的新增移除是正常的&lt;br /&gt;尚未支援用以輔助配置free block的 FSINFO以及長檔名的LFN(Long File  Name)&lt;br /&gt;有機會再把實做補上&lt;br /&gt;由於處理FAT32的緣故, 研讀了些關於FS的相關資料&lt;br /&gt;而先前所提到的書 File System Forensic Analysis 也幫助不少&lt;br /&gt;另外下列資訊也有相當得助益&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.pjrc.com/tech/8051/ide/fat32.html"&gt;Master Boot Record&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx"&gt;Microsoft FAT32 Spec&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.win.tue.nl/%7Eaeb/linux/fs/fat/fat.html#toc1"&gt;The FAT File System&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;boot log如下:&lt;br /&gt;Prex version 0.8.1 for arm-at2440ii (Feb 12 2009)&lt;br /&gt;Free pages:&lt;br /&gt;start      end      size&lt;br /&gt;--------   -------- --------&lt;br /&gt;00000000 - 00010000      64K&lt;br /&gt;00033800 - 01c27000   28622K&lt;br /&gt;01c39c00 - 04000000   36633K&lt;br /&gt;used=142K free=65319K total=65461K&lt;br /&gt;Time slice is 50 msec&lt;br /&gt;IRQ10 attached priority=10&lt;br /&gt;Clock rate: 1000 ticks/sec&lt;br /&gt;Prex driver module built: Feb 12 2009&lt;br /&gt;Calibrating delay loop... ok count=837&lt;br /&gt;Initializing NULL device&lt;br /&gt;Initializing Power Management&lt;br /&gt;pm: Default power policy is performance mode&lt;br /&gt;Initializing Zero device&lt;br /&gt;Initializing Serial Console&lt;br /&gt;UBRDIV0:0x23&lt;br /&gt;IRQ28 attached priority=1&lt;br /&gt;Initializing RAM disk&lt;br /&gt;RAM disk at 0x01c270e0 (74K bytes)&lt;br /&gt;Initializing SD card&lt;br /&gt;Init. SD Freq. is 401256Hz&lt;br /&gt;&lt;br /&gt;In idle&lt;br /&gt;MMC check end!!&lt;br /&gt;&lt;br /&gt;In SD ready&lt;br /&gt;&lt;br /&gt;End id&lt;br /&gt;RCA=0x9ffc&lt;br /&gt;SD Frequency is 33304320Hz&lt;br /&gt;&lt;br /&gt;In stand-by&lt;br /&gt;&lt;br /&gt;****4bit bus****&lt;br /&gt;SD disk&lt;br /&gt;IRQ21 attached priority=2&lt;br /&gt;Initializing TTY device&lt;br /&gt;Driver initialized&lt;br /&gt;Loading task:'boot'&lt;br /&gt;Loading task:'proc'&lt;br /&gt;Loading task:'fs'&lt;br /&gt;Loading task:'exec'&lt;br /&gt;Starting Bootstrap Server&lt;br /&gt;Starting Process Server&lt;br /&gt;Starting File System Server&lt;br /&gt;Starting Exec Server&lt;br /&gt;boot: Mounting file systems&lt;br /&gt;VFS: Mounting ramfs dev= dir=/&lt;br /&gt;VFS: Mounting devfs dev= dir=/dev&lt;br /&gt;VFS: Mounting arfs dev=/dev/ram0 dir=/boot&lt;br /&gt;VFS: Mounting fifofs dev= dir=/fifo&lt;br /&gt;VFS: Mounting fatfs dev=/dev/card0 dir=/mnt/floppy&lt;br /&gt;fatfs_mount device=/dev/card0&lt;br /&gt;0 1 1 0 b 1f fd f7 3d 0 0 0 c3 42 1e 0&lt;br /&gt;fatfs partition at sect: 3d&lt;br /&gt;----- FAT 12/16/32 info ----- 3c673&lt;br /&gt;drive:80&lt;br /&gt;total_sectors:1983170&lt;br /&gt;heads       :32&lt;br /&gt;serial      :49984554&lt;br /&gt;cluster size:8 sectors&lt;br /&gt;fat_start   :5d&lt;br /&gt;root_start  :2&lt;br /&gt;data_start  :f77&lt;br /&gt;fat_type    :FAT32&lt;br /&gt;fat_eof     :0xfffffff&lt;br /&gt;&lt;br /&gt;boot: Run init process&lt;br /&gt;Prex version 0.8.1 (arm-at2440ii)&lt;br /&gt;[prex:/]# cat /mnt/floppy/champ.txt&lt;br /&gt;fatfs_lookup: name=champ.txt&lt;br /&gt;fat_lookup_denode: cl=0 name=champ.txt&lt;br /&gt;fat_lookup_dirent: Ac&lt;br /&gt;fat_lookup_dirent: found sec=3959&lt;br /&gt;fatfs_lookup: cl=4&lt;br /&gt;fatfs_read: vp=38e3c&lt;br /&gt;Hello World!&lt;br /&gt;fatfs_read: vp=38e3c&lt;br /&gt;[prex:/]#&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-4151466655715240733?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/4151466655715240733/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=4151466655715240733' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4151466655715240733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4151466655715240733'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/02/fat32-on-prex.html' title='Prex - FAT32'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-4409564699660065715</id><published>2009-02-11T19:24:00.000-08:00</published><updated>2009-04-08T09:44:29.274-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='file system'/><category scheme='http://www.blogger.com/atom/ns#' term='study'/><category scheme='http://www.blogger.com/atom/ns#' term='book'/><title type='text'>File System Forensic Analysis</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_NqrwyXvfMh4/SZOX3T3axEI/AAAAAAAAAyA/Ywlg3l_Lp-o/s1600-h/FFA.jpg"&gt;&lt;img style="cursor: pointer; width: 302px; height: 400px;" src="http://1.bp.blogspot.com/_NqrwyXvfMh4/SZOX3T3axEI/AAAAAAAAAyA/Ywlg3l_Lp-o/s400/FFA.jpg" alt="" id="BLOGGER_PHOTO_ID_5301748162826519618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;目前個人正嘗試修改Prex上的FAT 12/16實做, 以便支援FAT 32. 過程中, 很令我很訝異的, 儘管FAT廣為人知,良好解釋FAT的文件卻付之闕如. 雖然, FAT 相關實做已經非常的多, 網路上相關的訊息卻非常零散且難以消化, 缺乏有系統和概念性的完整資訊.&lt;br /&gt;&lt;br /&gt;File System在各種實際應用系統中, 都扮演著舉足輕重的角色. 從系統效能, 到基本的資料保存, 都與File System 息息相關. 然而很可惜的, 對於File System而言, 許多人的印象似乎只是附屬的存在, 常常容易被忽略.&lt;br /&gt;&lt;br /&gt;那麼非得下去好好trace code才能獲得相關知識? 對於File System有興趣研究的人該怎麼下手?對此&lt;a href="http://www.digital-evidence.org/fsfa/"&gt;File System Forensic Analysis&lt;/a&gt;是關於FS相當不錯的參考書目, 該書除了提供目前主流各式File System的說明外, 也提供了相關的基本知識, 在章節的規劃與內文的易讀性, 都相當不錯. 目前市面上專注於此方面的書並不多, 而部份甚至已經顯得過時. 對FS有興趣者, 相當建議購買一本來閱讀.儘管許多進階的檔案系統(ex: &lt;a href="http://ext4.wiki.kernel.org/"&gt;ext4&lt;/a&gt;, &lt;a href="http://oss.sgi.com/projects/xfs/"&gt;xfs&lt;/a&gt;, &lt;a href="http://opensolaris.org/os/community/zfs/"&gt;zfs&lt;/a&gt;) 沒有納入介紹, 然而書的內容對於瞭解這些FS的設計與規劃也有相當的助益.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-4409564699660065715?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/4409564699660065715/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=4409564699660065715' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4409564699660065715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4409564699660065715'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/02/book-file-system-forensic-analysis.html' title='File System Forensic Analysis'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_NqrwyXvfMh4/SZOX3T3axEI/AAAAAAAAAyA/Ywlg3l_Lp-o/s72-c/FFA.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-2925420816017041903</id><published>2009-02-09T06:43:00.000-08:00</published><updated>2009-02-09T17:39:54.250-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='prex'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='s3c2440a'/><title type='text'>S3C2440A - SD Card works on Prex!</title><content type='html'>參考著Samsung的測試程式與u-boot, 把SD driver for prex 移植完畢&lt;br /&gt;目前使用的是處理read/write interrupt的方式完成實做&lt;br /&gt;一開始是採用使用DMA方式實作, 然而碰到無法讀寫完畢&lt;br /&gt;像是read counter會有尚未讀出的資料, 而停留在Rx Active的狀態&lt;br /&gt;今日全部改寫後就可以使用了, 日後會多花時間在blog上撰寫文件與porting過程&lt;br /&gt;&lt;br /&gt;日後會實做AC97 driver與 Audio Server&lt;br /&gt;接著就是完成所設定目標的CLI MP3 Player&lt;br /&gt;&lt;br /&gt;prex本身有FAT16的支援(之後有打算將fat32移植上去)&lt;br /&gt;&lt;br /&gt;以下是開機到把SD Card上名為TEST.TXT的檔案內容印出的過程&lt;br /&gt;&lt;br /&gt;Prex Boot Loader V1.00&lt;br /&gt;loading: hdr=01c02008 module=000030e4 name=prex&lt;br /&gt;loading: hdr=01c0a290 module=00003114 name=dev.ko&lt;br /&gt;loading: hdr=01c0e260 module=00003144 name=boot&lt;br /&gt;loading: hdr=01c0fe78 module=00003174 name=proc&lt;br /&gt;loading: hdr=01c12a38 module=000031a4 name=fs&lt;br /&gt;loading: hdr=01c21880 module=000031d4 name=exec&lt;br /&gt;bootdisk base=01c26358 size=000128bc&lt;br /&gt;kernel_entry=00010074&lt;br /&gt;Entering kernel...&lt;br /&gt;&lt;br /&gt;Prex version 0.8.1 for arm-at2440ii (Feb  9 2009)&lt;br /&gt;Free pages:&lt;br /&gt;start      end      size&lt;br /&gt;--------   -------- --------&lt;br /&gt;00000000 - 00010000      64K&lt;br /&gt;00032c00 - 01c26000   28621K&lt;br /&gt;01c39000 - 04000000   36636K&lt;br /&gt;used=140K free=65321K total=65461K&lt;br /&gt;Time slice is 50 msec&lt;br /&gt;IRQ10 attached priority=10&lt;br /&gt;Clock rate: 1000 ticks/sec&lt;br /&gt;Prex driver module built: Feb  9 2009&lt;br /&gt;Calibrating delay loop... ok count=837&lt;br /&gt;Initializing NULL device&lt;br /&gt;Initializing Power Management&lt;br /&gt;pm: Default power policy is performance mode&lt;br /&gt;Initializing Zero device&lt;br /&gt;Initializing Serial Console&lt;br /&gt;UBRDIV0:0x23&lt;br /&gt;MMC check end!!&lt;br /&gt;&lt;br /&gt;In SD ready&lt;br /&gt;&lt;br /&gt;End id&lt;br /&gt;RCA=0x9ffc&lt;br /&gt;SD Frequency is 33304320Hz&lt;br /&gt;&lt;br /&gt;In stand-by&lt;br /&gt;&lt;br /&gt;****4bit bus****&lt;br /&gt;SD disk&lt;br /&gt;IRQ21 attached priority=2&lt;br /&gt;Initializing TTY device&lt;br /&gt;Driver initialized&lt;br /&gt;Loading task:'boot'&lt;br /&gt;Loading task:'proc'&lt;br /&gt;Loading task:'fs'&lt;br /&gt;Loading task:'exec'&lt;br /&gt;Starting Bootstrap Server&lt;br /&gt;Starting Process Server&lt;br /&gt;Starting File System Server&lt;br /&gt;Starting Exec Server&lt;br /&gt;boot: Mounting file systems&lt;br /&gt;VFS: Mounting ramfs dev= dir=/&lt;br /&gt;VFS: Mounting devfs dev= dir=/dev&lt;br /&gt;VFS: Mounting arfs dev=/dev/ram0 dir=/boot&lt;br /&gt;VFS: Mounting fifofs dev= dir=/fifo&lt;br /&gt;VFS: Mounting fatfs dev=/dev/card0 dir=/mnt/floppy&lt;br /&gt;boot: Run init process&lt;br /&gt;Prex version 0.8.1 (arm-at2440ii)&lt;br /&gt;[prex:/]# cat /mnt/floppy/TEST.TXT&lt;br /&gt;Hello World !!&lt;br /&gt;&lt;br /&gt;[prex:/]#&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-2925420816017041903?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/2925420816017041903/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=2925420816017041903' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/2925420816017041903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/2925420816017041903'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/02/s3c2440a-sd-card-works-on-prex.html' title='S3C2440A - SD Card works on Prex!'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-5558373995782084305</id><published>2009-02-04T23:48:00.001-08:00</published><updated>2009-02-17T05:58:28.615-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arm'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='s3c2440a'/><title type='text'>S3C2440A - Memory Address Space</title><content type='html'>&lt;div style="text-align: justify;"&gt;S3C2440A的Memory Address Space的分佈有兩種模式&lt;br /&gt;基本上兩種模式主要的位置分佈都相同&lt;br /&gt;SDRAM都是分佈在 0x30000000 ~ 0x40000000&lt;br /&gt;&lt;br /&gt;不同的僅是 0x0 位置對應的裝置&lt;br /&gt;兩種模式取決於是否使用boot from NAND FLASH&lt;br /&gt;當使用Nand開機時, 0x0 對映的是 4KB 的 SRAM&lt;br /&gt;而不使用Nand開機時, 0x0 對映的是 ROM&lt;br /&gt;(手邊的板子是先前發售的版本, 附有2MB NOR FLASH, 新版本的目前已經不附了, 猜想u-boot是寫入NAND中)&lt;br /&gt;&lt;br /&gt;對於S3C2440A惱人的一點就是:&lt;br /&gt;無論如何DRAM的起始位置都固定於 0x30000000&lt;br /&gt;而且沒有提供硬體 remap 的功能&lt;br /&gt;(許多IC具有選擇將ROM or DRAM map 到 0x0 的設定, 方便開機後將ARM環境交給DRAM)&lt;br /&gt;&lt;br /&gt;這對於後續要放置的 Exception Vector 比較麻煩&lt;br /&gt;目前沒有特別測試是否SRAM內能否直接放置 Exception Vector&lt;br /&gt;而若寫死後固定放入NOR中, 如此對於之後更新擴充上比較麻煩&lt;br /&gt;不管系統為何都需要遷就放置NOR中寫的處理位置&lt;br /&gt;如此Exception處理速度上變得是需要作兩次branch&lt;br /&gt;對於效率上來說有相當的傷害, 稱不上好的方式&lt;br /&gt;(網路上有人使用這種比較拖泥帶水的作法)&lt;br /&gt;&lt;br /&gt;S3C2440A既然使用了ARM920T&lt;br /&gt;具有MMU, 這就是一個漂亮簡單的解法&lt;br /&gt;當使用MMU時, CPU所產生的address皆為 virtual memory address&lt;br /&gt;透過MMU轉換產生physical memory address, 存取適當位置&lt;br /&gt;&lt;br /&gt;關於ARM MMU的設定在ARM Architecture Reference Manual 中有詳細的說明&lt;br /&gt;這裡只作簡單說明&lt;br /&gt;&lt;br /&gt;ARM MMU Level 1 table 將以1MB 為單位作為對映單位, 管理4GB 定址空間&lt;br /&gt;因此需要 4GB/1MB * 4 = 16KB 空間, 而alignment亦為16KB&lt;br /&gt;&lt;br /&gt;每個Entry 有三種選擇可以設定, section, coarse, fine&lt;br /&gt;section: 直接對映連續 1MB 空間 到 指定的位置&lt;br /&gt;coarse: 指定level 2 table所在位置, level 2 中每個位置指定page size為 64KB/4KB 的page table的位置, table 大小為 1KB ((1MB/4KB) * 4 = 1KB), alignment為 1KB (若page size為64KB, 需要重複每個entry 16次)&lt;br /&gt;fine: 在ARM VMSAv6中已經不支援此設定, 與coarse 相似, 但page size為 4KB/1KB, 而level 2 page table 大小為 4KB ((1MB/1KB)*4 = 4KB), alignment 為 4KB (若page size 為 4KB, 每個entry需要重複4次)&lt;br /&gt;&lt;br /&gt;MMU的主要用途不用多說, 在OS教科書中都有說明&lt;br /&gt;主要是透過每個中process的page table建構屬於每個process獨立的 virtual memory space&lt;br /&gt;在embedded system中還有一個用法. 就是建立global page table統一管理記憶體, 解決記憶分配造成的fragmentation, 將physical address不連續的page解釋為連續的空間. 亦可以用此方式管理, 以產生physical address連續的空間提供給hardware使用&lt;br /&gt;&lt;br /&gt;對於S3C2440A, 最簡單的方法即是建立一個global的level 1 page table, 並且使用section 方式, 將physical address 0x3000000 map到 virtual address 0x0, 即可正常處理各種exception&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-5558373995782084305?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/5558373995782084305/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=5558373995782084305' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/5558373995782084305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/5558373995782084305'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/02/s3c2440a-memory-address-space.html' title='S3C2440A - Memory Address Space'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-21467273540619980</id><published>2009-02-04T06:46:00.000-08:00</published><updated>2009-02-04T19:13:48.227-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='s3c2440a'/><title type='text'>S3C2440A - Clock &amp; Power Controller</title><content type='html'>原本要撰寫SD Driver for prex, 但是看到test program中SD部份必須清楚知道PCLK&lt;br /&gt;因此先花時間搞清楚S3C2440A關於Clock的設置與目前設定&lt;br /&gt;&lt;br /&gt;這裡只列出Programmer 需要注意的地方&lt;br /&gt;&lt;br /&gt;S3C2440A 中 Clock Controller 負責產生所需的 clock signals&lt;br /&gt;包含提供給CPU的FCLK, 給AHB週邊的HCLK, 給APB週邊的PCLK&lt;br /&gt;S3C2440A 有兩組PLL, 一組提供FCLK, HCLK, PCLK, 另一組提供給USB(48MHz)&lt;br /&gt;&lt;br /&gt;這裡Clock Manager的設定將直接影響到CPU 頻率與後續需要注意PCLK的週邊(Ex:UART, Timer, SD )的設定&lt;br /&gt;&lt;br /&gt;手邊的AT2440-II 使用的 oscillator freq = 16.9344 Mhz&lt;br /&gt;&lt;br /&gt;輸出頻率取決於 M/P/S divider&lt;br /&gt;Mpll = (2*m*Fin)/(p*(2^s))&lt;br /&gt;m = M (the value for divider M)+ 8, p = P (the value for divider P) + 2&lt;br /&gt;&lt;br /&gt;文件列出了數種設定組合方便programmer 使用&lt;br /&gt;Output Freq.    MDIV        PDIV     SDIV&lt;br /&gt;47.98 MHz       60(0x3c)    4       2&lt;br /&gt;95.96 MHz       60(0x3c)    4       1&lt;br /&gt;266.72 MHz      118(0x76)   2       2&lt;br /&gt;296.35 MHz      97(0x61)    1       2&lt;br /&gt;399.65 MHz      110(0x6e)   3       1&lt;br /&gt;530.61 MHz      86(0x56)    1       1&lt;br /&gt;533.43 MHz      118(0x76)   1       1&lt;br /&gt;&lt;br /&gt;(47.98/95.96 為 48/96近似值, 提供USB使用 (48Mhz) )&lt;br /&gt;而HCLK/PCLK 取決於 CLKDIVN 中的HDIVN 與 PDIVN&lt;br /&gt;HCLK 可為 1, 1/2, 1/3, 1/4, 1/6, 1/8 FCLK&lt;br /&gt;PCLK 可為 1, 1/2 HCLK&lt;br /&gt;UCLK 可為 1, 1/2 UPLL&lt;br /&gt;&lt;br /&gt;測試後顯示, 板上的u-boot boot後設定值為 399.65Mhz&lt;br /&gt;(Mpll = (2*(110+8)*16.9344)/((3+2)*2) = 399.65184 Mhz )&lt;br /&gt;&lt;br /&gt;此外Clock Controller 提供四種模式&lt;br /&gt;Four Modes&lt;br /&gt;  * Normal:&lt;br /&gt;              Clock Controller提供CPU, 週邊 clocks&lt;br /&gt;              當啟動所有週邊, 功耗將達到最大值&lt;br /&gt;  * Slow  :&lt;br /&gt;              Non-PLL模式, 使用外部clock (XTIpll or EXTCLK)作為FCLK&lt;br /&gt;  * Idle  :&lt;br /&gt;              停止提供FLCK給CPU, 僅提供週邊&lt;br /&gt;  * Sleep :&lt;br /&gt;              停止內部電源, 除了wake-up 電路, 其他部份皆無電源消耗&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-21467273540619980?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/21467273540619980/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=21467273540619980' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/21467273540619980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/21467273540619980'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/02/s3c2440a-clock-power-controller.html' title='S3C2440A - Clock &amp; Power Controller'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-4855192836347718613</id><published>2009-02-02T18:32:00.000-08:00</published><updated>2009-02-04T19:14:28.423-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arm'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='s3c2440a'/><title type='text'>S3C2440A</title><content type='html'>瞭解硬體的功能特性對於撰寫移植或是撰寫embedded system是必要的&lt;br /&gt;選擇S3C2440A的原因, 僅只是因為向友人借的EVB使用的是這顆IC&lt;br /&gt;&lt;br /&gt;詳細的datasheet可以&lt;a href="http://www.developmentboard.net/ressources/data-sheets/SKY2440/S3C2440.pdf"&gt;到此&lt;/a&gt;下載&lt;br /&gt;簡單敘述S3C2440A的硬體特性為:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ARM920T core&lt;/li&gt;&lt;li&gt;AC97 codec&lt;/li&gt;&lt;li&gt;SD interfacce&lt;/li&gt;&lt;li&gt;RTC&lt;/li&gt;&lt;li&gt;USB Host/Device controller&lt;br /&gt;&lt;/li&gt;&lt;li&gt;LCD controller&lt;/li&gt;&lt;li&gt;Uart&lt;/li&gt;&lt;/ul&gt;ARM920T詳細資訊可以在ARM官網上&lt;a href="http://infocenter.arm.com/help/topic/com.arm.doc.ddi0151c/ARM920T_TRM1_S.pdf"&gt;取得&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;另外建議手邊有著下列書目以便參考使用&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/ARM-Architecture-Reference-Manual-2nd/dp/0201737191"&gt;ARM Architecture Reference Manual 2/e&lt;/a&gt; (ARM官網&lt;a href="http://www.arm.com/miscPDFs/14128.pdf"&gt;這裡&lt;/a&gt;有免費的第一版)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/ARM-System-Developers-Guide-Architecture/dp/1558608745/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1233630153&amp;amp;sr=1-1"&gt;ARM System Developer's Guide&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042c/IHI0042C_aapcs.pdf"&gt;ARM Procedure Call Standard &lt;/a&gt;(ARM's Calling Convention)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-4855192836347718613?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/4855192836347718613/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=4855192836347718613' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4855192836347718613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/4855192836347718613'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/02/s3c2440a.html' title='S3C2440A'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-3780837263078318638</id><published>2009-02-02T18:20:00.000-08:00</published><updated>2009-02-04T19:14:55.989-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><title type='text'>前言</title><content type='html'>&lt;div style="text-align: justify;"&gt;拋開可以查閱Wiki或是IEEE而來的無聊制式定義&lt;br /&gt;每個資訊從業人員對於embedded system都有著或深或淺的認知, 而各自有著用以理解它的一套思維. 然而除了親自去trace一窺究竟, 更甚者去coding之後, 才能深刻體會其中所充斥的挫折與饒富的樂趣所在.&lt;br /&gt;&lt;br /&gt;不得已而接觸它的人可能會覺得複雜, 麻煩, 不知所以, 沒有規則; 樂在其中的人卻也喜於享受它的多種樣貌,抽絲剝繭的趣味, 欣賞巧奪天工的設計, 或是一手掌握的成就感. 是的, embedded system就是這麼樣地讓人又愛又恨.&lt;br /&gt;&lt;br /&gt;對於許多人而言, 在desktop 上使用SDK, 熟悉的語言加上各式的library/framewrk, 從coding, compilation, linking產生程式到 load-in &amp;amp; execute 的一氣呵成, 一切是那麼方便, 是那麼的理所當然.如此一來, 那些曾囫圇吞棗背念的computer organization/architecture, compiler, system Ssoftware, operating systems, 在現今分工細膩且功能完善的OS與toolkit中, 似乎還顯得有些多餘. 的確, 現今Linux/Windows這樣desktop-oriented的OS也走入了embedded system領域, 但即便有心深入, 不考慮封閉性, 對大多數人來說, 無論Linux/Windows都顯得過於龐大且複雜. 對於系統著實難以一窺其精妙, 例如想把Linux Virtual Memory Management看到有所心得是一件不小的工程, 這樣作有時也難免有著見樹不見林的缺憾. 而使用Linux/Windows的硬體成本較高, 在應用上也有不適合的時候.&lt;br /&gt;&lt;br /&gt;如此說法, 並非是要拋棄Linux/Windows, 一切要從頭來過.&lt;br /&gt;畢竟在許多方面有其應用層面的考量. 而embedded system的樂趣之一在於, 透過實作所獲得的應用性外, 經由設計良好具體而微的embedded system也能夠讓自己更瞭解整體系統, 自硬體平台到軟體系統的設計與來龍去脈也能夠有更深一層的認知. 如此即便再面對Linux/Windows也有不同層次的心得, 或有提綱見領之效. 也因為如此, 反過來說, 面對embedded system, 對於軟硬體所需要的瞭解與面對的問題更甚於開發一般desktop application.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-3780837263078318638?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/3780837263078318638/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=3780837263078318638' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/3780837263078318638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/3780837263078318638'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/02/wikiieee-embedded-system.html' title='前言'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8142113334815576231.post-738014165260824817</id><published>2009-01-22T07:34:00.000-08:00</published><updated>2009-02-04T19:15:45.712-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arm'/><category scheme='http://www.blogger.com/atom/ns#' term='omap'/><category scheme='http://www.blogger.com/atom/ns#' term='prex'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='s3c2440a'/><title type='text'>Plan</title><content type='html'>由於正處於一段空檔時間, 除了休息外, 也做了一些規劃&lt;br /&gt;當然, 不外乎唸書, 念英文, 為了在專業能力上的精進&lt;br /&gt;所以個人也規劃了兩個個人專案&lt;br /&gt;&lt;br /&gt;1. Prex on AT2440-II&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_NqrwyXvfMh4/SYmwC0tBEcI/AAAAAAAAAxc/8zE6bHtBNxQ/s1600-h/prex-s3c2440.png"&gt;&lt;img style="cursor: pointer; width: 605px; height: 353px;" src="http://4.bp.blogspot.com/_NqrwyXvfMh4/SYmwC0tBEcI/AAAAAAAAAxc/8zE6bHtBNxQ/s400/prex-s3c2440.png" alt="" id="BLOGGER_PHOTO_ID_5298959999131783618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Fig: Prex 在 AT2440-II上運作情形&lt;br /&gt;&lt;br /&gt;這個專案的目的主要在於期望自己對於軟硬體的系統有更深一層的認識&lt;br /&gt;設立的目標有&lt;br /&gt;&lt;ul&gt;&lt;li&gt;OS porting&lt;/li&gt;&lt;li&gt;SD/MMI device driver&lt;/li&gt;&lt;li&gt;FAT32 file system&lt;/li&gt;&lt;li&gt;Audio device driver&lt;/li&gt;&lt;li&gt;MP3 playback&lt;/li&gt;&lt;li&gt;Memory Management&lt;/li&gt;&lt;li&gt;Power Management&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;在這一週來已經有基本的實做, OS port已經完成, Prex本身已經能夠在板上運作&lt;br /&gt;日後會補足porting過程, Prex/S3C2440的細節介紹&lt;br /&gt;未來是著重於實做與文件的撰寫, 並且完成進一步的目標&lt;br /&gt;&lt;br /&gt;2. BeagleBoard&lt;br /&gt;前一陣子取得了Rev.B7的板子&lt;br /&gt;OMAP3530-based的平台, 而且目前已經有相當多的軟體資源&lt;br /&gt;專案目標在於讓自己熟悉幾點&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ARM NEON technology&lt;/li&gt;&lt;li&gt;DSP programming model, ex: TI OpenMax IL implementation&lt;/li&gt;&lt;li&gt;embedded linux&lt;/li&gt;&lt;li&gt;Android (System, OpenCore)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;總之, 一個專案比較講求底層基礎技術, 另一為追求高階系統整合架構所設立的目標&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142113334815576231-738014165260824817?l=champyen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champyen.blogspot.com/feeds/738014165260824817/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8142113334815576231&amp;postID=738014165260824817' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/738014165260824817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8142113334815576231/posts/default/738014165260824817'/><link rel='alternate' type='text/html' href='http://champyen.blogspot.com/2009/01/plan.html' title='Plan'/><author><name>網路黑貓</name><uri>http://www.blogger.com/profile/05570293149894954776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_NqrwyXvfMh4/SwbLBl8ZVKI/AAAAAAAABJE/TY6sBPkdwYI/S220/blackcat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_NqrwyXvfMh4/SYmwC0tBEcI/AAAAAAAAAxc/8zE6bHtBNxQ/s72-c/prex-s3c2440.png' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
