Archivio per il mese di marzo 2006



Ruby e .NET, due mondi che si incontrano

Negli ultimi mesi ho notato un crescente interesse nei confronti di Ruby da parte della community di .NET a livello mondiale e non posso non essere contento per questa crescente popolarità, anche perchè solitamente interessamenti di questo tipo portano quasi matematicamente alla ricerca di soluzioni per ottenere l’integrazione più o meno diretta di due mondi a volte anche molto diversi tra loro, proprio come nel caso di Ruby e del CLR. Negli ultimi giorni anche sul main-feed dei blog ospitati da UGIdotNET sono arrivati dei post a riguardo con i messaggi di Marco Trova e Diego Guidi, proprio in concomitanza con il rilascio di una nuova versione (molto alpha) di RubyOnCLR da parte di John Lam. Si tratta di un bridge che permette agli sviluppatori di caricare dinamicamente assembly .NET all’interno dei proprio script in Ruby e di utilizzare classi e metodi di questi ultimi in maniera totalmente trasparente, proprio come se fossero classi o moduli di Ruby stesso, sfruttando l’espressività e la produttività di questo linguaggio. In più Michele Bersani segnala anche Ruby.NET, in questo caso però non si tratta di un bridge ma di un vero e proprio compilatore per Ruby che produce codice CIL e che quindi permette l’esecuzione degli script attraverso il CLR di .NET, un po’ come nel mondo Java accade con JRuby già da un po’ di tempo. L’interesse c’è, le iniziative anche… staremo a vedere! Intanto nelle prossime ore finalmente giocherò un pò con RubyOnCLR che per me si prospetta particolarmente interessante nell’ottica del riutilizzo di librerie in .NET custom sviluppate in ufficio e di cui spesso sento la mancanza nei miei script in Ruby. Inutile dire che seguiranno a breve ulteriori post sull’argomento.

UPDATE: anche Abhinaba sul suo blog parla di Ruby.NET in un suo messaggio, riportando tra l’altro un link che dimostra l’attenzione sempre più crescente da parte di Microsoft nei linguaggi dinamici.

WordPress 2.0.2 – Aggiornamento di Sicurezza

Con questo messaggio di ieri, il team di sviluppo di WordPress ha annunciato il rilascio della versione 2.0.2 caratterizzata principalmente da un aggiornamento di sicurezza abbastanza importante e da qualche risoluzione di bug. E’ consigliabile per chiunque usi WordPress di effettuare l’aggiornamento appena possibile, del resto non porta via molto tempo e nel caso di questo blog ha richiesto non più di 20 minuti con backup e controllo dei plugin e temi.

Espressioni regolari: sì grazie

L’altro giorno ero presso la sede della società che detiene l’azienda per cui lavoro e stavo aggiornando un applicativo intranet sviluppato quasi 4 anni fa in ASP 3, piattaforma con cui ancora oggi i miei colleghi realizzano le applicazioni della intranet di sede. Appena completata l’opera di aggiornamento sono stato colpito da una domanda posta a bruciapelo, di quelle che iniziano con: “senti, tu come faresti a fare…”.

Il problema presentava una stringa di input contenente dei valori percentuali e del testo descrittivo ad accompagnarli, senza però alcun tipo di carattere di intervallo o di ritorno a capo ma solamente uno spazio come se si fosse trattato di una frase unica. Si richiedeva una maniera semplice per far sì che ogni valore percentuale fosse preceduto da un ritorno a capo in HTML, quindi un <br />. La mia risposta è stata immediata e quasi istintiva: “con una semplice espressione regolare!”. Non mi ero nemmeno preoccupato di ricordarmi se ASP 3 le supportasse o meno, prima ho risposto e poi ci ho pensato (comunque sì, ASP le supporta). Le espressioni regolari risultano spesso sconosciute oppure al contrario vengono addirittura evitate di proposito perchè considerate troppo complesse da creare e da utilizzare, nella realtà però sono uno strumento che in moltissimi casi può tornare particolarmente utile e io le considero pressochè indispensabili. Proviamo a risolvere il problema con una RegEx in Ruby:

