2007年12月16日 星期日

2007/12/15 (六) 草嶺古道, 桃源谷步道一日行

四五年前, 有幸跟著一個山友到草嶺古道, 桃源谷一日行, 走在臨著太平洋的陵線上, 欣賞美麗的桃源谷大草原, 就深深地被吸引著. 一直希望, 有一天能夠跟著三五好友, 再造訪這個美麗的地方.

原本計畫, 上個星期六就成行, 但是因為不小心感冒了. 只能把這趟行程延後到這個星期. 不過也因為這樣, Nico也帶著他們小小登山社的美女帥哥們, 一起參加. ^___^

AM 7:33, 跟Wen順利的搭上2031次的自強號, 往貢寮出發. 不過想不到台北車站一大早買票的人潮還不少, 還好有提早到車站, 大概排了5 - 10分才買到車票.
AM 8:40, 抵達貢寮車站. 因為Nico他們還未抵達. 先到車站對面的腳踏車店看看, 順便找一下貢寮便當. 準備帶個便當上去當午餐.
AM 9:00, Nico他們抵達貢寮車站. 租台腳踏車, 買了便當. 出發~~~~~~
AM 9:45, 抵達草嶺古道登山口, 途中還遇到神明出巡回廟裡, 我們還偷偷地從廟前面繞過去. 果然租了腳踏車, 從車站經望遠坑到登山口這一段4KM, 感覺輕鬆很多. 時間也縮短不少. 這60元花得很值得.
AM 10:00, 大合照, 自我介紹, 糜爛完後, 進入草嶺古道.
AM 10:35, 雄鎮蠻湮.
AM 11:00, 虎自碑, 大合照Part 2.
AM 11:20, 啞口涼亭休息完, 出發往桃源谷.
PM 12:00, 在涼亭No. 3 休息半個小時, 吃午餐, 喝熱茶.
M 12:55, 抵達灣坑頭山. 灣坑頭山標高616M, 二等三角點(No. 1181), 小百岳No.82. 也是草嶺古道桃源谷中的最高點. 視野展望極佳, 但是天候不佳, 只能在雨霧中欣賞朦朧之美.
PM 13:30, 今天天氣不是很好, 從啞口一路上, 都是在霧雨中行走, 再這時終於還是遇到一陣不小的雨. 只能把雨衣拿出來用了.
PM 14:00, 桃源谷石觀音線岔路口. 由石觀音線下去只要3.5KM就可以到濱海公路. 這邊離桃源谷只有200M了.
PM 14:10, 抵達桃源谷, 上面還有一個小地標. 雖然處在霧中, 但是還是可以綠色的草原像一片毯子鋪在地上. 真的好想就這樣躺下去. 當然要來各大合照Part 3.
PM 14:40, 涼亭No. 6
PM 15:00, 土地公廟, 桃源谷大溪線的起點. 離大溪登山口4.1KM
PM 15:20, 新舊路岔路口, 離大溪3.4KM, 之前我應該走山腰舊路. 這次走新路, 上蕃薯寮山.
PM 15:40, 蕃薯寮山, 標高456M, 三等山角點(No. 1120). 再這邊可以遠望大溪漁港.
PM 16:00, 新舊路交會點, 離大溪約2KM, 需要下切400M, 所以一路陡下, 加上連日陰雨, 石階十分的濕滑. 這短短的2KM, 也成為今天最難走的一段路.
PM 17:00, 抵達登山口, 大溪河濱公園. 天也暗了.


這次的行程, 終於圓滿的結束了, 隔了這麼久再度造訪桃源谷, 他的景色還是如此的迷人. 下大溪的那一段階梯還是令膝蓋發軟. 但是一切都是美好的回憶.
可惜天氣狀況不佳, 視野不是很好, 我兩次造訪這一條路線, 都遇到了雨水, 上次是夏日午後陣雨, 這次是冬天東北季風雨. 看來再這條路線上我還跟雨水蠻有緣的. ><

不過中間遇到一件事, 讓人比較不開心. 再桃源谷看到一位機車騎士騎著越野車沿著步道騎上來. 看到他的車子沒有掛車牌. 正覺得奇怪. 他看到我稍微問了我桃源谷的方向, 我還呆呆的回答他. 結果他就騎著車往桃源谷的方向騎過去. 竟然要用他的機車去蹂躪那片美麗的草原. 沒有掛車牌當然是怕我們去檢舉他們. 真是令人掃興, 也讓人很不高興.

