Posts Tagged ‘ ruby

Alcune librerie interessanti in Ruby

Ultimamente ho trovato molto utili o interessanti queste librerie:

Ruby Graph Library
Implementa una struttura dati a grafo, sulla quale e’ possibile applicare tutti gli algoritmi piu’ comuni sui grafi. Ogni istanza nodo possiede i metodi per aggiungere archi e collegare altri nodi, per gestire vertici, e ciclare sul grafo (anche l’iteratore non e’ ottimizzato)

Skynet
Skynet implementa MapReduce di Google. MapReduce e’ un modello di programmazione e di elaborazione di dataset enormi. Ecco come Google vi da istantaneamente i risultati della vostra ricerca su un database che rappresenta gran parte di internet. Grazie a questa libreria e’ possibile eseguire processi paralleli su piu macchine. Non solo, estendendo ActiveRecord permette facilmente di utilizzare MapReduce nella vostra applicazione Rails.

RubyProf
RubyProf e’ un profilatore delle applicazioni scritte in Ruby, evidenzia i colli di bottiglia e permette di analizzare, attraverso i grafici prodotti, le prestazioni di un determinato segmento di codice.

Bye
Piero

Ruby: Getting current method name

In ruby 1.9 è possibile utilizzare la variabile __method__ per ottenere il nome del metodo attualmente chiamato. In ruby 1.8 non esiste un modo diretto per accedere al nome del metodo ma è possibile accedere alla variabile caller che, tra le altre informazioni, contiene il nome del metodo chiamante (tips trovato su internet). Ecco come creare un metodo funzionante su entrambe le versioni:

