大三暑假

暑假結束一定要紀錄一下到底幹了些什麼事。尤其這是最後的暑假了。

Lisp

我總算會寫 lisp macro 了 Q_Q
然後呢?嗯…沒有然後了。

好啦,就是後來在寫 fsc.el 時確實省掉了一些不必要的重複部份,比之前用的方法好寫也好維護得多。

在 freenode 上的 #lisp 認識一位自學中文、文筆卻異常流利的阿根廷人,推薦說可以學學 Haskell 的純函數式,所以昨天(9/12)手上的東西暫時都告一段落了就開始摸摸看。相信像我這種遞迴寫到腦袋快爆掉的廢物一定可以學到起笑的。

COSCUP & Emacs.tw

總算參加到了 COSCUP 2014 啦 www

這次用貢獻者專案拿到票,體驗到了特權到底是怎樣的好滋味,不用神經兮兮地搶票。然後 emacs.tw 社群有報了一個「編輯器 BoF」,為了有點話題可以扯所以就做了 fsc.el 這個給 Emacser 玩的小玩具:

其實最後都是在趕這張圖,當然你也看出來了這張有沒有畫完(艸)

畫到四點多受不了,睡一個小時就去搭車,聽議程竟然還沒睡著。然而最後 BoF 其實也沒時間講到這個 orz

Worship 時間見到 rail02000 和 floatj 大大,還有 BoF 時 #emacs.tw 很少出現的大神 kanru,以及 superbil 等等大大(worship)。然後當然還有…議程中終於親眼見到宅色夫 jserv 和唐鳳大神了啊啊啊(尖叫)。

1st Emacs 打滴

