Outline
因為對於很多新鮮技術感興趣的我,接觸了不少開發的語言,包括 ios(objective-C)
、 android(java)
、web(ROR)
,雖然接觸的都不算深,但是我最後發現 web 才是最對我胃口的開發應用。
寫網頁吧,比較有成就感!
Ruby on Rails
開發準備工作
- 最佳環境:
Mac
>>linxu Ubuntu 12.04
>>>>windows
- 什麼是 HTML CSS Javascript?
- HTML5, CSS/Sass, jQuery, Bootstrap
新一代網頁設計 - 第一次寫網頁就上手
- HTML 標記語言
- CSS 長什麼樣子
- javascript 動畫或功能
- HTML5, CSS/Sass, jQuery, Bootstrap
- 其他
- 孫媽 網路應用課
- Tony 資料庫管理
- 小盧 SA
- 資料結構
靜態網頁,需不需要架設伺服器呢?
答案不需要。因為不需要資料庫,也不需要運算能力。
那靜態網頁可以放在哪裡?自己電腦桌面上、學校空間、dropbox、github page!
ex: 計概作業放到學校空間上。
Ruby on Rails 可以做到什麼事情?
http://im102timeline.herokuapp.com/
你可以把設計網頁分為兩個部分
- 存取資料(新增資料那些)
- 網頁美觀度
而為什麼1.的部分可縮短成10分鐘呢?因為 ROR 就是要推薦你們的好東西。
- 開發快速
- 好維護
Ruby 關於 Ruby
跟 C、C++、java、PHP、Ruby、Python 一樣就是程式語言,但是是比較特別的高階的程式語言。
試著讓 Ruby 更為自然,而不是簡單。
- scripting language。
- 純物件導向的語言。
- 區塊(Blocks):
{}
、do ... end
- 動態語言
- 動態語言(Ruby、Python、PHP、Perl等)比起靜態語言(Java、C++等)
- 靜態語言和動態語言的差別在於,前者的變數型別需要事前宣告,後者則是執行期才動態決定。實務上,就看程式需不需要事前編譯這個動作了。
- 執行效能是絕對比不上靜態語言的
- 沒有編譯期可以檢查型別錯誤
- 不需要編譯
安裝 Ruby 2.0.0-p195
|
|
$ irb
玩玩看- ruby gem: http://rubygems.org/
|
|
ruby 可以寫什麼?
什麼都可以寫,像程式作業,舉例:捷運站經緯度坐標 Open data
為什麼需要網站開發框架
? Web framework
程式語言與 HTML 標記語言太過於混雜,用 <?php ... ?>
括起來的部份參雜在 html file 裡面,雖然是可以進行開發,但是維護性非常低,也許自己可能也看不懂,至於所謂框架看起來就是長這樣:
MVC 架構
- MVC 是一個設計概念,包括
- Model: 操作資料庫
- View: 表示使用者介面
- Controller: HTTP Request,與其他部分溝通
- 很多地方都有提倡 MVC 架構,Rails 是其中之一
- 分離邏輯和使用者介面。
- 其它語言開發框架?
Rails 哲學說
- MVC
- VIEW:
html.erb
、<%= %>
- Controller: 主軸核心運算
- Model: 操作資料庫
- VIEW:
- DRY: Don’t Repeat Yourself
- RESTful (最佳實踐規則) -> controller 提到
- ORM (Object-relational mapping) -> model
安裝 rails 4.0.0
|
|
實作
- rails new 建立一個 Rails Project,
|
|
- 利用 Scaffold 來快速打造一個 CRUD 的功能。
|
|
- CRUD
- Restful
- rails gem 可以自己寫,但是記得 DRY,有人寫好就拿來用。
版本控制 git
你的程式碼應該放在哪裡呢?
你的電腦裡你的隨身碟裡dropbox- github!
安裝
|
|
create github account
git 教學 try git
Deploy 部署
- RAILS_ENV: development/test/production
- PaaS: Herku
安裝 heroku
|
|
heroku push 設定 gemfile
|
|
安裝 PostgreSQL
|
|
延伸
- IaaS / VPS / Self hosting: Nginx + Passenger + Rails4 Setup on Ubuntu12.04,有簡易的步驟教學。
- Web server / Application server 傻傻分不清楚 ?HTTP Server 大小事
雲端運算概念:
- IaaS (Infrastructure as a Service): AWS EC2
- PaaS(Platform as a Service): Heroku、GAE
- SaaS(Software as a Service): Gmail、google doc
切換資料庫:Rails on PostgreSQL