Sperimentazioni, codici e creazioni per il web
Icona RSS Icona home
  • Anche Bino è su Twitter

    Pubblicato il 2 dicembre 2011 alberto Nessun commento

    Non l’ho ancora usato molto lo ammetto, anche perché non ho ancora capito profondamente bene come si usa ma devo ammettere che mi attira molto, sopratutto per le potenzialità future… di cosa sto parlando? Ma di Twitter, dove anch’io da un po’ ho un mio profilo venite tutti a seguirmi!

  • Ma Google+ sopravviverà?

    Pubblicato il 25 novembre 2011 alberto Nessun commento

    Sono iscritto a Google Plus da quando era ancora in Beta, ricordo l’euforia e la felicità per aver avuto l’invito alla beta, il fatto di potermi vantare con gli amici di essere iscritto e via dicendo…

    Ora ho fatto accesso così per caso e ho notato che l’ultimo post che appare sul mio wall è datato 24 agosto 2011, pochissimi tra gli amici nelle mie cerchie postano qualcosa… ho la sensazione che anche questo prodotto fare la fine di Google Buzz e Wave, asfaltati da Facebook, abbandonati da Google e chiusi in silenzio…

  • LinkedIn

    Pubblicato il 7 settembre 2009 alberto Nessun commento

    Da oggi ho anch’io un profilo su LinkedIn. Eccolo qua

  • Stay Away from Elgg

    Pubblicato il 28 marzo 2009 alberto 5 commenti

    Il titolo un po’ provocatorio di questo post vuole essere un monito nel caso qualcuno di voi abbia in mente di utilizzare Elgg per realizzare un social network, avendolo provato, modificato ed utilizzato sono in grado di spiegarvi quali sono i pro e i contro di questa scelta, ma andiamo per ordine…
    La mia ultima creazione (il sito di KeepON ndr) ha avuto un parto molto travagliato, avevo iniziato mesi fa’ lo sviluppo di un portale ad hoc, purtroppo però la mancanza di tempo libero e altri problemi non mi avrebbero permesso di ultimarlo in tempo per la presentazione già fissata da tempo.
    Dopo un po’ di ricerche e tentativi vari di trovare qualcosa di opensource già quasi pronto (sono stati vagliati diversi software tra cui Joomla, BuddyPress e altri), la scelta è ricaduta su Elgg dopo aver visto alcuni siti demo e aver letto in giro per la rete commenti entusiasti rispetto a questa soluzione…

    Dopo aver effettuato il download dal sito ho eseguito la procedura di installazione e subito è spuntato il primo problema, Elgg per funzionare richiede la versione 5.2.6 o superiore di PHP, sul nostro server in produzione è invece presente la versione 5.1.6, poco male mi sono detto, vedo quali funzioni non sono presenti nella 5.1.6 e le implemento con altre librerie come le PEAR o quelle dello Zend Framework.
    Ho passato diverse ore cercando nel codice funzioni quali “json_encode”, “json_decode” e altre funzioni presenti nella 5.2.6 per poi rendermi conto del fatto che Elgg non ne utilizza nessuna di queste ultime… è perfettamente in grado di funzionare sulla versione 5.1.6!!
    A questo punto rimuovo dal sorgente il controllo sulla versione di PHP e completo senza ulteriori problemi la procedura di installazione, aggiungo un primo utente che sarà quello dell’amministratore di sistema.
    La versione “core” di Elgg però è molto scarsa in quanto a funzionalità, queste ultime però possono essere ampliate mediante l’utilizzo di plugin creati dagli stessi sviluppatori del portale oppure da membri della community di sviluppatori e sostenitori che orbita intorno a questo software… dopo qualche ora di ricerca ho trovato circa 15 plugin che ho provveduto ad installare seguento pedestremente le istruzioni indicate all’interno dei vari README.txt distribuiti insieme ai sorgenti, e qui sono nati altri problemi.
    I plugin scritti dagli sviluppatori di Elgg funzionano quasi sempre (notare il “quasi”) mentre quelli della community sono pieni di bug e di conflitti tra di loro… per riuscire ad ottenere un sistema più o meno stabile ho impiegato diverse giornate di lavoro fixando manualmente il codice dove necessario (e qui mi scuso con Gesù, Dio e tutti gli altri santi per averli chiamati in causa spesso e volentieri), cercando eventuali fix nella documentazione scarsa o inesistente dei plugin infatti non vi era traccia di possibili soluzioni.

    Una volta ottenuto un portale più o meno stabile mi si è presentato davanti un altro problema, quello della localizzazione del sistema in italiano…
    Elgg come ormai la stragrande maggioranza dei CMS di questo tipo utilizza degli array per contenere le stringhe in tutte le lingue, le varie stringhe vengono poi visualizzate nella lingua desiderata utilizzando un’apposita funzione interna, fin qui tutto bene se non fosse che:

    • non tutte le stringhe del portale sono localizzate, ho dovuto infatti impiegare diverse ore a cercare nel codice le stringhe mancanti per localizzarle in italiano
    • il sito KeepON è nato per essere visualizzato in italiano, Elgg però durante l’installazione non si preoccupa affatto di questa scelta parsando TUTTI i file di lingua presenti nelle sue directory, caricando quindi in memoria tutte le stringhe in italiano, inglese, tedesco, spagnolo e così via causando un overhead pazzesco e assolutamente inutile… la soluzione è stata impiegare diverse altre ore di prezioso tempo per scovare ed eliminare brutalmente tutti i file di lingua diversi dall’italiano.

    Ero contento dopo quasi un mese di lavoro nel mio tempo libero (si, ho fatto questa pazzia nel mio tempo libero :) ) avevo finalmente un portale più o meno stabile al quale mancavano però parecchie funzioni quali la possibilità di creare delle “schede” per i concerti, le band, i locali.
    Mi sono rimboccato le maniche e ho trovato una soluzione: creare dei miei plugin per aggiungere queste funzionalità e qui di nuovo mi scuso con i santi, Dio e tutti gli altri per le bestemmie…

    • Non esiste documentazione approfondita sulla creazione dei plugin, per capire come realizzare i miei ho dovuto copiare brutalmente quelli già sviluppati inventandomi soluzioni assolutamente ostrogote per riuscire a fare ciò che mi serviva con smadonnamenti di ogni tipo
    • Elgg utilizza in totale 16 tabelle in un database MySQL per memorizzare tutti i vari contenuti con un sistema che ancora oggi non ho compreso a pieno, per creare i plugin ho dovuto quindi utilizzare delle funzioni sue che molto spesso erano buggate e per fixare i bug del core ho perso veramente troppo tempo
    • I plugin vengono caricati (tutti quanti, anche se non vengono utilizzati, anche qui un overhead pazzesco!) in un ordine stabilito dall’amministratore… questo implica il fatto di perdere circa mezza giornata di tentativi casuali per imbroccare l’ordine corretto di caricamento visto che i vari plugin sono vicendevolmente dipendenti.

    Dopo un altro mese di tempo perso finalmente il sito iniziava ad avere una forma, Gaetano (il grafico che ha collaborato a questa realizzazione) aveva già modificato in parte la grafica (e anche qui ci sarebbero diversi insulti da spendere in quanto i template grafici non sono altro che plugin che estendono anzichè sostituire il template base) e mancava l’homepage.

    Per realizzare l’homepage abbiamo seguito un esempio realizzato dal capo sviluppatore di Elgg… si tratta di creare un plugin (un altro!) che estende il template di base aggiungendo un homepage custom, ho perso 4 giorni per capire come caricare i vari dati in homepage prelevandoli tramite strane funzioni interne, funzioni esposte dai plugin e così via… mai visto niente di più complicato!

    Finalmente il sito era quasi pronto, dopo i pochi test svolti nel pochissimo tempo rimasto lo abbiamo finalmente messo in produzione e qui sono usciti tutta un altra serie di problemi di cui vi elenco solo i migliori:

    • All’atto dell’iscrizione viene richiesto di confermare l’indirizzo e-mail cliccando sul link inviato via email, ma la mail di conferma non sempre viene spedita da Elgg e non esiste una procedura per reinviarla manualmente
    • Gli amministratori possono rendere un altro utente amministratore ma non esiste una funzione per renderlo nuovamente un utente normale
    • La validazione dei dati inseriti dagli utenti spesso fa’ cilecca (username validi non vengono considerati tali, le password non vengono riconosciute)
    • Il supporto ai dati in UTF-8 non è scadente, di più, parecchie stringhe infatti non vengono restituite e salvate correttamente nel charset corretto all’interno del database.

    Il fix di questi e altri problemi di minore entità ma comunque importanti non è ancora ultimato, lo sto ultimando giorno per giorno riga dopo riga bestemmiando ogni volta e maledicendo chi ha prodotto questo codice schifoso e maledicendo ancora di più me stesso per aver deciso di utilizzarlo per un sito così importante…

    I PRO E I CONTRO

    PRO

    • Il controllo anti XSS sembra funzionare abbastanza bene con un overhead minimo
    • Le funzioni dei widget realizzate in ajax (quanto funzionano, se funzionano) sono interessanti e carine anche se piene di bug
    • Per funzionare richiede PHP e MySQL senza altre aggiunte, configurazione presente su quasi tutti i server web del mondo
    • Dopo averlo usato una volta si capisce che a sviluppare da zero un portale si sarebbe impiegato meno tempo e quindi si ritorna a scrivere del buon codice stando alla larga da lui.

    CONTRO

    • Per generare una singola pagina possono essere eseguite più di 600 query al database
    • Non esiste un sistema di caching dei contenuti (ci sono delle funzioni sperimentali che utilizzano memcached ma non sono ne stabili ne documentate)
    • Tutti i plugin vengono sempre caricati in memoria, così come i file di localizzazione causando un overhead veramente pauroso.
    • Non esiste una gestione intelligente dei permessi, gli utenti o sono utenti semplici oppure sono amministratori completi del sistema.
    • Tutto il sistema utilizza 16 tabelle mysql indicizzate oltretutto malissimo causando una lentezza paurosa.
    • Richiede un intero server dedicato per funzionare decentemente, la cache di mysql attiva con almeno 256 Mb dedicati e tanta, tanta CPU.
      Non è assolutamente pensabile di utilizzarlo su un hosting shared perchè utilizza troppe risorse anche solo con 5 utenti contemporanei
    • La localizzazione fa’ pietà, il  30% delle stringhe non sono localizzate e vanno cercate e sostituite manualmente nel codice
    • Non è upgradabile, ho infatti dovuto modificare delle funzioni del core perchè erano piene di bug, questo mi impedisce di effettuare upgrade a versioni più recenti.
    • La documentazione spesso non esiste o è scarsissima.
    • Il sistema di logging solleva un mare di notice e warning che riescono a riempire i log del server in poche ore di utilizzo intensivo.
    • E molto, molto altro…

    Ascoltate il mio consiglio, non utilizzate per nessun motivo Elgg o qualsiasi altra cosa derivi da quest’ultimo… impieghereste sicuramente meno tempo e meno stress a realizzare da voi ciò che vi serve.