目前算是都會碰到 big5/utf8 的時代,我原本有在 ~/.screenrc 底下,使用下面的技術,以便在 big5 的 terminal 裡看 utf8,或在 utf8 的 terminal 裡看 big5:
如果 terminal 使用 big5:
# C-a b --(switch to)--> view big5 data
bind b encoding big5 big5
# C-a u --(switch to)--> view utf8 data
bind u encoding utf8 big5 # convert utf8 to big5
如果 terminal 使用 utf8:
# Same as the encoding command except that [...]
Intel C++ Compiler (ICC) 所編譯出來的執行檔,其速度總令人驚豔,且可以近乎無痛地與 Microsoft Visual C++ (MSVC) 的開發經驗整合,是升級開發工具的好選擇。然而,在 Windows 上,ICC 需要搭配隨 ICC 附上的 libmmd.dll,才能夠執行,再加上 ICC 和 MSVC 是可以隨時切換的,因此,在 build system 的設計上,必須要有些特別的設計,以便處理這種 IDE 不會處理到的事。
我們用的 MSVC 是 VC6,需要偵測目前使用的編譯器,是 MSVC 還是 ICC,如果是 ICC 的話,還要偵測是哪一個版本,然後,依據偵測到的版本,作對應的 post-build 的動作。例如,若是使用 ICC 的話,就將正確版本的 libmmd.dll,複製到目標目錄下。
以下假設 ICC 是安裝在 ICPP_COMPILER 這個目錄下,如 %ProgramFiles%\Intel\Compiler\C++\9.1。
裝了 ICC 後,compiler/linker 會被換成在 %ICPP_COMPILER%\..\..\ISELECT\bin\ 目錄下的 xicl6.exe 跟 xilink6.exe,這只是一個只是一個 front-end,ICC 會依據目前的設定,啟動對應的 compiler/linker 進行編譯或連結。
依據隨附 [...]
發現其實我沒對這個作筆記,剛好和 PipperL 在他的 blog 裡聊到,就順便作個簡單的說明好了。
問題描述
為什麼要用 UTF-8 mode 執行 perl 呢?因為 Perl 的字串預設是 byte string,對於使用 ASCII 的人來說,沒有影響,但對於 CJK 使用者來說,就很麻煩。舉例來說,以下程式使用的 regular expression 會無法正確 match 出「英」字,因為其 big5 碼的第二個 byte 是 '^' 符號,導致 regular expression 錯誤:
SHELL> more -x4 plain.pl#!/usr/bin/perl -w# Source encoded in big5.my $s = '英雄人物';if ($s =~ m/英/o) { print "是我\n";}else { [...]
JRE 有很多版本,也有很多廠商出,因此,FreeBSD 有提供一個 ports 叫做 java/javavmwrapper,是一組 shell script,會自動依據設定,從安裝於系統中的眾多 JRE 中,選擇最新或最適當的 JVM,設定環境變數後,執行 java 程式。java/javavmwrapper 安裝的主 script 叫 javavm,後面以此稱之。
然而,有些用 Java 寫的重量級套件,會附上完整的啟動 script,自動進行相關的設定,如 CLASSPATH 等。而這些啟動 script,其實並不懂怎麼使用 javavm,因此需要人工設定如 JAVA_HOME 等環境變數。也就是說,要用這些 script,我們就沒辦法利用 javavm 聰明的功能,來幫我們管理 JVMs。
還好,UNIX 系統的強項,就是方便的指令組合功能。如果 JAVAVM_DRYRUN 環境變數存在的話,javavm 就不會真的執行 JVM,而是將相關的環境變數印出來。透過這個機制,我們就可以重用 javavm 的聰明管理機制。如下:
env `env JAVAVM_DRYRUN=yes java | xargs echo` bin/startup.sh
在 FreeBSD 裡,裝了 java/javavmwrapper 以後,/usr/local/bin/java 其實會指到 javavm,自動幫我們選擇 JVM,因此上面的指令我們可以直接使用 java 呼叫。利用 env,我們讓 javavm [...]
在《Writing libraries with Generic-Text-Mapping》一文裡,我介紹了怎樣撰寫具備 generic-text-mapping 機制的 library。在該文文末,我提到了目前的缺憾是,沒辦法做出漂亮的 doxygen 文件。最近,我終於摸索出,如何使用 doxygen 做出如 MSDN 那般,能夠漂亮展現 generic-text-mapping 型函式的文件寫法。
籌備已久的 OSDC.tw 2007 開始報名了,今年一樣有人數限制,要搶要快。
OSDC.tw 2007 的議程公佈在這篇《議程公佈》,test driven python、Jifty、pushmi、Yahoo UI! API、Maven 等議題都蠻有趣的,其他的有些看不太懂。XD
看樣子我好像有搶到最前面幾號,可是...
17:17 <@h*> http://register.osdc.tw/ # 開放囉~~17:24 <@h*> wow, 動作真快17:25 * h* 到處去 spam.....17:25 <@jeffhung> h*: 看不出來搶到第幾號。:-p17:26 <@h*> 我們也沒編號.....
沒編號,那搶那麼快幹麼? orz
XDite 寫了一篇《淺談 BBS 與 Blog (1, 2)》的文章,認為 Telnet BBS 不會被 Web 取代。然而事實上的情形是,在最近五年以來,Telnet BBS 早就被打的潰不成軍,只剩下一點優勢而已。
傳統 Telnet BBS[1] 有五大功能:
文章、信件討論
直接傳訊(飛鴿/水球)
雙人對談
聊天室
即時使用者名單
這是我的分類方法,主要是從技術角度切分的,這五大功能使用的技術都不太相同。但從功能面來看,其實可以直接切成兩大類:
非即時溝通:文章、信件討論
即時溝通:直接傳訊、雙人對談、聊天室與即時使用者名單
在即時溝通的領域裡,直接傳訊被舊介面的 ICQ 取代,雙人對談被 MSN 取代[2],聊天室被增強功能後的即時傳訊軟體裡的多人對談取代,而即時使用者名單,則被可以自訂暱稱的 MSN 聯絡人清單取代。
總歸一句,在即時溝通的領域裡,Telnet BBS 早已被即時傳訊軟體打的潰不成軍。這年頭聯誼[3]時,若要交換聯絡方式,已經不會交換 BBS 帳號,而是改交換 MSN 帳號了。
而在非即時溝通領域,也很慘。這兩、三年竄起的 blog,已經成為主要的內容發佈工具。這其中,multimedia 內容的崛起,與 SEO 所造成的影響,顯然是很重要的原因。Telnet BBS 目前還能保有優勢的,只剩下文章討論的即時性與互動性了。
但,就好像我在《MSN vs. Old ICQ style messenging》一文裡所提及的現象,內容產出越是便利,內容的品質與密度,越是低下。Telnet BBS 在文章討論的即時性與互動性,反有可能會將Telnet BBS 擺在不上不下的位置,比即時互動性,比不過即時傳訊軟體,比文章內容,也比不過blog。
人們並不會為了「手感」,而去某個站台,真正驅使人加入社群的,只會是「人」與「內容」。沒有了「人」與「內容」,就算手感再好,也沒有意義。這就好像,我覺得舊式 ICQ 的介面比較好用,但因為大家都不玩 ICQ 了,所以我也不可能去玩 ICQ。
唯一能夠打破「人」與「內容」的「量大為王」門檻的機制,就是「分散化」。好比說 blog 系統藉由 syndicate 機制,島島相連,每個島都是小小的,但相互連結起來,就是大大的。但可惜的是,Telnet BBS 先天的限制,導致其必須與分散化背道而馳。也因此,為了跨越「量大為王」的門檻,那時的 [...]
私眾平台:私人給公眾玩的平台,跟公眾平台不一樣喔。
這是我在 HEMiDEMi 回豪豪的一篇文章,自己留一份備份。說老實話,我越來越不信任黑米這個環境了。
豪豪:
多數暴力與否,沒有對錯,只有厚不厚道的問題。正如您所說的,「得由語境脈絡中去釐清」,多數暴力,更是觀感問題,不同的人面對著相同的語境,肯定會釐清出不同的脈絡出來。舉個例子來說,舉著多數旗幟的一方,多半不會認為自己有任何暴力行為 (言語的暴力也算是一種)。
也因此,「說是『黑米站方確實是曾經運用其權威的身份,逼走使用者』,相信不只是我,很多人應該都難以同意才是」這句話其實是廢話,當多數暴力發生時,當然多數人不會承認有這樣的暴力現象。這裡所謂不會承認的「多數人」,指的是「會出聲」的多數人,而通常這些會出聲的多數人,也就是施行多數暴力的那些人,要不然怎麼會發生多數暴力呢?又,這裡所謂的「會」出聲是個雙關:既指願意出聲,也指有能力舌戰群雄,讓聲音透出來。
不過,身為這個平台的擁有者 (非必然是社群/言論的管理者),在法律規範下,葛力有權利作任何他想要做的事,包括逼走他不喜歡的人。我也從未曾見過葛力宣稱黑米是「公平的公正平台」,所以我在前文也特地地沒有扣帽子,「多數暴力對公眾平台是種諷刺」一說,我並沒有與黑米連結,純粹就事論事。也就是說,在我的認知裡,黑米當然不是個公眾平台,黑米是葛力(所開的公司)的,是私人開放給公眾玩耍的平台,本來就沒有必要一定要公平、公正。
只是如果能做到公平、公正,通常來說,可以獲得更多人的認同,與「妥協」。
不幸的是,所謂的公平、公正,也是經過解讀後的結果。當發生多數暴力的吊詭時,對於獲得利益、勢力的一方,結果當然是公平、公正的;而對於被擠壓、限縮空間的另一方,則不這麼想了。
葛力是沒有「正式」要阿西放棄自己的論述立場,或是因此要求阿西離開,但「威脅」過了,我認為這種威脅,就算是種「逼迫」。前面說過,黑米是個私人平台,威脅、逼迫等手段,只要不違反國家法令,那都是葛力的權力,在黑米裡,任何人都不應置喙,唯一能做的就是走開,這也是阿西的選擇。但有這種選擇,並無法證明「威脅」並未存在過。拿果推因,這在邏輯上說不通。
若要將確實曾經發生過的「威脅」視若無睹,美化為受害方的自主選擇,抱歉我無法接受。葛力絕對有權利威脅或逼迫身在黑米的使用者,因為這是屬於他的私人平台。我也從未見過阿西或其他同情阿西的人,反對葛力的行為。但不反對,不代表這就不是種「威脅」,只是代表著,葛力有權力威脅而已。若葛力時常使用這種權力,或許黑米這類平台,可以稱之為「私眾平台」,私人給公眾玩的平台,跟公眾平台不一樣喔。
倒是看到許多旁人,為這種「威脅」美化、淡化,更舉著「公眾平台」的棋子,宣揚黑米的公正、公平。這種行為,就好像媒體一面倒地替馬英九粉飾形象,這樣的行為,令我作嘔。
補充:
大師說,「不管是在技術上、社交層次上或法律上,不能讓使用者惡搞的網路服務,就算不上好的 Web 2.0 服務。」所以我多加了一個 kuso 分類。
從 clsung 那邊看到,WordPress 2.1 “Ella” 出了,想想也蠻久沒升級了,再加上是應該要處理一下 WordPress 2.0.7 解掉的 security hole,所以就來升級我的 blog 版本。
照往例一樣是採 svn update 的方法升級[1]:
先備份資料庫。
然後到主目錄下 svn update,升級到最新 trunk 版。這次我是從 r4497 升級到 r4784,差距蠻大的,
用 svn diff 檢查了一下 local modification 沒有爛掉。
用瀏覽器進管理介面,畫面顯示訊息說要 upgrade database,執行後就一切正常了。
這次的升級,應該是成功的,至少到目前為止,看起來沒什麼異狀發生。整個過程不到 5 min,簡單快速,爽。
見《Wordpress 升級到 1.5.1.3》與《升級到 wordpress 2.0.1》兩篇。 ↩
由於某些技術上的原因,TortoiseSVN 的效率,其實不是很好。我在處理一些大 project 的時候,常常會有整台機器 hang 住的情況,直到把 TSVNCache.exe 砍掉後才能恢復。所以 TortoiseSVN 的主要開發者 Stefan Kueng 最近就發表了一篇文章叫《Optimize performance》,教大家如何調校,以增進 TortoiseSVN 的運作效率。
不過,原文標題是「增進效率」,但我實在是要換個方法來講,因為這些調校,其實是在「避免系統效率被 TortoiseSVN 拖累」啊!
以下用我自己的話,簡單介紹怎樣不被 TortoiseSVN 拖累:
不要把你的 working copy,放在網路磁碟機裡。TortoiseSVN 常要作一些複雜的事,好比說 recursive 進去每個子目錄,檢查是否有檔案被更動過,以便顯示 icon overlay。網路磁碟機的運作速度本來就很慢了,如果這些複雜的事,必須在網路磁碟機上做,當然效率就更差了。這第一條建議,就把我打死在路邊,因為我總是為了貪圖 unix tool 的方便,而使用 samba 分享 working copy 到 windows 上使用,也因此,所以常會碰到這些效率的問題。解決之道當然就是不要這麼作,幸好最近發現 GnuWin32 比起以前的 UnxTools 要來的齊全很多,現在大部分的 unix style 操作,也都可以在 Windows 上進行了。
減少 working copy 的量。TortoiseSVN 會監控「所有」被 checkout 出來的 working copy,偵測其是否有所更動,以便存於 cache [...]