RoR Kung Fu a Unisannio

Posted by ivan, Thu Aug 09 11:00:00 UTC 2007

Il Gruppo Pierogi nasce per l’esame di Basi di Dati del nostro corso di laurea ad Unisannio. Il professore ha lungimirantemente concesso a tutti i gruppi di scegliere gli strumenti per completare il progetto. Spinti dagli amici di The Ruby Mine, abbiamo deciso di usare Ruby on Rails. Entusiasti della novita’, ci siamo subito buttati sulla documentazione. Dopo una veloce configurazione di Postgresql e la modifica al file database.yml, abbiamo scoperto la potenza di “scaffold”. Abbiamo addirittura avuto modo di sfruttare la perla delle convenzioni Ruby on Rails: “oggetto person => tabella people”.

Alcuni di noi erano totalmente all’oscuro di tutte le convenzioni per lo sviluppo web. Durante l’esperienza universitaria non era mai capitato di incontrare l’ MVC: Cosa diavolo e’ una vista?

Avevamo solo 10 giorni e i primi due erano volati via solo per scartare SQLite e MySQL per alcune incompatibilita’ col progetto da sviluppare. Cominciava a salire lo sconforto.

In fondo avremmo potuto fare tutto in JSP e Servlet come ci avevano insegnato all’Universita’ senza imbarcarci nell’ennesima avventura a perdere, inseguendo la novita’ geek che nessuno avrebbe mai usato per le cose serie. Fortunatamente sono bastate poche fondamentali cose per scacciare tutto il malumore:
  1. Webrick
  2. Scaffold
  3. find_by_…

Webrick e’ stato tremendamente utile in fase di sviluppo. Non abbiamo dovuto installare niente che non fosse gia’ nel framework. Niente Apache, niente Tomcat, niente JDBC. Niente di niente. Al mattino, quando riprendevano i lavori bastava uno

1
2

script/server

e il nostro nascente progetto era raggiungibile ad http://localhost:3000.

Scaffold ci ha fornito una comodissima interfaccia al DB. E’ risultato comodo avere gia’ i form per il popolamento del database. Al di la’ di non dover interagire direttamente con Postgresql o utilizzare un file esterno per le INSERT, tutto il materiale che scaffold ha creato in automatico: viste, controller, metodi di CRUD, e’ stato fondamentale per la comprensione della sintassi base. Dopo un paio di tutorial e dopo lo studio del codice che avevamo, siamo andati avanti semplicemente con l’API.

Piu’ passavano le ore piu’ programmavamo spediti. Le basi accademiche di programmazione ad oggetti hanno contribuito a capire l’approccio da seguire. Poi Ruby ha pensato a sollevarci da inutili fardelli. E’ stata una gioia dimenticare parentesi e “punti e virgola”. Quello che hai scritto non e’ ambiguo? Ottimo, puoi evitarti parentesi e punteggiatura varia. Il disporre di una sintassi cosi’ snella, ma cosi’ potente ha consentito di evitare ingombranti ambienti di sviluppo. Non c’e’ stato il bisgno di usare Eclipse o simili. E’ bastato emacs debitamente corredato di plugin per Ruby.

L’aver progettato il DB secondo la piu’ efficiente prassi ci ha consentito di sfuttare la potenza di Ruby. Qualsiasi query veniva effettuata con un semplice find corredato dall’ID del record da cercare. Abbiamo anche avuto modo di sfruttare find_by_sql, un potente strumento che e’, pero’, visto di cattivo occhio dai programmatori piu’ capaci. Noi eravamo sostanzialmente novizi e pressati della data d’esame sempre piu’ vicina. Eseguire query innestate e vedersi restituire un semplice @films con tutti i film che corrispondevano ai nostri criteri di ricerca e’ stato particolarmente gratificante. La semplicita’ con cui poi sfogliavamo @films nelle viste era incredibile. Per avere la lista dei titoli dei film bastava scrivere nella vista:

1
2
3
4

<% for film in @films %>
  <%=h film.name %>
<% end %>

