用 :wq 送出 BBS 文章
因為在 BBS 想要用 :wq 發文章的次數不算少,剛剛就用 expect 弄起來了,只要加一行到 interact 裡面就可以:
\033:wq\r { send \030; send "\r" }實際操作是要 <ESC> :wq <ENTER> ,會直接把文章發表,如果不想跳過發文前的確認選單,那就把最後的 \r 拿掉。
壹月 05在 screen windows 裡開一個比較小的 terminal
這真是超特殊的需求,不過今天還是弄出來了,花不少間走錯方向就是,會有這樣的需求是因為我同時要掛 BBS 和 IRC,BBS 的標準視窗大小是 80*24,但是這個大小對於 IRC 來說又太小了,好在現在很多 BBS 系統已經已經支援大於 80*24 的終端機了,但是有一個bahamut自從商業化後 BBS 系統就完全沒改進,不支援就算了,終端機大小只要不對,看文章往下卷頁時就會有錯誤排版產生,最常見就是按 下 ,本來應該是整個畫面移動一行,結果會變成只有最後一行被取代,而我現在是使用 100*35 的大小,本來是一直把這問題放著,不過今天總算解決了,其實解法很簡單,就是 screen 裡面再開一個 screen,用不同的設定檔案,裡面要拿來上 bahamut 那個的設定檔加上:
width -d 80 24重點在那個-d參數,本來一直在終端機的設定上跑來跑去,不是說沒辦法改大小,就是內部的終端機改大小會影響到外面的,版面就整個亂掉,不過 -d 是只改 display 的大小,不是終端機大小,本來的話是會所有的 screen 一起改,但是因為用兩層的關係,所以外面的不會受到影響。
拾貳 29closure-compiler on OSX
Google 的Closure Cmpiler要 Java 1.6 ,蘋果雖然有提供 1.6 的更新,不過在終端機下直接打 java 還是 1.5 版,至於 1.6 版則是放在
/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Commands/java如果要跑 closure-compiler 建立shell script 時 java 執行檔要改用這個。
拾貳 27spidermonkey 的 UTF-8 支援
JSLint其實是用 javascript 寫的 javascript 語法檢查工具,jslint.vim並沒有把它轉成 vim script ,而是呼叫 JS 引擎來跑 JSLint ,最好找的 JS 引擎就是 mozilla 的spidermonkey,很多 linux 有包好的套件,FreeBSD 也有port,不過實際上用的時候發現有個問題,就是不支援 UTF-8 字串,結果就是在 JSLint 的字元檢查時會把一些中文當成不安全字元,例如:「下」。
其實要 spidermonkey 支援 UTF-8 字串也不難,FreeBSD 的話在裝 port 時加個參數就可以了,OSX 的話把MacPorts更新到新版的再裝就可以了,Linux 的話就沒辦法用套件安裝,要自己抓來編, 1.7 的話要去修改 Makefile 讓 CFLAGS 加上 "-DJS_C_STRINGS_ARE_UTF8" 這個參數,或是參考mongoDB的作法,如果是 1.8 版的話有內建支援,不用修改 makefile,但是以後要執行的 js 檔案裡面都要先呼叫JS_CStringsAreUTF8這個函式,以 jslint.vim 來說就要加到 ~/.vim/plugin/jslint/runjslint.js 這個檔案。
其實要解決 UTF-8 問題還有其他方法,就是換其他的 JS 引擎,像是Google V8, 要用 V8 的話編譯時要編 developer shell ,產生的執行檔檔名叫 d8 ,弄個鏈結讓 js 這個指令可以執行就可以了,V8 直接支援 UTF-8 ,弄起來就可以用了,不用再去改其他東西,理論上速度應該也比較快吧,JSLint 都跑很快,無從比較XD。
壹月 20kakasi
kakasi並不是火影忍者那位卡卡西,他的全名是 Kanji Kana Simple Inverter,用來轉換日文漢字、平假名、片假名和羅馬拼音的。
最近因為在弄一些和日文搜尋相關的東西,要處理平假名片假名混和搜尋的問題,所以在 IRC 上問人,在zonble提供的幾個連結中,我最後用的是 kakasi,在 ubuntu 上只要執行apt-get install kakasi就可以了,這我還是在抓原始碼來編譯後才發現的@@。程式使用很簡單,就用 pipeline 丟字串進去,然後加上參數看要進行怎樣的轉換,不過有小問題是他只吃 sjis 編碼,所以在 UTF-8 下的環境要先過 iconv 轉編碼,輸出在轉回來,以下面的 code 為例:
echo '魔神英雄伝' | iconv -f utf8 -t sjis -c | kakasi -JK | iconv -f sjis -t utf8就可以看到 マジンエイユウデン ,這樣我就可以在 python script 裡面呼叫一下命令列來轉字串,處理資料庫的資料,不過要放上網路的程式這樣呼叫其實蠻危險的,所以我又找了一下 PHP 有沒有這東西可以用,沒想到還真的有,在PECL裡面有人有 port,不過網站上看不到,我是從 google 搜尋到 mail list 的舊文章才找到的,所以就照文內的安裝步驟抓下來 compile,ubuntu 記得要先apt-get install php5-dev才有辦法執行phpize初始化編譯環境,裝好後就可以在 phpinfo 裡面看到 kakasi 這個模組。
然後測試的結果發現他也只能吃 sjis 字串,所以還是要用 iconv 轉一下碼,使用範例如下:
$roma = kakasi(iconv("UTF-8", "sjis", $qs[0]), array("-Hj", "-Jj", "-Kj"));這串因為是轉成羅馬拼音的,所以最後沒在用一次 iconv 轉回 UTF-8,至於各種轉換的設定請參考kakasi -help。
在ubuntu上套件安裝yuicompressor
很久之前DK長輩跟我說過FreeBSD上有人port好的,所以裝起來很方便,我自己放在學校的主機是用ubuntu,最近又搜尋一次發現也有人有編譯好提供套件安裝,是第三方的套件來源,又花了點時間查要怎樣用命令列新增第三方套件來源並加入public key,所以記錄一下。
首先把下面兩行用root權限加入 /etc/apt/sources.list 檔案裡:
deb http://ppa.launchpad.net/launchpad/ubuntu intrepid main
deb-src http://ppa.launchpad.net/launchpad/ubuntu intrepid main接著一樣用root權限執行下面兩行指令來把public key加入apt裡面:
gpg --keyserver keyserver.ubuntu.com --recv-keys 0A5174AF
gpg --armor --export 0A5174AF | apt-key add -然後用apt-get update; apt-get install yuicompressor就可以把 yuicompressor 裝好了,不過我這台P4 2.4的跑起來還有點慢。