還有另一段小插曲, 下大溪再吃晚餐要離開的時候, 突然發現我們桌子下面有好幾攤血跡, 血跡旁邊有黑色物體, 大家還搞不大清處時, 登山經驗豐富的Nico這是螞蝗的傑作, 我們有人中鏢了. 當場大家都很緊張的翻開褲管, 看看是誰被螞蝗叮上了. 原來可憐的受害者是Wen, 血紅的襪子還有兩個明顯的傷痕說明了一切.

最後, 感謝Nico帶領著小小登山社眾家美女帥哥, 一起參加這個活動, 讓這個活動生色不少. 希望很快能夠再跟你們一起爬山.

這次活動的相關網址
我的Picasa相簿 :
2007-12-15-草嶺古道桃源谷

2007年12月2日 星期日

2007/12/01 - 台北雙溪, 北勢溪古道, 憨仔坑古道, 豹子廚古道 O型縱走

11/30在上班的時, 正在跟要release的軟體奮鬥時, 突然被拉近一個MSN會議, 有人問到, 星期六要不要去爬個山, 送個網頁過來. http://www.tonyhuang39.com/tony0490/tony0490.html
那時, 想說星期六好像沒啥事情, 就答應下來了. 只依稀知道早上九點, 捷運新店七張站集合.

參加的人有, 我, 莉琪, 莉琪的朋友, 莉琪的前同事Peter兼領隊, Peter朋友 x 2.
就這樣, 展開了北勢溪古道, 憨仔坑古道, 豹子廚古道 O型縱走.

AM 9:00 : 捷運七張站1號出口, 上車走北二高轉北宜高速公路, 到坪林下
AM 9:25 : 下高速公路, 往闊瀨的方向轉到北42公路.
AM 10:10 : 在北42公路約15 - 16公里處, 有一個往豹子廚的標示, 叉路下切到豹子廚9號.
AM 10:15 : 豹子廚9號, 是個很漂亮的石牆三合院, 還有廁所可以讓登山客使用. 出發~~~
AM 10:30 : 豹子廚7號, 聽說有出過博士唷~但是在豹子廚7號前, 有個岔路往左走才是正確的路徑.
所以我們在豹子廚7號小小迷路了一下.
AM 10:45 : 到O型縱走的叉路口. 有三條岔路, 左邊兩個, 左上三水潭是往北勢溪, 左下往南豹子廚山. 右邊往雙平公路, 就是豹子廚古道, 這次我們先走北勢溪古道, 所以先走左邊.
AM 11:35 : 抵達料角坑39號民宅.
AM 11:40 : 出民宅, 到北勢溪. 開始糜爛, 玩水漂, 照相.
AM 11:55 : 出發, 古道的路口在橋邊, 從民宅出來, 不需要過橋, 就可以看到有條溪邊的小徑.
PM 12:20 : 北勢溪古道上一號木橋.
PM 12:30 : 小瀑布, 在這邊稍事休息, 吃午餐(也只有三塊小蜂蜜蛋糕)
PM 13:00 : 中正橋
PM 13:10 : 出古道, 回到產業道路, 遇到往三水潭的三岔路, 取上方的路行走.
PM 13:15 : 看到路旁泥土產業道路, 有禁止通行標誌. 進入此泥土產業道路.
PM 13:25 : 到一各大轉彎處, 下方有個小民宅, 此處有個小岔路下切.
PM 13:40 : 料角坑31號.
PM 13:45 : 出小路, 回到水泥路上.
PM 14:00 : 經過一個小民宅, 看到泰平村14鄰, 15鄰的路標, 我們是從15鄰方向走來, 不需要往14臨走, 繼續往前.
PM 14:05 : 路邊有條石子叉路, 往岔路切.
PM 14:20 : 叉路的盡頭, 有條登山小徑
PM 14:25 : 回到O型縱走的叉路走. Ya......
PM 14:40 : 登南豹子廚山, 標高593M.
PM 15:00 : 回到登山口, 結束這次的O型縱走.

2007年10月31日 星期三

Embedded SSL library

提到SSL library的話, 大家第一個想到的會是OpenSSL 這一個open source library.
但是OpenSSL當初設計是在PC上面執行full feature的Toolkit. 所以對Embedded System來說. 他實在是太大了(大於1M). 在Embedded System可能只需要實作一個簡單的HTTP over SSL. 有時候並不需要這麼多的功能.
所以, 有許多比較小的SSL Library, 會更適合. 在這邊介紹一些可以替代OpenSSL的SSL Library.

1. MatrixSSL : < 50KB的footprint, 可以porting到Linux, VxWorks, eCos, Windows, MAC OS. 但是不相容OpenSSL API. 和MySQL一樣是雙License, GPL license / Standard Commercial license.

