-
YousableTubeFix 給你高畫質的 youtube
YousableTubeFix 是一個 Greasemonkey 的 script,他做的事情還蠻多的,除了能幫你下載 youtube 的影片之外,最好用的莫過於以下拉式選單讓你選擇 standard Low Quality FLV, MP4, High Quality FLV or High Quality MP4 這幾種格式,讓這個 HD 的世代能有比較好的影音體驗。 雖然你還是可以用老方法,手動去改 fmt 成 18 或者 22 看看,不過我還是喜歡用這個 script。而且你可以比較一下畫質上的差異,第一張是一般品質,第二張則是 High Quality MP4,我想應該高下立判吧! 不過 fmt=22 的狀況下,你的電腦也需要強力一點的 CPU 才放得動,以我現在這台 Pentium-M 1.3G + 512MB 的機器,實在很沒辦法阿….
-
罰寫:我離開辦公室的時候,會記得登出 MSN
-
圍巾與手套
有同事說我寫的東西都太繞口了,那就寫一些不繞口的吧! 高中的時候,因為念的是男校,我們那群男生間總有一些奇怪的文化。其中一個就是,那些冬天圍圍巾的同學總是會被冠上 gay 的名號,像是 gay 熊、gay 猩……。所以在那段期間,我從來沒有想過要買圍巾,也沒有想過要買手套。 上了大學之後,我總覺得新竹的冬天尤其冷,但大部分的時候,我也只是狂喝熱水試著讓自己溫暖一點。 畢業回到台北之後,也許是視網膜效應吧,我總覺得圍巾在搭配上能加分不少。 而第一次圍上圍巾是上週六陳綺貞演唱會那天,我才覺得,第一次覺得原來把脖子圍起來是多麼幸福的事情。看著「嫌疑犯 X 的獻身」中的石神圍著圍巾,緊緊地將口鼻給包覆住,原來在這樣的冬夜裡,圍巾是能給予我們緊密而溫暖的重要物品。也許就因為外在是那樣的寒冷,那簡單的幸福就更顯得可貴了。再仔細想想,我那高中時代的堅持就顯得可笑而無關緊要了。
-
初探 TR1 function object
最近的專案常常需要更新 INI 設定檔,而最麻煩的事情莫過於太多零散的設定,你必須要記住 INI 檔設定的 key,再把在某個 object 的 member function 把值抓出來,最後再丟給 WritePrivateProfileString 之類的 function 把值更新進檔案。 所以常常就會寫出一堆噁心的 code 像是。 obj.iniKey = “INI_SERVER”; obj.iniValue = info.GetServer(); UpdateByObj(obj); 這樣的話,有幾個設定就要寫幾次,所有的 Key 跟 Value 的相關性都顯得零散,未來要加上新的設定,也非得要再加上類似的 code 才行……。 忽然我就靈機一動,也許可以用 tr1::function 跟 tr1::bind 來做這樣的事情。 struct proxyConfig { std::string iniKey; std::tr1::function<std::string()> func; }; const proxyConfig configArray [] = { { “INI_SERVER”, std::tr1::bind(&proxyInfo::GetServer, &info)…
-
C++ Format String using boost::format
如果你只想寫純粹的 C,那你可以忽略這篇的資訊了,因為 sprintf 之類的 function 大概就可以滿足你了。那為什麼還要提到 C++?我想 C++ 的 string 對於程式設計者是美好的,因為我們不用擔心 buffer 到底需要多長,我們可能是無腦的利用 operator += 去操作這個字串,並利用提供的 substring 等 function 快速的開發軟體。 但在我甚少的 C++ 開發經驗中,我總覺得透過 operator += 以及 stringstream 等東西,並沒有辦法像 sprintf 那樣直覺而優雅的將變數置換至字串當中。 就以 Windows 常見的 INI 格式來說,我們如果要輸出一個 AppName,像是 [MyApp],可能的作法是 這似乎比傳統的 sprintf 要顯得複雜的多,也顯得不好閱讀…… 現在你可以考慮 boost::format 讓你寫的 C++ 能有 sprintf 的優雅性,又不必太過於擔心 buffer 的操作。 至於一些 manipulators,與詳細的 formatting 的用法,就請你自己去看一下官方的說明吧。此外,我覺得 python 的…