ruby on rails - pengenalan kepada “permata” dalam pengaturcaraan

Download Ruby on Rails - Pengenalan kepada “permata” dalam pengaturcaraan

If you can't read please download the document

Upload: edthix

Post on 16-Apr-2017

848 views

Category:

Spiritual


3 download

TRANSCRIPT

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]