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 的朋友請進行設定環境變數

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

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: 這應該是非常冷門的套件 ;-)

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


基本薪資

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


我說說台灣還能做的工作

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


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

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

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

最後的 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

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 了