Eh si, ho scritto veramente poco ultimamente...sono giustificato pero': ho lavorato parecchio.

In ufficio ho da seguire il solito $MegaApplicativoGlobale , una bestia multiforme MSSql+ASP+AJAX+tantealtrecose che muta continuamente nella forma e nelle specifiche (la data di consegna della primissima versione gravita intorno alla meta' di dicembre...vedremo...:-P), mentre i miei lavoretti di 'libero consulente' mi hanno permesso (grazie ai tempi di consegna piu' 'dilatati') di sperimentare.

La cellula primitiva di $MegaApplicativoGlobale nasce da una serie di esperimenti (qui e qui) nei quali mi divertivo in delle web applications a dividere nettamente il livello client da quello server.

Viavia ho sviluppato una serie di componenti lato server e funzioni in javascript che mi permettessero di mandare avanti e indietro dati tra client e server in maniera asincrona utilizzando l'XML (non mi e' nuova questa tecnologia, vero? :-D).

In breve sono arrivato a un mio personale 'standard' di sviluppo: per quanto riguarda l'accesso ai dati un unico componente lato server che accetta come parametro una stringa sql e restituisce una struttura XML contenente i dati restituiti dal DataBase.
Ho sviluppato il suddetto componente sia in ASP che in PHP...piu' avanti capirete perche'.

Sul livello client sono presenti una vasta gamma di funzioni che accolgono la struttura XML inviata dal server, la elaborano e presentano sulla pagina (viva il DOM e chi lo creo') i dati in varie forme (tabelle, comboBox ecc...).

Aggiungendo alle funzioni per la manipolazione dei dati un po' di codice per modificare degli elementi della pagina mi sono trovato tra le mani un accrocchio che ho scoperto essermi parecchio utile: essendo il componente lato server per l'interfacciamento con il database uno solo, convertendolo in altri linguaggi e adattandolo ad altre piattaforme mi sono trovato nella possibilita' di sviluppare una applicazione web su MSSql+IIS+ASP e portarla a girare su una piattaforma MySQL+Apache+PHP praticamente senza modificare niente...:-D

Quindi, mentre il $MegaApplicativoGlobale ha continuato a crescere, acquisire nuovi arti e teste e perdendone altrettanti come un'Idra geneticamente modificata ogni qualvolta uno dei $personeInAltoConAltoPotereDecisionale gli desse uno sguardo, ho proseguito i miei esperimenti Ajax-oriented portando il mio personale 'framework' a una maturita' tale che mi ha permesso di utilizzarlo per sviluppare un discreto gestionale web interamente 'web 2.0', installato al cliente pochi giorni fa (sulla rete interna, nonsu internet, sia ben chiaro!) senza che fino ad ora il cliente suddetto segnalasse problemi di sorta (mai dire mai!).

In questo fine settimana, trovandomi un po' di tempo libero e voglia di spippolare ho preparato un semplice sistema di gestione dei Trouble Tickets che ho in programma di far utilizzare in futuro ai miei 'clienti', sempre basato su quello che ormai sono solito identificare come KAjaxFramework: la K in questione non ha niente a che vedere con il ben noto KDE, e' semplicemente una naming policy che utilizzo per battezzare le mie creazioni, retaggio di una adolescenza bruciata su internet e per la precisione su IRC, sfoggiando un nick molto l33t avente come iniziale proprio la lettera K.

Il KTroubleTicketSystem, effettivamente non piu' che una demo delle potenzialita' dell'ancora acerbo framework, lo potete trovare seguendo questo link (ho creato un 'account cliente' di test, potete accedere utilizzando 'test' come user e pass), mentre se avete abbastanza fegato, potete dare uno sguardo ai sorgenti del KAjaxFramework scaricandoli da qui, ma vi avverto: NON esiste ancora documentazione, i commenti sul codice sono pochi e confusi.

Per farla breve, il metodo di sviluppo e' abbastanza semplice:

  • Realizzare i vari 'form' in html+css, avendo cura di posizionare dei <div> come placeholder nei punti in cui dovranno apparire componenti legati ai dati generati dal substrasto javascript

  • Realizzare una home page che conterra' le interfacce sviluppato al punto precedente sempre con il metodo dei <div> utilizzati come 'segnaposto'

  • Caricare (lato client) con la funzione loadForm del framework i form e popolarli con i dati pescati dal database utilizzando le funzioni preposte (funzioni che e' possibile utilizzare anche per la procedura inversa).


Probabilmente e' molto piu' facile da vedere all'opera che da spiegare...il KTroubleTicketSystem e' li apposta...:-)
Quando riusciro' a trovare il tempo necessario a ripulire il codice, scrivere la documentazione e sopratutto realizzare un sistema decente di sicurezza (se mal configurato puo' permettere ad un utente con buoni skills di trovare il modo di modificare i dati sul DB scavalcando senza colpo ferire eventuali controlli) probabilmente registrero' il progetto su SourceForge, ma fino a quel momento prendetelo come un semplice 'esercizio di stile'. :-)