I am so confused, Yii2 is not so cool as I espected

I am watching yii2 development. Yii2 has MVC, thus we can works with controllers. Yii1.x was written for php 5.1/5.2 so there were no namespaces. Yii2 works with 5.4. Great! We have namespaces. but today I am reading some issues on github, where Yii2 is stored, and a user talk about possibility to put controllers in subdirectories. This user told that route were not be resolved. It happens in main application and also in folders of modules. A developer says “There’s no subdirectories support now”. This is a bad news for me. I like namespace, refactoring, and I like to move code in subdirectory to keep all clean. Minus five points to Gryffindor for this bad news.

Tagged

“Sfogliamo il calendario, … finiamo i santi …”…

“Sfogliamo il calendario, … finiamo i santi …” /cc @_orso_ #sfdayit

Gli esagoni ad otto lati dell’leaphly #sfdayit /cc…

Gli esagoni ad otto lati dell’leaphly #sfdayit /cc @liuggio

“Disaccoppiamento è quando cambi qui e non succede…

“Disaccoppiamento è quando cambi qui e non succede nulla li” #sfdayit

I’m a Grade-A geography genius! I beat 95% of “Par…

I’m a Grade-A geography genius! I beat 95% of “Paris? Where The Hell Is Paris?” players. Can you? toys.usvsth3m.com/paris/

I <3 PhpStorm

I <3 PhpStorm

Ecco perché potrei iniziare a sviluppare per WordPress

Non sono tipo da recensire conferenze, anche perché non credo di averne le competenze, e le conferenze cui partecipo si contano sulle dita di una mano. Anche perché la verità è che frequento solo il PHPDay da qualche anno, e partecipo allo XPUG (che non è una conf) che si tiene a Cesena presso Ideato. Dall’anno scorso ho un nuovo appuntamento fisso: il SymfonyDay. Mi sono messo in testa di farmi una cultura più ampia, quindi quest’anno sono stato al primo WordPressDay il 12 di settembre ed andrò anche al NOSqlDay. Forse anche altre conferenze non necessariamente del GrUSP. Consiglio a chiunque la frequentazione di questi eventi: sono il luogo in cui ci si può davvero confrontare con altri colleghi, creare una rete di contatti, di competenze, … se vediamo la community come una squadra, il nostro lavoro può essere decisamente migliore, insieme alle nostre idee, insieme a tutto il nostro mondo.

Ma io perché sono andato al WordPressDay visto che non sviluppo (ancora) per WordPress? Ci sono andato per tante ragioni. Vi parlerò delle tre ragioni principali. La prima è che l’evento è sponsorizzato dal GrUSP che mi da una certa garanzia sulla qualità della giornata. La seconda è che diversi interventi erano rivolti al mondo della programmazione, ed io mi sento un programmatore. Se mi dai in mano un gioco come WordPress o un altro CMS ma poi non mi dici come mettere le mani nelle sue interiora, io non ci gioco più. Se mi spieghi il suo DNA, allora diventiamo buoni amici. Il terzo motivo, e poi mi fermo perché potrei andare avanti ancora per un bel po’, è che per nessuna ragione ho intenzione di fermare il mio studio e la mia voglia di aumentare le mie skill.

I talk

Partiamo dall’inizio. Il primo talk, di @ptbello spiegava come sia possibile realizzare il proprio MVP per una startup. Il titolo del talk è “WP per Startup – Costruisci il tuo MVP in poche ore con WordPress“. Effettivamente mi chiedevo se fosse possibile realizzare applicazioni con WordPress, creando dei custom roles, post, forms, ed uscendo dal canonico blog con pagine statiche. Questo talk mi ha fatto subito venire voglia di capire meglio come si può lavorare con questo CMS, nato blog, … e cresciuto fino ad un livello interessante tutto da scoprire.

Poi è stata la volta di @francescolaffi, con “wp-cli“. In questo caso si è parlato di wp-cli. La cosa che mi ha impressionato di più è stato lo scoprire che è possibile gestire tutti i plugin, attivazione e disattivazione, direttamente da console. Questo mi piace, perché io su una console ci vivo sopra. Faccio deploy, lancio test, creo bundle, …

Un’altra domanda che mi sono sempre posto su WordPress, ma cui non mi ero ancora dato risposta, è stata: “Ma se io realizzo un sito web con wordpress, poi al cliente come gli realizzo l’area amministrativa”. Ed il terzo talk, di @afmarchetti, ha dato una risposta anche a questa domanda: “Realizzare un’area riservata“.

Il quarto talk era più generico, ma comunque interessante. @daniloercoli ha dato i suoi suggerimenti indicando “Strumenti e tecniche per diventare uno sviluppatore WordPress migliore“. Talk interessante che spero di trovare “pompato” nella seconda edizione del WordPressDay.

Il bello di questo evento è che non trattava argomenti legati solo a WordPress, ma anche legati allo sviluppo web. Quindi è arrivata la volta di @verlok. In questo quinto talk si è introdotto lo “Sviluppo di CSS agile con Compass / SASS“. Ho trovato il talk interessante nonostante io non mi occupi di FrontEnd.