2014/9/10 19:00 ~ 20:40 參加了第一次的 Emacs.tw 台灣聚會。自我介紹…有蠻多人都是 Vim 用了數年後跳來 Emacs 的。再來就是講講 emacs-tw 現在在做的事和計畫要作的事順便推坑請大家進來一起做(有興趣的人請上 #emacs.tw @ freenode)。

至於網路代號跟長相我一如往常地當然是記不住:

emacs 打滴 1st

最左邊的是 g0v 的 Superbil、中間後方黑衣服是在 Mozilla Taiwan 工作的 kanru、右方黑衣是寫新酷音輸入法的 czchen(不過他好像沒有在用 Emacs),右邊白衣沒記錯的話應該是 gko,其他的就不記得了=w=” 基本上這次來的人幾乎都是 #emacs.tw IRC 上面的常駐土地公。然後雖然不太重要,但此次聚會的(生理)性別比是 arithmetic error DIVISION-BY-ZERO signalled 。到底是為什麼呢~

PyQt

趁假期趕緊學 PyQt,真的超實用的,可以快速做出一些自己需要但沒有人做過的小東西。

由於之前沒有 OOP 基礎,所以一開始的門檻還是有點高,(我實在很不想把教科書從頭念到尾才開始寫東西,那是種很有效率地消磨意志力的學習方式。)。學 PyQt 其實不需要先學會 Python,因為他會用到的 Python 特性非常偏頗,要先把幾個 pattern 記住,不然根本什麼都寫不出來。如果你只學過非物件導向程式語言,那我覺得入門 PyQt 最難也最重要的地方應該是得快點弄懂 class inherit, instance, parent, super(), self 的概念,但弄懂後 Python 的部份就很簡單了,剩下 Qt 本身。

有興趣的話,PyQt 相關筆記請看另外一篇

用 PyQt 該不該學 QML?

混帳 QML 讓我一開始浪費了「很多」時間,超過一個月(Qt 官網的 PySide 教學全是 QML,但我…不推薦入門就讀那個,很痛苦。當然如果你本來就已經很熟 Qt 那另當別論。)。我的建議是學 PyQt 先不要碰 QML 比較好,目前教學還太少了,會學到很想哭,或者看到一堆沒有屁用的 QML 教學會看到很想罵髒話(例如教你怎麼用純 QML 寫出一個華麗的 list…我要知道的是怎麼用 QML 存取程式中的 data 啊,連 data 都寫在 QML 裡的教學有個屁用啊 (╯°□°)╯︵ ┻━┻ ),而且目前就我所知要在 QML 裡面用 list model 沒辦法用 QStandardItemModel 之類用起來比較容易的 model(就我所知是這樣,有錯敬請指教), 只能用 QAbstractListModel,一堆必要的 method 都得自己手動刻;生命是很美好的,不要想不開啊!!!

PyQt + QML + QAbstractListModel 最後學起來除了學習曲線變得有點不必要的陡峭外,給我的感覺只剩下寫起來煩死人,教學少,出了問題後斷斷續續找了一個多月找不到解法,最後問 IRC 竟然還是沒人解答的東西。

然後為了要讓 QML 能夠與 Python 程式碼互相溝通,反而得花上更多心力,像是為了讓 QML 存取 Python 程式中的資料得加上一堆 @pyqtProperty ,整個 code 看起來亂七八糟,我有點懷疑這樣真的有讓程式比較好懂好維護嗎(至少比較難寫是絕對的…)orz 大概只有美工在改 UI 時會覺得比較輕鬆而已吧。

也許程式的規模變大後用 QML 真的會比較好維護吧,但一開始我是覺得真的不要碰這比較好。短期內我是絕對不會再碰這鬼東西,至少要直到教學數量變多一點後。

學 PyQt 最難的地方應該是弄懂 MVC,還有 Signal/Slot 和 Property,不過前者很多時候都能用 list widget 之類的東西解決,不用自己硬幹 QAbstractListModel (除非你用 QML) 。signal 和 slot 的話,其實沒有想像中的常需要自己寫 slot/signal (除非你用 QML) ,不過有時還是會需要自己寫所以還是得弄懂。至於 property,PyQt 已經把很多東西都包裝得很好,幾乎不需要用到 (除非你用 QML) ,想要讓 Qt 讀取 string 就直接餵食 Python 的 string 就好了,不用考慮其他有的沒的。

總之最後,寫了這幾個小東西:

Stardict Flashcard

Stardict Flashcard 是我一直很想要的東西,因為我這麼懶的人休想叫我背單字前還得自己做單字卡,但其他 flashcard 軟體(例如知名的 Anki )都一定得自己做。我只希望餵給程式一個純文字檔案,每一行就是一個單字,然後自己去抓 Stardict 字典檔中的單字解釋。剛好 Stardict 內建就有個功能,只要按 Alt+e 就會將單字加入一個文字檔中,這下要作單字卡就太容易了。

jkbiv - Just KeyBoard Image Viewer

這是我一直很想要的圖片瀏覽器,因為 Linux/Un*x 上沒有一款符合我的需要。原本好友 lzh 用 PyGTK 寫了一部份功能,然而因為課業因素沒辦法繼續寫下去。不過學了 PyQt 之後終於有機會把它做出來了 QAQ。要求是:

1. 可以輕鬆地用全鍵盤操作(仍可用滑鼠)。是 Emacs/Vim flavored 的話就更好了。
2. 不能吃太多資源。也不能動不動就像 Gwenview 那樣 memory leak 把記憶體塞爆。
3. 能夠按照檔名/時間排序。
4. 能夠設定成切換圖片後不改變縮放比例(神奇的是,Linux 上我找不到一款 viewer 有這種設計。Comix 不算=w=")。
5. 盡可能利用螢幕空間。
6. 方便呼叫外部命令。
7. 單鍵重新命名檔案。
8. 盡可能利用螢幕空間。

除了第二點因為用 PyQt 寫所以不怎麼輕量、初次啟動也頗慢外,至少其他點是做到了…

最後,有人猜得出為什麼 icon 長那樣嗎?=w=+ lzh 你不可以講 XD

Posemaniacs Timer

Posemaniacs Timer 是 Posemaniacs 專用的計時器,不然我一直畫出一堆沒有頭的身體。

Piano

  • 總之一如預料中的沒什麼進步。
  • 發現 Beethoven Passionate Sonata 3rd mvt. 真的好好聽所以就練了。
  • Alkan Op.23 Saltarelle 其實沒有想像中的難,最難的就是左右手都他媽的痠死了,還有中間有一小段左手跨幅超大很痛苦外,其餘是蠻爽的。
  • Chopin 10-4,練不起來,我是廢物。
  • Rachmaninoff Concerto No.2 的和弦太病態了怎麼練也記不住。我是廢物。
  • Schubert D960,有夠長。不過就算是第一樂章彈了還是一樣被家人揶揄。
  • 改編了在玩的 AVG 天使の羽根を踏まないでっ的 OP。

2014-09-13 14:23:04 開始
[2014-09-16 火 20:29] 看板娘終於趕出來終於可以貼文惹 QAQ