prism

2012-12-16

幸福的臉

幸福有沒有在我身邊 怎麼一直看不見

幸福有沒有在你那邊 讓我看看他的臉

家裡已經找了好多遍 只有溫暖的房間

爸爸說幸福就在鏡子裡 那就是我快樂的臉

老師說如果慾望能夠少一點 快樂就會多一些

愛惜地球給我們的資源 隨時記在心裡面

我用善良禮貌的雙眼 發現大家幸福的臉

2012-12-14

Be a gopher

golang

試試 golang 的過程,做一下筆記

基本上,是很棒的開發體驗

優點

1. 語法簡潔,但是嚴謹,限制 import 的位置,function name 的第一個字大小寫代表 public 或是 private ,程式中沒有用到的 import module 或是 variable 會有編譯錯誤,編譯速度飛快,和 Java 及 C++ 比較,你一定會感動到流眼淚,當然不拿什麼 IDE 快捷鍵,或是安裝插件的功能,單純語言本生的語法探討,C 的 pointer,Python 的 slice ,anonymous function

2. 用 type struct , type interface , receiver function 的方式,達到類似物件導向的繼承多型,介面功能(我也不是什麼物件導向專家,無法做更深層的探討)

3. 語言本質上的簡化,讓學習的曲線平緩,像是在寫手稿語言一樣,人員訓練比較容易 (像是找一個,會C++ 的可能一年,說的上熟 C++ 的可能要N年 XD )

4. 內建 automatic garbage collection ,基本上,不需要去個別管理記憶體,不過這個特性記得不要濫用 XD

5. Concurrency 有 gorountine 及 channel 的實作方式,也有像傳統 threading 方式的實作方法,簡化很多

6. gofmt 定義一致簡易的 coding style,對程式碼日後的可讀性有幫助

7. 內建 testing 的模組及結構

缺點

1. 工作機會少 (如果你是抱著開心的心態,這一點沒差)

2. 可用成熟第三方模組比較少,像是 Java ( Maven Central),Ruby(gem),Python(pypi), javascript (npm) (這一點很難說,目前golang 就可以直接在 import 區塊 import hg, git, svn 還有 bzr 的 source tree ,到底集中式,還是分散式好,很難說,但是有一個套件管理中心很重要,像是 javascript 的 npm 粉贊) ,目前 golang 可以看到的套件 http://godoc.org/ 大約 6000 多個套件左右,再扣一些測試,或是非常 beta 的套件,目前第三方模組比較缺乏


說完了,有興趣的朋友可以繼續看

如何入門,真的很簡單,一般看一份蘋果日報的時間,基本的語法就可以看完了
有 C ,Python ,Java,Ruby 基礎的朋友可能更快,最下面有書本的連結

建置環境

1. 直接由官方網站下載安裝,FreeBSD ,Mac,Linux,Windows 都有,我主要的說明是在 Debian Linux 下面進行,下載 https://code.google.com/p/go/downloads/list ,安裝說明 http://golang.org/doc/install#introduction

2. 設定 env ,記得把 GOBIN 的路徑加到 $PATH 裏面,windows 的朋友請進行設定環境變數
GOBIN=/usr/local/go/bin
GOROOT=/usr/local/go

3. 將 /usr/local/go/misc/bash/go 複製到 /etc/bash_completion.d/ 下面,用 zsh 的朋友也可以在 misc 資料夾下面看到對應的檔案,這樣以後 go 指令在 terminal 下,就可以 autocomplete 了

4. 編輯環境,在安裝完 go 以後,可以用指令安裝 go get -u github.com/nsf/gocode , 這裡的安裝路徑,裝完後,source 會放在 $GOROOT/src/pkg/github.com/nfs/gocode 下面,gocode 會放在 $GOROOT/bin 下,這樣的安裝路徑,再開發自己的套件時,也可以直接寫在 source code 的 import block 中,完整的 gocode 的安裝說明,請參考
https://github.com/nsf/gocode, 另外 vim 或是 emacs 的 syntax highlight 也可以都可以在 /usr/local/go/misc 下面找到,要是 vim 和我一樣是用 vundle 的方式管理,可以在 .vimrc 裡加上 Bundle 'jnwhiteh/vim-golang.git' 後 BundleInstall ,就不用將 misc 底下的 vim設定,複製到 .vim 資料夾下面,gocode ,最後要到 gocode 資料夾下面的 vim 子目錄執行, update.bash 他的內容
#!/usr/bin/env bash
mkdir -p ~/.vim/{autoload,ftplugin}
cp autoload/gocomplete.vim ~/.vim/autoload
cp ftplugin/go.vim ~/.vim/ftplugin
這樣裝完 vim 下面就可以有 omnicomplete 了,如下圖


