Visualizzazione post con etichetta web. Mostra tutti i post
Visualizzazione post con etichetta web. Mostra tutti i post

venerdì 13 aprile 2007

Costruisciti il tuo Google. Oggi.

Finalmente, dopo mesi di "relax", è stata rilasciata la versione 0.9 di Nutch.

Nutch è l'implementazione (naturalmente in Java) di un motore di ricerca completo, basato sull'architettura di Google.

Il progettone include quindi un crawler, un sistema di indexing (basato su Lucene 2), un'implementazione dell'algoritmo di PageRank efficiente (il modello di Markov è risolto online, senza costruire in memoria alcuna matrice delle probabilità) e un sistema parallelo di searching sugli indici, tipicamente da consultare via servlet.

La parte più affascinante di Nutch è l'architettura concepita per lavorare in un cluster arbitrariamente grande di macchine e ispirata al paradigma Map/Reduce usato da Google.

Dopo la versione 0.6 di nutch il motore di Map/Reduce è stato implementato in un progetto a parte, chiamato Hadoop (giusto per la cronaca: i nomi li sceglie il capoprogetto ascoltando i mugugni del suo bambino mentre gioca, Hadoop è il nome del suo elefantino).
Il grosso del lavoro fatto in questi mesi è stato principalmente su Hadoop, ed è solo per questo motivo che i progressi di Nutch sembravano congelati.

Il capoprogetto di tutta la baracca e Doug Cutting, creatore di Lucene e attualmente dipendente di Yahoo. Partecipano al progetto molti programmatori di Yahoo e altra gente particolare come alcuni personaggi del JPL Nasa di Pasadena (quelli dei robotini andati su marte).

Hadoop infatti è sia un framework generico di computazione distribuita molto potente, che un file system distribuito efficiente e fault-tollerant liberamente ispirato al Google File System GFS. Va da sè che Hadoop può essere utilizzato per qualunque sistema di calcolo su terabyte di dati, a patto che che gli algoritmi siano disegnati secondo un paradigma Map/Reduce.

Ultima chicca: Nutch sarà il cuore di Wikia, il motore di ricerca libero che stanno costruendo i signori di wikipedia.


P.S. Attenzione, Nutch è un po' macchinoso da installare. La prima volta seguite passo passo questa pagina per evitare di farvi male

P.P.S. Potrebbe venirvi la voglia di creare un cluster con delle macchine virtuali (come feci io qualche mese fa)..... sappiate che l'overhead vi deluderà. Nutch inizia a pompare ferocemente dalle 3-4 macchine fisiche in su ;)

mercoledì 4 aprile 2007

Tomcat 6 e le 16.000 connessioni concorrenti

Segnalo questo articolo sulle performance di Tomcat 6.
L'articolo descrive la nuova architettura di gestione delle connessione basata su NIO e java.concurrent.

Inoltre vengono illustrati i risultati di un test di stress comparato tra Tomcat, Jetty e Glassfish.
Tomcat svetta riuscendo a mantenere 16.000 connessioni keepalive contemporaneamente.
Impressionanti anche i tempi di accettazione di 4000 connessioni.
Tomcat le accetta praticamente senza ritardo, mentre gli altri due s'inceppano...

Non mi ero mai interessato a questo tipo di misura, ma immaginavo (sbagliando) che si riuscissero a gestire numeri molto più piccoli con un solo server.

martedì 3 aprile 2007

Due notiziette per GWT e Hibernate

Oggi son di corsa e vi lascio solo due notiziole mignon.

Hibernate

