百度雲網盤檔案的下載

前一陣子有趁中國那邊拼的火熱的時候去申請,拿到 1TB,現在升級成 2TB 了,是說也不知道該放些什麼。

後來才聽朋友說,可以 BT 下載,只要上傳種子以後,百度雲就會幫你下載。如果已經有人下載過,會一瞬間就下載完成,我試過幾個 Linux distro 都是如此,真的是瞬間下載好。但是人生往往就是這個 But,雖然已經下載好放到雲端,你還是要從雲端拉回本地端,這時候就杯具了,你要不就用百度提供的軟體,要不就只能用瀏覽器慢慢下載。我自己大部分時間都在 Linux 上,只能用瀏覽器,還蠻斷線的,而且還不能續傳。

後來找到好方法,可以取得真正的下載網址,然後就可以用續傳軟體下載。我自己是用 Firefox,然後在 http://userscripts.org 上找到 baidupandownloadhelper ,安裝以後,當你在百度雲的網頁介面上勾選要下載的檔案之後,上方會出現「批量下載」的按鈕,按下去以後,就可以看到連結,就可以拿這個連結來下載了。

我後來是額外安裝了 aria2,可以在 console 下載的工具,正好 baidupandownloadhelper 也可以直接複製 aria2 指令,真的是相得益彰。

GoAgent 3.0.8 小記

升級以後,就爆炸了。而我居然直接覆蓋,沒留原來的檔案,只能摸摸鼻子把它修好。

是故,得重新設置,主要就只要改 proxy.ini 。第一個要動的部分是把 [proxy] 裡的 enable 設為 1,然後修改 host/port,這是因為公司內部需要透過 proxy 上網,而我又弄了 cntlm 去繞過 microsoft proxy server 的 NTLM 的關係,這裡的 host/port 是我的 cntlm 的 proxy/port。第二個要動的是 [gae] 裡的 appid/profile/obfuscate,appid 是 goagent 說明文件有特別提到的部分,profile 是為了解決 403 錯誤,詳情可以閱讀 【已解决】goagent打开页面出现403错误:Your client does not have permission to get URL /2 from this server,obfuscate 則是為了解決 Connection() argument 1 must be OpenSSL.SSL.Context 問題,這是我閱讀 local/proxy.py 以後看到的,設置 validate 應該也可以解決,但我沒試。

server 部分只要執行 server/uploader.bat 重新上傳就行了,執行的時候,會詢問你 appid/帳號跟密碼,依次輸入就可以。uploader.bat 裡蠻有趣的是, python 可以直接執行一個 .zip 檔。在閱讀原始碼的時候,發現 server 的版本沒跟著調整,仍然是 3.0.7 版。在上傳以後可以在瀏覽器裡輸入 <your_appid>.appspot.com/2 看是否順利運行。

Vim C-] 失效

問題描述:vim 裡確定 tags 的設定都正確,但按下 Ctrl-] 卻沒有跳到游標所在函式的定義。

問題發生要件:

  1. 使用 gcin
  2. 使用 gnome-terminal, terminator … 等非 xterm 的終端機程式

原因:

gcin 設定的「內定輸入法」裡,「Ctrl 輸入標點符號」被勾選了。將這個設定取消,就沒有問題了,因為勾選時, gcin 會將 Ctrl-] 轉譯為 “」”。

gtk+ windows 應用程式裡的文字亂碼

大多數的 gtk+ Windows 應用程式都有相似的問題。

第一步,要先知道應用程式是使用哪裡的 gtk+ library,一般省麻煩的,會自己包在一起,安裝時會放在安裝目錄下。所以可以找到 etc/gtk-2.0 這個目錄,請編輯 gtkrc ,加上:

style "user-font"
{
    font_name="Sans 12"
}
widget_class "*" style "user-font"

就可以解決了。

如果不是在安裝目錄下的,就得自己回想一下看之前安裝在哪裡了。

gitlab on Ubuntu 12.04

基本安裝指南是參考 gitlab 上的文件:https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md

  1. Packages/Dependencies:提到的套件之前都安裝過了,寄送郵件的 SMTP server,文件裡是說要用 postfix,我是用 ssmtp。
  2. System Users:原本是先處理 Ruby,因為我想用 rvm,所以就先處理 System Users,這邊就建立 git 使用者,由於後續的 rvm 會需要用到 sudo,所以也順便把 git 加入 sudo 群組。
  3. Ruby:我是用 rvm 來安裝,所以就不移除原來系統的 ruby。這邊安裝稍微麻煩一些:
    1. cd /home/git
    2. curl -L https://get.rvm.io | sudo -u git -H bash -s stable –ruby=1.9.3
    3. sudo -u git -H vim .gemrc :填入 gem: –no-ri –no-rdoc
    4. sudo -u git -H mkdir bin
    5. sudo -u git -H vim bin/rvm:因為不知為什麼 bash 沒去讀 .bash_profile,所以就弄了一個 script 來含括環境變數,內容請參考這裡,做完以後,要用 sudo -u git -H chmod +x bin/rvm 變更其權限。
    6. sudo -u git -H bash -c “\$HOME/bin/rvm all do gem install bundler”
  4. GitLab shell:這邊照步驟做,最後的 Do setup 時,要改用 sudo -u git -H bash -c “\$HOME/bin/rvm all do ruby \$HOME/gitlab-shell/bin/install” ,強制用 rvm 的 ruby 來安裝。
  5. Database:照步驟做。
  6. GitLab:這也是照步驟做,但要注意使用 gem/bundle/rake 的指令,要改變為 sudo -u git -H bash -c “\$HOME/bin/rvm all do gem 跟 sudo -u git -H bash -c “\$HOME/bin/rvm all do bundle 跟 sudo -u git -H bash -c “\$HOME/bin/rvm all do rake