Seguire le convenzioni di Ruby e’ stato comodo e poco impegnativo. Per evitarci ulteriori e inutili configurazioni, abbiamo scelto di usare la lingua inglese per attributi e tabelle del DB. Ruby ha gestito la cosa con la sua solita semplicita’. L’oggetto cinema aveva la sua tabella cinemas nel database. Allo stesso modo film, room, address. Persino person aveva la sua tabella people. Questa ci e’ parsa una vera chicca :-)

Morale della favola, il nostro sistema Busca la pelicula, clone di Trovacinema.it, e’ venuto su in una settimana. Abbiamo sviluppato le operazioni richieste dal progetto piu’ una marea di operazioni implicite che venivano fuori man mano che si implementava il tutto. Era cosi’ semplice implementare una funzione in piu’ che ci sembrava un peccato non approfittarne. Con qualche riga di codice riuscivamo a dare all’utente finale la possibilita’ di una operazione magari insolita e non formalmente richiesta, ma pur sempre una funzione in piu’. Alla fine e’ diventato un vero e proprio divertimento. Siamo arrivati al punto di integrare un tema di Mephisto per rendere il progetto simile per grafica e layout al blog di Ivan. Francesca si e’ occupata anche di creare una nuova immagine header da piazzare in homepage.

In seduta d’esame lo stupore dei professori e’ stato piuttosto gratificante. E’ stato sorprendente per loro sapere che il tutto e’ stato progettato e implementato in dieci giorni, partendo sostanzialmente da zero. Hanno chiesto in che modo ci fossimo interfacciati a Postgresql e abbiamo mostrato loro i venti secondi di configurazione necessari. Abbiamo mostrato la leggerezza e l’immediatezza della sintassi e le varie convenzioni. Abbiamo mostrato come tutte le operazioni e le query sql fossero recuperabili semplicemente accedendo ad un file:

1
2

  tail -f log/development.log

e’ di una comodita’ disarmante, specialmente ai fini didattici. Fortunatamente tutto questo pro RoR non ha offeso i professori. La nostra iniziale paura era la consolidata ossessione per il mondo Java che regna sovrana ad Unisannio. Siamo invece rimasti sorpresi nel vedere il sincero interesse dei due docenti, contenti soprattuto della boccata d’aria fresca portata in facolta’.

L’esame si e’ concluso nel migliore dei modi. Una bella “lode” e tutti vissero felici e contenti.

Francesca, Ivan e Luca

BIOs

Francesca De Rosa e’ laurenda in Ingegneria Informatica all’Universita’ degli Studi del Sannio. Ha avuto esperienza con Java e RoR. Attualmente utilizzatrice di Kubuntu. Contattabile su unisannio@places.sameplace.cc

Luca Fusco, in arte “el Dobre”, e’ studente di Ingegneria Informatica ad Unisannio. Appassionato di tecnologia e gioco d’azzardo, passa il suo tempo a coniugare le due cose, fin’ora con scarsi successi. Membro “negativo” del gruppo Pierogi, supporta lo sviluppo e la programmazione in ambiente Windows perché, a suo dire: “qualcuno lo deve pur fare”. Lo trovate in giro per i forum di poker o su MSN: funboy82 [at] inwind [dot] it

Ivan Morgillo e’ studente di Ingegneria Informatica ad Unisannio. Appassionato di tecnologia: geek e nerd quanto basta. Attualmente pseudo programmatore Java, RoR e JS. Membro del Sanniolug e Kubuntu user, tester e scriptlet developer per SamePlace. Lo beccate su unisannio@places.sameplace.cc . Ha anche un blog

Filed Under: Rails | Tags:

