rails 101 練習(4)

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

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

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

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

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

$git tag end_of_practice_3

參考資料:

預載 Windows 8 + Ubuntu 12.10 安裝經驗分享

我的環境:Toshiba Portege R930 + 預載的 Windows 8

身為自由軟體愛好者,當然是要裝上 Ubuntu 來試試看。這次安裝花了不少時間,才摸索出來。

原本打算用 wubi 的,但是看到這篇 AskUbuntu 上的問答 ,就發現用 wubi 是不可行的了。問答的二樓建議不要用 wubi,先在win8挪出分割區,到 BIOS 把secure boot 關掉,開機順序改由live cd/usb 開,然後裝上ubuntu 12.10,裝完開機選單找不到 win8 的話,用ppa:yannubuntu/boot-repair去修,這樣大概就沒啥問題。最後去電源選項改成不要快速關機。

基本上我照著步驟做了,但是重新開機時,還是 Windows 8 的 boot loader 起來,根本無從選 ubuntu,也沒得用 boot-repair。後來想說,可不可以像 XP 一樣,改 Windows boot loader 的開機選單就行,於是就下載了 EasyBCD 軟體來改,可是還是不行,之後又重新裝了幾次 Ubuntu 都不行。

直到今天早上,今天早上想說還沒有試過 boot-repair,就用 LiveUSB 開機進去,然後安裝 boot-repair 、執行。boot-repair 會偵測環境然後亮出介面,介面上有個 Advanced Options,點進去一看,這設定還真多,當下就又縮回去,不調整,依照原先介面上的建議進行 repair。基本上 repair 的動作是自動的,直到最後才要你開 terminal 打指令,就依樣打完,重開機,GRUB 的選單就出現了。試著開機到 Windows、Linux 都沒問題,大功告成。

詳細步驟:

  1. 進 Windows 8 的磁碟分割,壓縮原來的 C:\ 以取得空間給 Ubuntu 使用。
  2. 關機,按下關機前,先按下 shift,這樣可以確定是真正的關機。
  3. 開機,按 F2 進 BIOS,將 Secure boot 設為 disabled,修改開機順序,改為由 USB 或 CD 開機。
  4. 用 Ubuntu Live USB/CD 開機,開始安裝,我這邊是採取自行分配,不是交給 Ubuntu 幫我分配,我將在步驟 1 切出來的剩餘空間分為: /boot 256MB,/ 40GB,swap 8GB,然後剩下的都給 /home。
  5. 安裝完成,重新開機,會進 Windows 8。依照步驟 2 關機,然後再以 Live USB/CD 開機。
  6. 進入 Ubuntu 以後,安裝 boot-repair:開啟 terminal,輸入 sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update && sudo apt-get install boot-repair -y
  7. 安裝完成以後,執行 boot-repair,我是直接按下上面那個按鈕,也就是依照 boot-repair 的建議進行修復。
  8. 重新開機,大功告成。

參考資料:

  • Ubuntu Document – UEFI

 

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

rails 101 練習(2)

從第五章建 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。

電影流水帳(2013/1/21~2013/1/28)