Sicuramente i talk che ho trovato più interessanti sono stati “Wordless: sviluppo temi WP on steroids” e “WordMove: deploy multistaging per wordpress“. Nel primo caso abbiamo uno strumento per sviluppare temi WP seguendo una struttura di file e cartelle formalizzata e standardizzata. Mi è sempre piaciuto l’ordine e la discioplina nel codice. Per non parlare del fatto che non si sviluppa semplicemente con html, css e javascript: l’idea è quella di usare haml per l’html, coffeescript per javascript e sass per css. Oltre all’ordine del codice, abbiamo anche i vantaggi di dover gestire e scrivere molto meno codice. Ne secondo talk, invece, un interessante gemma di ruby per il deploy. Ancora riga di comando. Comandi semplici. Deploy reso facile ed ordinato.

Ultimo ma non meno importante, “Creare siti multilingue“. @realloc ci ha mostrato, come da titolo del talk, come realizzare siti web multilingua. Forse avrei dovuto dirgli che nella prima versione di questo blog (yiinotes) utilizzavo i suoi plugin per scrivere sia in italiano che in inglese. Mi ha fatto piacere incontrare l’autore.

Non so come si usa, quindi non funziona!

Qualche tempo fa, ho fatto una consulenza, presso un’azienda della zona. Arrivo, davanti a me ho 6 persone, alcuni dipendenti mentre altri semplici collaboratori, alle quali presento il framework Yii, per il quale sono stato contattato, al momento siamo alla versione 1.1.13. Dopo le due giornate e mezzo passate con loro, si dicono entusiasti del framework, e pensano di adottarlo per dei loro nuovi progetti. C’è anche uno sviluppatore delphi, che probabilmente dovrà utilizzare Yii, e che non tocca Php da anni, probabilmente da prima della versione 3 del linguaggio per capirci. In effetti non utilizza nemmeno la programmazione ad oggetti. Niente Design pattern. Niente best practice. Nessuna metodologia agile. Il primo commento di questo sviluppatore è stato “Ah ho capito, questo non è Php dai, è un’altra cosa. Io php l’ho visto, non è così.”. Mi ricorda molto quella sera in cui ad uno XPUG un partecipante ha detto “Ma perché, Php ha le classi?”. E va beh! Il concetto che voglio esprimere è che questa persona mi trasmette di non conoscere profondamente ne Php ne la programmazione ad oggetti. Yii sembra interessante, è veloce, non richiede un gran che, ma poi non significa che quel gran che non vada studiato. Ma andiamo avanti.

Il cliente in questione si mette a sviluppare il suo bel software in Yii, con database oracle. [...] All’inizio sembra essere tutto a posto, poi inizia a generare dei CRUD utilizzando gii e si imbatte in un problema di lentezza di una query. Eseguita schietta da Php, tirando su i primi 10 record è velocissima, ma con il CRUD risulta impiegare una decina di secondi per restituire i record del CRUD. Il cliente non da peso a questo fatto e continua a sviluppare. Pensa che il problema sia trascurabile, quindi decide di prosegue con il progetto, continuando a lavorare come sa. Commette l’errore di non confrontarsi con nessuno, nemmeno con il gruppo di google yii-it, gratuito, che ho creato per la community Yii. Dopo un mese vengo contattato nuovamente perché il software è in dirittura d’arrivo ma abbiamo un problema con questa query. Mi fa notare che la query in questione richiede troppi secondi per essere lanciata. Che su Oracle o con Php from scratch tutto viene eseguito in pochi secondi. Gli faccio notare, con il profilatore di Yii, che quando usiamo l’active record per scrivere una query, sotto sotto di query ne vengono eseguite tante, e non solo quella che vediamo nel codice, e la CRUD carica tutti quanti i dati di una query, e non solo i 10 che stiamo visualizzando in questa pagina. Poco scalabile come soluzione se si parla di query che interessano molti dati. Poi notiamo insieme che l’ActiveRecord di Yii è almeno 5 volte più lento del queryBuilder, che a sua volta è molto più lento del PDO nativo di Php.

A questo punto della storia, dopo un mese di sviluppo che si è portato dietro errori sin dalle prime battute, questo cliente si ritrova costretto a riscrivere gran parte di codice. Ogni volta che il codice viene riscritto, non viene formalizzato un pattern ma si riscrive ogni cosa da capo. Di disaccoppiamento e di best practice nemmeno l’ombra. Di Agile non ne parliamo. E l’approccio del cliente rimane “questo strumento mi ha deluso“, senza comprendere che lo strumento è stato usato male, per fare qualche cosa per cui non è nato. Non c’è approccio più sbagliato a questo lavoro: non sai perché non va, quindi pensi che non funzioni. In ogni caso, se devo dirla tutta, un milionecinquecentomila record, in join con altre 3 tabelle da circa cinquecentomila record, … secondo me, possono risultare essere lenti. Ma sopratutto, … che senso ha tirare fuori migliaia di record, se a noi ne servono solamente poche decine e non potremmo in ogni caso leggerne di più tutte in una volta sola?

NetBeans IDE 7.4 RC1 Download Started

NetBeans IDE 7.4 RC1 Download Started

Sto installando MongoDB. Ebbene si: l’ho visto al…

Sto installando MongoDB. Ebbene si: l’ho visto al @phpday, ho visto un paio di talk ad @ideato. … e lo sto installando solo ora. Si gioca!