le slide - Grigio.org

annuncio pubblicitario
Infrastrutture per il web e
Ruby on Rails
Luigi Maselli
http://grigio.org
Corso autogestito di Linux 2007/2008 – Università di Torino
Web 2.0
Nessuno ha ben capito cosa
significhi “Web 2.0”, ma dire
che qualcosa lo é fa figo..
Cosa c'é di nuovo?
Dal punto di vista dell'utente
Più interattività
●Interfacce più semplici
●Possibilità di condividere e ricomporre i propri contenuti
●Dati sempre disponibili online
●Siti web che possono sostituire applicazioni locali (client email, lettori
di feed,..)
●
Dal punto di vista del programmatore
Standard web in continua evoluzione
●Chiamate asincrone
●WebApi
●Framework
●..
●
..cioé
Client
presentazione (html, xml, json, flash), interazione (javascript,
ajax, flash)
Firefox(gecko), IE, Safari(WebKit), Opera,
applicazioni native interfacciate a WebAPI (es: Tweet = Clutter + Twitter)
Server
webserver, database
Apache, Lighttpd, Php, Python, Ruby, Mysql, Oracle, SQLite,..
..e Ruby on Rails?
Client
presentazione (html, xml, json, flash), interazione (javascript,
ajax, flash)
Firefox(gecko), IE, Safari(WebKit), Opera,
applicazioni native interfacciate a WebAPI (es: Clutter + Twitter)
Ruby on Rails
Server
webserver, database
Apache, Lighttpd, Php, Python, Ruby, Mysql, Oracle, SQLite,..
Prima di andare oltre, Ruby!
Completamente ad oggetti, conciso, espressivo, semplice, dinamico,
multipiattaforma, multivirtualmachine, multiuso e Open Source.
Altre caratteristiche interessanti: Duck Typing e Blocchi (Vedi Wikipedia)
Un unico linguaggio ad alto livello per:
scripting, applicazioni desktop e web.
È stato creato in Giappone da まつもとゆきひろ (Yukihiro
Matsumoto - Matz) nel 1993 e dopo qualche anno si è diffuso
nel resto del mondo.
Scripting
Dir.open('.').each {|file| p file.upcase.split('.')[0]}
# Oppure
for file in Dir.open('.')
print file.upcase.split('.')[0] , "\n"
end
puts `cat /proc/cpuinfo`.grep(/[0-9]\.[0-9]/)
# => cpu MHz
: 1109.909
# => bogomips
: 2222.17
Applicazioni desktop
require 'gtk2'
# Classi
class Persona
attr_accessor :cognome
# costruttore
def initialize(nome, cognome)
@nome = nome
@cognome = cognome
end
# per chi vuol essere ridondante
def nome; @nome; end
def nome= (nome)
@nome = nome
end
# fine
end
io = Persona.new('Pippo', 'Baudo')
io.nome = 'Joe'
io.cognome = 'Vanetti'
# GUI
label = Gtk::Label.new "Hello World #{io.nome}, sono le ore #{Time.now}"
window = Gtk::Window.new << label
window.signal_connect('destroy') { Gtk::main_quit}
window.show_all
Gtk.main
Applicazioni web
(vedi Rails)
Ruby on Rails è un Domain Specific Language (DSL), estende Ruby,
applica dei Design Pattern come Model View Controller(MVC) e
Convention over Configuration.
Il framework Ruby on Rails ha avuto talmente tanto successo da
aver ispirato framework analoghi in Php, Perl, .NET,..
Qualcuno lo ritiene un linguaggio indipendente, per la sua flessibilità
e per le sue “magie”, ma tutto questo succede grazie a Ruby!
Ruby on Rails (MVC)
Model
Gestisce le relazioni tra le tabelle del database
Mappa una query su un oggetto (Object-relational mapping, ORM)
Valida la correttezza dei dati
Non c'é bisogno di specificare il nome della tabella di riferimento(*)
(*) Se si usano le convenzioni di Rails
Controller
Carica i model per le view
Gestisce le diverse tipologie di accesso
Varie ed eventuali
View
È l'equivalente della “pagina Php”
Non può essere chiamata direttamente
Può essere anche Xml, json, rss,..
Si occupa di presentare i dati, i form e gli errori
Risorse
Applicazione TODO d'esempio
http://grigio.org/files/todo.tar.gz
Italiano
http://ruby-it.org/
http://www.therubymine.com/
http://ruby.html.it
http://grigio.org/un_assaggio_ruby_e_rails
English
http://api.rubyonrails.org/
http://www.ruby-lang.org
http://rubyonrails.org
http://railscasts.com/
Scarica