用 Eclipse 的朋友 http://code.google.com/p/goclipse/

開始玩樂

1. 看 source module 文件 ,打 go doc ,或是自己看 go help 自己看文件,可以查 go doc fmt 或是 go doc crypto/md5
go doc fmt
go doc crypto
go doc crypto/md5

或是,直接執行文件伺服器類似 Python 下 pydoc 一樣,只是換成 godoc ,請 godoc -h 直接看文件,範例是 doc server 跑在 6000 port ,打開瀏覽器到 http://localhost:6000 ,就可以直接看模組文件了

godoc -http=":6000"

2. 很多內建模組,也是直接以 golang 撰寫,直接看 source code ,簡單易懂,可以看的整的語言設計簡化帶來的好處

3. hello world,main.go 打完後,執行 go run main.go
package main

import (
    "fmt" 
)

func main() {
    fmt.Println("Hello World")
}



開始前,先花一點時間看看基本語法

1. http://www.golang-book.com/

2. http://www.miek.nl/projects/


Have fun

PS: 我指的簡單是指語法上的簡單易學,純就語言上,不是探討要實作的內容

2012-11-08

Chrome cache in RAM




在 Linux 上面已經有當多簡單的教學,不過大多是教修改設定檔的方式,以下是更簡單的方式

以 Debian GNOME3 的環境為例

應用程式-->主選單-->網際網路 ,在 Debian "主選單" 的程式名字是 alacarte

選 chrome 後,右邊有屬性的條件可以修改,把指令欄位修改成下面,就可以啦,只要 --disk-cache-dir 的 option 即可


/opt/google/chrome/google-chrome --disk-cache-dir="/tmp/chrome/" %U

2012-11-04

TA-Lib

TA-Lib 是個歷史悠久,擁有相當多金融技術指標的實作,也被很多金融有關

的軟體所使用,已經有包含將近 200 種指標,

也有 SWIG 幫忙打包的 Perl , 及 Python 套件

這可是程式交易的利器,輕輕鬆鬆,200 個指標可以用,感謝 Open Soure 的前輩們

Python 的套件,有另一位大哥,用 Cython 重新做新的介面,效能更進一步

不過在 windows 下面編譯還蠻麻煩的,要有 Visual Studio 2008 ,及簡單的 patch ,

詳細可以參考

https://github.com/mrjbq7/ta-lib/issues/4

另外,自己也有需求,所以先包一包 win32 Python2.7 的安裝檔,方便使用,有需要的人也可以自取

記得,丟進去的數值,都要是 float


http://dl.dropbox.com/u/14137697/20121105/TA-Lib-0.4.0.win32-py2.7.exe

PS: 這應該是非常冷門的套件 ;-)

2012-10-20

Python 包 EXE

關於目前 Python windows 程式打包的方式選擇也算蠻多的

有用過一些,說一說心得吧

py2exe

安裝後,直結整合到 setup.py 裡
歷史悠久,但是看起來很久沒有後續的維護,一開始我都是用這一個打包,算是很穩定

pyinstaller

後起之秀,single file 的打包方式,算是功能蠻強的,執行時,是解壓到暫存資料夾執行,但是hook 一大堆,解決非常多的套件問題,也算是一種 dirty hack https://github.com/pyinstaller/pyinstaller,算有在維護,小程式可以用他來打包執行也算簡單, 2.0 以後,打包更容易
不需要安裝,直接解壓縮後執行,有用到 multiprocessing 的模組的人,他的 importHook 蠻容易造成動態載入模組的問題,像是程式裡用 __import__ 來載入模組的方式,都蠻容易有問題的,再來就是 hook 程式很多,如果用的第三方模組沒有支援,就非常的難包,需要自己客製寫 spec 檔

python pyinstaller.py -F -d -i your_app/app.ico your_app/app.py