至此,大致就完成了。

實際上在測試的時候,發生一些問題,我遇到的問題跟解:

  1. 我用預設的帳號 admin@local.host 跟密碼 5iveL!fe 無法登入:後來找到文件,是說用 sudo -u git -H bash -c “\$HOME/bin/rvm all do bundle exec rake gitlab:setup RAILS_ENV=production” 重新執行,我發現我這個步驟有錯誤訊息,就修正以後,再執行一次,就可以登入了。主要是修正 gitlab-shell/config.yml 裡的 repos_path 跟 gitlab/config/gitlab.yml 裡的 repos_path ,這兩者要一致,我是設定為 /var/git/repositories ,之前照設定做的時候,漏了一個。
  2. 建立專案以後,無法 clone/push,這有兩種情況:
    1. gitlab-shell 用了錯誤的 ruby 版本:我是笨笨的去把 gitlab-shell/bin 下所有 script 的第1行修改為 /home/git/.rvm/bin/ruby ,後來有找到 gitlab 的 trouble shooting guide,他是把 PATH 寫到 /home/git/.ssh/environment,然後在 /etc/ssh/sshd_config 裡增加 PermitUserEnvironment yes。
    2. gitlab-shell config.yml 設定錯:我讓 gitlab 執行在 port 81 上,所以 config.yml 裡的 gitlab_url 也應該要調整為 http://localhost:81/ 才對。(來源:GitLab: Could not read from remote repository)
  3. git 版本需要 1.7.10 以上,就找了 git 的 ppa 來源安裝:sudo add-apt-repository ppa:git-core/ppa && sudo apt-get update && sudo apt-get upgrade

整個都確定完成才寫這篇,我想應該是沒漏掉吧。

除了官方的安裝文件之外,ArchLinux wiki 上的安裝指南也寫的很棒,不妨參考看看。

教育部電子辭典轉星際譯典(stardict)字典檔心得

大約在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 。以下記錄一下我有遇到的問題跟解決方法:

  • 使用 multiprocessing 時無法使用 profiling,上網 Google 的結果,都是建議要先在單一 process 的情況下去 profiling ,解決問題以後,再來搭配 multiprocessing。
  • 在執行程式時,所花費的時間一直很長。我是等到完成的都差不多時,才看這問題。用 profiling 去查看,才發現問題出在 jinja2 上,我把初始化模版的程序放在迴圈裡了,導致每處理一個詞都要初始化一次,非常浪費時間,大約要十分鐘以上。當我把這初始化的程序移出迴圈以後,速度提昇了超過十倍以上,不到一分鐘就執行完畢。
  • 同理,我也把 regular expression 的 compile 移到程式的一開始就執行,避免在會被多次呼叫的函式裡去 compile。
  • http://3du.tw 所提供的 json 原始檔裡有些像 {[8e41]} 的字元,沒有顯示出字來,發信件到 g0v.tw 聊天室問,唐鳳回應說,直接把這些字先忽略掉就好,這些字是異體字。所以我就把這些忽略掉了,非常謝謝她的回應。

目前我只有做國語辭典的轉換,其他還有客語、台語、成語的部分,就看之後有沒有人認領了,或者是等有空的時候再來弄。不過說真的,現在用 stardict 的人應該不多了吧,stardict 專案開發進度在原作者 hu zheng 失蹤後,僅在今年初有釋出 3.0.4,修正幅度不大,也沒有新功能。很多都建議轉用 goldendict,幸好 goldendict 也吃 stardict 字典檔,所以我這不算是做白工。

rails 101 練習(6)

練習作業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]

註:

  1. 我還是找不到為什麼有雷,難道指的是無法順利轉換圖檔的尺寸與解析度嗎?至少照我目前的環境與步驟是可以轉換的。
  2. 其實應該也不用租用,就拿自己家裡的伺服器來實驗應該也是可以。

rails 101 練習(5)

練習作業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 就可以了。

接著的部份照做就沒什麼問題了。

rails 101 練習(4)

練習作業2-為論壇加入使用者機制

這一章沒什麼問題,主要是編輯 Gemfile 裝上 devise plugin 來達成使用者機制。

練習作業3-為論壇加入管理者機制以及管理者後台

這一章也沒什麼問題,照著改,是很快改好,但用了很多時間找錯誤,有些甚至是之前沒注意到的地方。這邊 xdite 是用 diff 的方式來表示修改過的地方,顯得比較凌亂,照著打容易錯漏(也可能是我眼力變差了)。

今天搞定以後,想到一件事情,如果有用版本控制的話,在每章做完,測試完成以後,最好上個 tag,這樣在出錯時,可以用 git diff 跟之前的 tag 做比對,看到底那邊沒改到。

$git tag end_of_practice_3

參考資料:

rails 101 練習(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 下…,這樣就不會找不到檔案可改。在這邊我是用打字的,所以我把時間花在找打字錯誤上,書上的程式沒問題。