2. yaSSL : 支援SSLv3和TLS1.1, 可porting到Linux, BSD, Solaris, Windows相容於OpenSSL API, 和MySQL一樣是雙License, GPL license / Standard Commercial license.

3. XySSL : 一個相當新的SSL Library, 十分的小, 針對某些CPU有做最佳化, x86, PowerPC, ARM9, MIPS. 不相容OpenSSL API, LGPL license.

4. axTLS : 50KB的footprint, 特別的是他整合了一個HTTP Server, LGPL license.

2007年10月29日 星期一

2007/10/27 苗栗馬那邦山

馬那邦山 : 位於苗栗縣大湖鄉與泰安鄉交界, 標高1404公尺, 台灣小百岳之一, 一等三角點.

馬那邦山O型縱走.
AM 8:00 : 土城捷運永寧站集合, 搭馬修的小藍出發. 北二高轉一高, 由苗栗交流道下, 接74號快速道路. 到大湖鄉, 台三線134公里處大湖鄉南湖村、南湖國小前右轉進苗55公路, 往南一公里左轉進苗55-1公路.

AM 10:25 : 抵達馬那邦山, 上湖登山口下的錦雲山莊.

AM 10:35 : 錦雲山莊停車場出發. 還有一段水泥路才能到登山口.

AM 11:10 : 上湖登山口, 在登山口遇到當地的老伯, 指引我們走往珠湖方向的小路, 在轉古戰場.

AM 11:15 : 登山口走0.3KM到達枯木, 此處往珠湖登山口0.5KM, 往馬那邦山1.99KM.

AM 11:40 : 回到原本上湖登山步道, 老伯說走枯木線, 只比原來路線多5分鐘, 不過走起來似乎不是那回事 XD.

AM 11:45 : 古戰場紀念碑.

AM 12:05 : 石門.

AM 12:20 : 馬那邦山山頂. 開始糜爛, 煮泡麵. 旁邊有山友在上面煮了一鍋香菇雞湯, 他們很大方的將香菇雞湯分給我們, 當場我們的泡麵升級為香菇雞麵.

AM 14:00 : 糜爛完, 照完團體照及三角點的照片, 準備下山.

AM 14:15 : 由天然湖線下山, 到達大石壁.

AM 15:00 : 抵達情人二號橋, 橋前10公尺處有個護欄, 越過護欄有條小徑, 可以切回上湖
登山口. 但是路跡很不明顯. 需要小心.

AM 15:10 : 離開森林, 回到產業道路上. 順著產業道路可以通道, 東興產業道路.

AM 15:50 : 在一個彎角處, 切向路旁的大石壁, 越過石壁, 穿過一小段草地, 就可以接到另一條產業道路. 接回錦雲山莊.

AM 16:00 : 回錦雲山莊停車場.


好久沒有上山走一走, 這次的馬那邦山之行, 天氣相當的好, 不過還是有點霧氣, 山上展望雖然很好, 但是沒有辦法看到遠處的大霸尖山, 有點小小的遺憾.

另外, 有一隊從台中上來的山友, 很大方的把他們的香菇雞湯贊助給我們, 讓我們在山上享受的一個很棒的午餐, 也讓我們在上面糜爛了一個半小時. ^___^

這是我們走的是上湖登山口上山, 天然湖方向下山. 其實還有一條珠湖的路線可以上山, 希望有機會在探探這一條路線.

最後, 謝謝馬修夫婦, 和 Wen. 讓我們有個愉快的星期六.

PS : 回程到洗水坑豆腐街, 是唯一的敗筆, 算是採到地雷囉..><

馬修的相簿 http://album.blog.yam.com/focus18&folder=3464909
2007-10-27-馬那邦山

2007年10月14日 星期日

DEAD FANTASY I

在Mobile01上面看到在TouTube上面放一個很有趣的影片叫 final fantasy vs doa.
作者將FF太空戰士和DOA生死格鬥的女主角們放在一起大亂鬥.

作者的首頁 : http://montyoum.deviantart.com/
GameTrailers上面有DEAD FANTASY I的Full HD的影片下載.

目前出場的有.

Yuna,尤娜-- FF X
かすみ,霞 -- DOA
あやね,綾音 -- DOA++
Rikku,琉庫 -- FF X
Tina Armstrong -- DOA
蒂法·洛克哈特 -- FF VII

聽說還有續集, 就期待還有哪些美眉會出場囉.

2007年10月7日 星期日

Gnome的日曆 + Google Calendar