Zoe Kravitz hs Shankbone 2010 NYC
本來想放 Emma Frost 照片的,但沒找到好看的,就改放 Angel Salvadore 的照片好了。

  • X-Men: First Class(IMDB, Wikipedia),中譯:X戰警-第1戰。我不確定我從幾點開始看,從九點多開始看到十一點,所以應該是在片頭的地方。一開始的壞人還不是 Magneto ,是 Sebastian Shaw。CIA 特務 Moira 發現 Sebastian 的事情,而且發現這夥人有特異功能,就回 CIA 匯報,然後找了 Charles 跟 Mystique(魔形女),一夥人浩浩蕩蕩想去逮捕 Sebastian,想不到 Sebastian 技高一籌,差點就全滅,還好 Magneto 這時候出來救了他們,順利逃走。Charles 就跟 Magneto 聯手,利用 Hank (也就是 Beast,之後出現的毛毛)發明的儀器去尋找其他的變種人,要組隊對抗 Sebastian。找到人以後,一夥人先被安置在 CIA,Beast 跟 Mystique 的情愫就此種下。Charles 跟 Magneto 被找去俄羅斯要阻止 Sebastian,想不到是調虎離山之計,Sebastian 到 CIA 大開殺戒並去拉人,但 Charles 跟 Magneto 也抓到 Emma (應該是白皇后)。才剛組好隊,就有人死掉,大家矢志報仇,就去 Charles 家裡訓練。Sebastian 打算運飛彈到古巴,引發美俄對幹,就在運飛彈的船即將越過封鎖線時,Charles 跟 Magneto 的飛機趕到,讓俄國的飛彈打中自己運飛彈的船,算是化解危機。Charles/Magneto 就跟 Sebastian 兩隊人馬就打了起來,打到後來,終於阻止了 Sebastian,而此時,美俄也達成協議,要把這些變種人打趴。嚴格來說,Magneto 跟 Sebastian 的想法是一致的,他們都認為變種人是下一代的人類,Sebastian 是打算利用核戰來促發更多變種人的誕生。而 Magneto 對抗 Sebastian 的原因很簡單,是要報仇,當仇報了,Magneto 取而代之。美俄發射飛彈以後,Magneto 以他的能力阻止了飛彈,甚至要打回去,但被 Charles 阻止,一場混戰下,Charles 被 Moira 的流彈打成半身不遂,有著甲甲情懷的 Magneto 抱著 Charles 哭哭,最後就要大家選邊站,原本是跟 Charles 的 Mystique 就跟了 Magneto。這一集蠻好看,把之前的前塵往事都交代的很清楚。
  • Hanzel & Gretel。原本以為是女巫獵人的片,愈看愈奇怪,結果不是女巫獵人,其實是拿糖果屋故事來改編的驚悚片,蠻無聊的片。女主角在麵包店上班,他的爸爸要跟年輕的女子結婚,弟弟負氣離開,到荒郊野外,女主角身為他的姊姊,就去勸他。豈料弟弟中了陷阱,兩人剛好看到附近有個屋子,就過去求救。真的好巧,他們遇到女主角麵包店老闆(女的),老闆就招待他們,當然,這個老闆就是女巫,分別將兩人迷昏。弟弟醒了以後,被關在囚房裡,裡面還有其他3個人也被關在裡面。女主角醒了以後沒多久,注意到不尋常的地方,發現了老闆是女巫,於是也被抓去關。兩人就奮力逃出,而女巫跟他的兒子就追殺,邊逃邊追邊殺的情況下,循線追查的兩個警察死了,意外發現蹤跡來救人的父親跟繼母死了,一同被關在囚室裡的3個人死了,女巫的兩個兒子死了,然後,謝天謝地,女巫死了。最後女巫死前跟女主角說的話頗讓人玩味,所以結尾的時候,女主角繼承了麵包店,看起來是要繼承女巫的職志。
  • The Philadelphia Experiment(IMDB),中譯:費城實驗。在美國電視上演的科幻片,沒引進臺灣。個人覺得還蠻無厘頭的片,最後的結局也是令人匪夷所思,看起來像是改變了歷史的樣子。某個隸屬於武器公司的高層監察人到實驗室視察實驗成果,實驗室負責人就啟動了試驗給監察人看,試驗是拿公司的車子來做實驗,很順利的把車子變不見了。可是實驗室裡的機組並沒有因此停下來,反而繼續運轉,結果一艘在幾十年前消失的驅逐艦出現在某個地方,而裡面僅存的機組人員跑了出來。接到通報的警長,也是女主角的未婚夫,去看驅逐艦,卻被吸了進去。過了沒多久,驅逐艦再次消失,跑到芝加哥的大樓上。武器公司的監察人很莫名其妙,無論如何就是要消滅這艘驅逐艦跟裡面的人。之後逃出的機組人員試著去找以前認識的人,循線追查到女主角,原來女主角是他的孫女。女主角憑著他的駭客技能搞清楚狀況以後,就跟他的祖父要去找當初設計這個實驗的工程師,沿途被武器公司派出來的人追殺,遇到工程師以後,工程師跟女主角祖父說,「解鈴還須繫鈴人,你還是要回去,這樣才能解決所有問題」囧,之後,工程師也被殺了。就在兩人被追殺到窮途末路的時候,很不爽公司監察人作為的實驗室負責人已經偷偷跑出來接應他們,於是他們回到實驗室,再次啟動機組,把驅逐艦吸引回實驗室,讓女主角祖父回去船上,同時也救出女主角未婚夫。最後在亂七八糟的情況下,驅逐艦重新回到異空間,而女主角也跟她未婚夫結婚,片尾亮出女主角祖父跟他孫女的照片。
  • 人再囧途之泰囧(IMDB, Wikipedia),英譯:Lost in Thailand。原本以為會接著上一集的劇情演,想不到又是另外一個嶄新的故事。徐朗為了取得授權,要去泰國找老周,就匆忙地跟著旅行社去泰國了。在飛機上認識了一起去泰國的王寶,因為關手機而結識了。下飛機以後,發現了是對頭的高博也追來,才發現自己被跟蹤了。徐朗把有問題的手機塞到王寶身上,自己就趕到另外一個機場,要往清邁。可路上護照卻遺失了,豈料王寶追來要還他手機,正好就利用他的護照一同去清邁找老周。沿途跟循線追來的高博發生了許多趣事,途中的誤會與挫折讓徐朗想了很多事情,也看開了很多事情。最後在找到老周所在的禪修班,看了老周留下的信以後,徐朗看開了,放棄了授權,幫了王寶完成他清單上的事情,也跟高博解開了所有的誤會。在到大使館時,本想跟他離婚的太太也來找他,兩人為了孩子,盡釋前嫌。最後,徐朗幫了王寶最後一把,找來范冰冰跟他合照,讓王寶能拿照片給他患有老人癡呆症的媽媽看;高博雖因護照遺失被困在泰國,但打電話回去時,太太很順利的生產,全片以喜劇告終。

rails 101 練習(1)

一兩年前就買了Rails 101,只翻了一點點,就擱下了。 最近朋友也買了,正在練習,因為他是 Linux 新手,就撞了蠻多牆,問了我不少問題,是故,我也跟著看和做了一次。我的環境是 Ubuntu 12.04。

  1. 安裝必要的套件:sudo apt-get install build-essential zlib1g-dev libssl-dev libreadline-dev libmysqlclient-dev libbuilder-ruby
  2. 安裝 rvm:curl -L https://get.rvm.io | bash -s stable –ruby ,這是用 curl 抓取 script 內容,並且導向到 bash 去執行,-s 表示 script 會從 stdin 來,stable –ruby 是給 script 使用的。
  3. 初使化 rvm 環境:source .rvm/scripts/rvm ,這行很重要,之後重新開 terminal 時,都要確定有導入 rvm 環境,要不然會有錯誤。
  4. 安裝 ree:rvm install ree ,然後設為預設: rvm ree –default 。(rvm 可以安裝不同版本的 ruby,像 jruby, ironruby, ruby 等等的,很方便)
  5. 新增 ~/.gemrc,內容是 gem: –no-ri –no-rdoc ,這樣之後 gem install 時,就不產生 doc 檔案,這部份是參考 Ruby on Rails 實戰聖經裡的建議做的。如果不加這個,會撞到牆,說文件產生不出來,需要安裝別的套件才可以。有在另外一台電腦上試過,要先 gem install rdoc-data,再 rdoc-data –install ,應該就可以。反正暫時不會用到 doc,不如就不安裝。
  6. 安裝 rails:gem install rails -v=3.0.7
  7. 安裝 mysql gem:gem install mysql
  8. 書裡提到不要用預先編譯好的 Imagemagick,而要自行編譯,沒說原因。這步驟我跳過了。
  9. Apache 跟 POW 我也都跳過了,目前是練習,所以先用 rails server 頂著就好。
  10. 建新專案跟檢查:rails new forum_demo && cd forum_demo && bundle check && bundle install
  11. 啟動 web server:rails server ,然後開啟瀏覽器,網址輸入 http://localhost:3000 就可以看到頁面。
  12. 新增 controller 跟頁面,就是照書上講的,會碰到狀況的,就是要先刪除掉 public/index.html,這樣才會出現新增的頁面。原本沒注意到要刪除,我想說因為是 pages controller,就用 http://localhost:3000/pages/welcome ,理論上應該會看到,結果卻說 route 未定義,應該是還有地方沒設定吧。