Comments

  1. Giovanni Intini 02.02.08 / 16PM
    Grandi ragazzi.
  2. Chiaroscuro 02.02.08 / 16PM
    Giovanni, hai visto nella bio che ci stà un altro giocatore di poker?
  3. Majanovic 02.02.08 / 16PM
    Tutti bravi ma sinceramente non mi sembra una gran cosa... è piuttosto un lodarsi abbastanza appiccicoso...
  4. Gianluca 02.02.08 / 16PM
    @Majanovic: può essere, ma creare un'applicazione da zero, anche la più stupida, in 10 giorni non è da poco
  5. Majanovic 02.02.08 / 16PM
    @Gianluca: si ma l'hanno creata con RoR che è noto per simili imprese... non è cosa da poco ma non ci vedo niente di straordinario da giustificare un tale articolo...
  6. Chiaroscuro 02.02.08 / 16PM
    Quindi secondo te Majanovic non è importante mostrare degli usecase di uso di Rails? Trovi strano essere felici per aver portato a compimento un progetto usando una tecnologia smart?
  7. Chiaroscuro 02.02.08 / 16PM
    Nota: il titolo un pò sbruffone è responsabilità mia, non degli autori.
  8. Majanovic 02.02.08 / 16PM
    @Chiaroscuro: come già detto non mi sembra una cosa meritevole di tanta attenzione, io ci vedo descritti i soliti comportamenti di chi s'avvicina per la prima volta a RoR, una roba letta già mille volte... che poi gli autori siano felici mi sembra ovvio e sono felice per loro ma questo non c'entra niente
  9. Chiaroscuro 02.02.08 / 16PM
    @Majanovic: quello che dici di RoR è vero per me e vero per te.. che conosciamo RoR. E forse navighiamo sui siti in inglese. Però ammetterai che la maggior parte delle company italiane non sanno manco cosa sia e a me non dispiace il fatto che diventi più popolare. Non credo tu non sia d'accordo su questo. Forse preferisci articoli tecnici, più hard core?
  10. Chiaroscuro 02.02.08 / 16PM
    @ElDobre: lo sai che la tua passione per il gioco ha celebri precedenti? Per qesto sono stati costruiti i primi computer ;-) "Babbage and Lovelace bet and lost much money at horse races trying to get the capital to build the Analytical Engine. Unfortunately, their foolproof betting algorithms didn't work, landing them both in serious debt"
  11. EL dobre 02.02.08 / 16PM
    beh, che gli algoritmi di Babbage non funzionassero per le corse ai cavalli mi sembra alquanto normale......... non avevano fatti i conti con la fortunaaaaaa......... è difficile fare algoritmi e programmi che simulano intelligenze umane (come i pro del poker), ma farli affinché possano battere anche la malasorte è davvero un'impresa.......... :) cmq il nostro articolo non sarà qualcosa di così sconvolgente, ma come dico io: non abbiamo mica sprecato carta e inchiostro....... di sicuro qualche novizio di RoR lo troverà interessante e questo articolo non ha certo tolto spazio o offuscato altri articoli più "tecnici" e "stimolanti".......... quindi che siate amateur o pro...... buona lettura :P
  12. Chiaroscuro 02.02.08 / 16PM
    Per me fate bene a evangelizzare. continuate così! (se ti interessa poker+ruby devi parlare a intinig.. abbiamo un bot che gioca a poker fatto in ruby :-)
  13. Majanovic 02.02.08 / 16PM
    @ElDobre, @Chiaroscuro: ma esistono per il poker delle rating list come per i chess engine per valutarne la potenza? o è tutto più improvvisato?
  14. Majanovic 02.02.08 / 16PM
    @ElDobre, @Chiaroscuro: ma esistono per il poker delle rating list come per i chess engine per valutarne la potenza? o è tutto più improvvisato?
  15. Marco 02.02.08 / 16PM
    Bella avventura, complimenti!
  16. Hamen 02.02.08 / 16PM
    Salve, il nostro articolo non vuole essere un "wow che bello ruby, che figo ruby, f*ck everything else". E' il semplice racconto di una esperienza di vita piuttosto difficile da ottenere in ambito universitario. Per il nostro esame abbiamo avuto la fortuna di avere un docente piuttosto "giovane", soprattutto mentalmente. La nostra e' stata una sfida contro il tempo e contro le abitudini didattiche ad Unisannio. Io sono per "ad ognuno il suo". Potete programmare in quello che vi pare e leggere gli articoli che volete. Lascete a noi la stessa liberta' di raccontare la nostra piccola vittoria, piu' simbolica che altro. Abbiamo smosso le acque stagnanti di Unisannio... Una "boccata d'aria fresca", come detto nell'articolo.
    Ciao,
    Ivan
  17. Hamen 02.02.08 / 16PM
    Salve, il nostro articolo non vuole essere un "wow che bello ruby, che figo ruby, f*ck everything else". E' il semplice racconto di una esperienza di vita piuttosto difficile da ottenere in ambito universitario. Per il nostro esame abbiamo avuto la fortuna di avere un docente piuttosto "giovane", soprattutto mentalmente. La nostra e' stata una sfida contro il tempo e contro le abitudini didattiche ad Unisannio. Io sono per "ad ognuno il suo". Potete programmare in quello che vi pare e leggere gli articoli che volete. Lascete a noi la stessa liberta' di raccontare la nostra piccola vittoria, piu' simbolica che altro. Abbiamo smosso le acque stagnanti di Unisannio... Una "boccata d'aria fresca", come detto nell'articolo.
    Ciao,
    Ivan
  18. Hamen 02.02.08 / 16PM
    Salve, il nostro articolo non vuole essere un "wow che bello ruby, che figo ruby, f*ck everything else". E' il semplice racconto di una esperienza di vita piuttosto difficile da ottenere in ambito universitario. Per il nostro esame abbiamo avuto la fortuna di avere un docente piuttosto "giovane", soprattutto mentalmente. La nostra e' stata una sfida contro il tempo e contro le abitudini didattiche ad Unisannio. Io sono per "ad ognuno il suo". Potete programmare in quello che vi pare e leggere gli articoli che volete. Lascete a noi la stessa liberta' di raccontare la nostra piccola vittoria, piu' simbolica che altro. Abbiamo smosso le acque stagnanti di Unisannio... Una "boccata d'aria fresca", come detto nell'articolo.
    Ciao,
    Ivan
  19. Hamen 02.02.08 / 16PM
    Salve, il nostro articolo non vuole essere un "wow che bello ruby, che figo ruby, f*ck everything else". E' il semplice racconto di una esperienza di vita piuttosto difficile da ottenere in ambito universitario. Per il nostro esame abbiamo avuto la fortuna di avere un docente piuttosto "giovane", soprattutto mentalmente. La nostra e' stata una sfida contro il tempo e contro le abitudini didattiche ad Unisannio. Io sono per "ad ognuno il suo". Potete programmare in quello che vi pare e leggere gli articoli che volete. Lascete a noi la stessa liberta' di raccontare la nostra piccola vittoria, piu' simbolica che altro. Abbiamo smosso le acque stagnanti di Unisannio... Una "boccata d'aria fresca", come detto nell'articolo.
    Ciao,
    Ivan
  20. EL dobre 02.02.08 / 16PM
    @Majanovic: beh non so se ci sono delle rating list, ma so solo che il programma funziona quando ti fa guadagnare e quando riesce a battere i giocatori bravi....... ^^
  21. FC 02.02.08 / 16PM
    Grande ragazzi! Queste si` che sono soddisfazioni!
  22. aleks 02.02.08 / 16PM
    Sono un archeologo riciclato come programmatore. Dopo anni a lavorare con Delphi, Php e poco altro, sto spostandomi sullo sviluppo web. Ho appena cominciato a scoprire Ruby, e fa piacere leggere una storia come questa. Non mi sarebbero dispiaciuti i dettagli tecnici, ma in rete non manca la documentazione. Questo post conferma la buona impressione che ho avuto del linguaggio in sé e del framework. Purtroppo al lavoro non ho molto spazio per usare le nuove conoscenze, né il tempo per 'studiare' nuove procedure, per cui questa lettura mi tiene su il morale per continuare a lavorare fino a tarda notte.
  23. Reggie 02.02.08 / 16PM
    Per dar man forte ai ragazzi ecco il mio spezzone di esperienza. Anch'io come altri ho avuto la possibilità di sperimentare Ruby all'interno dell'ambito universitario, questo più di 2 anni fa, quando Rails non era ancora molto, ma faceva già intravedere le sue grandi possibilità. Beh... posso dire che un professore 2 anni fa per il corso di laboratorio di basi di dati aveva presentato Rails in questo modo: "chi vuole usare un nuovo framework per creare in un modo semplice e veloce web applications?". Beh a quel tempo solo 2 gruppi (su 15) lo utilizzarono portando a termine il lavoro. Morale della favola... ora il proff chiede di usare Ruby e Rails, quasi obbligando gli studenti (ma ha la bontà ed intelligenza di lasciare libertà di scelta). Come detto dagli autori "una boccata d'aria fresca"!

Have your say

A name is required. You may use HTML in your comments.