PHP, Perl, Python, Ruby 的比較

這一年換新的地方上班學到很多。

從 PHP 到 Ruby 。雖然沒有學的很透徹。但接下來又要學 Python 了 。

雖然程式的邏輯都差不了多少,而每種語言都有它不同的寫法。

但學習新的東西是很令我超級興奮的!

這四種語言的差異表:

Interpreted Languages: PHP, Perl, Python, Ruby (Sheet One)

這幾天要先學好 Python 的語法,並用 PHP 熟悉的方法去學習。

PHP 轉換 Ruby

資深的PHP開發者對於新語言的轉換一直是很痛的很痛。(習慣以往的寫法。)

多如牛毛的PHP開發工程師都是從小就開始 copy & past 寫網站。(初學者好入門。)

公司所聘請的PHP開發員據說薪水都一直很沒有價值。(因為人數太多,所以市場機制下越變越沒價值)

而且很多的網頁美工設計師到後來都變成PHP程式設計師。(沒有MCV觀念)

因此,有些清醒的PHP人都因而轉換跑道。(跑去賣雞排)

在這裡俺以過來人介紹你一個好東西,就是升格為 Ruby on Rails Programer 。當然,這個玩意的學習曲線一開始是非常陡峭的,而且也要有非常好的非常清醒的很有邏輯思考的腦袋才能爬過初學者高牆。

工欲善其事必先利其器,這個網站 PHP TO RUBY 就是你減輕痛苦的好工具,PHP的最大優點就是有內建數百支的強大函式庫供使用。但是在學習轉換 Ruby on Rails 時也是會用到很常見的陣列與字串函式或是日期顯示函式。若不知道在 Ruby 用啥函式來解決,在網海茫茫之下,根本就是汪洋中的一條船。

Continue reading PHP 轉換 Ruby

Heroku 雲端運算平台

在 Rubyconf Taiwan 2011的議程中,講者介紹一個雲端運算平台「Heroku」,這個平台最主要提供的運算環境是 Ruby ,因此許多 Ruby 開發社群愛好者愛用,免費的功能目前是將Rails那樣的專案佈署上去以供測試,如果在試營運的過程中忽然要大量的流量或是Request,它可以動態加強Dyno或是worker的數量,讓你完整的測試專案在大量工作時的情況。

不過,我比較好奇的是它的How it works的頁面裡頭,有個會流動的虛線,這個是用HTML5的方式運作的,感覺好專業!

我好喜歡這樣子的東西,對於它有啥功能,請到inside看它的介紹。
Ruby語言的雲端運算平台:Heroku

A Ruby Lightweight Web Framework : Sinatra

Sinatra 是一個輕量級的 lightning Web Framework。

Sinatra 與 Rails 主要的差別在於 Sinatra 並不是 MVC 式的 Framework。它的 core 並不包含類似 ActiveRecord 這樣的 module。通過使用 get/post action 定義,Sinatra 也同樣具備 dynamic route definition。

使用 Sinatra 的目的是搭造小型的應用程式或者API介面。這樣做的好處是如果你只是想寫一支小型程式,或者開發 API,那就並不需要使用 Rails 這麼複雜(或肥)的 Framework做這些簡單的事。

所以使用 Sinatra 既簡單,程式回應也迅速。

安裝方法:
[cc lang=”bash”]
gem install sinatra
[/cc]

使用方式如下:

[cc lang=”ruby”]
# myapp.rb
require ‘sinatra’

get ‘/’ do
‘Hello world!’
end
[/cc]

存好一個檔案,然後下指令:
[cc lang=”bash”]ruby -rubygems myapp.rb[/cc]

沒錯,這樣子就可以run了!

因此,如果還不想太早學 Rails 這樣有點復雜的MCV架構程式,你可以先從用sinatra來學你的Ruby Code 。

教學官網:http://www.sinatrarb.com/

Mongo DB 工程師的香蕉芒果

