by winson, 4 months ago.
什麼是CAPTCHA呢?
CAPTCHA是”Completely Automated Public Turing test to tell Computers and Humans Apart”的縮寫,那是一種用來區別使用者是人還是電腦的方式,一般都是產生圖形,讓使用者輸入圖形所代表的文字並加以驗證,主要用途是防止電腦程式灌票,或防止電腦程式登錄大量帳號或灌入大量廣告留言等。
那麼,如何在Rails底下做到CAPTCHA的機制呢?其實解決方式還滿多的,但我個人選擇外掛,通常有幾項要求:
- 不會有系統安全方面的問題
- 程式碼必須漂亮簡單
- 對人類有益
我看過有人推薦Simple Captcha,但我覺得這是最爛的選擇,而且在Ruby On Rails Security Guide一文中也不推薦使用。
by winson, 7 months ago.
每一位程式員都討厭測試,相較於寫程式時那種解題的快感,測試簡直百般無聊。那麼,為什麼要測試?目的是為了程式碼的品質,品質不單單是測試人員的事,那是程式員基本的責任。
測試等於是一種背書,證明程式的任何環節毫無問題;測試可以帶給程式員信心,所以只要是我寫的程式,我就願意負責,而且我一定會對我寫的程式感到驕傲!!
先看看為何要用RSpec來進行測試,難道在Rails裡頭用他基本的unit test來作不行嗎?當然可以,只是測試的風格不同而已,但我認為風格很重要,風格可以改造想法,而想法可以改造程式!!
by winson, 7 months ago.
這是我用過最棒的Ruby On Rails外掛: http://code.google.com/p/rubyphunk/wiki/ExceptionGrowler
萬一不會自動通知,請進Growl把Network頁籤下的這兩個選項打勾:
- Listen for incoming notifications
- Allow remote application registration
by winson, 10 months ago.
每篇部落格文章都一定有時間戳記,時間戳記可以指出這是幾月幾號幾點幾分幾秒發佈的文章。
但是不知道從哪裡帶起的一股流行,把時間戳記從絕對時間改成相對時間,例如,這是幾天前發佈的文章。而隨著時間消逝,幾天前,慢慢變成幾個月前,甚至幾年前,於是時間戳記就變成一件很酷的事。
在Mephisto上要做這樣的修改也是用Rails外掛,安裝方式跟一般安裝Rails外掛沒兩樣。
請切換到Mephisto所在目錄,然後:
script/plugin install http://svn.dnite.org/mephisto_relative_time
接著請修改模版,找出代表文章發佈日期的tag,也就是article.published_at,然後把語法作些修改,例如原先的tag是這樣:
on {{ article.published_at | date: '%A, %B %d, %Y' }}.請修改成
{{ article.published_at | relative_time_ago }} ago.記住,前面不需要about,但後面別忘了加ago。
by winson, 11 months ago.
玩Rails的人沒有不裝外掛的,我使用外掛的理由有三個。
第一、有現成的功能直接拿來用就好,幹嘛重新發明輪子?
第二、這就像玩Eclipse及Firefox一樣,好用的外掛總要嘗試一下。
第三、可以趁機瞭解外掛的原始碼及範例,多服用甜的語法糖可以提升一甲子功力。
by winson, 11 months ago.
IntelliJ IDEA除了是相當順手的Java IDE之外,也是目前為止跟Rails整合最好的商業開發工具。
以目前的IntelliJ IDEA 6.0.5來說,它是以外掛的方式加入Rails開發功能,預計7.0版將內含Rails開發,而且還會加入Rails專用的Live Template。
什麼是Live Template?這其實是從TextMate抄過來的快速鍵功能,可見這小玩意兒有多受歡迎就好。
在IntelliJ IDEA底下開發Rails,必須安裝所謂的Ruby Plugin,這個Ruby外掛可以讓您開發Ruby以及Rails程式。別說我沒警告你,這個外掛真的不好裝。
by winson, about 1 year ago.
在Rails裡頭要做訊息提示最簡單的就是利用flash[:notice],然後把你要的訊息餵給它就好。
如果你覺得這種方式太陽春的話,麻煩好好把CSS設計一下,訊息提示其實可以做到很炫。
好吧,炫不炫是另外一回事,如果你要區分警告、提示、錯誤、除錯幾種訊息呢?當然你可以自己創造flash[:error]、flash[:warning]等等,然後設計不同顏色的CSS來展示不同的訊息。
by winson, about 1 year ago.
Rails裡頭很多外掛都叫做acts_as_xxx之類的,例如你的Model取名為Book的話,掛上acts_as_taggable就變成”可以加Tag的書”了。我真的愛死這種直覺又有效率的方式。
關於Acts as Taggable的安裝,網路上可以找到很多中、英文的說明文件,這裡不多描述,只要別打錯字就好。
以下是一些注意事項和偷懶的方式:
by winson, about 1 year ago.
從Twitter Trouble的議題被拋出來後,Rails的後端擴充性再度成為焦點。
整個Twitter系統因為網路流量實在太大,所以總共擴充為180個Mongrel Server,非常驚人!!
最後造成資料庫問題愈來愈嚴重,而整個問題的根源是Rails先天只能連一個資料庫。
by winson, about 1 year ago.
因為Rails實在太方便了,很多東西可以不經宣告直接拿來用,他的Model幾近簡化到看不到物件屬性!!這種方便性換來的代價就是操作Model時根本不知道這個Model/ Table裡面有哪些欄位,這時候就必須自己到資料庫裡面去查。
當然了,採用Agile開發方式是一邊設計資料庫,一邊寫Code的,這其實也不是太大的困擾。萬一資料庫大起來的話,有沒有更懶惰的方式可以直接看到物件屬性欄位而不需要到資料庫去查呢?當然有。
如果Model長這樣如何呢?這是我的User Model: