Posts

Workshop Sviluppo Applicazioni Web @upo 2017

Image
24 Marzo 2017 In collaborazione con l' Università d el Piemonte Orientale UPO  (grazie alla Professor Enea Parimbelli), ho tenuto un workshop sullo sviluppo di applicazioni web. Abbiamo visto come costruire una applicazione web in Java a partire da zero. Dopo il setup iniziale di IntelliJ IDEA, gli studenti hanno scaricato le librerie di Jetty ed abbiamo iniziato a scrivere un main con il minimo necessario per avviare un sito. Dopo un po' di teoria abbiamo messo in piedi l'html necessario per gestire una form per l'inserimento di indirizzi di una rubrica e per la visualizzazione della lista degli indirizzi salvati (su file, solo teoricamente abbiamo visto la persistenza su database).  Un po' di refactoring per organizzare meglio il routing e rimuovere la duplicazione nel mostrare le viste. Una giornata molto piacevole in cui spero di aver trasmesso, oltre a qualche conoscenza tecnica, anche un po' di entusiasmo per la professione dello sviluppat...

Test Driven Development @unibo 2016

Image
10 Ottobre e 11 Ottobre 2016 In collaborazione con l' Università di Bologna  (grazie al Professor Paolo Ciancarini), terrò in queste due giornate un seminario, insieme a Roberto Grandi, sullo sviluppo agile e in particolare sul Test Driven Development (aka TDD). Affronteremo prima la parte teorica dello sviluppo iterativo incrementale e del TDD e , nella seconda giornata, realizzeremo insieme agli studenti un'esercitazione pratica con un progetto reale nel quale potranno prendere confidenza con i rudimenti del TDD. Gli obiettivi delle due giornate sono: spiegare perchè vale la pena usare metodologie agili contestualizzare l'uso del TDD spiegare le regole del TDD introdurre al concetto di refactoring dare una breve infarinata di pair programming far provare il ritmo del TDD attraverso la pratica Alla fine del seminario gli studenti dovrebbero ottenere degli spunti e dei riferimenti per provare ad approfondire gli argomenti e le basi per poter applicare ...

PostgreSQL: come visualizzare i primi N record di ogni gruppo

Image
Di recente mi è capitato di dover produrre un report dove si volevano, per ogni venditore inserito nei database aziendali, le prime 5 categorie merceologiche in cui vende più offerte. Il problema di scrivere una query per selezionare i primi N elementi di un gruppo non è banale. Semplificando al massimo il caso reale, si può vedere come se in gioco ci fosse un'unica tabella offers , dove ogni record è composto da: id venditore ( seller ) categoria dell'offerta ( category ) La richiesta non è facilmente esprimibile con una query ma, ho scoperto che da PostgreSQL 9.1 viene offerta una sintassi molto naif per realizzarla.  Bisogna combinare due window function , ovvero due funzioni che permettono di fare calcoli su insiemi di righe: row_number() : fornisce il numero di riga in un certo insieme, partendo da 1 select over partition : permette di selezionare qualcosa in una partizione di dati La query che risponde all'esigenza di avere le prime 5 categorie ...

Guida: preparare un ambiente di sviluppo Ruby On Rails su Windows 10 tramite Docker

Image
Viste le non poche difficoltà che ho avuto nel preparare un ambiente di sviluppo per una applicazione scritta con Ruby On Rails da una macchina Windows 10 sfruttando Docker , ho deciso di preparare questa guida sperando di far risparmiare un po' di tempo a qualche interessato ;) L'idea è quella di sviluppare l'applicazione scrivendo il codice direttamente sul filesystem della macchina Windows 10 . Volevo però avere avere l 'application server in containe r in modo da poter sfruttare tutte le potenzialità di Ruby e sopratutto di Rails. Inoltre volevo che l'applicazione si appoggiasse su un database MySql anch'esso in un container Docker. Come prima cosa bisogna installare Docker per Windows, il software è reperibile nel sito ufficiale di Docker, in particolare bisogna installare " Docker for Windows versione Stable ". Una volta scaricato bisognerà installarlo, al termine dell'installazione verrà proposto questo messaggio: Hyper-V feature ...

Workshop Sviluppo Applicazioni Web @unipv

Image
31 Maggio e 7 Giugno 2016 In collaborazione con l' Università degli Studi di Pavia  (grazie alla Professor Claudio Cusano), terrò in queste due giornate un workshop, insieme a Roberto Grandi, sullo sviluppo di applicazioni web. Affronteremo una prima parte più teorica per vedere come una richiesta HTTP a partire da un browser arriva ad un application server e come questo seve le risorse richieste. Nella prima giornata proveremo ad usare Java e Tomcat per scrivere e servire una Sevlet e una JSP. Nella seconda giornata proveremo invece a vedere qualche pratica agile applicata allo sviluppo di applicazioni web. Scarica le slide

Ha senso avere due test identici con dati diversi?

Image
Al seminario sul TDD e il pair programming che ho tenuto all' Università dell'Insubria di Varese  uno studente mi ha domandato: "Ho fatto il test T1 del metodo X poi è saltato fuori che con dati di input diversi, nonostante il test fosse verde, il comportamento non era più coerente...Allora ho scritto il test T2 uguale al test T1 ma con dati diversi... Ha senso avere due test identici con dati diversi ?" Io ho provato a rispondere con un esempio banale in pseudolinguaggio: test sum result = sum 1, 6 assert result is 7 sum a, b return 7 ---------- test another sum result = sum 2, 6 assert result is 8 sum a, b return a + b La mie domande al ragazzo sono state: "Ho fatto TDD?" e "Il secondo test è stato utile anche se uguale al primo?"... risposta "Certo!" Bene: in una domanda tanto banale e nella mio esempio forse ancor più banale, si nascondono alcuni retroragionamenti: - il primo test testa la somma, i...

Test Driven Development @uninsubria

Image
6 Maggio 2016 In collaborazione con l' Università degli Studi dell'Insubria di Varese (grazie al Presidente del Corso di Laurea di Informatica Mauro Ferrari), terrò insieme a Roberto Grandi per 7Pixel , un seminario sullo sviluppo agile e in particolare sul Test Driven Development (aka TDD) del tutto analogo a quello tenuto presso l' Università degli Studi di Pavia . Presenteremo una sessione teorica dello sviluppo iterativo incrementale e sul TDD con nozioni generali di ingegneria del software, di fondamenti di informatica e con esempi concreti tratti delle nostre esperienze lavorative.