Nuovo progetto: qoo framework

Ebbene si, lo ammetto ho sempre avuto un debole per la programmazione ad oggetti e per il design delle architetture software. Nondimeno ho sempre avuto un debole per i framework php e da circa 4 anni ho sempre scritto collezioni di classi a mano per capire quali idee ci fossero dietro alcuni tra i framework php più famosi.

Recentemente ho deciso che la prossima collezione di classi avrebbe dovuto essere più versatile delle altre e che avrei dovuto utilizzarla per realizzare più applicazioni. Questa decisione, unita al fatto di voler provare a gestire un progetto medio-grande ed Open source mi hanno portato alla ‘creazione’ di questo progetto, un framework php5 molto leggero, orientato alla leggibilità del codice ed alla flessibilità di utilizzo. L’ ho chiamato qoo framework.

La prima domanda che potrebbe venirvi in mente è “Abbiamo bisogno di un nuovo framework?” dopotutto ce ne sono tantissimi, alcuni dei quali (Zend e Symfony ad esempio) validissimi ed usatissimi, altri (Lithium, interessantissimo) sono emergenti e molto promettenti. Ognuno ha i suoi pro ed i suoi contro, zend e symfony sono incredibilmente potenti ma necessitano di un certo sforzo iniziale per poter rendere produttivo lo sviluppatore. Lithium adotta una architettura particolare che fa l’occhiolino alla programmazione orientata agli aspetti e Code igniter a volte soffre di eccessiva semplificazione (dal mio punto di vista) che porta a mancanza di eleganza. Eleganza che per me è una caratteristica molto importante quando si tratta di codice php.

Eccomi quindi alla ricerca di un framework elegante.

Qoo framework è ancora in fase di sviluppo, mancano il Data abstraction layer e la parte dedicata alla creazione di API, ma per il momento posso elencarvi le caratteristiche principali che ho voluto e che voglio dare a qoo:

  • Semplicità
  • Leggerezza
  • Leggibilità
  • Flessibilità
  • Scalabilità
  • Modularità

Le prime tre caratteristiche sono dovute al fatto che sono stanco di vedere e soprattutto di scrivere codice che se non commentato in ogni minimo dettaglio perde di comprensibilità; inoltre, non voglio dover scrivere 2000 righe di codice per fare qualcosa che in php non oo richiederebbe un decimo del codice. Non voglio costringere chi usa il framework ad avere mille file di configurazione e dover sottostare a strettissime regole di interazione tra le componenti. Questo ci porta al quarto punto: flessibilità. Si perchè essendo una webapp un sistema complesso, voglio dare la possibilità di fare la stessa cosa in modi diversi, lasciando libero chi scrive il codice. Per questo in qoo ci sono diversi modi di inizializzare le componenti del sistema e di riutilizzarle in seguito in altri punti dell’applicazione: non ti piace singleton? Benissimo usa il registry! Non ti piace registry? benissimo usa la dependency injection e la parameter propagation!. Il quinto punto si chiama scalabilità e questo riguarda strettamente l’architettura mvc stessa di qoo, disegnata per poter essere frammentata in più layer gestiti sotto una struttura gerarchica (spesso ci si riferisce a questa soluzione con l’acronimo HMVC). Infine “Modularità” si riferisce al fatto che l’implementazione di ogni classe fa si che esse siano debolmente dipendenti le une dalle altre e che le le dipendenze sono gestite tramite metodi get/set.

Seguiranno in futuro altre news, ma per il momento vi lascio alcuni link utili:

Annunci

Windows Vista + Eclipse + Git + Github

Di recente mi sono stati proposti due progetti davvero interessanti riguardanti il web2.0 per prepararmi al meglio ho deciso di riorganizzare le mie carissime e fidatissime classi php che utilizzo da tempo in un piccolo framework che mi permetta di prototipizzare alcune operazioni comuni.

