- 【中國觀察】圖解中國黑心商品頻傳的根本原因! @ 假圖天國 :: PIXNET 痞客邦 ::
- 今天第一次知道中國有“戶口二元制”這種事,感覺這種制度會造成很大的城鄉及貧富差距吧。
- 如果沒有居住遷徙的自由…。
歡迎來到小豬圈!
2008-09-19
2008-09-18
查詢 IP 來自哪個地區/城市
- IP 的查詢是利用 Maxmind 提供的 GeoIP PHP API 及免費版的資料庫(GeoLite Country / GeoLite City)。
- 國旗的圖片主要來自 Icon Drawer,詳見:歡迎來到小豬圈: 查詢 IP 來自哪個地區/城市 (二) 世界各國國旗。
- 按此下載我寫的範例:geoip_flag.zip。下列檔案請自行下載:
- GeoIP.dat GeoLite Country 資料庫。
- GeoLiteCity.dat GeoLite City 資料庫。
- 利用 $_SERVER['REMOTE_ADDR'] 取得客戶端的 IP。
- 用 ip2long() 檢查 IP,順便取得數值方便處理(如果需要的話)。
2008-09-17
TVBS新聞自律規範
- 生命安全第一,新聞採訪第二。
- 不得偽造作假,不得誤導觀眾。
- 不得造成受害者及其家屬的二次傷害。
- 不得造成警消醫護執行公務的延誤。
- 不因個人觀點或利益影響公正。
- 不因刻板印象傷害弱勢團體。
- 尊重各族群.宗教.文化的價值觀。
- 不製作不想讓自己小孩看的新聞。
- 尊重智慧財產權。
- 保護消息來源。
2008-09-14
依照片 EXIF 資訊 Orientation 自動旋轉
- 有些相機支援偵測使用者是水平或垂直拍攝這項功能,並將這項資料寫入相片的 EXIF 資訊中, Orientation 這項目裡。
在 EXIF 2.2 裡 Orientation 預先定義了八個可能的值,圖來自:ImpulseAdventure - JPEG / Exif Orientation and Rotation。- 利用 exif_read_data() 讀取 EXIF 中 Orientation 的資料。
- 因為 GD 沒有鏡像翻轉的函數,所以我改用 Imagick 的函數(Imagick::flipImage() 、 Imagick::flopImage() 、Imagick::rotateImage())。
- 我寫的版本在這裡下載: exif_auto_rotation.zip ,其中包括 1.JPG 到 8.JPG 八張圖(其實內容是同一張圖),利用 Quick EXIF editor 修改其 EXIF 的值,分別對應 Orientation 的 1 到 8 的值。
- exif_auto_rotation.php:
<?php // exif_auto_rotation.php?file=1.JPG if (!isset($_GET['file'])){ exit; } $file = $_GET['file']; $image = new Imagick(); if ( $image->readImage($file) !== false) { $exif = exif_read_data($file); switch ($exif['Orientation']) { case 1: // 水平(一般) break; case 2: // 水平鏡像 $image->flopImage(); break; case 3: // 翻轉180度 $image->rotateImage(new ImagickPixel(), 180); break; case 4: // 垂直鏡像 $image->flipImage(); break; case 5: // 水平鏡像後,順時鐘翻轉270度 $image->flopImage(); $image->rotateImage(new ImagickPixel(), 270); break; case 6: // 順時鐘翻轉270度 $image->rotateImage(new ImagickPixel(), 270); break; case 7: // 水平鏡像後,順時鐘翻轉90度 $image->flopImage(); $image->rotateImage(new ImagickPixel(), 90); break; case 8: // 順時鐘翻轉90度 $image->rotateImage(new ImagickPixel(), 90); break; default: // 讀取 EXIF Orientation 錯誤 exit; break; } header('Content-type: ' . image_type_to_mime_type(exif_imagetype($file))); echo $image; } else { // 圖檔讀取錯誤 } ?>
在 Windows 上安裝 ImageMagick for PHP (imagick)
- 到 PHP Snapshots 下載 PECL (pecl-5.2-dev (zip) (4.5M))。
- 將裡頭包含的 php_imagick.dll 放到 php\ext 目錄下。
- 在 php.ini 裡增加一項 extension=php_imagick.dll 即可。
- 為了 php_imagick.dll 這個檔案查了許多文章,只因 PHP 並沒有內建,在官方下載頁 PHP: Downloads 裡附的 PECL 壓縮檔裡也沒有,連 ImageMagick 官方也沒有編譯 Win32 的版本
- 使用 PECL4WIN :: The PECL Windows Repository 裡附的 php_imagick.dll 時出現:
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\php\\ext\\php_imagick.dll' - The specified module could not be found.\r\n in Unknown on line 0
這樣的錯誤訊息。 - 曾一度試著下載 VC++ 2005 Express,想自行編譯,但也被一連串的錯誤訊息逼退。
2008-09-11
看了 Batman: The Dark Knight
圖片來自:鬼畜之道 ~地獄人間紀實~: Y SO SRS?- 我想下一集蝙蝠俠為了要克服自已最大的恐懼,跑到拉拉山修行後變成“獵犬俠“…。
圖片來自:誰可以接演【蝙蝠俠:黑暗騎士】中的小丑? @ A Rain Dog's Cave ‧ 雨狗小窩 :: PIXNET 痞客邦 ::。
蛙鞋破洞了
圖為我破掉的蛙鞋,拍攝於 2008-09-12。- 這雙蛙鞋什麼時候買的我已經不記得了,只記得是一雙不到 NT$500 的便宜蛙鞋,在相機(720sw)之前買的,所以最少有三年了吧。我的腳長 26 公分,穿這雙 7-9 號理論上應該剛好,但或許是因為我足背太厚,穿超過半小時後足背就會開始麻麻的,而真要用力踢水時足弓兩側又會有點鬆。
- 最近在游泳的時候,都會覺得右腳大拇指處怪怪,可是又看不出哪裡不對,還一度以為是指甲太長。今天仔細一瞧,原來破洞內側早就磨出一個凹槽了,只是今天看到裂痕才注意到而已。
- 雖然希望還能再撐一陣子,但再用力踢下去,套腳的部份應該就會裂開,所以現在得物色下一雙蛙鞋了。目前不考慮調整型的,因為曾跟 Benson 借來試用,覺得力道都被套鞋吸走了。原本是想要分叉式或單蹼蛙鞋的,但台灣網拍上似乎很少套腳的分叉式蛙鞋,而單蹼不但貴也不容易入手,目前看上眼的是 Gara-3000 長蛙鞋,其次是 Atomic SplitFins 套腳式的。
- CRESSI-SUB Gara-3000 套腳長蛙鞋,蛙鞋總長約 90cm,網拍上看到約 NT4300,其中 Gara-3000是黑色較硬,Gara-3000LD 是灰色較軟(我喜歡硬的)。
- Atomic SplitFins 套腳分叉式蛙鞋,網拍上看到約 NT2500,但圖是放調整式的?
Windows Live Writer 無體驗
- 因為想要試著離線編輯 Blogger,所以下載 Windows Live Writer 試試。
- 安裝前得先更新 Windows Update Agent,安裝完成後立即跳出一個連結,但也被我反射性的關掉…。
- 安裝結束只有在程式集多了 Windows Live Home 一個捷徑,打開卻找不到任何有關 Writer 的字眼,一怒之下將頁面一關,我的 Windows Live Writer 初體驗就這樣結束了…。(囧)
2008-09-08
天殺的 Windows XP SP3
- 剛剛試著用 ASUS V80 手機良伴(USB連線)來更新手機通訊錄,卻一直無法成功連線,查了一下才知道跟 SP3 有關。
- 試過覆蓋 usbser.sys 的方式,但因 Windows 檔案保護的功能而沒有成功,不過我也懶的再弄下去了。
- 不過還好用 Bluetooth 連線的方式還是可以正常使用,只是要另外裝 ASUS V80 手機良伴 Bluetooth 版的就是了。額外要注意的是,連結 Bluetooth 裝置時要選需要 Passkey 的連結方式。
2008-09-05
2008-09-04
海大操場.路不轉人轉
- 最近海大的濱海操場在施工,跑道被隔成兩半,出入口處也圍了網子,看樣子似乎是要把跑道縮減成兩百公尺的規模。
- 之前圍的網子只要墊個腳就可以直接跨過,今天再去運動時卻已經用封鎖線加高,而跑道也隔的更徹底了…。
- 跑道那裡再怎麼封鎖也還是有人去運動,不過卻變成很奇怪的“半圈折返跑法”。
2008-09-03
Google Chrome 瀏覽器
- 操作方式和 Firefox 類似。
- 內建 Google Gears,在瀏覽 Google Reader 時出現下載內容以供離線瀏覽的訊息。
- 在網址列輸入下列網址可以看到 Chrome 的額外資訊:
- about:memory
- about:stats
- about:network
- about:internets
- about:histograms
- about:dns
- about:cache
- about:plugins
- about:version
2008-09-02
在中正紀念堂跑三千
圖為中正紀念堂空照圖,圖中藍線長約一千公尺,來自 Google Maps。- 當兵時,在下部隊之後的運動就只有每天晨跑(不到四百公尺),和在體測時跑過兩次三千公尺。還記得那時是整隊去中正紀念堂跑三圈,兩次都是十八分鐘左右。
2008-08-30
PHP 摩斯碼 編碼/解碼 轉換程式
- 雖膾然不是很實用的東西,但在 Tsung's Blog 看到後就想試著寫寫看。我寫的版本在這裡下載:morse_code.zip。
- 從明文(原文)翻成摩斯碼時,因為是用點(.)和槓(-),要先處理掉原文裡的點、槓和空格,26個英文字母、10個數字、18個符號等,共54個字元。 (VT or 0x0B (11) in ) (since PHP 5.2.5)
- 點(.)和槓(-) 暫時取代為 \v (ASCII(11) vertical tab)和 \f (ASCII(12) form feed),也因如此這個程式需 PHP 5.2.5 以上。
- 將明文裡的空白字元視為單字結尾,換成“/”。
- 從摩斯碼翻成明文時,要注意替換的順序,原則是從長的先開始取代。
- 為了方便,我另外寫了一個依長度排序的自訂排序(同時為了維持索引的對應,而使用 PHP 內建的 uasort() ),先將編碼排好再寫死在程式裡。
2008-08-15
TOEIC 成績意料之外
- 今天一早就接到玉米的來電,提醒我上次參加的 TOEIC 考試(2008-07-27)可以查成績了,馬上上網查了一下,沒想到成績比我想像中的高,原本希望至少五百以上就好了。
- 總分為705 (滿分990),其中聽力為440,加上閱讀 265(滿分各為495)。
- 回想起來,聽力的部份錯的題數還是比預料的多,而閱讀方面,文法就不提了(淚),另外則是速度不夠,最後約有十題閱讀測驗來不及寫。
2008-08-14
Aopen G325
2008-08-07
買了一台MP4
圖片來自:★ISunfar 愛順發購物網- 到順發買了一台 GTEK PEBL 250 2G 的 MP4 播放器,準備拿來當父親節的禮物。
- 主要功能有音樂、影片、照片播放,電子書、FM收音機、錄音等。
- 2.6吋 26萬色 TFT LCD,16:9 寬螢幕,解析度是 400x240。
- 支援歌詞同步 .LRC
- 影片支援 .AVI(但沒有說明支援哪些編碼)、.RM、.RMVB 和 .FLV!
- 可插 T-Flash (即 MicroSD)記憶卡擴充,最大可支援到 4GB。
- 厚僅 0.7 cm 真的是超薄!
- USB 2.0 傳輸兼充電。
- 可看 .TXT 文字檔(限 ANSI 編碼)。
- 主控晶片:RK2706 軟體版本號:2.19
- 保固是一年。
- 按鍵精簡但不夠直覺,像是:主選單用左右鍵選擇,而子選單如歌曲列表是上下排列的,但依然得用左右鍵選擇,用了一陣子後還是容易按錯。
- 電源開關方式似乎有些多餘,側面的撥動鍵或許該設計成鎖定鍵。
- 調整音量的方式也很奇怪,而且還得插上耳機才行。
- 播幾次影片後,機背就開始發燙了。
- 圖示與文字都太小,電子產品好像都不太注重中年人的市場。
- 附贈耳機超醜,不過這也是常態啦。
- 桌布只有內建的六項可選,且不能設置為自已匯入的圖片。
- 有內建繁體中文,但預設值是簡體中文。
- FM收聽地區選項中,有大陸、日本、美國、歐洲和校園廣播等項目,就是沒有台灣可以選。
- FM自動搜尋得到的頻道很少,我只找的到兩個,同樣情況下我的手機就多很多。
- FM選單裡“桌面選擇”這項應該翻錯了,其功能是FM錄音。
- 外盒的產品特點有提到“遊戲下載”這項,不過裡頭卻完全找不到個屁。似乎只是晶片有這項功能但沒有實作。
- 可以邊聽音樂邊看電子書或圖片。
- ★ISunfar 愛順發購物網: GTEK PEBL2502G 2.6"免轉檔超薄型MP4播放器
- Home - Gigantek 閎發科技官網,不過目前(2008-08-07)還沒有這產品的訊息。
- 瑞芯微電子 RK2706 晶片產品展示頁。
2008-08-05
此 Change 非彼 Change 也
- 昨天中午吃飯時看到的新聞,當下就覺得這篇又是沒新聞時用來墊檔用的,不過依然造成了話題。Google 網誌搜尋已經有十幾篇在討論“baby changing”這個話題了,連聯合新聞網也再發了一篇:「changing後面應該要再加個東西。」。
2008-08-04
2008-07-27
TOEIC 考試
- 跟玉米去台科大考 TOEIC,人超多,其中還是以年輕人為主,但也不乏中年人。考題難度跟想像中差不多(希望成績也能像想像中差不多就好了)。
- 2008-08-15 就可上網路查詢成績了。
2008-06-23
這麼愛封鎖啊
圖為湘瑩秀出印有雪山獅子旗圖示的衣服,來自 YouTube - 康熙來了20080618 你不相信的藝能界宅女 part 3
- 之前就一直有在大陸論譠下載康熙來了,後來在網路上看到文章才注意到 2008-06-18 那集沒抓到。找了一下,原來是因為“政治因素”,真沒想到短短幾秒的畫面都可以拿來亂。
2008-05-24
The Bucket List 一路玩到掛
- 這部電影最讓我印像深刻的事,是最後一幕那個人是秘書,找到這樣的秘書真是三生有辛,不管那秘書到底叫 Tommy、Thomas 還是 Matthew …
- 以下附上一些關於秘書的對白:
Thomas: Uh, sir, I don't mean to sound indelicate but how do you want me to handle your...
Edward: Death? Treat it as if it were your own.
Thomas: So leave all the money to my assistant?Edward: Tommy, we live to die another day.
Thomas: How lucky for me.
Edward: No jokes, thomas, remember the will. you're so close.
Carter: Let me ask you something. Uh, is it tommy or thomas?
Thomas: Um, it's actually matthew, but he finds that too biblical.Edward: Thomas, I'd really like to say you're irreplaceable but I'd be lying.
Thomas: And I'd really like to say you're a gracious man, and I love my job but i, too, would be lying.
Edward: Turnabout is fair play. I believe you learned that from the master. - 如果真有那麼一天,我還是希望能夠明確的知道自已的死期,不過,就只怕到時錢都花完了人還沒死…。
2008-05-22
退租 MOD
- 換用光世代(10M/2M)已經一年了,老哥說得續約才行,原本想試試能不能在網路上處理的,不過沒多久就放棄了(囧),還好 123 按 9 轉客服還算滿方便。
- 原本的合約是「MOD三合一光纖專案」,兩年的線路加網路月費($980),再加上 MOD 一年月費($10)。
- 一年到期後,只有 MOD 漲價而已(好像是變 $89),但線路是兩年約,所以也沒辨法用續約方案。
- 我覺得 MOD 影片的價格並沒有多大優惠,但一樣有時間限制,而且也沒有什麼讓人會想非看不可的節目。
- 所以想省錢的話,只好選擇退租 MOD 囉,原本想說續約還綁 MOD 的話,應該可以換個 HD 的版本來看看的。
- 上網看了一下目前的優惠方案 10M/2M 是 線路加網路是 $990,而牌告費率是 $1300!
2008-05-15
2008-05-14
關於加班
- 一直以來就常聽說,台灣人加班時數是世界數一數二的。
- 今天看到“劣幣驅逐良幣的加班文化”一文裡,看到「就員工工作的積極性來看,調查顯示,印度在亞太地區排名第二,排在第一位的是新加坡,台灣排在最後。」
- 那麼台灣人上班、加班都在幹嘛!?(囧)
- 該篇文章中另一段更是經典:
員工工作效率經常因個人能力而有所不同。同樣的工作量,有人在一天八小時的工作時間內就可完成,有人卻得加班兩、三小時才能完成。很明顯地,這是個人能力優劣造成的差異。但是令人難以理解的是,能力差的人卻還可以領到加班津貼,等於是變相的加薪。這真是矛盾的現象。
- 時數才是可以稱斤算兩的,效率是什麼東西?可以用皮尺量嗎?
- 很快把工作完成而休息的人被視為打混,而死拖活拖、早加晚加的人才是認真負責…。
- 2oB 不久前找到的工作也是要“常態加班”的。
2008-05-13
2008-04-22
2008-04-18
Flash 遊戲存檔修改
- 以 flash 製做可以存檔的遊戲,其存檔會放在 %APPDATA%\Macromedia\Flash Player\#SharedObjects\ 下,副檔名為 sol 的檔案(實際目錄和檔名會依情況有所不同)。
- 通常資料是明文儲存的,以 HEX 編輯模式(如 UltraEdit 等)開啟修改即可。
- 以我在 Kongregate 玩 The Endless Zombie Rampage 為例,存檔是放在 C:\Documents and Settings\admin\Application Data\Macromedia\Flash Player\#SharedObjects\ZF3G4HEJ\chat.kongregate.com\game_files\0000\0703\the-endless-zombie-rampage.swf\userData.sol 。修改 exp 後的數值即可。
2008-03-31
2008-03-30
Dice Wars
2008-03-29
Do not stand at my grave and weep, I am not there
Do not stand at my grave and weep, I am not there, I do not sleep. I am in a thousand winds that blow, I am the softly falling snow. I am the gentle showers of rain, I am the fields of ripening grain. I am in the morning hush, I am in the graceful rush Of beautiful birds in circling flight, I am the starshine of the night. I am in the flowers that bloom, I am in a quiet room. I am in the birds that sing, I am in each lovely thing. Do not stand at my grave and cry, I am not there. I do not die.
- 還滿適合當墓誌銘的…。
2008-03-28
2008-03-20
2008-03-18
自由跟民主並沒有絕對的關係
8、 美國自由之家調查報告,台灣在一九七二年至一九七五年被列為「不自由國家」,一九七六年至一九九五年被列為「部分自由國家」,一九九六年起列入「自由國家」。2008年自由度調查報告,台灣再獲評為最高等級的「自由國家」。台灣在亞洲國家中名列前茅,與日本相當,顯示台灣民主獲高度肯定,這是全民的驕傲。
- 我覺得在台灣真的很自由,但民主這部份應該還要再加油。
2008-03-09
2008-03-06
2008-03-02
Wishlist 禮物清單
依想要的程度排序,不過應該沒有人會送給我吧…。最後更新日期:2008-09-12。
- 蛙鞋
- 單蹼蹼泳蛙鞋(Monofin)
- CRESSI-SUB GARA-3000 / GARA-3000-LD
- Atomic Aquatics Full-Foot SplitFin 分叉式蛙鞋,套腳式的版本。
- 單面面鏡。單面面鏡優缺點:較重、視野較好、可選度數矯正的較少、水下攝影時表情效果較好。
- ACARD ANS-9010 5.25 inch SATA x 2-to-DDRII RAM Disk
- 相機
- 要能存RAW格式,最好能同時存RAW+JPG。
- 包圍曝光
- 使用CF或SD記憶卡
- 最好可用三號AA電池
- 要有專用的潛水盒
- 要有適用的快門線
- 自動偵測是否垂直拍攝,並寫入 EXIF
- 支援 GPS 裝置
- 數位單眼相機 DSLR Canon EOS-400D黑色 +kit(EF-S 18-55mm鏡頭)
- 閃光燈 Canon Speedlite 580EX $13000 - $18000
- 超廣角鏡 18mm 以下
- 大光圈 F2 以上
- 廣角高倍率 旅遊鏡
- Canon EF 14mm F2.8L USM $60000 - $75000
- Canon EF 24mm F1.4L USM $40000 - $50000
- Canon EF 50mm F1.8 II $3000
- SIGMA 18-200mm F3.5-6.3 DC for Canon $12000
- 相機防水盒 Sea&Sea DX-400D (for Canon 400D) $231,000隻羊含稅
- Casio EX-F1
- NU Dolphin 防水 MP3 隨身聽 (~= $2800 2008-08)
- 腳架、雲台、快拆板
- 中小型腳架:收長(包括雲台)要在38cm以內(此為我目前的機車踏板與車箱長度以及包包大小)
- 腳踏車
- 剎車不能太大聲,而且可以長時間使用。
- 公路車
- 登山車
- 折疊車
- 座墊 ALLAY NOMAD 1.1
- 車褲 pearl izumi 298-3D 短褲 NT$2890
- 車褲 pearl izumi 296-3D 七分褲 NT$3465
- Giant 雨衣 透明 $300
- 外胎 maxxis 一級防刺胎
- 家用打氣筒 壓力計
- 隨車打氣筒 TOPEAK Micro Rocket AL/CB (鋁/碳纖) $840/$1600
- 後視鏡 TOPEAK Bar'n Mirror 牛角後視鏡(僅適用於平把) $1000
- 註車架
- Sigma 1606L有線碼表+迴轉速套件
- Egon GR-2或GC-2牛角握把
- TOPEAK TriBag 三鐵專用上管袋 $550
- TOPEAK TourGuide Handlebar Bag DX $2290
- 自行車保護罩 TOPEAK Bike Cover MTB
- 車衣/褲捷安特車衣專用洗劑
- 風衣
- 防風眼鏡
- 水袋背包
- 全指手套/半指手套
- 剎車皮
- 挖胎棒
- 備胎 內/外胎
- 砂紙
- 補胎片
- 法式氣嘴轉接器
- 六角扳手
- v煞 維修容易、遇水易失靈、煞車需用力,煞車皮選購軟硬度要適中不然很容易造成很吵的聲音、長時間煞車易因輪框過熱導致內胎爆胎、雨季也可換用雨天用的煞車皮。
- 自動製冰機
- 羅技 無限星幻手 無線滑鼠鍵盤組 diNovo Cordless Desktop
- 潛水用 水中紀錄板
- LCD Monitor
- 19in 以上
- 長寬比不拘
- 最好有能夠輕鬆將螢幕轉90度的底座支架
- Viewsoinc VP191b-2 @17000
- UPS
- 在線式
- RJ11/RJ45突波保護器
- 800VA以上
- 不斷電系統 Delta GES102N N-series 1000VA On-line NT$7500
- 安靜的電腦
- 無風扇電源供應器
- 無風扇主機板
- 固態硬碟 Solid State Disk
- i-RAM 雖然很想要,不過還是等它改成SATA II在說。
- 硬碟 SATA 容量不拘WD360GD
- 鍵盤 Layout 應與桌上型相似 左下角 為 Ctrl 而非 FN
- Power Supply 全鋁 無/12cm風扇 主動式PFC 80Plus
- SilverStone ST30NF >= $4000
- 筆記型電腦
- 大小最好在12到15in內
- keyboard layout
- 左下角是Ctrl鍵,而不是Fn或其它
- Del和Backspace鍵要明顯,而且不能是複合鍵
- 1.5kg以下
- RAID 支援 Hot-swap、Hot-spare
- APC UPB70 筆電萬用電池 (~= $5500)
- 吉他 Yamaha Silent Guitar SLG100N/S >= $15000
- 透明獨木舟 Molokini
- 車子 Smart
三腳架 SLIK MINI-PRO III NT$850Pioneer DVR-AXX 最主要的是銀色面版 @1800- 手機
- 要可以聽mp3
- 可擴充記憶卡
- 要能邊充電邊使用
Asus V80 $5500
2008-03-01
Rail of War
- 前兩、三關還可以橫衝直撞,之後的關卡就得步步為營,甚至“以退為進”才行。
- 遊戲節奏還滿慢的,雖然後期會得到比較快的車種,但速度超過 180 KM/h 過彎就會出軌,還得要全部車箱都出彎才能加速,不實用。
- 執行夜間任務時畫面太黑的話,可以試著調整螢幕 Gamma 值( nVidia 顯卡驅動)。
- 修改金錢:找 savedmission.sol 這個檔案,用16進位模式編輯(在“cash”之後)。
- Rail Of War Action Game - Play Free Flash Games Online - Youdagames.com
- Rail of War full version 1.3 RapidShare.
2008-02-29
安裝與使用 phpDocumentor
- 安裝 PEAR:
go-pear.bat
- 安裝 phpDocumentor:
pear.bat install -o PhpDocumentor
- 安裝時遇到 memory_limit = 8M (php.ini)不夠用…,要 16M 才夠。
- 執行 PhpDocumentor:
phpdoc.bat -o HTML:Smarty:PHP -d c:\path\to\project -t c:\path\to\project\docs
2008-02-20
關於 學長姊和學弟妹的英文翻譯 雜想
- 原本是沒有相對應字彙。upper/lower 和 senior/junior classmate 還滿生硬的。
- 雖然“聞道有先後”,但該令人尊敬的是“聞道”,而不是“先後”。
2008-02-11
2008-02-07
在 CentOS 與 Ubuntu 上設定 ADSL 撥接
- 在 CentOS 上是執行 /sbin/adsl-setup 這個 Shell script 。然後依提示輸入撥接帳號、密碼、DNS 的 IP (Hinet 主要的是 168.95.1.1) 及選擇一些選項(開啟防火牆、開機時自動撥接…等)即可。
- 手動啟動則執行 /sbin/adsl-start ,以此類推。
- 在 Ubuntu 上則是執行 sudo pppoeconf 這個 Shell script 。然後依提示輸入撥接帳號、密碼、DNS 及選擇一些選項(開啟防火牆、開機時自動撥接…等)即可。
- 手動連線
sudo pon dsl-provider
,手動斷線sudo pon dsl-provider
2008-01-31
不用三腳架也能拍出完美不手震的影像
- 好像還滿方便的(至少夠便宜),有點像在用單腳架的感覺,只不過一個是住下壓、一個往上拉。原文沒有文字敘述,以下為簡記。
- 材料:一個用在相機腳架或雲台上的那種螺絲 (1/4 螺絲;有零賣)、一條細繩子(至少需同等於身高)和一個大型螺絲墊片。
- 螺絲與墊片挷在繩子兩端,螺絲鎖在相機上,拍照時一腳踩在墊片並把相機往上抬,以拉直繩子。
關於 PortableApps.com
- 立意不錯,但打包成安裝檔的點還滿詭異的(只針對可攜性,不考慮免安裝的部份?)。
- 跟各軟體的官方釋出的版本比起來,更新較慢(像 Firefox 2 剛出那陣子一直有安全性更新那種情況),語系較少(像 OpenOffice …等)。
- 有些軟體沒有必要用 PortableApps.com 的版本,如 Notepad++ 下載官方提供壓縮檔的版本即可。
- 而另外有一些軟體的設定值存取不順利,像我用 MPlayer Portable 1.0 RC1 時修改設定要重覆設定兩次才能成功。(也許是個案)
2008-01-28
關於 XDite 網站創業,你準備好了嗎?系列
- 簡單來分,成功的因素不外乎就是“運氣”跟“實力”,沒有實力的話,不就只能靠運氣了嗎。(囧)
- 在“實力”的項目之中,最能掌握的就是自身擁有的能力,至少比較不會受外在因素(像資金、人事)影響。
- 很多時候、很多的人、事、物,都還是得親自遇到了才知道。
2008-01-21
老哥買了 Wii + Fit
2008-01-16
InstallShield Error code: -6006
- 這次重灌中安裝驅動程式時遇到的問題,詳細原因並不清楚,只知道跟 Windows Installer 有關。我的情況是在 Windows Installer 設為 Manual 的狀態下,沒有自動啟動,手動打開就好了。
2008-01-12
關於國內大學要求微軟調降權利金相關新聞
- 若沒有表現出一副“沒有也沒關係,用別的也可以”的樣子,反而露出一臉“我就是只要買你的東西,你給我便宜點”的傻樣,怎麼跟人談殺價,這個不是菜市場阿婆都會的道理嗎。(囧)
- 我最後一次使用的微軟 Office 系列的經驗,大概是 OfficeXP 剛推出的版本,之後就開始改用 OpenOffice.org,不過,我覺得相形之下, OpenOffice.org 實在稱不上“好用”。
- 目前我個人主要使用的編輯器是 Notepad++ ,文件格式是 HTML 與文字檔,OpenOffice.org 常用的就僅有試算表,偶而用 Writer 和 Impress 開啟一些(大都是微軟 Office 格式的)文件而已。
- 使用 HTML 格式的好處之一是編輯與瀏覽的環境需求很低,只需要文字編輯器和瀏覽器而已(可說是僅次純文字)。字元編碼在支援 Unicode/UTF8 越來越完善的今日,也逐漸不成問題了。
- 似乎講偏了…
2008-01-10
從登錄檔修改服務啟動的類型
- 以下內容的測試環境是 WindowsXP SP3RC1(在 VirtualPC 2007 所建構的 VM 之中),提到的“服務”指的是 Windows 內建的 service,一種在背景執行的特殊程式。“登錄”指的是 Windows Registry,而“登錄檔”指的是副檔名為 reg 的文件。
- 一般情況下,透過執行 services.msc 這項管理工具來修改服務的啟動類型即可,編輯成登錄檔的形式僅便於重灌或大量套用。更動登錄有其風險,不建議冒然修改。
- 文末附上個人設定僅供參考,若需套用,請務必檢視、修改以符合實際需求,勿直接匯入。用 Notepad 存檔時編碼要選 Unicode (Notepad++ 即 UCS-2 little Endian),並將副檔名設為 reg。
- Start (DWORD) 一值即為設定啟動類型的項目,可用值如下:
- 0: Boot
- 1: System
- 2: Automatic
- 3: Manual
- 4: Disable
- 服務的詳細機碼內容,可執行 regedit.exe ,到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ 中查看。
- 依更新進度不同,每個作業系統有的服務項目會有所增減,因為有些服務是在 Service Pack 才加入的。(像 Bluetooth Support Service, Extensible Authentication Protocol Service, Health Key and Certificate Management Service, Network Access Protection Agent, Network Provisioning Service, Wired AutoConfig …等)
- 目前測試結果(測試方法是先將所有服務設為 Manual,再逐項啟動),只有“Plug and Play”與“Remote Procedure Call (RPC)”兩項較有設為自動啟動的必要(否則大部份的服務無法正常的手動啟動)。
- 而在所有服務都停用的情況下,Windows 依然可以正常開機、登入,但不只工作列無法顯示,還有大部份的 MMC 管理頁面也都無法正常運作。此時只能用 Ctrl+Alt+Del 叫出工作管理員來執行程式。前述情況是在 VM 環境內測試的結果,實機測試有些出入(工作列有出現)。
- 有些服務從名稱、說明或依存性,都看不出有什麼大不了的,但實際上卻很重要。像是使用 PPPoE (台灣常見的 ADSL 撥接) 時, Telephony 服務是必要的(還有 Network Connections、Remote Access Connection Manager 兩項),但從說明看來卻像是 VoIP 之類的服務。
- 有些服務如 Print Spooler、Smart Card、UPS … 等,則應依個人設備需設定。
- Windows service - Wikipedia, the free encyclopedia
- Windows Registry - Wikipedia, the free encyclopedia
- CurrentControlSet\Services Subkey Entries Microsoft Help and Support
Windows Registry Editor Version 5.00 #Start (DWORD): 0x0 - Boot; 0x1 - System; 0x2 - Automatic; 0x3 - Manual; 0x4 - Disabled. #@See http://support.microsoft.com/kb/103000/en-us #Alerter [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Alerter] "Start"=dword:00000004 #Application Layer Gateway Service [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ALG] "Start"=dword:00000004 #Application Management [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AppMgmt] "Start"=dword:00000003 #Automatic Updates [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv] "Start"=dword:00000003 #Background Intelligent Transfer Service [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BITS] "Start"=dword:00000003 #Bluetooth Support Service #ClipBook [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ClipSrv] "Start"=dword:00000004 #COM+ Event System [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventSystem] "Start"=dword:00000002 #COM+ System Application [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\COMSysApp] "Start"=dword:00000003 #Computer Browser [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Browser] "Start"=dword:00000004 #Cryptographic Services #@See http://www.binbin.net/messages/qa_win_xp/0037.htm [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CryptSvc] "Start"=dword:00000003 #DCOM Server Process Launcher #Windows Firewall Network Connections service and the COM+ Event System service #@See http://support.microsoft.com/kb/892504/en-us [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DcomLaunch] "Start"=dword:00000003 #DHCP Client [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dhcp] "Start"=dword:00000004 #Distributed Link Tracking Client [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TrkWks] "Start"=dword:00000004 #Distributed Transaction Coordinator [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSDTC] "Start"=dword:00000004 #DNS Client [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache] "Start"=dword:00000002 #Error Reporting Service [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ERSvc] "Start"=dword:00000004 #Event Log [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog] "Start"=dword:00000002 #Extensible Authentication Protocol Service [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EapHost] "Start"=dword:00000004 #Fast User Switching Compatibility [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\FastUserSwitchingCompatibility] "Start"=dword:00000004 #Health Key and Certificate Management Service [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\hkmsvc] "Start"=dword:00000004 #Help and Support [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\helpsvc] "Start"=dword:00000004 #HID Input Service, Human Interface Device Access [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HidServ] "Start"=dword:00000004 #HTTP SSL [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTPFilter] "Start"=dword:00000003 #IMAPI CD-Burning COM Service [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ImapiService] "Start"=dword:00000004 #Indexing Service [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CiSvc] "Start"=dword:00000004 #IPSEC Services [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent] "Start"=dword:00000004 #Logical Disk Manager [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\dmserver] "Start"=dword:00000003 #Logical Disk Manager Administrative Service [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\dmadmin] "Start"=dword:00000003 #Messenger [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Messenger] "Start"=dword:00000004 #MS Software Shadow Copy Provider [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SwPrv] "Start"=dword:00000004 #Net Logon [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon] "Start"=dword:00000004 #NetMeeting Remote Desktop Sharing [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mnmsrvc] "Start"=dword:00000004 #Network Access Protection Agent [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\napagent] "Start"=dword:00000004 #Network Connections [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netman] "Start"=dword:00000002 #Network DDE [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetDDE] "Start"=dword:00000004 #Network DDE DSDM [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetDDEdsdm] "Start"=dword:00000004 #Network Location Awareness (NLA) [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Nla] "Start"=dword:00000004 #Network Provisioning Service [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\xmlprov] "Start"=dword:00000004 #NT LM Security Support Provider [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NtLmSsp] "Start"=dword:00000004 #Performance Logs and Alerts [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SysmonLog] "Start"=dword:00000004 #Plug and Play [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PlugPlay] "Start"=dword:00000002 #Portable Media Serial Number Service [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WmdmPmSN] "Start"=dword:00000004 #Print Spooler [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spooler] "Start"=dword:00000003 #Protected Storage [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ProtectedStorage] "Start"=dword:00000004 #QoS RSVP [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RSVP] "Start"=dword:00000004 #Remote Access Auto Connection Manager [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasAuto] "Start"=dword:00000004 #Remote Access Connection Manager [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan] "Start"=dword:00000003 #Remote Desktop Help Session Manager [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RDSessMgr] "Start"=dword:00000004 #Remote Procedure Call (RPC) [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RpcSs] "Start"=dword:00000002 #Remote Procedure Call (RPC) Locator [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RpcLocator] "Start"=dword:00000004 #Remote Registry [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RemoteRegistry] "Start"=dword:00000004 #Removable Storage [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NtmsSvc] "Start"=dword:00000003 #Routing and Remote Access [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RemoteAccess] "Start"=dword:00000004 #Secondary Logon [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\seclogon] "Start"=dword:00000004 #Security Accounts Manager [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SamSs] "Start"=dword:00000003 #Security Center [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wscsvc] "Start"=dword:00000004 #Server [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver] "Start"=dword:00000004 #Shell Hardware Detection [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ShellHWDetection] "Start"=dword:00000004 #Smart Card [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SCardSvr] "Start"=dword:00000004 #SSDP Discovery Service [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SSDPSRV] "Start"=dword:00000004 #System Event Notification [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SENS] "Start"=dword:00000004 #System Restore Service [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\srservice] "Start"=dword:00000004 #Task Scheduler [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Schedule] "Start"=dword:00000004 #TCP/IP NetBIOS Helper [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LmHosts] "Start"=dword:00000004 #Telephony [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TapiSrv] "Start"=dword:00000003 #Telnet [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TlntSvr] "Start"=dword:00000004 #Terminal Services [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TermService] "Start"=dword:00000004 #Themes [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Themes] "Start"=dword:00000004 #Uninterruptible Power Supply [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\UPS] "Start"=dword:00000004 #Universal Plug and Play Device Host [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\upnphost] "Start"=dword:00000004 #Volume Shadow Copy [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS] "Start"=dword:00000004 #Web Client [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient] "Start"=dword:00000004 #Windows Audio [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AudioSrv] "Start"=dword:00000002 #Windows Firewall/Internet Connection Sharing (ICS) [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess] "Start"=dword:00000004 #Windows Image Acquisition (WIA) [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stisvc] "Start"=dword:00000004 #Windows Installer [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSIServer] "Start"=dword:00000003 #Windows Management Instrumentation [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\winmgmt] "Start"=dword:00000003 #Windows Management Instrumentation Driver Extensions [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Wmi] "Start"=dword:00000004 #Wired AutoConfig [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dot3svc] "Start"=dword:00000004 #Windows Time [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time] "Start"=dword:00000004 #Windows User Mode Driver Framework [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\UMWdf] "Start"=dword:00000004 #Wireless Zero Configuration [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WZCSVC] "Start"=dword:00000004 #WMI Performance Adapter [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WmiApSrv] "Start"=dword:00000004 #Workstation [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanworkstation] "Start"=dword:00000004
2008-01-07
原來 UNIX-like 的目錄結構有 FHS 這項標準啊
- 從以前剛接觸 linux 開始,就一直對目錄結構有很多的疑問,今天無意間找到 Filesystem Hierarchy Standard 這份文件著實解決了我不少疑惑。
- “user » usr”在那年代,省這一個字真的這麼開心嗎!?
2008-01-05
2008-01-02
關於 Virtual PC 2007
- 2008-01-15 更新:
- Virtual PC 2007 有預先配置硬碟空間的選項,不過不在“New Virtual Machine Wizard”裡,而是要在“Virtual Disk Wizard”中選擇“Fixed size”。
- 使用預先配置的硬碟空間後,明顯有加快作業系統的安裝速度,大約是從 30 進步到 25 分鐘,不過還是比 VMware Server 稍慢(前述兩者的時間差並沒有精確比較,僅記錄、不值參考)。
- 嘗試安裝 Linux 失敗 (試過 CentOS-5.1-i386-bin-DVD.iso 與 ubuntu-7.10-desktop-i386.iso 的 live-cd 模式),不過這也是在預料之中的事。一個意外的事是安裝 Linux 失敗後的 Virtual Disk ,拿去安裝別的作業系統會當機?
- 試用的環境與安裝的作業系統都是 Windows XP SP2 up to date。
- 半年前曾試用過 VMware Server 1.0.2-39867,比起來,Virtual PC 2007 安裝作業系統所需時間較久。
這應該與沒有預先配製硬碟空間有關(Virtual PC 沒有這項設定)。 - 在安裝 Guest OS 的過程中沒有提示讓滑鼠游標脫離 VM 的方法(按 Right Alt 鍵),而VMware Server 會在狀態列提示。
- 內建分享資料夾的功能,設定相當簡單。
- 切換全螢幕模式時會同時切換解析度,而且反應速度相當快。
- 在 Guest OS 運行時更改 VM 設定,會暫停所有 Guest OS (即使只更動其中之一)。
- 可以更動 VM 硬體設備與選項太少,像是最多只能有三個硬碟、一台光碟機和一台軟碟機,也不能新增清單上沒有的設備。
- Microsoft Virtual PC 2007官方網站,下載頁面 在此
2007-12-30
關於 php_curl (二)
- 以下的 $ch 指的是 php curl_init() 傳回的 resource(cURL handle) ,同等於 libcurl 的 easy-handle,$mh 以此類推。
- $ch 在加入 $mh 之後就不能重覆使用(意指僅用 curl_setopt() 重設 URL)了,得關掉後重新初始化再來。
- $ch 在加入 $mh 之後 curl_errno() 會失效(總是傳回 int(0),原因不明),而 curl_error() 則是有些錯誤抓不到(已知 CURLE_COULDNT_RESOLVE_HOST(6) 不行)。
- 承上, 改用 curl_multi_info_read() 替代。傳回值如下:
<?php $curlmsg = curl_multi_info_read($mh); var_dump( $curlmsg ); // 當沒有訊息時傳回 boolean(false) // 反之則傳回 array(3) { ["msg"]=> int(1) ["result"]=> int(0) ["handle"]=> resource(9) of type (curl) } ?>
- $curlmsg["msg"] 目前只有定義 CURLMSG_DONE(1) 一值,暫時可以不用理它。
- $curlmsg["result"] 值為 CURLE_* 之一。
- $curlmsg["handle"] 訊息來源的 $ch。
- curl_multi_info_read() 較為明確的呼叫時機,是當執行 curl_multi_exec($mh, $rh) 之後, $rh 變動(減少)的時候。
- curl_multi_select() 並非必要的,呼叫的主要目地是為了先檢查開啟的 sockets 有無資料,再做對應的動作,以減少佔用的 CPU 資源。以下為 Unix Socket FAQ 摘錄:
2.9. What are the pros/cons of select(), non-blocking I/O and SIGIO? Using non-blocking I/O means that you have to poll sockets to see if there is data to be read from them. Polling should usually be avoided since it uses more CPU time than other techniques. Using SIGIO allows your application to do what it does and have the operating system tell it (with a signal) that there is data waiting for it on a socket. The only drawback to this soltion is that it can be confusing, and if you are dealing with multiple sockets you will have to do a select() anyway to find out which one(s) is ready to be read. Using select() is great if your application has to accept data from more than one socket at a time since it will block until any one of a number of sockets is ready with data. One other advantage to select() is that you can set a time-out value after which control will be returned to you whether any of the sockets have data for you or not.
- [comp.unix.programmer] Unix-socket-faq for network programming
2007-12-27
廣告插播? - HiNet 線上通知服務同意書
-
- 最近撥接上 HiNet 的連線,會遇到開啟的網頁被重導到“HiNet 通知服務同意書”一頁,一開始還以為是電腦中毒了咧。
- 這感覺就像被第四台插播廣告似的,ISP 做這種難到就沒有違法嗎?
- PCDVD數位科技討論區 - HiNet線上通知服務同意書 ?
2007-12-26
2007-12-25
關於 php_curl
- 最近開發 Stylet Reader 時,為了要抓取 feed 用上了 php_curl,但文件實在有夠少的。雖然 libcurl 官網有一份 C API 的文件,但命名有些出入,所以我自製了一份對照表(見文末,僅供參考)。
- 從原始碼看來 curl_multi_select() 僅是代為呼叫 curl_multi_fdset() 與 select() ,後者可參考socket_select()。
- 依照文字說明, curl_multi_info_read() 的第二個參數($msgs_in_queue)應該是 passing by reference 吧!?怎麼會是 passing by value 呢?真詭異。
- 承上,雖然可以手動傳址 curl_multi_info_read( $mh, &$msgs_in_queue),但得打開 allow_call_time_pass_reference = On (不建議)。
- select Function (Windows) MSDN。
php_curl | libcurl |
---|---|
curl_close | curl_easy_cleanup |
curl_copy_handle | curl_easy_duphandle |
curl_errno | |
curl_error | curl_easy_strerror |
curl_exec | curl_easy_perform |
curl_getinfo | curl_easy_getinfo |
curl_init | curl_easy_init |
curl_multi_add_handle | curl_multi_add_handle |
curl_multi_close | curl_multi_cleanup |
curl_multi_exec | curl_multi_perform |
curl_multi_getcontent | |
curl_multi_info_read | curl_multi_info_read |
curl_multi_init | curl_multi_init |
curl_multi_remove_handle | curl_multi_remove_handle |
curl_multi_select | curl_multi_fdset + select |
curl_setopt_array | |
curl_setopt | curl_easy_setopt |
curl_version | curl_version |
2007-12-21
關於 meeya
- 在 XDite 那看到關於 meeya 的“JS問題”,才知道有 meeya 這站(還在封測)。
- 抄襲 js 和 css 要被發現還真不容易咧(故意的?),我覺得最扯的是:至少關鍵字(facebook)要取代掉啊(囧)。
- 趕時間也不是這樣子趕的啊,出了這事除了砍掉重練,還能怎麼著?如果真的砍掉重練,那原本省下來的時間跟死掉的腦細胞,不就煙消雲散了嗎?
- 官方回應文末呼的那口號,Go 那幾家 N*U(國立開頭、大學結尾)學校是指他們的目標核心客戶嗎?很難理解咧。
- Blog.XDite.net » 網站目標相等,所以 JS 也相等?
- Blog.XDite.net » 不只是 JS 抄襲的問題
- meeya | 校園 社群 人脈
- meeya開發日記: 測試版後第二天,小米想跟大家說些心裡的話!
- Conscious Choices: meeya 在 JS 問題上,到底做錯了什麼?
監獄兔 ウサビッチ|USAVICH.TV
- 超好笑!尤其是老大往生的時候,一整個是笑到停不下來。
- ウサビッチ|USAVICH.TV 官方網站
- 爆笑の監獄兔 (ウサビッチ) @ Shih-Hsien's BLOG
關於 PHP Constants (常數)
- 關於 PHP 的常數:
- 在宣告時其值必需為已知、固定的值。
- 常數名稱在“慣例”上都是大寫,並且字詞間以底線分開。如:
define('FOO_BAR', 'something');
- 宣告該常數以後,在執行期間其值不能被改變。
- 不管在哪宣告,全域都能存取。
- 使用常數的目的之一是要決解“魔術數字”的問題,即程式碼中沒有註解或命名的數字,容易造成程式碼不易維護。
- 使用常數時,效能不該是考量的要素之一,因為在 PHP 使用常數“並沒有”比用變數快!(這倒是出乎我的預料)剛試了一下,用常數反而慢一點點(差距很小,不曉得是不是我測試方式的關係)。
- 以下為我測試的程式碼,註解的地方為可選的比較方式:
<pre> <?php define('VAR1' , 'a long long long long long long long long long long long long long text'); define('VAR2' , 'a long long long long long long long long long long long long long text'); $var1 = 'a long long long long long long long long long long long long long text'; $var2 = 'a long long long long long long long long long long long long long text'; $start = 0; $end = 0; for($i =0; $i < 20; $i++){ $tmp = null; $start = microtime(true); for($j =0; $j < 5000; $j++){ $tmp .= $var1; //$tmp = "Something here" . $var1; //$tmp = "Something here{$var1} Nothing here{$var2}"; //$tmp = "Something here{$GLOBALS['var1']} Nothing here{$GLOBALS['var2']}"; } $end = microtime(true); echo 'V: ' . ($end - $start); echo "\t"; $tmp = null; $start = microtime(true); for($j =0; $j < 5000; $j++){ $tmp .= VAR1; //$tmp = "Something here" . VAR1; //$tmp = 'Something here' . VAR1 . ' Nothing here' . VAR2 ; } $end = microtime(true); echo 'C: ' . ($end - $start); echo "\n"; } ?> </pre>
- 自行定義的常數值,在宣告時必需為固定的值,如:
但一個實用的例外(來自 wordpress 的 wp-config-sample.php),是用 magic constants 來取得路徑:define('TEST_TXT', 'some string here');
define('ABSPATH', dirname(__FILE__));
- PHP: Constants - Manual
- Magic number (programming) - Wikipedia, the free encyclopedia
2007-12-20
Yahoo UI 是好物
- 真的是易學易用,不過速度似乎有點慢…。
- 事件綁定時要去掉“on”(不知是否我眼挫,這件事我在文件上沒找到?),如:
window.onload = doSomething; // 上述改用 YUI 如下 YAHOO.util.Event.addListener(window, 'load', doSomething);
- YAHOO.util.Event.addListener 會自動附加(而不是覆蓋)綁定,以前要自已做到這功能的話得如下:
function addListener(newListener) { var oldListener = window.onload; if (typeof window.onload != 'function') { window.onload = newListener; } else { window.onload = function() { oldListener(); newListener(); } } }
- 範例不錯,但文件不夠完備。像 API Doc 的部份,如果能每個 Method 附上簡短範例會更好(像 PHP Manual 那樣)。
2007-12-17
安裝 VMware 與 CentOS
- 就為了 PHP: flush - Manual 這一句:
Several servers, especially on Win32, will still buffer the output from your script until it terminates before transmitting the results to the browser.
- 看了鳥哥的 Linux 私房菜後決定安裝 CentOS,目前版本是最近才更新的 CentOS 5.1。
- 初次用文字模式,安裝過程相當順利。第一個遇到的問題是 shutdown 與 Run-level (一裝完就想關機了… 囧)。輸入
shutdown now
的話只會切換到 Run-level 1,要關機的話是要輸入shutdown -h now
才切換到 Run-level 0 ,意即關機。 - Linux Run-level 的 7 種模式
- 0: 關機
- 1: 單一使用者模式
- 2: 單一使用者模式附帶網路功能
- 3: 啟動於文字模式下的多使用者模式
- 4: 未定義
- 5: 啟動於 X Windows 模式下的多使用者模式
- 6: 重開機
- BTW,我覺得 Linux 令人難已接近的原因之一就是那堆難以聯想的縮寫(指令、檔名、目錄名都是)…。
- 鳥哥的 Linux 私房菜 -- 伺服器架設篇目錄
- www.centos.org - The Community ENTerprise Operating System
- Runlevel - Wikipedia, the free encyclopedia
2007-12-15
(X)HTML content-type 的選擇
- 這裡說的 Content-type 和 Media type 基本上是一樣的東西,源自於MIME type。其常見的內容項目有:text/html 、 image/gif 、 application/octet-stream … 等。
- 在 HTTP 協定中會送出 Content-Type 的 header 來指明接下來要傳送的資料類型。如:
Content-Type: text/html
- 在 XHTML Media Types - Summary 該文總結中指出: HTML 應該使用 text/html , 而 XHTML 應該使用 application/xhtml+xml,但在考量與 HTML 相容的情況下也可以使用 text/html 。
- IANA | MIME Media Types
2007-12-14
2007-12-13
MySQL Index 長度限制為 1000 “bytes”
- 由於 MySQL Index 長度限制為 1000 bytes,這裡指的是二進位的資料,而字串類型的欄位需考量到字元集的設定,像在 utf8 欄位時,每個字元索引需要 3 bytes,所以實際上索引長度最長為 333。
CREATE INDEX index_name ON table_name (col_name(333) );
- 而超過長度時的錯誤訊息如:
1071: Specified key was too long; max key length is 1000 bytes
- 順帶一提的是,MySQL 5.0.3 以後的版本,VARCHAR、VARBINARY 最大長度改為 65,532。
- MySQL AB :: MySQL 5.1 Reference Manual :: 11.1.7 CREATE INDEX Syntax
- MySQL AB :: MySQL 5.1 Reference Manual :: 9.5 Data Type Storage Requirements
2007-12-12
2007-12-10
2007-12-09
初試 Google Code - Project Hosting 提供 svn 服務
- 聽說國內工程師沒有使用版本控制工具的習慣。個人認為,主因應該是版本控制工具的入門門檻太高了,跟複製一個目錄比起來的話(囧)。
- 用 Subversion 跟 Google Code 作版本控制 (一) at ericsk's blog
- 用 Subversion 跟 Google Code 作版本控制 (二) at ericsk's blog
- 石頭閒語:在 GoogleCode 建立軟體專案的第一步 - 樂多日誌
- 以下為步驟簡述:
- 首先到 Google Code » Project Hosting » 建立新的專案。目前在 Google Code 建立專案上的限制:一個帳號只能建立10個專案,還有就是一個專案只能用到100MB。
- 因為要做為域名(如:
http://your-project-name.googlecode.com/svn/
),所以連帶著對專案名稱限制較多(小寫、不能有空白…等)。 - 可選擇的授權條款如下:
- Apache 2.0
- Artistic/GPLv2
- GPLv2
- GPLv3
- LGPL
- MIT
- MPL1.1
- New BSD
- 授權條款的選擇可參考 OSSF::自由軟體鑄造場 提供的 授權精靈 V3.2。
- 下載 Subversion 的 Clients and plugins,我用的是TortoiseSVN。
- 在本機建立新的目錄後先checkout一次(按右鍵選 SVN Checkout...),會取回 .svn 目錄,不用動它。
- Repository(URL):
https://your-project-name.googlecode.com/svn/trunk/
- 帳號是 Gmail,而密碼是由系統產生,在 Google Code » setting 裡可以查到。
- 再將原始碼放入剛新建的目錄後commit(按右鍵選 SVN Commit...),就可開始使用了!
2007-12-07
Charset (字元集)的選擇:UTF-8!
- Just UTF-8!這該算是資訊界難得的共識吧。
- UTF-8 是一種不固定長度的編碼方式,原定義在 ASCII (128 以下) 佔用 1byte,而其它語言的字元則佔 2、3或4個 bytes。
- 漢字在 UTF-8 中佔 3 bytes ,相較於用 Big5(字元固定 2 bytes)編碼的文件,其所佔用的空間較多。
- 時至今日,大多的編輯器都能正確支援 UTF-8。唯一要注意的是:不要寫入 BOM,像是 Windows 內建的 Notepad 在轉存 UTF-8 格式時會自動在檔案頭開插入 EF BB BF ,雖然在支援 UTF-8 編輯器不會顯示出來,但這會造成一些問題(如驗証 HTML 時會出錯)。
- Byte-order mark - Wikipedia, the free encyclopedia
- 在 HTML 中使用 UTF-8
- 在<head> 中插入:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>標題</title>
- 使用 UTF-8 的網頁在 IE 中有可能會出現一片空白的情況,所以要將字元集的宣告放在 <title> 之前。
- :::zonble's promptbook » 一片空白的UTF-8網頁:::
- 在<head> 中插入:
- 在 XML/XHTML 中使用 UTF-8
- 在文件開頭插入 XML 宣告:
<?xml version="1.0" encoding="UTF-8"?>
- 上述的 XML 宣告在 XML 文件中並不是必要的,但建議使用。
- Extensible Markup Language (XML) 1.0 (Fourth Edition) 2.8 Prolog and Document Type Declaration
- 在文件開頭插入 XML 宣告:
- 在 Apache 中使用 UTF-8
- 在 http.conf 文件中插入:
AddDefaultCharset utf-8
- AddDefaultCharset Directive - core - Apache HTTP Server
- 在 http.conf 文件中插入:
DTD 的選擇:Strict!
- DTD Document Type Definition 也就是一般網頁原始碼上
<!DOCTYPE
開頭的東西。個人推薦的是 XHTML 1.0 Strict 或 HTML 4.01 Strict - 無論是選擇 XHTML 或 HTML,都要 Strict!Strict 可不僅僅是宣告,在撰寫時也要避免依賴瀏覽器容錯的能力。
- 選擇 HTML 4.01 Strict 如 Yahoo! UI Library 在 Grids CSS 所推薦的:
We use and recommend this !DOCTYPE to trigger Standards Mode in browsers with multiple rendering modes:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
- 選擇 XHTML 1.0 Strict 則是在程式處理上比較方便:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- HTML 4.01 Specification
- XHTML™ 1.0 The Extensible HyperText Markup Language (Second Edition)
2007-12-06
2007-12-05
關於 Hinet 與 Xuite 信箱設定
- 要使用 Xuite 信箱 POP3 的功能,得先下面鏈結處申請才行。不然會看到 [AUTH] Authentication failed. 的錯誤訊息。
- 而 Hinet 信箱 會遇到在 Webmail 看是有信的,但收信軟體收不到信的情況。這要到“個人設定 » 進階 » 登出時(強制)移回信件”設定。
- 申請開放 POP3 服務 - HiNet 會員中心
- HiNet webmail -常見問題
關於 MagpieRSS
- 目前最新的版本是 magpierss-0.72 (November 5, 2005),已經是兩年前的東西啦…。
- 文件不夠詳細。
- Snoopy.class.inc 需要 socket 的功能,如 fsockopen(),但很多免費空間都不允許。
- fetch_rss() 函式只能從 URL 載入 Feed。
- 從檔案載入 Feed 的寫法:
require_once(MAGPIE_DIR . "rss_fetch.inc"); // 一般用法 $rss = fetch_rss($url); // 用 CURL 替代 $ch = curl_init($url); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); $xml_string = curl_exec($ch); curl_close($ch); // 或從檔案讀入 $xml_string = file_get_contents("feed.xml"); // 載入預設值(原本是設計在裡 fetch_rss() 呼叫的) init(); $rss = new MagpieRSS( $xml_string, MAGPIE_OUTPUT_ENCODING, MAGPIE_INPUT_ENCODING, MAGPIE_DETECT_ENCODING );
- Magpie RSS - PHP RSS Parser
2007-12-04
2007-12-03
關於 MySQL 的 TIMESTAMP 格式
- 雖然 TIMESTAMP 跟 DATETIME 一樣是用來表示日期、時間,但其主要用途是做來記錄資料異動的時間點, 即該列的最後更新日期 (Last modified date)。
- 其它類型欄位的預設值不能是函數(包括 NOW()、CURRENT_DATE)或運算式,必須是常數,但 TIMESTAMP 可以在 CREATE/ALTER TABLE 時訂為 DEFAULT CURRENT_TIMESTAMP。
- TIMESTAMP 還提供自動更新的功能 ON UPDATE CURRENT_TIMESTAMP。
- TIMESTAMP 佔用 4 bytes,資料範圍 1970-01-01 00:00:01 至 2037-12-31 23:59:59。
- DATETIME 佔用 8 bytes,資料範圍 1000-01-01 00:00:00 至 9999-12-31 23:59:59。
- MySQL AB :: MySQL 5.1 Reference Manual :: 10.3.1.1 TIMESTAMP Properties
- Tsung's Blog | MySQL Timestamp 型態 的 屬性(新增/修改 自動更新 Timestamp 型態 的 欄位)
2007-12-01
RSS 與 ATOM 各版本比對
- 下面的表格是列出各種 feed 的格式、版本、根元素與命名空間。
- RSS - Wikipedia, the free encyclopedia
- Atom (standard) - Wikipedia, the free encyclopedia
Name | Version | Full name | root | Namespace |
RSS | 0.90 | RDF Site Summary | rdf:RDF | http://my.netscape.com/rdf/simple/0.9/ |
RSS | 0.91 | Rich Site Summary | rss | |
RSS | 1 | RDF Site Summary | rdf:RDF | http://purl.org/rss/1.0/ |
RSS | 2 | Really Simple Syndication | rss | |
ATOM | 0.3 | feed | http://purl.org/atom/ns | |
ATOM | 1 | feed | http://www.w3.org/2005/Atom |
2007-11-30
用 CURL 替代 allow_url_fopen 的限制
- allow_url_fopen 是用來設定 fopen 是否能開啟 URL,預設值是開啟的,但有資安的問題,建議關閉。
- 一個替代方案是用 CURL 取代:
<?php $ch = curl_init('http://example.com/'); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); $file_contents = curl_exec($ch); curl_close($ch); echo htmlspecialchars($file_contents); ?>
關於 Accessibility 與 Usability
- 簡單來說 Accessibility 是指“可不可用”,而 Usability 是指“好不好用”。
- Accessibility 的“可不可用”通常是針對身心障礙者,但廣義的也包括使用比較差的電腦、網路等不同環境的使用者。
- 網頁親和力 - Wikipedia
- 優使性筆記本 (Max's usability notes):何謂優使性(Usability)? - yam天空部落
- Xexex's Java 和其他二三事 網頁應用程式 Usability 筆記
Unobtrusive Javascript
- Unobtrusive JavaScript (也有用 Unobstructive 的) 之前看到的一個詞,個人暫譯“無妨礙的 Javascript”。
- 並不是個新東西,意指在設計時考量到沒有 script 的環境下也能正常(或折衷)執行,而不是讓使用者對著 script error 大眼瞪小眼。
- 兩個面向,一是瀏覽者完全沒有或關閉 script 的功能;二是使用者部份載入(網路問題、NoScript)、或因瀏覽器特性…等原因,script 沒有正確執行。
- 一個常見的範例:
<a href="..script..">link</a> <a href="..url.." onclick="..script..">link</a>
- 另一個範例:
<input type="button" onclick="doSubmit()" /> <input type="submit" onclick="doSubmit()" />
- Unobtrusive JavaScript - Wikipedia, the free encyclopedia
2007-11-29
HostWQ.net
- 下午申請了 HostWQ.net 的支援 PHP 與 MySQL免費空間,規格看起來還不錯。要注意申請第一格是 Site's Name,使用者 ID 是系統產生的。
- 有提供六個免費的 Sub-domains,不過是從 *.HostWQ.net (三級域名)開始?
- 我在 blog.jano.hostwq.net 用 Fantastico type installer 安裝 Wordpress ,很快,但有檔案權限的問題(後來改用另一個 jano.hostwq.net 就沒這個問題)。
- Control Panel 有些地方網址的 Domain 是錯的?指到 byetcluster.com 去了。
- FTP 超慢!我用 FireFTP 傳 wordpress 上去,一直都沒有超過 2KB/s,而且中途還掉了127個檔…(Code:450)。還好 FireFTP 有一項比較本地與遠端目錄的差別,並針對檔案有無、大小來上下傳的功能,還不錯用,不過第二次還是掉了25個檔…。(怒)
- 後來改用 FileZilla 傳到自然斷,用 FireFTP 一比,還是缺了一堆!(翻桌)
- 再試一陣子看看吧…
2007-11-24
URL 的長度限制
- URL 的長度實際上並沒有規定,2083個字元只是 IE 在實做上的限制。不過,在決定欄位大小時,是個不錯參考值。
- Maximum URL length is 2,083 characters in Internet Explorer
2007-11-22
我用過的作業系統
- 曾使用(個人/家用)的作業系統如下:
- MS-DOS 6.22,國中在校第一次接觸的作業系統。
- Windows 3.1,安裝在自家第一臺電腦上,也是從國中開始。
- Windows 95,開始撥接上網!
- Windows 98,僅次於 XP 之後,我用最久的一套。
- Windows XP Professional 目前主要的作業系統。
- 還真是一脈相承啊…。(茶)
- 其實我也用過 Linux 一陣子,包括 Red Hat 和 Fedora,以及 Mandrake 與 Mandriva Linux (兩者在改名前後各試用過一次),不過最後都還是逃回來了…,最近 Ubuntu 似乎很紅,找個時間來用一下好了。
2007-11-09
2007-11-07
Firefox 調校
- 在網址列輸入 about:config,並視情況修改。
- 修改 browser.cache.disk.enable
- 修改 browser.cache.disk.capacity
- 增加 String 參數 browser.cache.disk.parent_directory 值為 R:\ (指定快取存放的目錄)
- 修改 browser.cache.memory.enable
- 增加 browser.cache.memory.capacity
- Knowledge Base - MozillaZine Knowledge Base
2007-11-06
Wordpress 試用心得
- 安裝的是目前最新版本 Wordpress 2.3.1。
- 安裝步驟真的是簡單到我都不知道該講什麼!
- 新 Blog 的網址是 stylet.no-ip.org (暫訂)。
- 目前還是以 Blogger 為主,Wordpress 以(手動)同步文章測試中。
2007-11-02
Google Photos Screensaver
- 再次安裝 Google Photos Screensaver 。
- 台灣版的Google Pack沒有包含 Google Photos Screensaver,似乎只有英文語系的國家才有。
- Pan and Zoom 的效果很棒!
2007-11-01
Canon PIXMA MX700
- 2009-11-28 更新!
- 網路連接不是用 Standard TCP/IP port ,而是 Canon 自家的 Canon BJNP Port ,這點真的很麻煩。
- 有提供 Windows 7 / Vista 與 x64 的驅動。
- 在 Windows 7 上遇到了無法安裝的情況,後來查出是在搜尋網路連接的印表機的階段,“無預警”的被內建防火牆阻擋的關係。
- 2007-11-05 更新!
- 安裝的問題在動用到 Wireshark 後總算查出來了,原來是我擋了所有 UDP Port 的關係。
- 第一份文件印的是 YUI 2.3 Cheat Sheats ,速度還好(標準-彩色列印)。
- 從前紙匣列印要勾選“自最未頁列印”,不然出來順序會相反。
- 2007-11-01 敗入!
- LCD 感覺有點小。
- 只有簡體中文而沒有繁體中文,可惜。
- 因為不知道我賤手關了什麼服務或設定,(以網路連接的方法)安裝上並不順利,最後並沒有查出什麼原因(以重灌解決),只知道網路連接埠的部份並不是用 Standard TCP/IP Port ,而是 Canon 自已的協定(Canon BJ Network Port)與軟體(Canon IJ Network Tool)。
個人常用鏈結
Labels
- .NET (1)
- Accessibility (3)
- ADSL (1)
- Apache (9)
- ASP.NET (1)
- Babyer (1)
- Browser (1)
- Canon MX700 (1)
- CAPTCHA (1)
- CentOS (1)
- CSS (7)
- DB:SQL (1)
- DB:SQLite (2)
- DNS (3)
- English (1)
- EXIF (1)
- filename.ext (1)
- Firefox (4)
- Firewall (1)
- Flash (4)
- Game 遊戲 (28)
- Game:PC (6)
- Game:PS3 (4)
- Game:Xbox360 (3)
- GNU (1)
- Google (6)
- Google:Android (8)
- Google:Blogger (2)
- Google:Chrome (1)
- Google:Code (2)
- GoogleAppEngine (2)
- GoogleMaps (1)
- GPG (1)
- Hinet (1)
- HTML (2)
- HTTP (1)
- i18n (1)
- IE (3)
- Java (2)
- Javascript (2)
- Linux (1)
- Microsoft (2)
- MIME (1)
- MySQL (7)
- NexusOne (2)
- OAuth (1)
- Open source 開放原始碼 (1)
- OpenID (1)
- OS (1)
- OS:Windows (33)
- PHP (49)
- PHP:GTK (2)
- PHP:PEAR (1)
- PHP:PECL (3)
- PHP:ZendFramework (4)
- PostgreSQL (1)
- PPPoE (1)
- RegularExpressions (2)
- Security (11)
- Sphinx (2)
- SQLite (1)
- TCP (1)
- Ubuntu (1)
- UDP (1)
- Usability (2)
- Virtaul PC (1)
- Wii (2)
- XML (1)
- Yahoo (2)
- Yahoo:BBAuth (1)
- Yahoo:YUI (1)
- Youtube (1)
- 不如賣雞排 (2)
- 不願役 (33)
- 中文處理 (1)
- 圖 (5)
- 媒體 (2)
- 影片 (1)
- 影音 (19)
- 思 (8)
- 攝 (9)
- 政 (7)
- 敗 (2)
- 漫畫 (5)
- 生活 (34)
- 硬體設備 (13)
- 網站開發 (16)
- 網路 (8)
- 英文 (3)
- 貓 (2)
- 資安 (1)
- 趣 (29)
- 軟體 (12)
- 遊記 (8)
- 運動 (2)
- 關於我 (1)
- 電影 (10)