今天先做到這裡為止。

電影流水帳(2013/1/16~2013/1/20)

michelle rodriguez.JPG

  • Resident Evil: Retribution(IMDB, Wikipedia),中譯:惡靈古堡5-天譴日。還好沒去電影院看這部片,真是爛透了,整部片就是一直槍戰,沒什麼故事可言。片頭一段無意義的倒帶,是延續上一集最後他們在船上被襲擊的劇情,反正,Alice 掉到海裡,被 Red Queen 逮住,關在蘇聯在北極的海底秘密基地裡。突然基地的裝置被駭客入侵,門被打開,Alice 穿上裝置殺出一條生路。之後遇到 Ada (就李冰冰),原來 Ada 是來救他的,而外面也有人做外應,於是就開始一場亂七八糟的殺戮,殺到要救出小女孩,還有遇到感覺上是來硬湊的,第1集就掛掉的 Rain 。在預謀好的爆炸之下,他們逃出,可是 Rain 跟 Jill 開了潛水艇,浮出冰面阻擋了他們的去路。於是就在冰面上展開大戰,打了好一陣子,Jill 擺脫了 Red Queen 的控制器,並幫 Alice 讓 Rain 下了海,總算,成功的逃離。可是這個時候,世界上已經被殭屍控制,Wesker 派 Ada 等人去救 Alice,原來是要 Alice 幫保護傘公司進行抵抗行動,請期待第六集。
  • 人在囧途(IMDB, Wikipedia),英譯:Lost on journey。這是在遊覽車上看完的,很有趣的片子。這是講春節返鄉的故事,李成功是大公司總裁,牛耿則是牛奶公司的資深工人,一個要回長沙家,一個要去長沙討債,於是在機場遇到了。豈料牛耿是個烏鴉嘴,於是飛機被迫返回出發的機場,他們改搭火車、汽車等交通工具回長沙,沿途發生了很多的事情,這些事情讓李成功與牛耿對於人生有了不同的看法。這部片還有續集,叫人在囧途-泰囧,有機會再找來看看。

電影流水帳(2013/1/9~2013/1/15)

Malin Åkerman

  • Stolen (IMDB, Wikipedia),中譯:盜數計時。Will 一伙小偷在偷完現鈔以後,被清潔人員發現,Vincent 想要殺人滅口,Will 阻止了他,可是 Vincent 卻被走火的子彈打到腿,Will 去撿鈔票,豈料其他三人卻因為警察快到就先逃走了。Will 逃了一陣,最後還是被逮,手上的一千萬丟到火裡燒掉了。Vincent 跟警察始終相信現鈔被 Will 藏到隱密的地方去了。很快數年過去,Will 出了獄想要修復跟女兒間的感情,然後女兒就被 Vincent 綁架走了,Will 就要去救她,本來要找警察幫忙,警察還不相信,後來只能自己救,可是 Vincent 太兇狠,完全談不攏,就是要錢。Will 只好找昔日的好友 Riley 幫忙,坦白說,這次去偷金塊還真的有創意,拿著高溫的噴槍去燒穿金庫地板,然後熔掉金子,落下的金熔液掉到水裡降溫,就又是金塊,於是順利偷到金子。最後就跟 Vincent 決一死戰,順利救到女兒。普普通通,算還不錯看。裏面的 Malin Akerman 曾經演過 Watchman,這次再度被她煞到。
  • 十二生肖 (IMDB, Wikipedia),英譯:Chinese Zodiac。成龍的武打片,從片尾的 NG 鏡頭看的出來,他真的老了,未來不知道還可以演幾片。這部片的劇情普普,還是請把重點放在武打上吧,這次武打有拉到高空去打鬥,算是一個新的嘗試,值得一看。成龍一伙人是專偷古物的團隊,就到處偷古物,然後交給 MP 公司去拍賣以取得高額報酬。這次的古物是圓明園的十二生肖,有個女主角反對偷古物,有個女主角的祖先恰好是去圓明園掠奪的人,成龍一伙是偷古物的人,相互利用、相互得利,後來撕破臉了,成龍一伙良心發現,幫忙去要回被 MP 公司綁的人,大打了一場。之後,全世界看穿 MP 公司的骯髒手法,都不出價買 MP 公司的古物,MP 公司惱羞成怒,就決定把龍首丟到火山口,成龍拼了命去救,從數百公尺高空掉下來,救到龍首。最後就是大團圓的結局,新聞報導的成龍與林鳳嬌抱在一起的畫面,就在此時,不到三秒就閃過去。

