Archive

Posts Tagged ‘java’

Patterns in ruby: strategy

Abbiamo visto il template method pattern, un’ottima soluzione per variare una parte di algoritmo (nel caso visto in base alla tipologia di gioco, Omaha o Texas Hold’em). Il problema principale del template method è che si basa sull’ereditarietà: è la classe padre che richiama i metodi specifici della classe specializzata.

Lo strategy pattern non fa uso di ereditarietà, ma delega la parte di algoritmo che varia ad un’altra classe (o in ruby molto spesso un modulo) che verrà incluso nella classe contesto. Ecco lo stesso esempio usato per il template method rivisto con lo strategy pattern: Read more…

Patterns in ruby: template method

Sui patterns della gang of four books si trovano spesso testi e implementazioni su linguaggi come java o c++, ma gli stessi pattern implementati in ruby sono molto più eleganti e meno prolissi,  questo grazie alle potenti caratteristiche che offre il linguaggio. Ho intenzione di scrivere alcuni post sul blog relativamente all’implementazione in Ruby di questi patterns.

Il template method pattern viene usato quando in un determinato algoritmo una o piu parti devono poter cambiare. Ad esempio in un progetto realizzato qualche tempo fa per la gestione di partite di  poker dovevo variare alcune parti della logica in base al gioco specifico Omaha o Texas Hold’em. Read more…

back to java 2 years later

Sembra di guidare un tir con rimorchio nelle stradine di centro città.. ovviamente è anche pieno di traffico e piove :)
come dice Stefano Guglielmetti: “La bellezza di Ruby sta, a mio giudizio, nel rispetto delle cose semplici. Ovvero, non introduce fattori moltiplicatori di difficoltà in stile “Rendere difficile il facile attraverso l’inutile”, per dirla come farebbe mia madre”.

COMET – un passo avanti Ajax

Ogni tanto mi piace anche scrivere qualche post relativo al mio lavoro, eccone uno.
Mi sono ritrovato a dover realizzare un’applicazione di carattere finanziario, in particolare si tratta di un software di simulazione (al momento ci limitiamo a quella) di sistemi di Trading per il Forex da inserire nella competition di Trade2Win. Data la particolare natura del sistema è strettamente necessario che vi sia la minor latenza possibile tra il recupero delle variazioni dei prezzi (interroghiamo la sorgente ogni secondo circa) e l’interazione dell’utente che sceglie di effettuare un’operazione. AJAX è parso immediatamete non sufficiente, visto che il suo utilizzo sincrono deve effettuare un polling e per tenere sincronizzati valori, che si aggiornano potenzialmente ogni secondo, saremmo costretti a dover effettuare una richiesta ogni mezzo secondo, con conseguente impegno di banda e risorse.
Sono convinto che soluzioni come Flash o Java siano ormai superate: siamo nel web 2 (e anche qualcosina di più) !!
Cosi le ricerche sono continuate in cerca della soluzione ideale.
Il risultato è COMET: un’evoluzione di Ajax (perdonatemi il paragone!) che permette di mantenere i dati sincronizzati in real time senza bisogno di polling. L’idea non è nuova, se ne parla già da un paio di anni, ma le reali implementazioni sono tutt’oggi pochissime. Comet è attualmente utilizzato all’interno di Gmail per l’applicazione Gtalk ed un paio di altre implementazioni IM via web. Comet necessita di un server apposito per la comunicazione client-server, le implementazioni libere degne di nota sono: Cometd a cui lavora anche Alex Russel (colui che ha coniato il termine Comet), Meteor server scritto in perl, Orbited scritto in python.

Esistono anche alcune implementazioni commerciali, che non intendo elencare qui e che in ogni caso ho deciso di scartare. Le ragioni sono sempre le stesse, la prima tra tutte è che essendo Comet una tecnologia estremamente giovane non mi sento di affidarmi ad una società che domani potrebbe non esistere più oppure semplicemente non darmi ciò di cui ho bisogno, ho bisogno di una soluzione libera che mi dia certezza e tranquillità.
Nei prossimi giorni cercherò di aggiornare il blog con contenuti tecnici relativi a questa tecnologia riportando qualche esempio e qualche soluzione reale.