-F 包單一執行檔
-D 包成一個資料夾
-d debug 打開
-i 程式 icon

會產生 your_app/app.spec 檔案,後續可以再手動調整 app.spec,再執行,其實執行 spec 檔時,沒有加 options 沒關係

python pyinstaller.py -F -d -i your_app/app.ico your_app/app.spec

cx_Freeze https://bitbucket.org/anthony_tuininga/cx_freeze/src

實作的方式,比較像是 py2exe ,是寫 setup.py 整合,簡單的也可以直接下 cxfreeze 打包,不能包 single file exe,可以另外用工具包起來,文件比較缺乏,唯一有支援 Python3
安裝完後,可以直接參考範例寫 setup.py ,要注意的是安裝完後放到 Scripts 裡的程式有路徑的問題要先修一下
我用 Python27 的例子 Scripts\cxfreeze 裡的 Python 路徑是 C:\Python\32-bit\2.7\python.exe ,請自己修改成您的
python.exe 的路徑

python setup.py build 就可以了


目前小的程式,會用 pyinstaller
大一點的程式,會用 cx_Freeze


2012-09-14

基本薪資

這幾天看到一些新聞 (雖然台灣的新聞可信度不高)

不過連這一種好笑的 18780 基本薪資都調不上去,台灣勞工,是不是只能怪自己了

政府說今年景氣不好,那照過去,二三十年的調法,那一年說要調,可以沒有反對的理由

勞工朋友這麼好騙,也只能怪自己笨了,再說這基本薪資對一般大眾,根本不痛不癢,要上班要養小孩的朋友

一個月,相信光保姆費,有些人,都比 18780 還多,所以如果真的受到基本薪資影響的人,真的是非常弱勢

的勞工朋友,幹的是,才調 267 元,也能鬼打牆,說是景氣不好

公務人員要調薪的時候,用借的也要調,而且人家是調百分比,誰跟你基本薪資壓,人家是有調都拿的到,

那還有什麼基本的門檻,連退休人員領的退休金也是一起調,不像勞工朋友這一種,卑微到只是保護一個基本生存費用

我假如,現在拿的基本薪資,我應該連上網抱怨都很奢侈吧 !

連基本薪資都付不起保姆費,實在只是一個幌子,政府連會受基本薪資影響的人,也不願意去保障他們

這個政府,已經到了無敵禮義廉的境界,我想大家一起罵三字經只是剛剛好

真的是要公務人員領基本薪資,他們才會感受到,社會底層的辛苦

如果每年公務人員,要升等,加薪的時候,也都可以比照基本薪資的方式處理的話,大概公務人員,永遠也不用加薪了

2012-09-11

WSDL use suds

在 Python 的函式庫裡, suds 算是通用的選擇,一直用起來也算蠻穩定的

不過在一些比較特別的網路環境裡,或是需要參照其他 XMLSchema 的時候

我比較沒有經驗,所以紀錄一下,這一個環境機器連結外部 80 port 的服務要透過 proxy

proxy_config = {'http': 'http://someproxy.host:3128'}

from suds.xsd.doctor import Import, ImportDoctor
from suds.client import Client

wsdl_url = 'http://somewebservice.com/service.asmx?WSDL'

imp = Import('http://www.w3.org/2001/XMLSchema', location='http://www.w3.org/2001/XMLSchema.xsd')
imp.filter.add('http://tempuri.org/')

client = Client(wsdl_url, doctor=ImportDoctor(imp), proxy=proxy_config)

print client # read avaliable api ;-)



參考資料

http://stackoverflow.com/questions/5769128/soap-client-using-suds

2012-08-29

65 歲退休,你要更早換工作

我們偉大高尚的政府,為我們每位國民規劃未來需要工作到 65 歲才可以退休

所以假設,目前我是一個很熱愛自己工作的軟體開發人員,我要工作到 65 歲,就算我的熱情可以持續到那時候,可是依照國內廠商的現實考量,除非我自己是老闆,不然,有那一家公司,會請一個 65 歲的軟體開發人員

看起來,好像很合理的延長退休年紀,套到各行各業變得可笑,大概大有為政府假設大家都是當老闆吧

所以,現在工作的人,幾乎被迫要做選擇,如果你不是過一天算一天了那一種,而且,是沒有選擇


我說說台灣還能做的工作