今天在摩托學園看到一篇介紹 Gnome的日曆整合Google Calendar的文章 - Google Calendar & Gnome
裡面介紹如何讓Gnome的日曆, 將Google Calender的行事曆資料透過Webcal和iCal拉到Gnome桌面.

1. 首先登入你的Google帳號, 近入日曆(Galendar). 選擇 "設定" -> "日曆", 選擇你想要看的日曆.
2. 進入日曆之後, 複製"私人網址"中的"ICAL"的網址.
3. 打開終端機. 輸入下面的指令.

# /usr/lib/evolution-webcal/evolution-webcal $ICAL-URL

4. 設定完成之後, 打開你的Gnome日曆, 你就會在上看到有約會的日子會是粗體字.
選到約會日期之後, 會出現約會的內容.
另外, 有興趣的人也可參考這一篇文章 : Mashing Google Calendar and GNOME

2007年9月18日 星期二

Ruby CGI on Apache

前一陣子, 聽我老闆的建議, 開始試著去看一下Ruby這一個程式語言. 對於我這只會寫C, 沒有任何OO概念的人, 看到這樣一個純OO, 高階與的語言真的是令我眼花撩亂.
Ruby的書也看了一陣子, 也該開始用用看囉, 剛好最近在寫一個HTTP client, 需要一個Web server做測試.
所以就試著自己架一個Web server, Apache + Ruby (CGI).
如果讓Apache支援Ruby寫出來的CGI呢? 基本上需要安裝mod_ruby將Apache與Ruby結合在一起.

下面是在Ubuntu 7.04的安裝步驟.
1. 安裝Apache 2 (目前版本是2.2.3), Ruby (目前的版本是ruby 1.8.5) 和mod_ruby, 因為我們是安裝Apache2, 所以安裝libapache2-mod-ruby

apt-get install apache2
apt-get install ruby
apt-get install libapache2-mod-ruby


2. 設定Apache, 請編輯/etc/apache2/httpd.conf
安裝mod-ruby時已經加入的mod_ruby載入的設定, 所以不需額外設定.

/etc/apache2/mods-enable/ruby.load
/etc/apache2/mods-available/ruby.load


設定ruby CGI 目錄 (/var/www/ruby)和副檔名(*.rbx)

# ClearModuleList
# AddModule mod_ruby.c

<IfModule mod_ruby.c>
RubyRequire apache/ruby-run

# Execute files under /ruby as Ruby scripts
<Location /ruby>
SetHandler ruby-object
RubyHandler Apache::RubyRun.instance
</Location>

# Execute *.rbx files as Ruby scripts
<Files *.rbx>
SetHandler ruby-object
RubyHandler Apache::RubyRun.instance
</Files>
</IfModule>


3. 重新啟動Apaeche

sudo /etc/init.d/apache2 restart


4. 再來一個簡單的測試. 當然第一個CGI就是送出"Hello World" 到browser上面囉.

sudo mkdir /var/www/ruby
sudo vi hello.rbx


hello.rbx:

#!/usr/bin/ruby

require 'cgi'

# Create a cgi object, with HTML 4 generation methods.
cgi = CGI.new('html4')

# Ask the cgi object to send some text out to the browser.
cgi.out {
cgi.html {
cgi.body {
cgi.h1 { 'Hello World!' }
}
}
}


5. 一切都OK之後, 連到http://localhost/ruby/hello.rbx, 你就可以看到"Hello World!"

2007年9月4日 星期二

Ubuntu 7.04 中文字型美化

中文字型一直都是Linux上面的痛, 雖然有很多前輩, 在中文字型上面做了很多努力, 如文鼎中文字型, 螢火飛的OpenDesktop字型, 讓我們在有更好的中文環境.
但是, Linux是西方人開發的, 因為中文語系, 跟拉丁語系先天上的不一樣, 所以還是會有一些問題, 像是反鋸齒(anti alias)功能, 會使得中文糊糊的, 或者打開hinting, 會讓中文字斜斜的.
所以, 還是需要一些調教, 讓中文字型更美好.

1. 安裝OpenDesktop字型

wget ftp://ftp.opendesktop.org.tw/odp/ODOFonts/OpenFonts/opendesktop-fonts-1.4.2.tar.gz
tar xvzf opendesktop-fonts-1.4.2.tar.gz
cd opendesktop-fonts-1.4.2
sudo cp odosung.ttc odokai-ExtB.ttf odokai.ttf odosung-ExtB.ttf /usr/local/share/fonts
sudo fc-cache -v


2. 安裝MAC儷黑體字型
http://www.divshare.com/download/851866-386下載, password是"my-net.cc"


sudo cp Mac_Fonts/"LiHei ProPC.ttf" /usr/share/fonts/truetype/
sudo fc-cache -f -v