試裝FireApp

FireApp 是可以試用的,只是網站上只提供付費下載,$14 美金,算是很便宜,想要試用的話,得自行編譯。編譯的步驟不太難,對 ruby/rvm/git 熟的人,應該一下子就裝好了。

以下是我的安裝步驟,我的環境是 Ubuntu 12.04 LTS

  1. 下載 FireApp:git clone https://github.com/handlino/FireApp.git
  2. 下載 submodule:cd FireApp && git submodule init && git submodule update
  3. 解決 submodule 問題,我這邊有遇到無法取得 tka-serve 的問題,後來是參考 StackOverflow 上的這篇才解決,先 git log --oneline -p -- lib/ruby/common/tka-serve 取得第1行的 SHA1 ,然後用 git checkout <sha1>~ — lib/ruby/common/tka-serve 取得 tka-serve 代碼,然後重新執行 git submodule update ,最後 git commit 即可。
  4. 安裝 JDK6/rvm/bundler/rake/gems/nodejs:sudo apt-get install openjdk-6-jdk ruby-bundler rake nodejs ruby-rvm ruby-gems ,nodejs 是給 sass/scss 用的。
  5. 下載 rawr:bundle install rawr
  6. 下載 jruby:rvm install jruby-1.6.7
  7. 切換 JDK 為 1.6,官方建議用 1.6,所以如果用 1.7 的話,得用 update-alternatives –config java 切換;我原本是裝 openjdk-7-jdk,裝完 openjdk-6-jdk 以後,順序有自動調整為 1.6 優先,為了安全,還是檢查一下。
  8. 編譯:bundle exec rake rawr:bundle:linux
  9. 啟動:bin/startJar-linux.sh

覺得好用的話,要記得去購買,讓這個軟體更好。

安裝的心得:

  • 原來 rvm 是有點類似 python virtualenv 的東西,可以用來安裝/執行各種版本的 ruby/jruby/rake ,我卡在這邊卡了好久。
  • git submodule 要多練習才是。

試用的感想,這比較像是 template 產生器加上即時 web server 的快速專案產生器,有點像是 Adobe 之前釋出的 bracket,bracket 比較偏重於即時就能看到結果,FireApp 的好處是結合 sass/scss 與 RoR 的 template system,在 HTML 的編寫可以搭配 ZenCoding,這樣的組合可以說是如虎添翼。

Firefox 18 的 PDF Viewer

看到新聞說 Firefox 18 已經有內置 PDF Viewer 了,找了選單,卻找不到怎麼開,用開新檔案,只會出現詢問下載位置的視窗。

找了一下,找到這篇 Show PDF inline Test Plan 才發現 Status 標為 Disabled until Firefox 19,所以是已經內置,但是功能沒打開。就心血來潮,在網址列輸入 about:config 找 pdf,果然看到 pdfjs.disabled 被標為 true,就把這個值改為 false,然後重新啟動 Firefox,就可以從「開新分頁」>「開啟檔案」去開啟 pdf 了。

不過,後來我還是把這個值給回復為 true 了,Mozilla 開發小組把這功能 disable 應該是有原因的,就等 Firefox 19 再說吧。