If you can't read please download the document
Upload
edthix
View
848
Download
3
Embed Size (px)
Citation preview
Ruby on Rails
Pengenalan kepada permata dalam pengaturcaraan
Salam sejahtera
Sabah Open Source Group
http://sabahopensource.org
http://facebook.com/sabahopensource
join us :-)
Ruby on Rails
Ruby on Rails
www.ruby-lang.org
Apa itu Ruby?
Sebuah lagi Programming Language!
Ruby adalah .....
Sebuah lagi Programming Language sumber terbuka dan dinamik dengan fokus kepada kesenangan dan produktiviti.
Ruby adalah .....
Ianya mempunyai sintaks yang semulajadi untuk dibaca dan mudah ditulis.
Mengapa Ruby?
Mudah dan indah
Sumber terbuka
Ruby on Rails (Web Framework)
Ruby Boleh!Manipulasi teks
Pentadbiran sistem
Aplikasi sains
Dan banyak lagi .....
Siapa gunakannya?
Sejarah Ruby
Yukihiro Matz
MatsumotoJepun
24 Februari 1993
Sejarah Ruby
PerlPythonJavaRubyPHP8789919395
Falsafah
I wanted a scripting
language that was more
powerful than Perl,
and more object-oriented
than Python.
That's why I decided to
design my own language
Falsafah
Ruby is simple in
appearance, but is very
complex inside, just like
our human body
Prinsip
Software Development Tools direka untuk komputer, bukan untuk manusia.
Prinsip
Komputer kerja untuk manusia, bukan DAN jangan sebaliknya!
Prinsip
Language dan Library untuk manusia dahulu!
Teman
Ruby Teman baik sang pengaturcara
Kod
ucapan = Saya suka Ruby puts ucapan
=> Saya suka Ruby
Kod
ucapan = Saya suka Ruby # tiada type declarationputs ucapan # tiada main() method# tiada keyword tambahan (var)=> Saya suka Ruby
Kod
5.times{ print 1 Malaysia\n }
=> 1 Malaysia
=> 1 Malaysia
=> 1 Malaysia
=> 1 Malaysia
=> 1 Malaysia
Data types
Ini adalah string # string'Ini juga adalah string' # string1 # fixnum (tiada tempat perpuluhan)1.2 # float (ada tempat perpuluhan)cars = [proton, perodua, naza] # floatkamus = { :big => besar, :small => kecil } # hash
Data types
Ini adalah string.class => String'Ini juga adalah string'.class => String1.class => Fixnum1.2.class => Floatcars = [proton, perodua, naza]cars.class => Arraykamus = { :big => besar, :small => kecil }kamus.class => Hash
Flow
car = toyota
if car == toyota puts Toyota VIOSelse puts Unknown carend
Flow (ternary)
car = toyota
car == toyota ? puts(Toyota VIOS) : puts(Unknown model)
Flow
car = toyota
case carwhen toyota puts Toyota VIOSwhen proton puts Proton Sagaend
Manipulasi string
name = Edham Arief
name.upcase => EDHAM ARIEFname.downcase => edham ariefname.reverse => feirA mahdEname.downcase.reverse => feira mahdename.length => 11name.sub(Edham, Encik) => Encik Arief
OOP
name = Edham Arief
name.upcase
OOP
class Userattr_accessor :name, :email
def hello; puts(Hello world); end
end
user1 = User.new J. Bond, [email protected] = User.new Obama, [email protected] => Hello worlduser2.hello => Hello world
Advance
ciri_ciri_ruby_advance= { :metaprogramming => kod yang menulis kod lain,:full_oop => everything is an object,:reflection => setiap object kenal diri sendiri,:duck_typing => if it sounds, walks and talks like a duck ...,:dsl => domain specific languages,:libraries => beribu-ribu library}
Ruby on Rails
www.rubyonrails.org
Apa itu RoR?
Sebuah lagi Web Application Framework!
Ruby on Rails adalah ...
... web framework sumber terbuka yang ditujukan untuk kegembiraan pengaturcara dan produktiviti. Ianya membuatkan anda menulis kod yang indah dengan mengetengahkan Convention over Configuration
Mengapa RoR?
Convention over ConfigurationMVCKurang kodDon't Repeat Yourself (DRY)Ekosistem
Mengapa RoR?
Bina Blog dalam 15 minithttp://rubyonrails.org/screencasts
Screencasts Rails percumahttp://railscasts.com
Siapa gunakannya?
Sejarah RoR?
37 Signalshttp://37signals.com
Basecamp ~ 2004http://basecamphq.com/
Versions:
1.01.22.02.12.22.33.0Dec 2005Jan 2007Dec 2007Jun 2008Nov 2008Mar
20092010
Falsafah
David Heinemeier Hansson
(DHH)
What separates programmers
who are 10x more effective than
the norm is not that they write 10x
as many lines of code. Its that
they use their creativity to solve
the problem with 1/10th of the
effort.
Falsafah
David Heinemeier Hansson
(DHH)
In the beginning, there was no
Rails, there was only Basecamp.
After working on Basecamp for a
while, though, I eyed the option
of giving all the generic pieces a
life of their own. But even then,
I continued to work on Basecamp
first. Which meant that all the functionality of Rails came as
extractions of a real application, not of a what somebody might
need some day fantasy, so prevalent in framework design.
Binaan asas
Kurang code
Scaffold
$./script/generate scaffold user name:string email:string
(demo)
Representational State Transfer
Selalunya aplikasi web adalah berasaskan objectPosting dalam blogEntry database (title, content dan date)
User dalam sistem maklumatEntry database (name, mykad dan jabatan)
REST createreadupdatedeleteHTTP postgetputdelete
Representational State Transfer
URL konsisten dan mudah diteka
GEThttp://site.com/postspapar semuaGEThttp://site.com/posts/1papar post (id=1)GET http://site.com/posts/newpapar form untuk rekod baruGEThttp://site.com/posts/1/editpapar form edit post (id=1)
POSThttp://site.com/postsbina rekod baruPUThttp://site.com/posts/1update post (id=1)DELETE http://site.com/posts/1padam post (id=1)
Representational State Transfer
URL konsisten dan mudah diteka
GEThttp://site.com/userspapar semuaGEThttp://site.com/users/1papar user (id=1)GET http://site.com/users/newpapar form untuk rekod baruGEThttp://site.com/users/1/editpapar form edit user (id=1)
POSThttp://site.com/users/bina rekod baruPUThttp://site.com/users/1update user (id=1)DELETE http://site.com/users/1padam user (id=1)
Representational State Transfer
Didatangkan percuma dengan Ruby on Rails
Don't Repeat Yourself
Kod binaan asas (boiler plate) berkurangan!
Don't reinvent the wheel!
Ekosistem
Editor Textmate (Mac OS), Eclipse, Netbeans, Emacs, vim, notepad
OS Linux, Mac OS, Windows
Community malaysia.rb, wiki, irc, mailing lists
Repositori kod - http://github.com
DEMO
DEMO BINAAN SISTEM RINGKASharap sempat siap :-)
Sistem rekodJabatan dan pekerja setiap jabatan tersebut!departments(code, phone_no)
employee(name, email, department_id)
Penghargaan
Terima kasih:-)
Sumber dan rujukan
Slide http://www.slideshare.net/madrobby/ruby-on-rails-introduction
Gambar MVC (http://wiki.nectec.or.th/gitiwiki/pub/Knowledge/ModelViewController/mvc-rails.png)
Gambar DHH (google)
Gambar Matz (google)
Gambar scaffold (http://web.princeton.edu/sites/ehs/pmguide/scaffold.gif)
Gambar basikal (http://dev102.com/Dev102/wp-content/uploads/2008/11/reinventthe-wheel.png)
Web rasmi RoR - http://rubyonrails.org
Web rasmi Ruby - http://ruby-lang.org
Wikipedia
Disertasi asal REST (http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm)
Template Open Office Impress ini - (http://technology.chtsai.org/impress/)
Edham [email protected]