這個標題的梗請參照這個連結,俺就不用多說。工程師平日忙於工作與電腦會很少三餐均衡,為了要提醒我們多吃水果,所以,不知道梗是啥的英文語系國家就偏偏把這個水果代號附加上自家的產品(例:微軟的智慧手機 Windows Phone Mango 7 )。芒果的英文叫做 Mango 而日文叫做 マンコ (日文意思請參考這個連結),所以這個 MongoDB 的取名應該是故意的吧!!XD

Mongo DB 是個目前所NoSQL大推的文檔式資料庫也是非關聯式的資料庫,為何需要用到文檔式的資料庫?跟關聯式的資料庫又是有什麼差別?

非關聯資料庫的出現不是為了取代關聯資料庫。具體的說,MongoDB 並不支援複雜的事務,只支援少量的原子操作,所以不適用於“轉帳”等對事務和一致性要求很高的場合。所以純粹是只做成消息發佈、留言板、計數器這一類的App就不必使用MySQL那樣大材小用。

Ubuntu的t安裝方式可以參考這裡

安裝過程很簡單,完成之後下指令mongo即可進入shell模式跟它玩玩。
[cc lang=”bash”]
$ mongo
MongoDB shell version: 1.8.2
connecting to: test
[/cc]
Continue reading Mongo DB 工程師的香蕉芒果

初探Ruby on Rails

起源與命名

Ruby意指為紅寶石,而在電腦程式碼界裡頭是一個簡單快速,物件導向的指令碼語言。Ruby的起源可以追朔到1995年由日本工程師「松本行弘」開發釋出,並遵尋GPL協定和Ruby License 。Ruby的命名之所以稱之是因為Perl的發音與6月的誕生石pearl(珍珠)相同,因此Ruby以七月的誕生石ruby(紅寶石)命名。

Ruby的理念與語言特性

人們特別是電腦工程師們,常常從機器著想。他們認為:「這樣做,機器就能執行的更快;這樣做,機器執行效率更高;這樣做,機器就會怎樣怎樣怎樣。」實際上,我們需要從人的角度考慮問題,人們怎樣編寫程式或者怎樣使用機器上應用程式。我們是主人,他們是僕人。

減少鎖碎的時間來提升開發效率與直接溝通的人性化語法是Ruby開發時所遵照的理念。所以作者認為Ruby > (Smalltalk + Prel )/2 ,可表示為能像Smalltalk一樣完全、完整的物件導向,指令碼執行又有Perl強大的文字處理功能的程式語言。
Continue reading 初探Ruby on Rails

Ruby on Rails 的 dbi

ruby on rails 的dbi功能可以單獨建立database server 連線,而不靠rails 內建的 ActiveRecord進行撈資料的動作。但最近真的快被搞腦袋都冒煙,無論重裝幾次,ruby 都告訴你 dbi 都require不進去。

[cc lang=”bash”]irb(main):001:0 > require ‘dbi’
LoadError: no such file to load — dbi
from (irb):1:in `require’
from (irb):1
from :0
[/cc]

但是google之後,先加進 require ‘rubygems’ 就都true了。

[cc lang=”bash”]irb(main):002:0> require ‘rubygems’
=> true
irb(main):003:0> require ‘dbi’
=> true[/cc]

Continue reading Ruby on Rails 的 dbi

apache的相關指令

在ubuntu上apache的一些停止與啟動的指令跟freebsd不太一樣

啟動指令:
[cc lang=”bash”]/etc/init.d/apache2 start[/cc]

停止指令:
[cc lang=”bash”]/etc/init.d/apache2 stop[/cc]

套用已修改的指令:
[cc lang=”bash”]/usr/sbin/apache2ctl graceful[/cc]

另外要啟用Rails的開發環境

啟用webrick(必需要進入目前正在開發的rails目錄下)
[cc lang=”bash”]script/server[/cc]

停止webrick
Ctrl + C

下指令停止webrick(該terminal視窗已經不見,或是背景執行)
[cc lang=”bash”]pgrep ruby
kill -KILL id[/cc]