3. 系統-> 偏好設定-> 字型, 更換字型



4. 修改fconfig

sudo gedit /etc/fonts/conf.d/10-myfonts.conf



<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">

<!-- conf.d/myfont.conf -->
<fontconfig>

<dir>/usr/share/fonts</dir>
<dir>/usr/share/fonts/local</dir>
<dir>/usr/local/share/fonts</dir>
<dir>~/.fonts</dir>
<!--加入點陣字體路徑-->
<dir>/usr/X11R6/lib/X11/fonts</dir>

<!--所有字型預設樣式-->
<match target="font">
<edit name="antialias" mode="assign">
<bool>true</bool>
</edit>
<edit name="hinting" mode="assign">
<bool>false</bool>
</edit>
<edit name="autohint" mode="assign">
<bool>false</bool>
</edit>
</match>

<!--打開中文粗體-->
<match target="font">
<test name="family" compare="contains">
<string>宋</string>
<string>明</string>
<string>楷</string>
<string>Song</string>
<string>Sun</string>
<string>Kai</string>
<string>Ming</string>
</test>
<test compare="more_eq" target="pattern" name="weight">
<int>180</int>
</test>
<edit mode="assign" name="embolden">
<bool>true</bool>
</edit>
</match>

<!--關閉小字AA -->
<match target="font">
<test name="pixelsize" compare="less">
<double>12</double>
</test>
<edit name="antialias" mode="assign">
<bool>false</bool>
</edit>
</match>

<!--關閉宋體、明體小字AA -->
<match target="font">
<test name="family" compare="contains">
<string>Song</string>
<string>Sun</string>
<string>Ming</string>
</test>
<test name="pixelsize" compare="less_eq">
<double>20</double>
</test>
<edit name="antialias" mode="assign">
<bool>false</bool>
</edit>
</match>

<!--解決中文字體英文間距過寬 -->
<match target="font">
<test target="pattern" name="lang" compare="contains">
<string>zh-tw</string>
<string>zh-cn</string>
<string>ja</string>
<string>ko</string>
</test>
<edit name="spacing">
<const>proportional</const>
</edit>
<edit name="globaladvance">
<bool>false</bool>
</edit>
</match>

<!--設定中文最小字號-->
<match target="font">
<test name="family" compare="contains">
<string>宋</string>
<string>明</string>
<string>楷</string>
<string>Song</string>
<string>Sun</string>
<string>Kai</string>
<string>Ming</string>
</test>
<test name="pixelsize" compare="more_eq">
<double>8</double>
</test>
<test name="pixelsize" compare="less_eq">
<double>12</double>
</test>
<edit name="pixelsize" compare="eq">
<double>12</double>
</edit>
</match>

<!--適應中文用戶的用字習慣-->
<alias>
<family>serif</family>
<prefer>
<family>DejaVu Serif</family>
<family>Bitstream Vera Serif</family>
<family>Times New Roman</family>
<family>Times</family>
<family>LeHei Pro</family>
<family>AR PL New Sung</family>
<family>Kochi Mincho</family>
<family>UnBatang</family>
<family>Baekmuk Batang</family>
</prefer>
</alias>

<alias>
<family>sans-serif</family>
<prefer>
<family>DejaVu Sans</family>
<family>Bitstream Vera Sans</family>
<family>Lucida Grande</family>
<family>Helvetica</family>
<family>Arial</family>
<family>Verdana</family>
<family>LeHei Pro</family>
<family>AR PL New Sung</family>
<family>AR PL New Kai</family>
<family>AR PL ZenKai Uni</family>
<family>Kochi Gothic</family>
<family>UnDotum</family>
<family>Baekmuk Dotum</family>
</prefer>
</alias>

<alias>
<family>monospace</family>
<prefer>
<family>DejaVu Sans Mono</family>
<family>Bitstream Vera Sans Mono</family>
<family>Andale Mono</family>
<family>Courier New</family>
<family>Courier</family>
<family>LeHei Pro</family>
<family>AR PL New Sung Mono</family>
<family>AR PL New Sung</family>
<family>Kochi Gothic</family>
<family>Baekmuk Dotum</family>
</prefer>
</alias>

<alias>
<family>新細明體</family>
<prefer>
<family>AR PL New Sung</family>
</prefer>
</alias>

<alias>
<family>標楷體</family>
<prefer>
<family>AR PL New Kai</family>
</prefer>
</alias>

</fontconfig>


Reference :
UbuntuL10n
Ubuntu 7.04 美化,改用 Mac 的 LiHei Pro 字型

2007年8月28日 星期二

安裝gcin到Ubuntu 7.04

gcin新一代的Linux/Unix的中文輸入法, 在Ubuntu上面default是用SCIM,
我使用SCIM+新酷音的時候, 在寫Gmail的時候, 有時候會出現打錯注音, 他就會把之前打的字全都吃掉.但是有時候又沒有這樣的問題, 讓我很困擾.
另外, gcin的介面十分的簡潔, 我很喜歡. 所以我決定換成gcin.
在Ubuntu 7.04 要怎樣安裝和設定gcin, 大概步驟如下.


sudo apt-get install gcin gcin-qt3-immodule
im-switch -z zh_TW -s gcin

之後, 登出在登入, 就可以使用gcin了..如果想換回scim, 只需要重新設定default IM

im-switch -s scim

不過, 目前我還有個問題, 在KDE環境下gcin失效, 看來我還要研究一下.

2007年8月23日 星期四

JPEG的種類及檔頭格式

JPEG : 是一各影像壓縮的格式, 由Joint Photographic Experts Group所制定的.定義在ISO/IEC 10918-1中.
但是根據JPEG的標準, 又有許多延伸的格式, 像JFIF, JPEG Exif1,2,等等. 這些都是JPEG家族的影像格式. 要如何區分呢, 其實在JPEG檔案的最前面, 就可以分辨.

1. JPEG前三個byte 為 0xFF 0xD8 0xFF, 0xD8表示SOI.
2. 第四個byte,是Segement marker. 合法範圍是0xC0 - 0xFF.

JFIF 1.02 (JPEG File Interchange Format)
0xFF 0xD8 0xFF 0xE0 0x00 0xXX 0xXX 0x4A 0x46 0x49 0x46 0x00
SOI APP0 skip 2 bytes "J" "F" "I" "F"

Exif file
0xFF 0xD8 0xFF 0xE1 0x00 0xXX 0xXX 0x45, 0x78, 0x69, 0x66, 0x00, 0x00
SOI APP1 "Length field" "E" "x" "i" "t"

Marker Segement :

Marker Name Marker Code Description
SOI Start of Image FFD8.H Start of compressed data
APP1 Application Segment 1 FFE1.H Exif attribute information
APP2 Application Segment 2 FFE2.H Exif extended data
DQT Define Quantization Table FFDB.H Quantization table definition
DHT Define Huffman Table FFC4.H Huffman table definition
DRI Define Restart Interoperability FFDD.H Restart Interoperability definition
SOF Start of Frame FFC0.H Parameter data relating to frame
SOS Start of Scan FFDA.H Parameters relating to components
EOI End of Image FFD9.H End of compressed data

2007年8月21日 星期二

Vim plugin : snippetsEmu

最近有一各MAC OS上的Text Edit叫TextMate, 有很多人注意, 他提供了一各叫做snippet的功能.
甚麼叫做snippet呢? 簡單說, 就是你只要打一些key word或片段, 按一各tab, 他就會自動幫你完成,
這東西,對我這種老是記不住一些language的語法或者常常拼錯字的programer,真的是一大福音.

在Vim上面, 也有人做出這樣的plugin, 叫做snippetsEmu : An attempt to emulate TextMate's snippet expansion.
因為他用了Vimball, 來包裝他的plugin, 所以安裝方式比較不一樣,
安裝的方法如下 (Linux):
1. 先安裝Vimball, (注意 Vimball需要Vim 7.0 或以上的版本)


cd /usr/local/share/vim/vim70
tar -vfxz vimball.tar.gz
chmod a+r autoload/vimball.vim doc/pi_vimball.txt plugin/vimballPlugin.vim


2. 下載snippentsEmu, 目前最新版本是1,1 (snippetsemu1_1.vba)
3. 在自己的目錄下建立 ~.vim/ 這一各資料夾
4. 用vim 開啟snippetsemu1_1.vba

vim snippetsemu1_1.vba


5. 在vim中, 執行 :so %, 他就會將snippetsemu安裝到~.vim/中.
6. 在~.vimrc加入,

filetype on
filetype plugin on

7. 最後開一各 *.c , 開始享用吧!!!!

2007年8月18日 星期六

PSPad add Ruby syntax highlighting

PSPad是一個在Wondows上面很棒的文字和程式編輯器, 如果你之前有在Windows開發程式的經驗,應該就會用過UltraEdit. PSPad是一個跟UltraEdit有著相近功能, 但是是完全免費的軟體.