1. 軍公教
2. 醫師,律師,會計師,可以獨立作業開業,工作項目不受景氣影響的從業人士
3. 其他就是老闆了,也就是自己做的人


其他的專業工作,都可以認真的考慮,應該出國工作了,尤其當你沒有創業的打算

更不要學別人說,年輕人好吃懶做,去澳洲留學打工,笑他們做的是低階粗俗的工作,當他們在澳洲農場工作,一個月可以賺到 7 萬元台幣,也可以開開眼界,體驗異國的文化的時候,你又何必勉強他們要在數字超商打工,賺取微薄的生活費

提醒一下,即刻起,好好想想什麼工作可以做到 65 ,不管要不要離開台灣

2012-08-17

最後的 X220

這一次又成為了一個經典,以前告別傳統比例螢幕,這一次告別七列鍵盤,科技進步的非常快
下一台,不知道會是什麼樣子,不過換口味是一定的,因為經典消失了

利用這一次暑假電腦展的機會,用非常經濟實惠的價格,帶了過了時的經典小黑 X220i 回家,雖然是低階的機種

不過,用來開發還粉贊的,跑 Mac Lion 效能也不錯

照片,看到左上腳大顆的 ESC 鍵,真是經典的 VIM 專用機



更新 BIOS

1. 抓取 BIOS bootable iso file http://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles/8duj18uc.iso

2. wget 'http://www.uni-koblenz.de/~krienke/ftp/noarch/geteltorito/geteltorito.pl'

3. perl geteltorito.pl 8duj18uc.iso > biosupdate.img

4. dd if=biosupdate.img of=/dev/yourusbpendriver bs=512k

5. 用做好的這一支 USB 隨身碟開機,更新 BIOS

參考資料

1. 抓取 BIOS bootable iso file http://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles/8duj18uc.iso

http://forums.lenovo.com/t5/Linux-Discussion-Knowledge-Base/Updating-the-BIOS-via-USB-X220-s-running-Linux/ta-p/674677

Install Mac OSX Lion 10.7.4

參考資料

http://forum.thinkpads.com/viewtopic.php?f=32&t=102098

http://bbs.pcbeta.com/viewthread-1054554-1-1.html

sudo vim /etc/grub.d/40_custom

menuentry "Mac OSX" {
insmod hfsplus
set root=(hd0,2) # /dev/sda2 is my OSX partition
multiboot /boot
}

sudo update-grub

2012-07-19

ZFS on Linux

愛用 Solaris 的同事,一直跟我說,就是因為 ZFS 所以他才愛 Solaris

看一下在 Linux 上面也有 porting ,只是我沒用過,不知道穩不穩定

紀錄一下,有時間來試一下

http://pthree.org/2012/04/17/install-zfs-on-debian-gnulinux/

https://github.com/zfsonlinux

http://zfsonlinux.org/

2012-07-11

Debian 更新 Eclipse

用 Debian testing 的人,最近應該都會更新到 Eclipse 3.8 版本

testing 上面的 eclipse-cdt 的套件不夠新,會少一些東西 Android Development Kit 更新到 r20 會報 套件相依的問題

Cannot complete the install because one or more required items could not be found.
  Software being installed: Android Native Development Tools 20.0.0.v201206242043-391819 (com.android.ide.eclipse.ndk.feature.group 20.0.0.v201206242043-391819)
  Missing requirement: Android Native Development Tools 20.0.0.v201206242043-391819 (com.android.ide.eclipse.ndk.feature.group 20.0.0.v201206242043-391819) requires 'org.eclipse.cdt.feature.group 0.0.0' but it could not be found

解決方式紀錄一下

先不要用 debian 自帶的 eclipse-cdt

更新 Android 開發套件的時候,先安裝,新版的 cdt 到 加兩個 software update 的路徑

名稱可以自己取

Window - Preference - Install/Update - Availiable Software

安裝 CDT
http://download.eclipse.org/tools/cdt/releases/juno


安裝 Eclipse 更新列表下 Web, XML, Java EE and OSGi Enterprise Development 下面的 WST Server Adapters. 套件
http://download.eclipse.org/releases/juno/


都裝完以後,就可以裝新版的 Android Development Kit 了

2012-07-01

夏天

