Hacktoberfest 2018 @ PUGMI

Per l’evento di ottobre abbiamo scelto un formato speciale: l’Hacktoberfest!

Cos’è l’Hacktoberfest?
Hacktoberfest, giunto ormai alla quinta edizione, è una festa dell’open source che dura tutto il mese di ottobre. I maintainer OSS sono invitati a guidare gli sviluppatori nel portare nuovi contributi ai loro progetti su GitHub, grazie ad issue appositamente marcate, dando così la possibilità di “restituire” qualcosa alla community che tanto ci dà nel nostro lavoro di tutti i giorni. Ogni contributo e prezioso, e mai troppo piccolo! Dal piccolo bug fix alla rifinitura della documentazione, sono tutti validi modi per partecipare ed aiutare!

Come si partecipa?
Basta iscriversi sul sito https://hacktoberfest.digitalocean.com/, facendo semplicemente login col proprio account GitHub. Al termine del mese, coloro che avranno inviato almeno 5 PR vinceranno una maglietta!

Perché al PUGMI?
Il PHP ha da sempre una forte anima open source, e quasi tutti i tool che noi programmatori PHP usiamo tutti i giorni sono distribuiti gratuitamente. Con questo evento, vorremo creare l’ambiente adatto per invitare sempre più gente a partecipare nell’OSS, affiancando sviluppatori che già da anni contribuiscono con altri che invece vorrebbero iniziare a farlo ma non sanno da dove cominciare.

Cosa serve?
Basta presentarsi all’evento, se possibile muniti di portatile e del proprio account GitHub. Cercheremo di guidarvi ed aiutarvi nel cercare PR nei vari progetti, possibilmente in PHP ma ogni contributo è benvenuto! Noi cercheremo di fornire connettività Wifi e qualche cosa da mangiare, per darvi energie!

Pronti? Fate RSVP su Meetup e non mancate!

Symfony + Docker, dall’ambiente di sviluppo alla produzione

Bentornati dalle vacanze! Eccoci pronti per il primo meetup dopo l’estate, questa volta con un talk in anteprima dal SymfonyDay 2018!

Mercoledì 19 settembre Alessandro Lai ci porterà una bozza del suo talk su Docker e Symfony, che sarà presentato ufficialmente il mese prossimo a Verona. Come al solito, porte aperte dalle 19, si inizia alle 19:30! Non mancate, ma soprattutto fate RSVP su Meetup, perché questa volta abbiamo in palio un’altra copia autografata di “Sviluppare in PHP 7” di Enrico Zimuel e un paio di licenze JetBrains!

Abstract del talk:

Docker è una tecnologia che ormai ha preso largamente piede negli ambienti di sviluppo di applicazioni web: da anni ormai è una alternativa superiore alle classiche macchine virtuali, molto più avide di risorse hardware. Il passaggio però all’ambiente di produzione è stato molto meno “virale” e si fatica ancora a trovare risorse e consigli su come portare la propria applicazione in produzione usando Docker e i container. In questo talk vedremo un flusso di continuous integration & delivery che ho perfezionato nell’ultimo anno su diverse applicazioni Symfony: partendo dal comune uso di Docker Compose in locale, ho sfruttato la stessa configurazione nell’ambiente di build per amalgamare al meglio le immagini Docker e le configurazioni, sfruttando diversi accorgimenti ed ottimizzazioni per poi arrivare alle immagini pronte per la produzione; infine vedremo un breve accenno di come ho utilizzato queste immagini sul cluster Kubernetes di produzione.

Lo stato dell’arte di CI/CD con i container

Dopo le disavventure di giugno, eccoci pronti per il meetup di questo mese!

Approfitteremo di questo incontro per presentare un nuovo coordinatore che si è offerto di aiutarci nell’organizzazione degli incontri, Aurélien Lair; viene a sostituire il caro Oscar, che ci ha lasciati per trasferirsi all’estero.

Inoltre, avremo in palio ben DUE licenze JetBrains, ed un’altra copia autografata di Sviluppare in PHP 7 di Enrico Zimuel.

Detto questo, procederemo con una interessante presentazione di Stefano Torresi sulle varie opzioni che come sviluppatori PHP abbiamo a disposizione per fare Continuous Integration e Continuous Delivery delle nostre applicazioni, volendo usare i container (e Docker?) in produzione:

Jenkins, Travis, Circle, Drone, GitLab CI, Bitbucket Pipelines… abbiamo così tanti strumenti disponibili, che diventa rapidamente difficile prendere una decisione consapevole per implementare la pipeline CI/CD giusta per le proprie esigenze. In questo talk, daremo un’occhiata agli approcci più comuni, alle tendenze emergenti e vari trade-off e insidie che i DevOps potrebbero incontrare nel pericoloso viaggio che dovrebbe alla fine condurre ad una consegna più veloce e facile di software di alta qualità.

Come al solito, porte aperte dalle 19, si inizia alle 19:30, vi aspettiamo, e non dimenticatevi di fare RSVP!!

PHPDay 2018: recap & discussione

Anche questo mese posticipiamo il nostro meetup dalla seconda alla terza settimana… Questa volta perché altrimenti ci saremmo sovrapposti al JSDay e PHPDay, le annuali conferenze internazionali organizzate dal Grusp a Verona.

Visto che l’argomento ci tocca da vicino, approfitteremo del meetup di questo mese per raccontare e confrontarci su cosa è stato presentato al PHPDay, così da riportare i talk a chi (ahimè!) non è potuto venire, e per creare una piccola tavola rotonda di discussione sugli argomenti più interessanti.

Questa volta ci ospita MotorK! Come al solito, porte aperte alle 19, si inizia alle 19:30, vi aspettiamo! E mi raccomando fate RSVP su Meetup!

Mock comprensibili e dove trovarli

RSVP: https://www.meetup.com/it-IT/MilanoPHP/events/249185472/

Quando la codebase dei test si allarga spesso si assiste alla proliferazione di duplicazioni e in generale di quelle bad practice che tanto abbiamo cura di evitare quando scriviamo il codice di produzione.

Capire i test a distanza di tempo è importante per comprendere le intenzioni dello sviluppatore in un certo istante e mantenere il codice testabile e funzionante.

I mock object sono parte fondamentale della codebase perché ci permettono di simulare il comportamento delle nostre dipendenze: spesso però la loro creazione risulta onerosa e contribuisce ad aggiungere rumore alle nostre asserzioni.

Scopriremo con Angelo Giuffredi, Moka, una libreria che permette di scrivere meno codice durante la generazione dei mock object mantenendo confortevole la lettura dei test fornendo un livello di astrazione rispetto agli engine di generazione.