Leggi il resto di questo messaggio »

Chiaro, Semplice, Ruby.

Nonostante conosca Ruby ormai da qualche anno, a volte mi sorprendo ancora di fronte alla disarmante semplicità e immediatezza di questo linguaggio e mi capita principalmente quando lo riprendo dopo diverso tempo passato quasi esclusivamente con C#, PHP o JavaScript. Oggi stavo facendo qualche esperimento con una libreria IRC in Ruby con lo scopo di abbozzare un piccolo bot attraverso l’architettura a plugin della libreria in questione (Nadoka, per la cronaca) e mi si è presentata la necessità di aggiungere gli utenti presenti in un canale all’interno di una lista globale. Il protocollo IRC prevede il comando NAMES che permette di ottenere per il canale specificato una stringa contenente i nickname degli utenti separati da spazi, per raggiungere il mio scopo è bastato scrivere:

users_string.split(' ').each do |user| @chan_users << user unless @chan_users.include? user end

Basta leggere ad alta voce il codice per capirne il significato: prendo la stringa degli utenti e la suddivido in base al carattere spazio, poi aggiungo ogni utente ricavato alla mia lista globale (@chan_users in questo caso) a meno che non sia già presente all’interno della stessa. Se poi siete degli estimatori degli one-liner nulla vi vieta di scrivere il tutto sulla stessa riga:

users_string.split(' ').each { |user| @chan_users << user unless @chan_users.include? user }

Conciso, chiaro e immediato. Caratteristiche che nascono nel cuore di Ruby e si propagano fino alle sue librerie e quindi ai nostri script, permettendoci finalmente di programmare in maniera rapida e pulita ma soprattutto divertendoci. Siete ancora scettici? Non c’è problema, avrete molte altre occasioni per ricredervi con i messaggi che seguiranno in futuro, ma visto che i fatti valgono più delle parole nel frattempo provate a implementare lo stesso esempio in un linguaggio di vostro gradimento e poi confrontate il risultato ottenuto :-)

PS: l’unica differenza tra la versione estesa e quella su una riga dell’esempio riportato risiede nel modo in cui viene chiusa la closure, nel primo caso con do … end e nel secondo con { … }. In realtà non vi è alcuna differenza ma si tratta molto banalmente di una convenzione secondo la quale le parentesi graffe sono da utilizzare quando la closure si sviluppa su una singola una riga, altrimenti è preferibile do … end.

Ora il blog è veramente XHTML 1.0 Transitional

Nella fase di validazione delle pagine di questo blog tramite il Markup Validation Service del W3C ho trovato un mio errore nella composizione della sidebar ma anche un piccolo baco dell’engine di WP. Il link Commenti riportato alla fine di ogni messaggio presenta l’attributo title valorizzato con la frase standard “Commenti a ….” e il titolo del messaggio relativo, tuttavia sembra che WP non si preoccupi di effettuare una conversione di eventuali entità html presenti nel testo. Facendo un esempio, che poi è in realtà proprio quello che mi è capitato, eventuali doppi apici presenti nei titoli dei messaggi non vengono sostituiti da WP con &quot; e questo è un errore poichè non è permessa la presenza del carattere dei doppi apici nella valorizzazione di un attributo XHTML. Per sistemare la situazione ho fatto una lieve modifica alla funzione comments_popup_link presente nel file comment-functions.php, filtrando il testo dei titoli dei messaggi con la funzione PHP htmlentities prima che esso venga inserito nel valore dell’attributo title. Ora il validatore del W3C è decisamente più contento, dicendo che “This Page Is Valid XHTML 1.0 Transitional!“. Prossimamente proverò a passare da XHTML 1.0 Transitional a XHTML 1.0 Strict, vedremo come andrà a finire.

Colonna sonora: “Season’s Call” – HYDE