最近想要用Ruby寫一些小東西, 用PSPad開啟Ruby的檔案, 卻發現PSPad沒有syntax highlighting.
現在寫程式都很習慣有syntax highlighting, 看到沒有highlighting, 別說寫了, 連看成是都覺得怪怪的.
看了一些PSPad的文件和Forum, 其實PSPad是內建Ruby的syntax highlighting, 只需要去打開就好了.

1. 開啟, 設定->語法高亮度設定2. 把Ruby從"規範->使用者高亮度"加入, "高亮度設定"

2007年8月15日 星期三

改善Ubuntu 7.04的效能

這邊有一篇, 有一些小技巧可以提昇Ubuntu 7.04的效能.

Feisty Performance - “Fly Like A Butterfly”

有人寫了一篇簡單的中文介紹, 加速你的 Ubuntu Feisty Fawn

2007年8月9日 星期四

Linux CramFS

一各很不錯的文章, 在介紹Linux CramFS 這一各唯讀的Flash File System.
http://www.lee-1.com/hlchou/LinuxCramFS.htm

2007年7月23日 星期一

jQuery : Use the JSON to complete Form.

在開發Web時, 我們常常需要從server site將data將資料取出, 並填到HTML的form上面.
在這邊, 介紹用jQuery(一個非常火紅JavaScript的library), 搭配JSON, 來做到這一件事情.
整各的機制運作, 可以分為下面幾各步驟,

1. client用HTTP Get method像server request data.
2. server將response data轉成JSON format傳回給client.
3. client parse JSON data, 轉成form element value, 並且顯示在browser上面.

在這邊, 我們會用幾各tool, 來幫助我們.
jQuery : 一各現在很紅, 非常優秀的JavaScript Library. 他希望能幫助Web開發時, 能夠write less, do more.
jQuery Form Deserialization plugin : 一各jQuery library, 可以幫助我們將JSON的array or hash轉成form element的value.
JSON : 全名是JavaScript Object Notation, 他是一各輕量化的data-interchange的格式,
他除了可以很容易讓人們讀寫外,也可以很容易讓language parse and generate. 最重要的是JavaScript的標準, 所以可以很自然的用在JavaScipt的應用中.

在jQuery中, 我們只需要用到兩各method就可以很輕易的做到這一件事情了.
$.getJSON(url, params, callback) --> Load JSON data from HTTP GET request.
在getJSON callback function中用, deserialization plugin所提供的method,
$(form id).deserialize(json data), 就完成了.

下面是一各簡單的HTML example.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="deserialize.js"></script>

<script type="text/javascript">
//<![CDATA[
window.onload = function(){
// AJAX get the data form server
$.getJSON("goform/formGet", function(json) {
/*
$.each(json, function(n, v) {
alert(n +'=' +v);
});
*/
$('#myForm').deserialize(json);
});
};
//]]>
</script>
</head>

<form id="myForm" action="goform/formPost" method="post">
Name: <input type="text" name="name" />
Comment: <input type="text" name="address">
<input type="submit" value="Submit" />
</form>
</html>


另外, goform/formGet, 這一各HTTP GET 所得到的資料為.
HTTP/1.0 200 OK
Server: GoAhead-Webs
Pragma: no-cache
Cache-control: no-cache
Expires: 0
Content-Type: application/json

{name: "Jimmy", address: "Taipei, Taiwan"}

2007年7月21日 星期六

Firebug : a best Mozilla plguin for Web Dev.

最近在工作上, 被老闆教導要使用AJAX這樣比較新的WebDev方式去開發,我們產品的Web .
AJAX雖然帶來很多好處, 因為AJAX是base在JavaScript上面,
這也讓寫Web不在是單純的寫寫HTML, 而是比較像是程式開發. (coding的人又有出路了)
在這各情況下面, 一個Web 專用的debuger就很需要. 而firebug, 就是WebDev人的救星.
firebug, 是一個Mozilla上面的plugin, 他就像我們寫code的debuger一樣. 可以單步執行JavaScript.
或者動態去修改/顯示HTML/DOM/JavaScript的內容.
有了這各, 真的讓現在充滿大量JavaScript(AJAX)或DOM的WebDev變得可行.

想要作WebDev的人, 強烈推荐一定要裝firebug來用.

Firebug 的首頁在 http://getfirebug.com/

另外, 這邊有一個不錯的使用說明的文章.
http://caterpillar.onlyfun.net/Gossip/AjaxGossip/FireBug.html
還有教學影片
"Debugging JavaScript with Firebug"

2007年6月6日 星期三

Build your Linux kernel on Ubuntu

http://docs.google.com/View?docid=dd6jq95n_1fbpf2j

2007年5月23日 星期三

中川翔子