def method_name
if RUBY_VERSION.to_f < 1.9
caller[0]=~/`(.*?)’/
$1
else
__method__
end
end

Se chiamerò da un metodo foo() method_name otterò sempre ‘foo’

Installazione gem mysql su MacOS X

Quando attivi Mongrel su una macchina MacOS X (Intel) puoi avere questo messaggio:

“WARNING: You’re using the Ruby-based MySQL library that ships with 
Rails. This library is not suited for production. Please install the 
C-based MySQL library instead (gem install mysql).”

L’installazione corretta della gemma mysql è la seguente:

sudo env ARCHFLAGS=”-arch i386″ gem install mysql — –with-mysql-config=/usr/local/mysql/bin/mysql_config -with-mysql-dir=/usr/local/mysql

Ruby e Del.Icio.Us per Spotlight

Forse avrò scoperto l’acqua calda amici rubysti e maclover, ma questo importer/plugin per spotlight è veramente comodo.

Per chi fosse uno utente windows Spotlight è una utility straordinaria di MacOs che permette di cercare in pochissimi istanti un file, esso sia sul disco o sulla rete, basandosi non solo sul nome del file ma anche sul suo contenuto. L’indicizziazione avviene per una gran moltitudine di formati, dai semplici file di testo, alle mail, ai pdf, ai file OpenOffice/Office/iWork, ecc… (ovviamente questa cosa è stata mal copiata in windows vista)

Questo plugin permette di:

“Extracts metadata including modules, classes, methods, text and comments from Ruby scripts. Use Spotlight to search for every source file that references a particular class, or search for a comment you know you added to a particularly interesting method whose name you can’t remember.” (apple)

Clicca qui per la pagina di download sul sito di apple

Se invece siete utenti dell’utilissimo del.icio.us esiste anche l’importer per la famosa piattaforma di shared bookmarking: Delimport

Ciao Piero

Una shell Ruby

Per chi non seguisse la Mailing List nazionale di Ruby, un utente questa mattina ha segnalato l’esistenza di rush, una shell unix con sintassi Ruby.

Dedicata ai ruby-maniacs e ispirata alla M$ PowerShell di .NET utilizza il paradigma object oriented come punto di forza nella sintassi.

L’ho subito provata, mi è sembrata un po’ scomoda (ad esempio non si ha il concetto di CWD, che viene rimpiazzato da una istanza di un oggetto directory che possiede i metodi classici tipo ‘ls’).

Questa shell potrebbe essere molto comoda da integrare nella console Rails o in Capistrano…

La potete installare come gemma seguendo le istruzioni su

http://rush.heroku.com/

e leggere una migliore recensione su infoQ

http://www.infoq.com/news/2008/02/rush-oop-shell

10 Things Every Java Programmer Should Know About Ruby

Sul sito Ruby-doc sono riportate le slides di Jim Weirich alla Open Source Conference del 2005 riguardo a ruby.

Sono molto interessanti e utili, la lettura non porta via più di 10 minuti…

Il link è questo

Il blog di Weirich è questo

Compile Time? Runtime? Anytime!

Una delle prime domande che mi viene posta quando parlo di Ruby a qualcuno è ‘come viene compilato il codice?”

In parte rispondo con la pagina 400 del libro ‘Pragmatic Ruby Programming 2nd edition’ di Dave Thomas (che consiglio vivamente di acquistare)

“The important thing to remember about Ruby is that there isn’t a big difference between
‘compile time’ and ‘run time’. It’s all the same. You can add code to a running process.
You can redefine methods on the fly, change their scope from public to private, and
soon. You can even alter basic types, such as Class and Object.
Once you get used to this flexibility, it is hard to go back to a static language such as
C++ or even to a half-static language such as Java.
But then, why would you want to do that?”

Il grande vantaggio di Ruby è la possibilità di modificare e aggiungere metodi a runtime. Come è possibile questo?

Cominciamo col dire che, similmente a SmallTalk, per ruby ogni cosa è un oggetto con i suoi metodi, dal numero alla stringa, non come avviene in Java dove, ad esempio, abbiamo i tipi primitivi privi di metodi.

In un linguaggio OO standard gli oggetti vengono identificati dalla classe che ha istanziato l’oggetto stesso, as esempio un oggetto di tipo String in java sarà istanziato da una classe String. In ruby il tipo degli oggetti viene identificato in base ai metodi che possiedono. Ecco che grazie a questo abbiamo librerie come ActiveRecord (lo strato ORM di Rails) che senza scrivere quasi una riga di codice e senza scrivere metodi di accesso ai campi di una tabella ti permette di interrogare il database. Tutto viene fatto in automatico, a runtime.

Imparare a fare i test con Rails

Stiamo finalmente affrontando lo sviluppo con i test (Piero dirà: Era ora!!!). Una buona guida si trova QUI.

Da una certa soddisfazione vedere che il codice che scrivi è più robusto e che può essere sottoposto a stress per vedere come si comporta e scoprire che si comporta bene!

Rails 2

Sto aggiornando le ruby gems sul mio mac e ho appena avuto una sorpresa: Rails 2!

La mia applicazione che sto sviluppando non lamenta di warning, ora farò la prova del nove :D

Di ritorno dal Rails to Italy

Rieccomi qui, dopo due giorni di Rails To Italy all’università di Pisa.Rails to Italy è stata la prima conferenza italiana improntata su Ruby On Rails, il framework per lo sviluppo agile di siti internet e applicazioni web.

Sono stati toccati diversi argomenti, da piccoli e fantastici plugins (Widgets e inPlaceGlobalize) al futuro del Web semantico (Web 2.0…. o 3.0?). In oltre è stata un occasione per rincontrare amici e conoscenti del mondo agile (da Torino a Bologna passando per Milano).

Federico ha presentato, suscitando diverso interesse tra il pubblico, il progetto Wikimaps (sviluppato da lui e Max), è tempo di far crescere questo progetto!

La conferenza nel complesso è stata veramente ben organizzata, magliette, cartellette, buffet, social dinner (peccato non esserci stato) hanno contornato i numerosi key-speaker tra cui Zed Shaw (autore del server Mongrel) e Thomas Fuchs (autore di Script.aculo.us).