Progetti
Timetable Tesi
Istruzione Contatti

Federico Bernacca

Fin da piccolo sono stato appassionato di informatica, ragion per cui, ottenuto il diploma superiore, ho deciso di iscrivermi al Corso di Laurea in Informatica a Pisa.
Ho qui scoperto la programmazione, un mondo a me completamente sconosciuto fino a quel momento, che mi ha subito conquistato. Mi è nata una passione irrefrenabile verso questa disciplina, grazie alla quale, ho conseguito la laurea triennale.
Ad Aprile 2023 ho anche conseguito la Laurea Magistrale in Cybersecurity a Pisa.


Istruzione


Servizi

Nel corso degli anni universitari ho affinato diverse tecniche di programmazione che mi hanno portato ad avere una buona padronanza di diversi linguaggi di programmazione.
In particolar modo mi sono specializzato nella relizzazione di applicazioni mobili, motivo per cui sono disponibile per l'ideazione, progettazione e sviluppo di queste.
Ho anche le capacità per realizzare applicazioni web, programmi desktop e siti web.




I miei progetti

Il codice sorgente di molti applicativi da me sviluppati è disponibile sulla mia pagina github: github.com/fedehsq
Di seguito illustro alcuni dei miei progetti.

Tesi


Implementation of a controlled access system using Bastion Host and Vault (magistrale)
[Go, Shell, HCL]
La crescente automazione nei processi IT e l'evoluzione dei processi del ciclo di vita del software in ottica DevOps, hanno comportato una sempre minor necessità di effettuare l'accesso diretto ai sistemi informatici: tipicamente l'accesso avviene al fine di eseguire operazioni critiche e di manutenzione straordinario.
L'accesso a tali sistemi pertanto dovrebbe essere il più possibile limitato e soggetto ad un rigoroso monitoraggio degli accessi effettuati. A tale scopo risulta utile definire un punto unico di accesso su cui concentrare le verifiche di sicurezza: un sistema di questo tipo viene definito tipicamente come bastion host.
Altro punto critico nell'accesso ai sistemi è la protezione delle chiavi di accesso: queste in ambito enterprise sono gestite nella maniera più disparata, a volte senza alcun uso di misure protettive, altre con sistemi sempre più sofisticati come vault o HSM.
     Scopo del progetto di tesi è l'implementazione di un sistema basato su bastion host, che mediante l'implementazione di un workflow autorizzativo, permetta di garantire o negare l'accesso a sistemi remoti mediante l'uso automatico di chiavi recuperate da un vault da parte di un bastion host.


HaloFarms_App (triennale)
[Android, Java]
HaloFarMs è un progetto internazionale che coinvolge diversi paesi dell'area del Mediterraneo. Mira a contribuire in modo significativo all’ottimizzazione di sistemi agricoli e sistemi produttivi innovativi e sostenibili nella regione del Mediterraneo. Gli obbiettivi di HaloFarMs saranno raggiunti sviluppando innovazioni a diversi livelli, una di queste innovazioni è l'app da me ideata e sviluppata durante il tirocinio presso il Dipartimento di Informatica dell'Università di Pisa in collaborazione con quello di Agraria.
L'obbiettivo è stato quello di creare un'applicazione Android che assista il coltivatore durante la coltivazione; le specifiche sono state le seguenti.
      Nell'ambito di un progetto in corso di svolgimento presso il Dipartimento di Agraria si sta studiando come utilizzare piante alofite (che abbassano il contenuto di sale nel terreno) per consentire le coltivazioni orticole anche in terreni salini. L'idea è di studiare possibili abbinamenti di alofite e altre piante che rendano la coltivazione possibile. Per fare questo è necessario partire da una misurazione del livello di salinità del terreno che consenta di valutare quale strategia di utilizzo delle piante alofite possa essere più efficace.
