用 VIM 來看 manpage

在 Unix 底下,看超過 buffer 大小的 output 時,會自動使用 $PAGER 這個環境變數裏面定義的程式來達到分頁的效果,平常都是 less,你也可以改成自己喜歡的程式,像是 more,或是 most(這大概是 pager 裏面最好用的)

不過要是 PAGER 可以用 vim 的方式開,那就太棒了,不過筆者試過用 PAGER 這個環境變數沒有辦法設成 vim

export PAGER="vim -" # this is not working

export PAGER="vim" # this is not working

shutdown # T_T 已哭

所以就用另外一個方式囉,就是在 .zshrc 裏面寫 function。

man () {
    /usr/bin/man $@ | col -b | vim -R -c 'set ft=man nomod nolist' -
}

而且這樣看得話跟一般的 pager 比起來還有 syntax highlight 呢!

Endpoints API 使用 OAuth 會遇到的 RuntimeError: UnicodeDecodeError

前陣子在做 BigData Lab 時使用到 Cloud Endpoints API 來串接 server 上的 API 來省去自己開發 JavaScript SDK 的時間,原本在 local 端測試也都測試的好好的,突然某一天早上睡覺起來打開電腦開始寫 code 就發現 local 不能用了,後來測試發現只有在帶有 OAuth Authentication 時才會噴出這個錯誤。

因此我到 Google Code 的 googleappengine 上面去發了個 issue:

Issue 10285: RuntimeError: UnicodeDecodeError('utf8', "id_token verification failed: Can't parse header: \xc9\xad\xbd", 52, 53, 'invalid start byte')

並且跑到 Google+ Community 去廣邀大家幫我 Star 這個 issue,所以 Google 真的很快看到並且解決了呢,現在 Endpoints API 又可以在 local 測了好爽,比脫掉外套撿到兩百塊還爽。

Read on

在 virtualenv 中使用 Google App Engine(Python 的 Path Configuration File)

Sandboxed App Engine

如果你使用 virtualenv 來管理你在 App Engine 上面安裝的套件,會發現在 local 的環境中無法載入部分 Library 的問題,因爲 Google App Engine 其實在載入 Library 這部分使用了有點 tricky 技巧,之前我是直接修改 virtualenv/bin/activate,在裏面加上 PTYHONPATH 的置換與還原來達成相同目的,今天突然發現一篇文章講了一個神技巧,就把它翻譯出來希望可以幫助臺灣更多 Google App Engine 的 developer。

原文章:Using Google App Engine's SDK along with virtualenv

Read on

利用 kerl 來管理你系統上的 Erlang 版本



最近又回到了 Erlang 的懷抱了,不過之前因爲有自己弄了版本管理的方法,所以當初沒有試試看這一套,換了新的 MacBook Pro Retina 之後第一次開始寫 Erlang,剛好拿這套 Kerl 來用一下,試用一下發現真的很不錯呢!於是心血來潮寫一篇介紹來給中文的 Erlang developers 看一下。

Read on

如何在 VIM 中共用系統剪貼簿,vim-copycat 簡介

最近到新公司工作後認識了一個 Vim 的同好,George Li,說他是 Vim 同好太對不起他了,他根本是「Vim 末期重度患者」,他對我以前做過的一個小 project 很感興趣,所以最近就花了一些時間跟他一起改進了一下這個 project,剛好最近發現 vim 內建的 clipboard 共用功能沒辦法在沒啓用 +xterm_clip 的狀況下使用,所以就把 copycat 這個 project 修了一下,做了一個 vim plugin,用來擴充 vim 的剪貼簿功能。

Read on

在 App Engine 中設定 "Trusted" HTTPS Intermediate Certificate

在 Google App Engine 中,如果要讓 App Engine 支援 HTTPS 連線,必須要到 Google Apps 的 Admin Panel 裏面設定你的 PEM encoded X.509 certificate 和 Unencrypted PEM encoded RSA private key

大概長得像上面這樣,上面那個通常是直接傳網域代管商交給你的 .crt 檔案,下面則是傳你自己做好的的 Private Key(不過還需要用 PEM 來 encode),總之,這個步驟本來是相當簡單的。

不過在 App Engine 中,因爲 Google 沒有讓你上傳 Intermediate Certificate 的地方,所以要用一個特殊的 Workaround 來解決。否則,在對 HTTPS Certification 要求比較嚴格的環境中,像是 Firefox 或是網域代管商的 Verifier,都會顯示你的網站是有 SSL 加密但是是「不可信任的(Untrusted)」。

Read on

讓 Vim 跟與你的系統剪貼簿共舞 - vim-copycat

我先承認標題有點太誇張了,但因爲我的內容很短所以只好取個炫一點的標題 XD

這篇主要講如何讓你的 vim 的「d, y, dd, yy...」之類的複製貼上 command 跟系統剪貼簿綁在一起,尤其像我這種會 set mouse=a 的人,每次都要取消 set mouse 再來選取複製很麻煩的人。

Read on

一人多信,反台灣版 SOPA 法案(附 IFFFT 連結)

too long; lazy to write

相信大家都已經知道這件事情了,個人希望能把討論化成行動。

這邊提供一個 Link 可以一次發信給所有智財局所有意見信箱。

寄信給所有智財局意見信箱

信件內容讓大家自由發揮,我不是智財局,不懂怎麼控制大家的言論。不過大家如果不知道要寫什麼,可以去複製一下其他部落格的文章,寄給他們。

建議不要附上出處 link,以免智財局又要封鎖網頁。

有什麼不錯的信件範本可以在下方留言提供,我會把它放上來

補充:

有人做了這個 IFFFT 配方,可以讓你自動每天寄信到智財局

點我看「每天寄信到智財局」的 IFFFT

在 Linux 底下上 PTT 的指令

這個我用好久了,今天突然想到分享出來給大家 XD

大家其實都知道上 ptt 只是 telnet ptt.cc 但是會有編碼的問題,所以就要用 luit 來轉換

完整指令:luit -encoding big5 telnet ptt.cc
ssh 版:luit -encoding big5 ssh bbs@ptt.cc

不過現在發現只要 ssh bbsu@ptt.cc 就好了,不過上面技巧在很多編碼不同的狀況下有用 XD

Linux Container (lxc) - 物美價廉的 Virtualization

今天因爲工作的需要又裝了一次 Container,沒想到在 Ubuntu 下面裝 Container 已經變得如此簡單,所以趁着記憶新鮮的時候講 Setup 的步驟記錄下來,希望可以讓更多人用到這們好的東西。

在這之前先講講 Container 是什麼東西,簡單來講,我們常常透過 Virtual Machine 來當做測試、開發用的 「沙盒(Sandbox)」,目的就是爲了不要污染原本電腦中的環境,也保持環境的乾淨度以利測試或開發進行,但是 Virtual Machine 耗費的資源過於龐大,一下就得佔走一顆 CPU 和一定數量的 Memory,唯一的好處就是可以裝不一樣的作業系統,但要是不需要不一樣的作業系統的時候呢?這時候我們就可以用 Container 啦,而 LXC 就是在 Linux 底下可以方便使用這個機制的一套工具!

Container 是基於 chroot 的概念出發的機制,由於 Linux 系統底下「萬物皆檔案」,所以只要能把檔案系統分開來,看起來就是另外一臺不一樣的電腦啦!

Container 的 Wikipedia: http://en.wikipedia.org/wiki/Operating_system-level_virtualization

接下來來講講如何 Setup 吧!

Read on