Minicorso Let’s Golang – 2ª puntata

 

Il Meetup

Go è un linguaggio di programmazione in forte espansione negli ultimi anni ideato da 3 sviluppatori di Google nel 2007 (prima release ufficiale: novembre 2009). Quest’ultimi decisero di creare un linguaggio che avesse i pregi dei linguaggi di programmazione usati in precedenza ma non i loro difetti. È fortemente ispirato a CC++ e Assembly e, tra le sue caratteristiche, spicca che sia strongly-typed e compilato.

Se anche tu vuoi “sporcarti” le mani con Go e realizzare insieme un’app di esempio che ti consenta di apprendere i suoi concetti fondamentali, ti consigliamo di non mancare a questo minicorso! 🚀

Attraverso un talk pratico, andremo a realizzare una web api che si occuperà di gestire i nostri TODO. Questa web api sarà una semplice CRUD che esporrà le rotte per: aggiungere, leggere, modificare e cancellare i nostri TODO. Il layout della solution sarà quello tipico di una struttura multi-layered (presentation, business logic e DAL).

2ª puntata

In questa seconda puntata del minicorso su Go riprenderemo il progetto avviato la scorsa volta e lo porteremo a termine andando ad implementare il layer logico e il DAL (ossia il componente che ha il compito di “parlare” con il database). Il database che useremo sarà PostgreSQL, il quale verrà eseguito tramite Docker. Nello sviluppare metteremo in pratica i principi SOLID che stanno alla base della programmazione. BONUS: vedremo come utilizzare la Dependency Injection in Go 💉.

Intro

  • Interfaces: introduzione sulle interfacce. Cosa sono e utilizzo. Analogie e differenze con altri linguaggi;
  • ORM: introduzione generica sugli ORM. L’ORM di Go si chiama “GORM”;
  • Error: errori in Go, cosa sono, come si gestiscono e come andrebbero gestiti (IMO).

Practice

Ingredienti

  • Go;
  • go fmt;
  • staticcheck;
  • Docker;
  • DBeaver (o qualsiasi altro client che supporti Postgres);
  • VSCode (o qualsiasi altro IDE);
  • Postman (o qualsiai altro tool per testare REST-api).

Step

  • Setup PostgreSQL. Avvio di un server PostgreSQL in localhost tramite Docker. Creazione del DB, dello schema e della tabella (tutti chiamati “todos” per coerenza);
  • Definizione di un errore custom in Go;
  • Setup di GORM. Inizializzazione del client Postgres che useremo per interagire con il DB;
  • Definizione dell’interfaccia del DB e sua implementazione;
  • Definizione dell’interfaccia del business logic layer e sua implementazione;
  • Injection della dipendenza fornita dal business logic layer nel controller per fruire delle sue funzionalità;
  • Test finali con Postman.

Ivan Pesenti

Software Developer

Ciao 👋! Sono Ivan Pesenti. Ho 26 anni e lavoro come software developer dal 2014.

Attualmente faccio parte di Sorint Lab una software house che opera a livello internazionale in svariati ambiti. Ricopro il ruolo di sviluppatore con particolare focus sulla parte server-side. La mia peculiarità lavorativa è la particolare attenzione nello scrivere codice pulito, sicuro e testabile. In questi ambiti investo gran parte del mio tempo lavorativo e non.

Sono una persona molto attiva nella community in quanto, oltre a fare meetup occasionalmente, scrivo articoli sulla piattaforma “dev.to” e do lezioni private di informatica in svariati ambiti (dallo sviluppo, all’uso di software, ecc.).

Credo fortemente nella condivisione e nella formazione e penso che sia un punto imprescindibile nella crescita professionale e umana di ogni persona.

Nel mio tempo libero cerco di tenermi allenato praticando vari sport anche se il mio amore incondizionato rimane per il calcio. Adoro gli anime, i tatuaggi, il mare e trascorrere tempo con le altre persone.

Agenda

  • Benvenuto
  • Talk
  • Domande e risposte
  • Quiz & Lottery finale

Credits

Evento organizzato da:

In collaborazione con:

Powered by:

Gli altri meetup

Sviluppo Web: un occhio alla sicurezza!

Sviluppo Web: un occhio alla sicurezza!

In questo talk faremo un’introduzione al vasto mondo della sicurezza nello sviluppo web: vedremo come i concetti fondamentali sulla sicurezza informatica si applicano alla creazione e alla gestione delle web app, parleremo dei tipi di attacco più comuni e dei relativi meccanismi di difesa.
Partendo dalla struttura di base di una tipica applicazione web, costituita da un database, un software di backend ed uno di frontend, delineeremo la cosiddetta superficie di attacco e capiremo come la sicurezza coinvolga tutti gli elementi ed abbia impatto su tutti gli aspetti, dalla gestione sistemistica alla scrittura del codice, senza dimenticare il disegno dei processi.
Passeremo quindi a considerare, più concretamente, i singoli aspetti, i possibili errori e le relative conseguenze, iniziando con l’autenticazione ed il controllo di accesso.
Parleremo poi del delicatissimo compito della validazione dell’input dell’utente e vedremo, anche con degli esempi pratici, come degli errori in questa fase possano causare vulnerabilità di iniezione di codice, in particolare SQL injection e Cross Site Scripting.
Concluderemo con una panoramica sulla sicurezza a livello delle configurazioni del web server e di rete.

Introduzione alla Programmazione Funzionale in Java

Introduzione alla Programmazione Funzionale in Java

La Programmazione Funzionale è un paradigma che si sta facendo sempre più strada in molti linguaggi di programmazione, tra cui Java. In questo talk parleremo di: • Come la programmazione funzionale può essere utilizzata in Java per scrivere codice più conciso e leggibile • Lambda e le Interfacce Funzionali • Esploreremo alcuni esempi pratici. Tra il “classico” mondo della programmazione ad oggetti e la programmazione funzionale non c’è nessuna scelta da fare, vedremo infatti come prendere il meglio da entrambi i mondi!