Come servizio di project hosting mi sono affidato a Github, che come suggerisce il nome utilizza repository Git, ecco quindi i passi da compiere per avere un sistema funzionante:

  • Create un account su Github.com
  • Create un repository su github.com con il nome del vostro progetto
  • Seguite questa guida per installare Git su sistemi Windows
  • Aprite Eclipse e nel tab Help cliccate su “install new software”, selezionate il repository “all available site” e nel filtro di ricerca scrivete Git, dovreste trovare un pacchetto chiamato EGit ed uno chiamato JGit, io ho installato EGit quindi faccio riferimento a quello
  • Al posto di creare un nuovo progetto su eclipse, andate su File->Import->Git->Projects from Git ed inserite i dati relativi al vostro repository git locale
  • Importate con il wizard per semplicità

A questo punto avete il vostro progetto collegato al repository Git hostato da Github.com, manca solo un piccolo dettaglio che mi ha creato 5 minuti di panico :

Per qualche motivo, Eclipse cerca di default le vostre chiavi RSA per SSH nella cartella {USER}/ssh invece di {USER}/.ssh . In rete ho trovato due modi per risolvere il problema in windows. Il primo consiglia di creare un link alla directory .ssh e chiamarlo ssh in modo che eclipse la trovi (il comando in questione dovrebbe essere mklink \D .ssh ssh). Il secondo metodo che ha funzionato per me, consiste nel modificare una opzione di eclipse, ovvero andate su Window->Preferences->General->Network Connection->SSH2 e mettete il punto davanti alla benedetta directory ssh.

Buon teamwork a tutti 🙂

Prima release seria per eMule Log Checker

elalogo.png

Ho terminato la prima release seria di emule Log Checker (o Analyzer non fa differenza XD), in cui ho implementato alcune opzioni da riga di comando , l’opzione di help ed un mitico File README!!! 😀

È disponibile un archivio zip contenente lo script e la documentazione, basta cliccare sul link download

P.S. In caso decidiate di scaricare il file, vi sarei davvero grato se lasciaste un commento all’articolo di presentazione presente al sito bubbledev.altervista.org, giusto per rendermi conto del numero di downloads e per ricevere feedback da voi (potete anche utilizzare la mail)

eMule Log Analyzer

elalogo.png

Ciao a tutti! non pubblico articoli ormai da qualche giorno… sono stato parecchio impegnato XD….tanto per farvi un esempio, oggi è inziata l’università (matricola di ingegneria informatica)!!!!

Ma basta parlare di me…. ecco la novità: ho cominciato a scrivere un tool che potrebbe servire a molti di voi: un analizzatore dei log di eMule, che ,pensate un po, ho chiamato eMule Log analyzer :P.

Il funzionamente è molto semplice: una volta editato il file per definire la versione del client in uso (il default è aMule, utilizzata dal sottoscritto) vi basta eseguire in un interprete Perl lo scriptino e vedrete magicamente comparire la lista degli ultimi download registrati dal Logfile di eMule!.
Per il momento ho inserito pochissime opzioni da riga di comando e soprattutto, le opzioni sono ancora pochissime, diciamo che in questi giorni non avrò il tempo di annoiarmi 😉

Attenzione: Ci tengo a ribadire che è una versione mooolto giovane, mancano molte feature e potrebbero esserci bug, in definitiva il codice potrebbe cambiare di parecchio…. mi impegnerò anche a commentare il codice tranquilli!!!

Se avete consigli o idee per migliorare lo script, postate! 😉

Potete scaricare lo script Qui

Censimento Linux

Tux baby

Tempo fa mi era venuta in mente una certa ideuzza mentre mi trovavo nella home di Distrowatch che pubblica la classifica delle homepage delle distro più cliccate: perchè non realizzare un censimento degli utenti Linux (almeno quelli italiani)? Distrowatch infatti si basa sul numero di click ricevuti dalle varie homepage delle distribuzioni Linux ma non garantisce il numero effettivo delgi utenti di quella certa distro. Soprattutto non raccoglie i feedback di quegli utenti. Ho così deciso di realizzare questo articolo come punto di partenza per un censimento dei Linuxari!!!. Continua a leggere Censimento Linux