從"空中的人形醫生"看到的一篇很有趣的文章.

宅屬性藝人 Nakagawa Shoko 中川翔子

很宅的正妹, 應該是所有喜歡動漫畫迷的最愛吧.. 口傑口傑....

2007年5月5日 星期六

Firefox 擴充套件 temperdata

TamperData is an extension to track and modify http/https requests
可以看到Firefox送出去的http/https 的內容.

2007年4月28日 星期六

Reentrant Code

之前在上Linux Driver課程時, 老師有提到reentrant (重入) 的觀念.

最近在寫thread時, 又看到這各東西, 所以找了一些資料, 參考一下.

Writing Reentrant and Thread-Safe Code

Reentrant - Wikipedia, the free encyclopedia

Camera 的一些術語

最近在研究IP Camera的東西, 在這邊記一下, 一些格和術語

Video:

Resulation(解析度) : 640x480(VGA), 320x240(QVGA), 160x120(QQVGA). 352x288(CIF)
Fame rate : 每秒有多少frame, 單位是(fps),一般來說 30 fp, 對人眼就應該是沒有差別了.
Compress (壓縮) : M-JPEG (Motion JPEG), http://en.wikipedia.org/wiki/MJPEG
MPGE4

Brightness : 亮度
Contrast : 對比
Saturation : 飽和度
Anti-Flicker : 抗雜訊
Light Frequency :
Mirror (Image Flip): 影像反轉.

Camera :
Sensor : CCD or CMOS
Sensor size : 英吋為單位, 1/2", 1/3", 1/4"
Resolution : sensor 的解析度
Lens : 鏡頭


Others:

Time stamp : Add time stamp in the image, or EXIF

Text caption : Add the user defined text in the image or video.

賀~~Ubuntu 7.04 (Feisty Fawn) Release!!!

Ubuntu 7.04 在 2007/4/19已經正式release囉.

之前在公司的電腦, 已經裝了Beta的7.04, 整各使用起來, 感覺真的不錯.

終於, 7.04 已經從Beta 到了 Release了!! 小鹿雀躍中!! Laughing

http://www.ubuntu.com/news/congratulations-ubuntu-7.04

Ubuntu 7.04 Release Notes and Feisty Upgrade

Latest Ubuntu delivers on the promise of Open Source

Ubuntu 7.04 Feisty Fawn 真是隻雀躍的小鹿啊!

2007年4月24日 星期二

Camera的鏡頭(Lens)

在IP camera中, 畫面的好壞, 鏡頭跟sensor是決定的因素.
這邊有一篇文章對鏡頭有一些簡單的介紹.
Choosing the right lens

鏡頭的mount有兩種標準.
1. CS-mount : 12.5mm, cost down and reduce sensor size.
2. C-mount : 17.5mm, 最早的標準.

Sensor : 是長方體, 大小是算對角線. (1/2", 1/3", 1/4")
鏡頭 : 是圓形, 大小的單位是算直徑, (1/2", 1/3", 1/4")

Focal length (焦距) : 鏡頭跟Sensor的距離(鏡頭焦點距離), 影響視角跟影像倍率.
下表, 是有人整理的焦距, 鏡頭, 視角的關係. http://cctv.yaba.com.tw/shop_content.php/coID/14

















































































































焦距(mm)1/3"晶片左右拍攝角度1/4"晶片左右拍攝角度1/3"與1/4"左右拍攝角度差異1/3"晶片上下拍攝角度1/4"晶片上下拍攝角度
2.5mm96.4°81.9°14.5°86.2°72.9°
2.8mm89.9°75.6°14.3°79.8°66.8°
3.6mm75.7°62.2°13.5°66.0°54.3°
4mm69.9°57.0°12.9°60.7°49.5°
6mm50.0°39.8°10.2°42.6°34.2°
8mm38.5°30.4°8.1°32.6°26.0°
12mm26.2°20.5°5.7°22.1°17.5°
16mm19.8°15.4°4.4°16.6°13.2°
30mm10.6°8.3°2.3°8.9°7.0°
60mm5.3°4.1°1.2°4.5°3.5°
100mm3.2°2.5°0.7°2.7°2.1°
200mm1.6°1.2°0.4°1.3°1.1°

光圈 (f): 光圈的是一組製作在鏡頭裡面可以活動的葉片,藉由控制葉片開合的大小,就可以控制光線在一定時間內,進入相機內光量的多寡,即為光圈。此開孔會隨著鏡頭上f值做調節而開大或縮小,f值小則光圈孔大(如f2.8),f值愈大則光圈孔愈小(如f22).

光圈值= 焦距 / 有效孔徑