Per supportare l'agricoltore in queste misurazioni e durante la coltivazione, l'idea è stata quella di realizzare una app Android che consenta di:
  1. Identificare il perimetro dell'area da coltivare, utilizzando il GPS.
  2. Determinare i punti in cui effettuare campionamenti di terreno per testarne la salinità (assistendo anche il coltivatore nell'etichettatura dei campioni).
  3. Sulla base dei risultati delle analisi di salinità, mostrare una heat map del terreno per suggerire la metodologia di coltivazione più adatta per ogni area.
  4. Mantenere uno storico dei risultati delle analisi di salinità in un database online.
Di seguito una demo dell'applicazione:



Applicazioni mobili


Libretto UniPi
Disponibile su Google Play
L'idea è quella di offrire un'applicazione semplice ed intuitiva che permetta ad uno studente UniPi di tenere sotto controllo efficientemente le principali informazioni della sua carriera universitaria.
In particolare si avrà accesso a:
  • Informazioni personali
  • Libretto universitario
  • Appelli
  • Statistiche
  • Tasse
  • Orario delle lezioni, personalizzabile



WhatsApp_clone
[Flutter, Dart, JavaScript, Node.js]
Una replica di WhatsApp che ne emula le principali funzionalità.
Il client è stato implementato utilizzando Flutter.
Il server è stato implementato utilizzando Node.js.


openai_chatbot
[Flutter, Dart]
Questa app mobile, costruita con Flutter, utilizza la potenza delle API di completamento del testo e DALL-E di OpenAI per offrire agli utenti un'esperienza di chatbot all'avanguardia.
L'obiettivo dell'app è di fornire un'interfaccia user-friendly per consentire agli utenti di interagire con tecnologie avanzate di intelligenza artificiale e di esplorare le capacità dei potenti modelli di intelligenza artificiale di OpenAI.
Che tu stia cercando di fare una chiacchierata informale o di ottenere informazioni su un argomento specifico, questa app è lo strumento perfetto per il lavoro.
Vivi il futuro della comunicazione alimentata dall'IA con questa app.


Criptovalute

btc-analysis
[Jupyter Notebook]
Analisi delle transazioni di Bitcoin partendo dal primo blocco fino a quello di altezza 100,001, minato in data 29-12-2010.
Due esempi di analisi:
  1. Controllare se tutte le transazioni sono valide, descrivendo eventuali problemi e rimuovendole dal dataset.
  2. Calcolare l'importo totale di UTXO (output di transazione non spesi) esistente a partire dall'ultimo blocco del dataset.

nft-lottery
[Solidity]
L'obiettivo del progetto è implementare TRY, una lotteria che offre agli utenti oggetti da collezione come premi.
Le regole della lotteria sono ispirate al Powerball, un tipo popolare di lotteria giocata negli Stati Uniti.
La logica della lotteria deve essere implementata con uno smart contract in Solidity sulla blockchain di Ethereum.
Prima di aprire la lotteria, il gestore della lotteria acquista un lotto di oggetti da collezione e conia un Non Fungible Token (NFT) per ciascuno di essi.
Il vincitore di ogni lotteria può ricevere in premio uno o più di questi oggetti da collezione.


nft-lottery-dapp
[Python, HTML, CSS, JavaScript]
dApp (decentralised application) per la Lotteria NFT.
La Dapp fornisce diverse interfacce, una per il gestore e una per gli utenti della lotteria.



Web

message_in_a_bottle
[Python, HTML, CSS, JavaScript]
Applicazione web realizzata con il framework Flask come un'architettura a microservizi e configurata tramite Docker.
Lo scopo dell'applicazione è quello di fornire una piattaforma per l'invio di messaggi in una specifica data, con l'impossibilità di cancellare la schedulazione.


fedehsq.github.io
[HTML, CSS, JavaScript]
Dove ti trovi adesso, il mio primo sito web.


timetable
[Flutter, Dart]
Sei uno studente? Questa web app potrebbe aiutarti a gestire gli orari delle tue lezioni.


Applicazioni desktop

openssl_chatty
[C++]
Il progetto consiste nell’implementazione di una applicazione client-server multithread che realizzi un servizio di messagistica istantanea.
La peculiarità dell'applicazione è che tutte le comunicazioni tra client e server, e tra i vari peer, sono crittografate.
Le funzionalità crittografiche sono state realizzate utilizzando la libreria OpenSSL.


WordQuizzle
[Java]
Il progetto consiste nell’implementazione di un sistema di sfide di traduzione italiano-inglese tra utenti registrati al servizio.
Gli utenti registrati possono sfidare i propri amici ad una gara il cui scopo è quello di tradurre in inglese il maggiore numero di parole italiane proposte dal servizio.
Il sistema consente inoltre la gestione di una rete sociale tra gli utenti iscritti. L’applicazione è implementata secondo una architettura client server.


ObjectStore
[C]
Il progetto consiste nel realizzare un object store implementato come sistema client-server, e destinato a supportare le richieste di memorizzare e recuperare blocchi di dati da parte di un gran numero di applicazioni.
La connessione fra clienti e object store avviene attraverso socket su dominio locale. In particolare, sarà necessario implementare:
  1. La parte server (object store) come eseguibile autonomo.
  2. Una libreria destinata a essere incorporata nei client che si interfacci con l'object store usando il protocollo definito nelle specifiche.
  3. Un client di esempio che usi la libreria per testare il funzionamento del sistema.

Contatti

dev@federicobernacca.com