Ref. http://www.mactricksandtips.com/2011/01/auto-complete-words-on-your-mac.html
command + >
Tuesday, December 18, 2012
Thursday, December 13, 2012
Running python in 32-bit mode for wxPython
在 Mac OS X 上面寫 wxpython 時,必須打開 32bit mode 不然他不會動 ...
解法:
加入以下環境變數
export VERSIONER_PYTHON_PREFER_32_BIT=yes
參考
http://stackoverflow.com/questions/2088569/how-do-i-force-python-to-be-32-bit-on-snow-leopard-and-other-32-bit-64-bit-quest
http://stackoverflow.com/questions/4665818/running-python-in-32-bit-more-for-wxpython
emacs beginer's notes
http://www.linux.org.tw/CLDP/OLD/Emacs-Beginner-HOWTO-2.html
http://linux.chinaitlab.com/man/newsoft/Emac/book.html
上下左右
C-p previous line
C-n next line
C-f forward
C-b backward
PageUp/Dn
C-v scroll-up
M-v scroll-down
以字移動
上下左右
C-p previous line
C-n next line
C-f forward
C-b backward
PageUp/Dn
C-v scroll-up
M-v scroll-down
以字移動
M-f forward-word
M-b backward-word
行首行尾
C-a move-beginning-of-line
C-e move-end-of-line
句首句尾
M-a backward-sentence
M-e forward-sentence
檔頭檔尾
M-< beginning-of-buffer
行首行尾
C-a move-beginning-of-line
C-e move-end-of-line
句首句尾
M-a backward-sentence
M-e forward-sentence
檔頭檔尾
M-< beginning-of-buffer
M-> end-of-buffer
search
search
M-q C-s forward search
M-q C-r backward search
delete
C-d delete-char
M-d kill-word
delete
C-d delete-char
M-d kill-word
C-k kill-line
M-k kill-sentence
yank
yank
C-y yank
M-y yank-pop
buffer
C-x C-b list-buffers
C-x b switch-to-buffer
C-x k kill buffer
M-y yank-pop
buffer
C-x C-b list-buffers
C-x b switch-to-buffer
C-x k kill buffer
C-x C-c save-buffers-kill-emacs
M-x rename-buffer
files
C-x C-f open a file
C-x C-s save
C-x C-w save as
windows
M-x rename-buffer
files
C-x C-f open a file
C-x C-s save
C-x C-w save as
windows
C-x 0 delete-window
C-x 1 delete-other-windows
C-x 2 split window vertically
C-x 1 delete-other-windows
C-x 2 split window vertically
C-x 3 split window horizontally
C-x o other-window
C-x o other-window
misc
C-x u undo
C-x l count-lines-page
M-x execute-extended-command
M-x shell 開啟 shell
C-x l count-lines-page
M-x execute-extended-command
M-x shell 開啟 shell
C-g keyboard-quit
C-u M-x calendar
help
C-h k describe-key
C-h i info # 神奇說明書
C-h F Emacs FAQ
C-h b shortcut keys enabled in current buffer
Monday, December 10, 2012
geek calendar
http://technet.tw/ 是一個有趣的宅宅農民曆,於是寫出了一個 one liner 去抓他
btw, 背景是君君 >///<
date "+%F, %A" && w3m -dump "http://technet.tw" | head -n 26 | sed -e '/^$/d' -e '1,3d'| sed -e '1,4{N; s/\n/ /}'
btw, 背景是君君 >///<
Thursday, December 6, 2012
我們都活在太舒服的年代
跟 jserv 信件往來的一小段節錄... 反思我們對於電腦環境的認識與了解
我們都活在太舒適的年代
jserv:
話說回來,二十年前當我剛開始接觸電腦時,那時沒有太多科技術語,而且人們探討的議題也相當局限,不外乎 BIOS、文書編輯器、繪圖程式 (你想過AutoCAD 跑在受限於 640 KB 的 DOS 環境是怎麼樣呢?)、幕後排版 (比 TeX 陽春許多)、程序導向的程式語言 (還記得 OOP/4GL 慰為風氣的年代嗎?還要再早一點) 等等。
而現在就非常可怕,我想要是把科技術語整理起來,或許都比當年的 BIOS 原始程式碼列表 (可在圖書館找到這樣的專書,全書都是程式碼,在 301 條款生效之前,把有版權保護的程式碼印列出來的盜版行為,在台灣不追究) 還長。
me:
這些更早的年代在我深入接觸電腦早已過去,但是閱讀前輩們的書籍時還是能從中體驗到那種氛圍,那個處處受現的年代,所有資源都要透過整個系統去思考,做最佳、最有效率的利用;反觀現在太多 "外殼" 將計算機內部的行為包裝起來,一般接觸電腦的人也不容易產生興趣、去明白 how it works ,太多商業化 (或是說物質)的包裝混淆了焦點。
但是值得反思的是,就拿機械工業技術來對比吧,工業革命時代下也是許多 "hackers" 想要改進蒸氣機、齒輪和傳動軸等動力機械的發展,而商業化和大量的規模生產後的現代,想要去了解各式機械的運作原理的人們也漸漸變少了。像是我們並不會想去深入探討一輛汽車或是機車如何工作、不必了解引擎運轉的種種原理等,大眾化後的結果是大家享受某項工具的的 "商品",而技術本身可能除了技術人員外就愈來愈少人想要去理解這些。
回到電腦科學的角度不也如此?我認為電腦科學中很大的概念是 abstraction ,透過更上一層的抽象角度來思考整個系統的運作,而不去鑽底層技術的牛角尖,這種學習方式未嘗不好,只是當我們在上層進行抽象、全局的思考模式時,不能因而模糊了焦點。這個時代太多過多的包裝讓電腦系統變得漂漂亮亮的商品,而想去了解他背後工作原理的人很容易被這些外部的包裝所迷惑、混淆,相較之下當年一群 geek 跟 hacker 的時代要接觸底層工作知識的途徑就顯的容易許多。我想,這是現在學生不容易對於系統產生興趣的其中一個原因吧!
Tuesday, December 4, 2012
gnutls_anon_server_credentials is deprecated
compile qemu 遇到
error: ‘gnutls_anon_server_credentials’ is deprecated 解法
基本上就是把 type 換掉即可
ref
好奇這 bug 應該很久以前就解掉了,但是我去 fetch 目前最新的 qemu 1.3 還是在 @@"
error: ‘gnutls_anon_server_credentials’ is deprecated 解法
基本上就是把 type 換掉即可
ref
好奇這 bug 應該很久以前就解掉了,但是我去 fetch 目前最新的 qemu 1.3 還是在 @@"
Index: qemu-kvm-1.1.rc2/ui/vnc-tls.c =================================================================== --- qemu-kvm-1.1.rc2.orig/ui/vnc-tls.c +++ qemu-kvm-1.1.rc2/ui/vnc-tls.c @@ -99,9 +99,9 @@ static ssize_t vnc_tls_pull(gnutls_trans } -static gnutls_anon_server_credentials vnc_tls_initialize_anon_cred(void) +static gnutls_anon_server_credentials_t vnc_tls_initialize_anon_cred(void) { - gnutls_anon_server_credentials anon_cred; + gnutls_anon_server_credentials_t anon_cred; int ret; if ((ret = gnutls_anon_allocate_server_credentials(&anon_cred)) < 0) { @@ -382,7 +382,7 @@ int vnc_tls_client_setup(struct VncState } } else { - gnutls_anon_server_credentials anon_cred = vnc_tls_initialize_anon_cred(); + gnutls_anon_server_credentials_t anon_cred = vnc_tls_initialize_anon_cred(); if (!anon_cred) { gnutls_deinit(vs->tls.session); vs->tls.session = NULL;
Subscribe to:
Posts (Atom)