假日,帶小朋友去海邊走走,踏一下浪,玩玩沙,看看大哥哥衝浪 這一個簡短的行程還遇見了,多年不見的舊同事 Bruce,也是我的 BSD 啟蒙老師,雖然,後來還是多用 Linux XD

2012-04-22

multiprocessing in wxPython

根據 wiki 上面的文件說 http://wiki.wxpython.org/MultiProcessing

不可以在 wx.App 的程式迴圈中,去產生新的 Process

真的試了一下,還真不行,在不用 threading, subprocess, 或是 wx.Process 的寫法下,只要把產生新 Process 的動作移出

wx.App 的範圍裡就沒有問題了

另外如果程式是用 pyinstaller 包裝成一個檔案,也要注意這 Process 需要重包來解決問題

http://www.pyinstaller.org/wiki/Recipe/Multiprocessing


筆記一下,以免以後忘了

2012-04-11

ATOMVM VPS 服務

開始虛擬主機 VPS 的服務有一段時間了,是 reseller 但是上游可以給我比較好的條件,在萬物皆漲的時代

也許提供有需要的使用者不錯的選擇,價格 10 美元起,應該比國內一大多代管的公司有良心了


https://atomvm.com

2012-03-28

康和期貨分公司及商品代碼

資料不好找,分享一下

TXF 大台指
MXF 小台指
FXF 金融期
EXF 電子期
GTF 櫃買期
CPF 利率期貨
T5F 台灣五十
XIF 非金電期
TGF 台黃期
GDF 黃金期

F029000 康和期貨總公司
F029002 康和期貨台南分公司
F029003 康和期貨台中分公司
F029004 康和期貨高雄分公司
F029005 康和期貨彰化分公司

2012-03-21

不值得買的 Ultrabook

最近出了好幾款 ultra book 吸引我們敗家

DELL 新出的



台灣價

49,900、58,900、64,900

美國價

999, 1299, 1499

DELL 真是看不起台灣人的數學

台幣報價
http://www.dell.com/tw/p/xps-13-l321x/pd

美金報價

http://www.dell.com/us/p/xps-13-l321x/pd?oc=fncwp19&model_id=xps-13-l321x


link http://www.techbang.com/posts/8696-dell-xps-13-ultrabook11-inch-fuselage-containing-13-inch-screen

由於有網友不懂由國外買筆記型電腦,電腦,或伺服器的進口稅率,解釋一下,也讓,不清楚的網友,知道,為什麼現在,越來越多人,都是直接在 ebay 或是掏寶買東西,一模一樣型號相同的東西(台商陸廠的主機板),有些差了兩倍,所以用你的國小數學加一下運費,還有稅金,聽心中的聲音,看要由哪裡買,或是心裡暗幹一下,把林北當作笨蛋,索性不買了

一般進口,應付稅率等於 貨物稅 + 營業稅 ,這一些資訊在政府網站有公佈,電腦不用貨物稅,進口含運費超過 3000 元要付 5% 的營業稅

貨物稅資訊 http://www.etax.nat.gov.tw/wSite/ct?xItem=21564&ctNode=11178

國小數學想要重上的繼續往下看

DELL 的笨蛋稅金

假設都是一年全球保固的

台灣買

49900

美國買(收入就不要比了,要自己爭氣)

(999 X 29.5 + 運費約 50 X 29.5 ) X 1.05 = 32492

所以 49900 - 32492 = 17408 (DELL 笨蛋稅金)

2012-03-20

MVC javascript

最近大多是在精進 Javascript ,開開自己的眼界,也看了一些類似 backbone.js 的作法

但是想理解,看深入一點的話,有看到一個,很小,可以當作是練功的 Open Source 專案

他叫做 Stapes.js minified 後只有 1.5 kb ,雖然 follow 的人很少,不過很小的 codebase 拿來練功非常合適

文件 http://hay.github.com/stapes/

Source https://github.com/hay/stapes

backbone resource http://www.whoishostingthis.com/resources/backbone-js/

願原力與你同在

2012-03-18

龐氏騙局之癆保賤保

台灣的健保一代不如一代,前些日子,65 歲以後的長輩,不用繳健保費,現在取消了,父親退休沒有所得跟著我加保,居然保費和我一樣,不知道沒有子女的長輩怎麼辦

我們的勞保現在不保健康(以前有),一代不如一代

第一代勞保,保健康,保退休(但是領不到,是個幌子)