E' stata rilasciata una nuova versione (minor) di Hibernate, la 3.2.3ga
Le novità sono:

  • due nuovi generatori
  • la certificazione per il database Teradata (non l'avevo mai sentito prima...)
  • i soliti fix
Chiaramente se usate 3.2.x in qualche progetto, vi basta sostituire il jar con quest'ultimo per fixare i bug.

GWT

Dan Morrill, dello staff del Google Web Toolkit, ha scritto un interessante articolo sulla sicurezza per applicazioni ajax in GWT.
Sinceramente non ho ancora trovato il tempo di leggerlo completamente, ritornerò sull'argomento uno dei prossimi giorni.

Bye!

lunedì 2 aprile 2007

GWT 1.4: upgrade massivo in arrivo

Introduco rapidamente GWT per chi non lo conoscesse. Google Web Toolkit è un progetto opensource portato avanti da uno staff Google che consiste in un compilatore Java-to-Javascript e un insieme di componenti pronti all'uso.

Tallono costantemente l'avanzamento dei lavori, in quanto credo sarà uno dei framework che vincerà la pazza corsa verso lo standard de facto delle tecnologie Ajax.

In GWT l'interfaccia grafica viene realizzata in Java puro, in stile simil-Swing. Quindi i componenti grafici sono classi, il pattern observer è usato per gestire gli eventi, eccetera eccetera. In più, sono stati introdotti altri adattamenti al mondo dei browser, come le chiamate asincrone al web server e il wrapping del javascript.

Il vantaggio di GWT è che la programmazione è fatta in Java ed è quindi sottoposta a compilazione, per cui tutti i controlli di tipo sono strong e, inoltre, potendosi avvalere di un IDE standard (leggi Eclipse) è possibile costruire codice solido e complesso con facilità.
GWT fornisce inoltre un viewer, che altro non è che un interprete, che consente di testare il codice graficamente prima ancora di eseguire la compilazione in Javascript definitiva.
Una volta compilato il tutto, invece, si ottiene una serie di javascript pronti da deployare sul web-server, già adattati ai vari browser e coincidenti con quanto testato con il viewer di sviluppo.

Il mio parere è che l'uso di un compilatore così concepito va a favore non tanto della velocità di sviluppo (ci sono librerie javascript fatte meglio per questo scopo), ma dello sviluppo di applicazioni complesse (da GMail in sù, per capirci).

Ci sarebbero altre cose su cui soffermarsi, come le modalità di serializzazione verso il server o l'interfaccia nativa verso javascript. Ma non voglio dilungarmi ancora in questa introduzione, in quanto lo scopo di questo post è avvicinarvi a me nell'attesa della versione 1.4 ;)

Infatti ,se la 1.3 non ha portato grandi nuove features, perchè è stata incentrata sul completo rilascio opensource della suite, la 1.4 sarà una versione features-rich.

Qui trovate il tracking delle modifiche in corso. Come potete osservare sono un'enormità anche se notevolmente in ritardo rispetto alla data di rilascio (marzo).

Per avere un'idea più rapida (ma non allineata su tutti i fronti) delle novità in arrivo, date un occhio alla pagina di progetto del wiki.

Credo manchi solo una cosa per il boom definivo, una maggiore attenzione sui meccanismi di deploy. Intendo cioè, task ant dedicati e maggiore integrazione con l'IDE e gli application server. Se avete provato a metterci mano, credo converrete con me nella "macchinosità" necessaria per compilare e deployare il tutto in un AS.

Se nel frattempo non vi va di compilarvi il trunk... Buona attesa! ;)

mercoledì 28 marzo 2007

Rilasciato JBoss Seam 1.2.1

Rilasciata la nuova versione di JBoss Seam: la 1.2.1

JBoss Seam è un framework opensource per la realizzazione di applicazioni web, che sposa in toto la filosofia EJB3.
Le singole pagine, le conversazioni, gli utenti, ecc ecc sono rappresentati come classi Java standard (i famosi POJO) decorate da alcune annotation. Quindi: no implementazioni di interfacce, pattern complessi o altre amenità. L'application server (in questo caso JBoss) si cura di realizzare a runtime, in modo efficiente, quanto si "dichiara" nelle annotation.

In quest'ultima versione è stata aggiunta la classica feature edit-save-and-refresh dei linguaggi web interpretati come PHP o ASP. Nel caso di JBoss Seam si traduce nella possibilità di modificare il codice java, ad esempio via Eclipse, e quindi ottenere la nuova applicazione con un semplice refresh del browser.

Seam farà molta strada.