你好,三年級

你好,三年級。

大學竟然就這樣過一半了,這篇寫得有點晚,不過勉強還算是學期初,趕快趕鴨子上架。

這學期開始最特別的事情大概就是「不用再修恐怖的必修」了吧,總算、萬幸、萬歲把連續兩年夭壽至極的某門必修課都修完,沒有小確幸一個莫名其妙的詞彙,意指生活中「微小但確切的幸福」。,只有滿滿的大幹八壓力很大只想罵幹你娘的機八人事物,簡稱「大幹八」。語出@vinta,不過幸好都過去了。

然後,很開心的輔了園藝系。由於終於沒有夭壽必修佔時段,於是這學期就一口氣把果樹+蔬菜+花卉學外加九堂課實習全部修一修。還蠻慶幸進的是興大這種農學院超強的學校,否則真不知還有什麼機會能學到這些有趣的事情。很累不過很爽,比每天連續幾個小時窩在書桌前做煩死人的模型好多了。不過有個麻煩是,等作物都種下去以後,接下來除了校內蔬菜實習場要天天澆水外,似乎還得需要常常找時間想辦法去北溝的園藝實習場澆水除草之類的,可是我不會騎機車…。

一二三,三二一,我們一起來做畦(誤)

Read More

Google 的奇葩 UI 設計

「オレまた来ましたぞーやらないか?」
不知何時開始,Google 簡直擁有了 Apple 在粉絲眼中的地位,也出現了一些 Google 粉絲建立的 Google 消息站(例如谷奥)。

Google 的服務也用很久了,從以前 GMail beta 剛出來在到現在,這之間 Google 帶給大家許多驚喜,但已經不得不說,我開始不懂 Google 現在到底在做什麼了。以前簡直把 Google 當神在拜,但現在的 Google 除了把好用的服務關掉外,也開始把原本很好用的 UI 改得越來越難用。尤其要恭喜 Google+ 的 UI 現在已經成為我所用過體驗最差勁的網路服務之一。別再嘲笑 Facebook,雖然沒 G+ 好看但它比 G+ 好用很多。

Read More

Emacs Lisp 學習資源

學 Emacs 最好的方法除了多用,另一點應該就是請務必學 Lisp。網路上教 Emacs 的文章已經太多太多了,但要學 Lisp 就有點累人了,不知該從何下手。

個人覺得學 Emacs Lisp 其實不一定要靠 GNU 提供的那厚厚一堆文件,對我來說我就沒啥耐心看那個…下面整理了一些 Emacs Lisp 的學習資源,不多但都非常值得參考。

Read More

用 Emacs + SMPlayer 看動畫/影片

###廢話###
我在做一些不太需要大腦的學校作業時有配動畫這種好習慣,但常常雙手都沾滿黏土顏料時,動畫一話看完還要按下一集很麻煩,所以我會 cd 到某部動畫的資料夾下後:

1
for i in *;do mplayer $i;done

用這種方法可以一口氣看完一整部動畫手都不用動,但不夠好用。不過現在我們有 Emacs 跟 Dired。

在 Emacs 上要看影片聽音樂有 EMMS 這個選擇,但個人覺得這個做得太複雜,當初設定我也弄不太起來,所以乾脆自己搞一個剛好夠用、設定又簡易的函數。

我平常是偏好使用 SMPlayer 作為影片播放器,功能完整自訂性高,而且他有提供把檔案直接加入 playlist 的參數-add-to-playlist,於是搭配Dired就很好實作了:

Read More

初學 Emacs Lisp 小技巧

我完全不會寫程式,但在去年的寒假開始學習使用 Emacs。虛擲大量時間在找別人的設定檔,卻一直沒有去學 Emacs Lisp。

Emacs 用一用,為了實現一些自己要的功能,好像還是一定得去學 Emacs Lisp。學了 Lisp 以後真的方便很多很多,也才開始開始實際掌握到 Emacs 的威力。

這篇不是教學,只是一些瑣碎筆記。當初不知道這種問題該怎麼問人或問誰(IRC 其實是個非常棒的發問管道,即時又有效,在 freenode 上的#emacs,還有中文的#emacs.tw),所以一開始寫時覺得很痛苦。

在這裡記下一些能讓入門 Emacs Lisp 更輕鬆方便的小技巧,需要的人許可以參考。

Eval

  • 在任何 mode 下,C-x C-e 可以將游標之前的 S-expression(就是 Lisp 運算式,常簡寫成 sexp)eval (求值) 並輸出結果到 minibuffer 中。

    • 前面加一個 C-u 的話會把結果插入目前游標位置。(所以高興的話可以在 Emacs 裡任何地方寫 Lisp 式子來當計算機。)
    • 如果你在 emacs-lisp-mode 下,C-M-x (eval-defun) 則能夠 eval 目前的 defun
    • 因為覺得內建的 eval 快速鍵要拿來作其他用途有點不方便(例如拿來當作臨時的計算機),所以我自己是另外弄了設定讓他更方便:
      1. Eval 目前的 sexp,輸出其 eval 結果後,直接自動刪除該 sexp。
      2. 加上一個 C-u prefix 就是先按 C-u 再按 key-binding。
        C-u 在 Emacs 裡稱作 universal-argument,很多 function 在前面加 C-u 都會有不同功能。
        的話,不刪除 sexp,而且會先插入一個箭頭 => 再插入 eval 結果。例如(+ 1 5) => 6
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        ;; Makes eval elisp sexp more convenient
        (defun eval-elisp-sexp ()
        "Eval Elisp code at the point, and remove current s-exp
        With one `C-u' prefix, insert output following an arrow"
        (interactive)
        (cond ((equal current-prefix-arg nil) ;if no prefix
        (let ((OUTPUT (eval (preceding-sexp))))
        (kill-sexp -1)
        (insert (format "%S" OUTPUT))))
        ((equal current-prefix-arg '(4)) ;one C-u prefix
        (save-excursion
        (let ((OUTPUT (eval (preceding-sexp))))
        (insert (format "%s%S" " => " OUTPUT)))))))

        (global-set-key (kbd "C-c C-x C-e") 'eval-elisp-sexp)
        ;; avoid key-binding conflict with org
        (define-key org-mode-map (kbd "C-c C-x C-e") 'org-clock-modify-effort-estimate)
  • 在 lisp-interaction-mode 中 (例如 *Scratch* ) ,可以在一個運算式的最後一個括弧後面按下 C-j 直接 eval 並直接將 eval 結果插入當前游標後面。

    Read More