第二代,把健康,和退休分開,原本收一條保護費,改收兩條

第三代,加入國保,取消老人年金,讓你不管有沒有工作都要繳錢給政府

第四代,把健康保險的部份越刪越多上有政策,下有對策,民眾,去醫院越來越頻繁(補牙分好幾次,大醫院,檢查一次,或是看一下報告都回診)

推估,未來

第五代,可能會在分拆多種不同的名目收錢

勞工嘎那賽,軍公教嘎那皇帝,難怪,沒有人生小孩,不生不養,大概就是平凡老百姓最沉默的抗議了,想想你生的小孩,以後要養這個國家多少老人( 感覺這個國家有計劃性的擺爛,好讓十年後,給對岸接管),生育率,世界冠軍,不用出國比賽,過了二十年後,不知道,士農工商的新血要哪裡來,誰要來幫我們繳未來,一代不如一代的勞健保

更不要說,㿜腳的國保,既然勞保,國保只能則一請領,那沒工作的時候,國保的繳費單,不就是失業罰金嗎?

要繳又領不到,勞保也是可笑,不像軍公教保險,你年資一滿,就可以領終生奉,不需要到 65 歲才開始領終生奉,真的是活到老,領到老,就算

40 多歲退休的警察,也可以開始領終身奉

勞保,要保佑你可以工作到 65 歲,不然,你一沒有工作,他可是會自動把你退保,保障全無喔

我的親舅舅,一失業,雇主馬上退保,心因性粹死,一毛錢也拿到,因為他保了三十幾年,後來失業,過了一年工作都沒有穩定,所以,保障就沒了,勞保馬上失效,你可是一點保障也沒有喔,除非你馬上工作喔

幹,這死要錢的德性,人民還真不會暴動耶,還是真的不知道,那些年我們被幹走福利

幾十年過後,國保倒了,勞保窮了,健保也不健保了,你就不要靠北,就是我們這一代不吭聲,不說話,顧著把妹,敗新的玩意,忙著寫開箱文,或是對社會漠不關心,一副事不關己,造成的,不要看旁邊,就是在說你,還有我自己

罵一幹,激勵一下自己

參考: http://ethias.blogspot.com/2010/02/blog-post_24.html

2012-01-29

Vundle

對於 VIM 的 plugin 管理方式一直用的是 https://github.com/tpope/vim-pathogen

Vundle 有聽過,可是一直沒有真正的搞懂,差別是什麼,直到看到了海大簡單的說明 http://tzangms.com/2012/01/18/vim-plugin-manager-vundle/ 才了解,Vundle 真是懶人救星,可以解決,我一直以來,用 git submodule 的方式同步 bundle 下面各的 plugin 的動作

可以讓所有的 plugin 的管理都濃縮到 .vimrc 裡頭

更新後的 github vim base file https://github.com/terryh/dotvim

2012-01-17

阿比的廣告




Happy New Year

PS: 以前一起當兵的原住民,最喜歡找我一起喝阿比(保力達加伯朗咖啡),屋亞不知道你現在過得好不好

NWM

如果你是 MS 視窗的開發者,可是想試試看 node.js with mongodb 的人

也有視窗版的懶人包

http://nwm.julianxhokaxhiu.com/

或是自己安裝
MongoDB

http://www.mongodb.org/downloads

Node.js

http://nodejs.org/#download

PS: 我自己完全沒有試過,開發都在 Linux 上面,所以請自行體驗,好用的話記得也 blog 一篇,或是 twit 一下

2012-01-10

NPM package.json

NPMJS

一般不管什麼語言,幾乎都沒有內建套件管理,但是 Node.js 現在除了一直保持初衷,
要維持核心程式的精簡外,加入了 node 一直以來,必裝的 npm 套件管理,方便 node 的使用者,管理套件,及更新

所以 maybe node.js is not battery included but with charger.

參考資料

官方網站
http://npmjs.org/

原文
http://blog.nodejitsu.com/npm-cheatsheet
http://package.json.nodejitsu.com/

中文
http://dreamerslab.com/blog/tw/npm-basic-commands/

2012-01-05

screen

改一下 ~/.bashrc


GITPS1='$(__git_ps1 " (%s)")'

