問題描述:vim 裡確定 tags 的設定都正確,但按下 Ctrl-] 卻沒有跳到游標所在函式的定義。
問題發生要件:
- 使用 gcin
- 使用 gnome-terminal, terminator … 等非 xterm 的終端機程式
原因:
gcin 設定的「內定輸入法」裡,「Ctrl 輸入標點符號」被勾選了。將這個設定取消,就沒有問題了,因為勾選時, gcin 會將 Ctrl-] 轉譯為 “」”。
Just thinking more…
問題描述:vim 裡確定 tags 的設定都正確,但按下 Ctrl-] 卻沒有跳到游標所在函式的定義。
問題發生要件:
原因:
gcin 設定的「內定輸入法」裡,「Ctrl 輸入標點符號」被勾選了。將這個設定取消,就沒有問題了,因為勾選時, gcin 會將 Ctrl-] 轉譯為 “」”。
大多數的 gtk+ Windows 應用程式都有相似的問題。
第一步,要先知道應用程式是使用哪裡的 gtk+ library,一般省麻煩的,會自己包在一起,安裝時會放在安裝目錄下。所以可以找到 etc/gtk-2.0 這個目錄,請編輯 gtkrc ,加上:
style "user-font"
{
font_name="Sans 12"
}
widget_class "*" style "user-font"
就可以解決了。
如果不是在安裝目錄下的,就得自己回想一下看之前安裝在哪裡了。
基本安裝指南是參考 gitlab 上的文件:https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md
至此,大致就完成了。
實際上在測試的時候,發生一些問題,我遇到的問題跟解:
整個都確定完成才寫這篇,我想應該是沒漏掉吧。
除了官方的安裝文件之外,ArchLinux wiki 上的安裝指南也寫的很棒,不妨參考看看。
大約在4月底的時候,在 http://3du.tw 上看到還文於民的活動,就認領了轉換字典檔為 stardict 字典檔的工作。
首要的工作就是瞭解字典檔的格式,stardict 字典檔可以從很多格式轉換,像是 XML、Tabfile 等等的。轉換的工具已經有提供了,安裝 stardict-tools 套件以後,就有一堆工具放在 /usr/lib/stardict-tools 下,也有提供 GUI 工具 (stardict-editor)。
我最早是想用 XML 格式 (Textual Dictionary File Format),所以我就利用工具將現有的字典檔轉換為 XML,並且參考文件,來寫程式產出檔案,結果並不順利。即便是一個只有一個詞的檔案,轉換為字典檔以後,stardict 也無法辨識到。
後來就使用最容易,而且網路上最多人分享的 Tab file format。格式很簡單,詞與說明用 Tab 字元分隔,說明裡如果有需要換行或是做排版,可以用 \n \t 等逸出字元來排。
程式則是用 python 來撰寫,主要使用 jinja2 來配合模版產出詞與說明,用 multiprocessing 模組善用 CPU 資源,程式放在 https://github.com/elleryq/moe2stardict 。以下記錄一下我有遇到的問題跟解決方法:
目前我只有做國語辭典的轉換,其他還有客語、台語、成語的部分,就看之後有沒有人認領了,或者是等有空的時候再來弄。不過說真的,現在用 stardict 的人應該不多了吧,stardict 專案開發進度在原作者 hu zheng 失蹤後,僅在今年初有釋出 3.0.4,修正幅度不大,也沒有新功能。很多都建議轉用 goldendict,幸好 goldendict 也吃 stardict 字典檔,所以我這不算是做白工。
練習作業6 – 撰寫自動化 Rake 以及 db_seed
這一章不難,照著做就可以了。要新增 Rake 的 tasks 是在 lib/tasks 下加檔案,打 rake -T 就可以看到新增的 task。要預先建制基本的資料,則是要修改 db/seeds.rb,在裏面寫程式去操作。
練習作業7 – 將論壇 deploy 到租來的 VPS
這一章因為沒打算租 VPS,所以就紀錄重點,沒實際練習。
作者建議用獨立版本的 Ruby 以及 Ubuntu/Debian,一般系統的 Ruby 與套件都較老舊,所以不建議。ImageMagick 還是沒提到為什麼會有雷,這再找找看好了,總是要知道為什麼吧。[1]
作者習慣在 enom.com 買域名,在 linode 租 VPS。之後就是教導怎麼使用 capistrano,這邊要做不少設定,由於沒打算租用,這部份就跳過去啦。[2]
註:
練習作業4-為每篇文章加上分頁機制,就介紹 counter cache、pagination 跟 scope,照著做沒什麼問題。scope 的部份會比較需要去思考,他的用法真的很巧妙。
練習作業5-每一篇文章可以上傳附件,安裝 paperclip 會撞到牆。paperclip 最新的版本需要 Ruby 1.9.2 以上的版本,而依照前面的環境架設,Ruby 是 1.8.7,在 Gemfile 的地方,要改用 gem “paperclip”, “~> 2.7” 這樣就可以順利安裝了。
然後試著要上傳時,就出現警告說,ImageMagick 沒安裝,這是我之前偷懶沒做的部份。就回頭做,想說試試看用系統的 ImageMagick 會發生什麼事情,就不管作者的警告,用 apt-get 安裝上去,然後用 gem 安裝 rmagick。在安裝時,會說找不到 imagemagick 的 header 檔,imagemagick 的 header 檔案是在另外兩包裡,所以要再下 sudo apt-get install libmagickcore-dev libmagickwand-dev 來安裝。 安裝完以後,再用 gem install rmagick 就可以了。
接著的部份照做就沒什麼問題了。
練習作業2-為論壇加入使用者機制
這一章沒什麼問題,主要是編輯 Gemfile 裝上 devise plugin 來達成使用者機制。
練習作業3-為論壇加入管理者機制以及管理者後台
這一章也沒什麼問題,照著改,是很快改好,但用了很多時間找錯誤,有些甚至是之前沒注意到的地方。這邊 xdite 是用 diff 的方式來表示修改過的地方,顯得比較凌亂,照著打容易錯漏(也可能是我眼力變差了)。
今天搞定以後,想到一件事情,如果有用版本控制的話,在每章做完,測試完成以後,最好上個 tag,這樣在出錯時,可以用 git diff 跟之前的 tag 做比對,看到底那邊沒改到。
$git tag end_of_practice_3
參考資料:
接著昨天的 5.4.5 開始做。
做的時候,發現最好在建好專案的時候,就使用 git init && git add . 把檔案都納入版本控制。之後每次修改、測試完成,就提交。這樣除了很清楚每個步驟修改了什麼之外,也可以方便的進行練習作業。例如 5.4 是 scaffold,而 5.5 是衍生練習作業,要練習就可以先回復到 5.3 的版本,然後再建 branch 出來練習。這意味著,最好是把 git 練熟比較好,要不然就是要多開幾個目錄來練。
在 5.7 resources 與雙層 resources 的地方,要注意檔名所在路徑有錯,記住大原則,routes.rb 一定在 config 下,.html.erb 一定在 app/views 下…,這樣就不會找不到檔案可改。在這邊我是用打字的,所以我把時間花在找打字錯誤上,書上的程式沒問題。
從第五章建 scaffold 開始,在執行 rake db:migrate 時撞到牆。rake 吐出錯誤訊息:
ERROR: ‘rake/rdoctask’ is obsolete and no longer supported. Use ‘rdoc/task’ (available in RDoc 2.4.2+) instead.
找了好多文章,都說要用移除現有的 rake,安裝回 rake 0.8.7 才可以。我是卡在無法移除 10.0.3,後來是找到 stackoverflow 的這篇,說要用 rvm use @global && gem uninstall rake -v 10.0.3。執行以後先按 Y,再按 N,再執行 rake 會有錯誤,所以我再執行一次 gem install rake -v 0.8.7 來安裝。
回到專案目錄下再次執行 rake db:migrate,出錯,說不滿足條件,要重新 bundle install,原來 gem 的 requirement 會紀錄在 Gemfile.lock 裡,修改完 Gemfile.lock ,執行 bundle install 以後,就可以執行 rake db:migrate 了。此時資料庫是用 sqlite3,路徑在專案目錄的 db 下,名稱是 development.sqlite3 。
今天就做到 5.4.5。
一兩年前就買了Rails 101,只翻了一點點,就擱下了。 最近朋友也買了,正在練習,因為他是 Linux 新手,就撞了蠻多牆,問了我不少問題,是故,我也跟著看和做了一次。我的環境是 Ubuntu 12.04。
今天先做到這裡為止。