Com\’è dura la professione!

3 Maggio 2007

ApacheDS, server LDAP da Apache (e LDAP Studio)

Filed under: Java,Open Source,Programmazione — lbell @ 20:27

Qualche giorno fa è stato rilasciata una nuova versione (1.5) di ApacheDS, un server LDAP scritto interamente in Java. LDAP è ormai diventato centrale nel mondo IT per la gestione delle identità degli utenti in ambienti di una certa complessità. Microsoft vi ha decisamente puntato, mentre il mondo Open Source è un po’ più statico a questo riguardo.

ApacheDS, server nato da un progetto Apache, ha diverse caratteristiche interessanti: è scritto in Java, è embeddable, estensibile, supporta filtri, trigger (che possono implementare integrità referenziale) e stored procedure.

Sono previsti tool di configurazione per semplificare la vita agli utilizzatori ed esiste già uno strumento, LDAP Studio basato su Eclipse che, oltre a permettere la navigazione dei dati, può editare gli schemi (e presto modificare direttamente ads) e presto avrà altre funzionalità specifiche per ads.

Sul sito (http://directory.apache.org) ci sono guide e tutorial.

A dire la verità dopo alcune prove, ho riscontrato qualche problema con il consumo di memoria. La quantità di memoria consigliata e di default è di 384MB ( da settare nel file di gestione del servizio) ma sulla mia macchina con solo 512MB con tale valore ads non è riuscito a partire causa allocazioni fallite. Ho dovuto abbassare il limite ad un più ragionevole 128 MB per avere la soddisfazione di vederlo partire.

Oltre al sito del progetto si può trovare una presentazione sul sito della conferenza europea di Apache 2007 http://www.eu.apachecon.com/

LDAP Studio

2 Maggio 2007

Velocizzare il caricamento delle pagine web

Filed under: Programmazione — lbell @ 20:44

Uno dei problemi principali di lentezza del caricamento delle pagine web è dovuto alla miriade di immagini e script che le costituiscono. Se le immagini in qualche modo possono essere memorizzate in cache senza eccessivi problemi, lo stesso non si può dire degli script. Un interessante post si trova anche sul sito di YUI.
I meccanismi di caching dei browser non sono sufficienti a garantire la flessibilità necessaria agli sviluppatori di applicazioni dinamiche, cioè contenenti molto Javascript che cambia spesso per l’aggiunta continua di nuove funzionalità. Le applicazioni Web 2.0 (o più prosaicamente, più recenti) sono farcite di script e funzionalità lato client. Dopo un esame effettuato su alcune pagine di test con un plugin di Firefox che tiene traccia dei tempi di caricamento della pagine web e dei singoli componenti (immagini e script in primis), la cosa che si nota è che dovendo caricare diversi file Javascript il browser tenta una connessione TCP per ciascuno di essi per verificarne la consistenza con la copia memorizzata nella cache durante gli accessi precedenti. Qualche soluzione la si può tentare

  • Gestire la scadenza dei file della directory degli script tramite il server web o un suo modulo, come pure di impostarla tramite un nostro modulo apposito (ma in questo caso si perderebbe la possibilità di pubblicare diverse modifiche in uno stretto intervallo temporale e la configurazione sarebbe più complicata)
  • Unire tutti i piccoli file in uno solo
  • Dividere i file statici su nomi di server diversi, in modo da poterli scaricare in parallelo, data la limitazione dei due collegamenti per sito di HTTP/1.1

La cache però non permette però allo sviluppatore di sostituire i file dell’applicativo quando vuole. Se infatti vi è la necessità di aggiornare gli script introducendo nuove funzionalità può darsi che il browser continui ad usare le vecchie versioni. Per essere sicuri che il browser ricarichi i file, possiamo appendere al nome del file un punto di domanda, trasformando l’accesso in una richiesta GET, ma a questo punto perdiamo ogni vantaggio di cache.

Firebug plugin

Unendo e compattando i file si obbligano gli sviluppatori ad usare due versioni diverse dei file di script generando difficoltà di debug, specie in fase di produzione, dove è spesso una necessità intervenire rapidamente.

Una soluzione che sembra più semplice e che toglie la gestione della cache dall’amministratore di sistema per rimetterla nelle mani dello sviluppatore potrebbe essere gestire in ogni elemento che contenga un link, un token di versione. Il browser potrebbe controllare la versione del sorgente senza un ulteriore accesso per ogni script referenziato poiché la versione viene ‘offerta’ direttamente dallo HTML. Quando lo sviluppatore varia uno o più file necessita solamente di aggiornare il token, cosa che può essere benissimo eseguita da un IDE (o uno script).

Forse i file Javascript che si tende ultimamente ad utilizzare sono troppi, ma la tendenza per chi vuole generare codice modulare, orientato agli oggetti, testabile e manutenibile è questa per tutti gli altri linguaggi, perché non lo deve essere per gli script della applicazioni web? In fondo per tornare al vecchio sistema basterebbe eliminare il token di versione.

Blog su WordPress.com.