case "$TERM" in
xterm*|rxvt*)

    PS1="${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]${GITPS1}\$ "
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
screen*)
    PS1="${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]${GITPS1}\$ "
    PATHTITLE='\[\ek\W\e\\\]'
    # Use program name as title
    PROGRAMTITLE='\[\ek\e\\\]'
    PS1="${PROGRAMTITLE}${PATHTITLE}${PS1}"
    ;;
*)
    ;;
esac


小抄一下別人的 ~/.screenrc

# Caption line
#caption always "%{= R}[ %{=b b}%-w%{=rb db}%>%n %t%{-}%+w%{-b}%< %=%{R}][%{M} %Y-%m-%d %{G}%c%{R}]"
caption always "%{=b k}%{b y} %m-%d %c / %{k}%L=%-w%7>%{g}%n %t%{-}%+w%-014< %-016=%{c} %l "


# Set default encoding using utf8
defutf8 on

# Refresh the display when exiting programs
altscreen on

# Dynamic title
shelltitle '$ |bash'

# Set xterm's title
hardstatus string "screen: %t"

# C-a b --(switch to)--> view big5 data
bind b encoding big5 utf8
# C-a u --(switch to)--> view utf8 data
bind u encoding utf8 utf8


參考

http://adam8157.info/blog/2010/05/terminal-bash-screen/

http://archerworks.blogspot.com/2010/05/linuxscreenbindkey.html

這樣,顏色,還有訊息都豐富了,不會逛到哪一台主機 git 到哪一個 branch 都分不出來

Get your Node

node.js

MEMO 一下 Debian testing 上面的 Node 安裝

實在進步太快了,裝 pre compiled 的套件沒有感覺

sudo apt-get install build-essential python-software-properties libssl-dev libreadline-dev git-core curl libcurl4-openssl-dev

記一下 libcurl4-openssl-dev # 只是目前 debian testing 上面依存的套件

git clone https://github.com/joyent/node.git
cd node
git checkout v0.6.6 # 目前最新的 release tag
./configure
make
sudo make install



發展快速,社群活躍,最重要就像的第四台老師有說得 Location, Location, Location

Node.js 是 Open, Open, Open (community, community, community, 內建的 npm 套件管理, 這一點夠方便吧)

想要變高,變帥,變聰明前,不要忘了,上場前,把 node.js 的傢伙戴上

http://www.webresourcesdepot.com/the-awesome-node-js-and-its-gang/

https://github.com/joyent/node/wiki/modules

參考
http://fred-zone.blogspot.com/2011/12/debian-nodejs-express.html

http://www.freshblurbs.com/install-node-js-and-express-js-nginx-debian-lenny


八卦一下,我的 VPS RAM 太小,本來是要說 Get your JVM,不過看起來,這一隻怪獸,還是要找多一點 RAM 的主機,才願意開始幹活

terry@atomvm:~/node$ java -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
terry@atomvm:~/node$ node -v
v0.6.6

Javascript template 比較

JS Guide


Javascript template 比較

http://jsperf.com/dom-vs-innerhtml-based-templating

2012-01-03

得了不寫 Test Case 會死的病

Glassware and things

許久以前每開始一個專案,會以時間為重要的考量因素
(很像沒有作過不趕時間的專案)

漸漸一個專案,如果不是像活動性質的案例

專案功能少有幾十項,多則分到各個模組拆作

沒有寫 test case ,團隊成員新增功能,或是修復 bug ,只要整個程式庫有了變動,都是風險,越來越膽小,小到,現在都是邊寫程式,到一個階段後,直接把 test case 寫完,才敢上線,或是更新,不然沒有安全感,以前舊有的 test case 就是一點一滴,紀錄整個系統進化的日記一樣,可以確保每個細節,可以安全無誤

一般人的想法,可能覺的寫 code 都沒時間了,還寫什麼 test case 尤其是在台灣的軟體生態裡,更是如此,有 bug 可以修的修,不好修的,藏起來,時間為先,只要這不是一個用過就丟的系統

不過現在欠下來的,以後還是要還,尤其是自己的產品時,都會有長遠的發展,及早養成習慣,使用正確的工具,可以讓你的測試,寫起來,又快,又笨,又簡單,時間花的就不會像你想像的那樣多了 ;-)

PS: test case 我是泛指所有的測試,不管是功能測試,效能測試,還是介面的部份...