484 lines
19 KiB
TeX
484 lines
19 KiB
TeX
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\documentclass[12pt,a4paper]{book} % o article, book, ...
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% packages...
|
|
\usepackage[utf8]{inputenc}
|
|
\usepackage[english, italian]{babel}
|
|
\usepackage[hyphens]{url}
|
|
%\usepackage{showframe}
|
|
|
|
% Per generare il file PDF aderente alle specifiche PDF/A-1b. Verificarne poi la validità.
|
|
\usepackage[a-1b,mathxmp]{pdfx}
|
|
|
|
\usepackage{hyperref}
|
|
\hypersetup{
|
|
colorlinks,
|
|
linkcolor={black!100!black},
|
|
citecolor={blue!100!black},
|
|
urlcolor={blue!100!black}
|
|
}
|
|
|
|
\usepackage{graphicx}
|
|
|
|
\usepackage{geometry}
|
|
|
|
\usepackage{tabularx}
|
|
|
|
\usepackage{booktabs}
|
|
|
|
\usepackage{caption}
|
|
\captionsetup[figure]{labelsep=period}
|
|
|
|
|
|
\usepackage{lipsum} % Per inserire testo a caso in attesa di realizzare i capitoli
|
|
|
|
\usepackage{listings} % Per inserire codice formattato
|
|
%\lstset{
|
|
%lstset va usato dopo l'inizio del document e ogni volta che si vuole cambiare/impostare il linguaggio da formattare
|
|
% language=bash
|
|
%frame=single,
|
|
%breaklines=true,
|
|
%postbreak=\raisebox{0ex}[0ex][0ex]{\ensuremath{\color{red}\hookrightarrow\space}},
|
|
%basicstyle=\ttfamily\footnotesize
|
|
%}
|
|
|
|
\usepackage{biblatex}
|
|
\addbibresource{Biblio.bib}
|
|
|
|
\usepackage{csquotes}
|
|
|
|
\usepackage{epigraph} % per le frasi inizio capitolo
|
|
|
|
\usepackage{fancyhdr}
|
|
\pagestyle{fancy}
|
|
\fancyhead[LEO]{\slshape \leftmark} %section
|
|
\fancyhead[REO]{\thepage}
|
|
\setlength{\headheight}{14.5pt}
|
|
\setlength{\marginparwidth}{2cm}
|
|
|
|
%\usepackage{etoolbox}
|
|
|
|
\usepackage[textsize=tiny]{todonotes}
|
|
|
|
|
|
\usepackage{refcheck}
|
|
|
|
\usepackage{tikz}
|
|
\usetikzlibrary{arrows}
|
|
|
|
\usepackage{titlesec}
|
|
\setcounter{secnumdepth}{3}
|
|
\setcounter{tocdepth}{3}
|
|
|
|
|
|
\newenvironment{usecaseenv}{
|
|
\def\arraystretch{2}
|
|
\begin{tabular}{p{3cm}p{10cm}}\hline
|
|
}{
|
|
\hline\end{tabular}
|
|
\def\arraystretch{1}
|
|
}
|
|
|
|
\newenvironment{characteristicsEnv}{
|
|
\def\arraystretch{2}
|
|
\begin{tabular}{lp{8cm}}\hline
|
|
}{
|
|
\hline\end{tabular}
|
|
\def\arraystretch{1}
|
|
}
|
|
|
|
|
|
\newcommand\addheading[1]{
|
|
\multicolumn{2}{c}{\textbf{\textit{#1}}}\\ \hline
|
|
}
|
|
|
|
\newcommand\addrow[2]{
|
|
\textbf{#1}
|
|
&\begin{minipage}[t][][t]{10cm}
|
|
#2
|
|
\end{minipage}\\
|
|
}
|
|
|
|
\newcommand\addrowservice[2]{
|
|
\textbf{#1}
|
|
&\begin{minipage}[t][][t]{8cm}
|
|
#2
|
|
\end{minipage}\\
|
|
}
|
|
|
|
% The actual command definition
|
|
\let\oldFigureName\figurename %save the old definition of the caption's figure name
|
|
\newcommand{\usecase}[5]{
|
|
\vspace*{0.5cm} % adds a bit of padding to make it look nicer
|
|
\renewcommand{\figurename}{Use case} %call figure name "Use case" instead
|
|
\begin{figure}[htbp]
|
|
\begin{center}
|
|
\begin{usecaseenv}
|
|
\addheading{#1}
|
|
\addrow{Use case:}{#2}
|
|
\addrow{Soggetti:}{#3}
|
|
\addrow{Obiettivi:}{#4}
|
|
\end{usecaseenv}
|
|
\end{center}
|
|
\caption{#5}
|
|
\end{figure}
|
|
\renewcommand{\figurename}{\oldFigureName} %reset caption figure name
|
|
}
|
|
|
|
\let\oldFigureName\figurename %save the old definition of the caption's figure name
|
|
\newcommand{\serviceCharacteristics}[6]{
|
|
\vspace*{0.5cm} % adds a bit of padding to make it look nicer
|
|
\renewcommand{\figurename}{} %call figure name "Use case" instead
|
|
\begin{figure}[htbp]
|
|
\begin{center}
|
|
\begin{characteristicsEnv}
|
|
\addheading{Caratteristiche}
|
|
\addrowservice{Soggetto iniziatore:}{#1}
|
|
\addrowservice{Partecipanti:}{#2}
|
|
\addrowservice{Architettura software:}{#3}
|
|
\addrowservice{Architettura hardware:}{#4}
|
|
\addrowservice{Tipo di dato condiviso:}{#5}
|
|
\addrowservice{Licenza:}{#6}
|
|
\end{characteristicsEnv}
|
|
\end{center}
|
|
%\caption{}
|
|
\end{figure}
|
|
\renewcommand{\figurename}{\oldFigureName} %reset caption figure name
|
|
}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\begin{document}
|
|
\newgeometry{centering}
|
|
% Frontespizio
|
|
\pagenumbering{Roman}
|
|
\begin{titlepage}
|
|
\begin{center}
|
|
\includegraphics[width=\textwidth]{images/Logo.jpg}\\
|
|
{\large{\em Corso di Laurea in Informatica per la comunicazione digitale}}
|
|
\end{center}
|
|
\vspace{12mm}
|
|
\begin{center}
|
|
{\huge{\bf Streaming decentralizzato di}}\\
|
|
\vspace{4mm}
|
|
{\huge{\bf contenuti audiovisivi}}\\
|
|
\end{center}
|
|
\vspace{12mm}
|
|
\begin{flushleft}
|
|
{\large{\bf Relatore:}}
|
|
{\large{Trentini Andrea}}\\
|
|
%{\large{\bf Correlatore:}}
|
|
%{\large{...}}\\
|
|
\end{flushleft}
|
|
\vfill
|
|
\begin{flushright}
|
|
\parbox{1.7in}{
|
|
{\large{\bf Tesi di Laurea di:}}\\
|
|
{\large{Mirko Milovanovic}}\\
|
|
{\large{\bf Matricola: \normalfont 870671}}
|
|
}
|
|
\end{flushright}
|
|
\vfill
|
|
\begin{center}
|
|
{\large{\bf Anno Accademico 2021-2022}}
|
|
\end{center}
|
|
\end{titlepage}
|
|
|
|
\tableofcontents
|
|
\thispagestyle{empty}
|
|
|
|
%\chapter o \sections (dipende dal documentclass e cosa vogliamo fare)
|
|
%\makeatletter
|
|
%\patchcmd{\@makechapterhead}{50\p@}{0pt}{}{}
|
|
%\patchcmd{\@makeschapterhead}{50\p@}{0pt}{}{}
|
|
%\makeatother
|
|
|
|
\chapter{Introduzione}
|
|
\pagenumbering{arabic}
|
|
\setcounter{page}{1}
|
|
Fin dai\todo{atrent: attenzione all'italiano, ho corretto} suoi albori Internet, nato da ARPAnet, svolge un ruolo importantissimo nella vita di tutti noi, che sia condividere informazioni militari, utilizzare servizi erogati via Web, o più recentemente guardare contenuti audiovisivi ``on-the-go'', ovvero quello di connettere le persone intorno al globo nei più svariati modi possibili attraverso l'utilizzo di calcolatori come computer e/o dispositivi mobili ``connessi''.
|
|
Negli anni e per come è stato concepito Internet stesso architetturalmente, si sono venuti a formare veri metodi di comunicazione tra gli utilizzatori e gli erogatori di servizi Internet, più o meno sicuri, efficaci o resilienti rispetto a tematiche come la privacy dei dati, la centralizzazione e costi di operazione.
|
|
|
|
Quello più diffuso oramai è certamente il modello Client/Server, reso famoso dall'imponente World Wide Web il me più diffuso e oseremo azzardare a dire più intuitivo di utilizzare Internet ma certamente non l'unico.\cite[]{w3c}
|
|
|
|
Questa necessità di avere grandi computer con elevata potenza di calcolo in un unico posto ha creato negli anni una situazione di forte centralizzazione da parte di poche "Big Tech", dovuto principalmente al grande costo necessario per allestire il software e tenere in funzione server indipendenti rispetto soluzioni di tipo \textit{Infrastructure as a Service (IaaS)} o \textit{Platform as a service (PaaS)}.
|
|
|
|
Questo metodo di \textit{deployment} dei servizi ha creato una situazione in cui pochi gestori hanno un grosso controllo e potere rispetto a un enorme userbase creando una situazione ``di troppo potere nelle mani di pochi''\cite[]{ai4businessDataTroppo} che sfocia in un elevato controllo di tutte le comunicazioni effettuate attraverso queste piattaforme con tutti i vari problemi morali e legali annessi come la raccolta eccessiva di metadati sugli utenti, licenze di utilizzo super restrittive, controllo dei contenuti in base a pregiudizi Individuali, crittografia illusoria e rottura della reciproca fiducia, meccanismo alla base di Internet stessa.\cite{trentini2020cittadinanza}
|
|
\todo{mirko: sarebbe da rivedere questa parte per rendere ben chiara la situazione attuale della rete coi suoi problemi di forte centralizzazione
|
|
atrent: concordo, prendi pure anche da altri testi, scartabella la biblio del nostro}
|
|
|
|
Lo scopo di questo elaborato è quello di analizzare lo stato attuale della rete e del software riguardo la fruizione e trasmissione di contenuti audiovisivi online in modo decentralizzato. Nello specifico ci interessa testare sul campo e valutare quali siano le soluzioni esistenti disponibili oggi, quali quelle più utilizzate, quale letteratura sia disponibile a riguardo, eventuale definizione e realizzazione di una piattaforma ideale soggettiva se nessuna di quelle trovate ci soddisfi e infine concludere con la presentazione dei del lavoro svolto.
|
|
|
|
\todo{atrent: così com'è l'intro non spiega bene il problema che ti vuoi porre}
|
|
|
|
|
|
\todo{atrent: magari prima di continuare a scrivere testo dettaglia meglio l'outline inserendo sezioni e sottosezioni}
|
|
|
|
\section{TCP/IP, Internet e World Wide Web}
|
|
\todo{mirko: il capitolo 2 non so come farlo così come impostato ora dato che questa parte viene già menzionata nella introduzione quando si menziona client/server
|
|
atrent: potrebbe diventare una sezione del precedente}
|
|
\begin{center}
|
|
\includegraphics[scale=0.3]{images/client-server.png}
|
|
\end{center}
|
|
|
|
Un sistema Client/Server è un tipo di computazione distribuita in cui i clienti effettuano delle richieste verso un server che a sua volta risponde con i dati/servizi richiesti restando in attesa. I client possono essere di vario tipo e trovarsi ovunque nel globo e in generale integrano una parte hardware (smartphone, PCs, \dots) ad una software (applicazioni GUI, web browser, \dots). I server, invece, sono delle macchine specializzate spesso raggruppate assieme in grandi data center, interconnesse tra di loro per fornire uno o più servizi a molteplici client contemporaneamente.
|
|
|
|
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=2cm,
|
|
thick,main node/.style={circle,draw,font=\sffamily\Large\bfseries}]
|
|
|
|
\node[main node] (1) {1};
|
|
\node[main node] (2) [below left of=1] {2};
|
|
\node[main node] (3) [below left of=2] {3};
|
|
\node[main node] (4) [below right of=1] {4};
|
|
\node[main node] (5) [below right of=2] {5};
|
|
\node[main node] (6) [below right of=4] {6};
|
|
\node[main node] (7) [below right of=3] {7};
|
|
|
|
\draw (1) to [out=60,in=315,looseness=3] (5);
|
|
|
|
\path[every node/.style={font=\sffamily\small}]
|
|
(1)
|
|
edge node {} (4)
|
|
edge node {} (2)
|
|
(2)
|
|
edge node {} (4)
|
|
edge [bend right] node {} (3)
|
|
(3)
|
|
edge node [right] {} (2)
|
|
edge [bend right] node {} (5)
|
|
(4)
|
|
edge node [left] {} (3)
|
|
(5)
|
|
(6);
|
|
\end{tikzpicture}
|
|
|
|
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=2cm,
|
|
thick,main node/.style={circle,draw,font=\sffamily\Large\bfseries}]
|
|
|
|
\node[main node] (1) {1};
|
|
\node[main node] (2) [below left of=1] {2};
|
|
\node[main node] (3) [below left of=2] {3};
|
|
\node[main node] (4) [below right of=1] {4};
|
|
\node[main node] (5) [below right of=2] {5};
|
|
\node[main node] (6) [below of=5] {6};
|
|
\node[main node] (7) [below of=6] {7};
|
|
\node[main node] (8) [below right of=4] {8};
|
|
\node[main node] (9) [below right of=8] {9};
|
|
\node[main node] (10) [below right of=9] {10};
|
|
\node[main node] (11) [below left of=9] {11};
|
|
|
|
\path[every node/.style={font=\sffamily\small}]
|
|
(1)
|
|
edge node {} (4)
|
|
edge node {} (2)
|
|
(2)
|
|
edge node {} (5)
|
|
edge node {} (3)
|
|
(3)
|
|
(4)
|
|
edge node {} (5)
|
|
(5)
|
|
edge node {} (6)
|
|
(6)
|
|
edge node {} (7);
|
|
\end{tikzpicture}
|
|
|
|
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=2cm,
|
|
thick,main node/.style={circle,draw,font=\sffamily\Large\bfseries}]
|
|
|
|
\node[main node] (1) {1};
|
|
\node[main node] (2) [below left of=1] {2};
|
|
\node[main node] (3) [below left of=2] {3};
|
|
\node[main node] (4) [below right of=1] {4};
|
|
\node[main node] (5) [below right of=2] {5};
|
|
\node[main node] (6) [below right of=4] {6};
|
|
|
|
\path[every node/.style={font=\sffamily\small}]
|
|
(1)
|
|
edge node {} (4)
|
|
edge node {} (2)
|
|
(2)
|
|
edge node {} (5)
|
|
edge node {} (3)
|
|
(3)
|
|
(4)
|
|
edge node {} (5)
|
|
(5);
|
|
\end{tikzpicture}
|
|
|
|
\newpage
|
|
\section{Il difetto del Web}
|
|
\subsection{Web 2.0}
|
|
\subsection{Controllo delle comunicazioni tra individui}
|
|
\subsection{Riappropriazione dei dati}
|
|
\subsection{Forte dipendenza da software proprietario e perdita di privacy}
|
|
\subsection{Single point of failure}
|
|
\section{Live streaming e interaction}
|
|
|
|
\newpage
|
|
\subsection{Use cases}
|
|
Vediamo degli esempi di come questa interazione potrebbe essere svolta:
|
|
|
|
\usecase{Esempio d'interazione one to many}{Un utente davanti al proprio computer vorrebbe condividere quello che vede sullo schermo con i propri amici o followers}{Utente principale, viewers, computer, connessione internet}{Condivisione in live streaming di un contenuto a schermo via internet con TCP/IP}{}
|
|
|
|
\usecase{Esempio d'interazione many to many}{Più utenti al proprio computer vorrebbero comunicare e interagire tra di loro contemporaneamente simil conference-call}{Utenti multipli, computer, connessione internet, microfono, telecamera}{Live streaming e interazione real-time tra utenti via internet con TCP/IP}{}
|
|
|
|
|
|
Nei due esempi sopra citati si può notare un elemento comune a entrambe le situazioni, ovvero il voler condividere con altre persone contenuti audio e video via Internet, nello specifico sul Web, con dispositivi che verrebbero considerati completi e aperti.
|
|
|
|
Azienda:
|
|
\begin{itemize}
|
|
\item Live stream di un evento/riunione interna
|
|
|
|
\item Assistenza remota
|
|
|
|
\item Conference calls
|
|
|
|
\item come utente o come provider (distributore)
|
|
|
|
\item Riduzione dei costi/banda necessaria
|
|
\end{itemize}
|
|
|
|
Education:
|
|
\begin{itemize}
|
|
\item Live courses
|
|
\end{itemize}
|
|
|
|
|
|
Common Joe:
|
|
\begin{itemize}
|
|
\item Lan party
|
|
|
|
\item Gaming/Streamer
|
|
|
|
\item Conference calls
|
|
|
|
\item Security cameras
|
|
|
|
\item Content moderation
|
|
|
|
\item Small friends group live sharing
|
|
\end{itemize}
|
|
|
|
Governo:
|
|
|
|
\begin{itemize}
|
|
\item Comunicazioni video di emergenza
|
|
|
|
\item Click day like overload avoidance
|
|
\end{itemize}
|
|
|
|
Common Lizard:
|
|
|
|
Metaverso, qualsiasi cosa sarà
|
|
|
|
|
|
\chapter{Stato attuale del software}
|
|
\epigraph{In questo capitolo andremo ad esplorare ed analizzare tutte le situazioni e le tecnologie attualmente esistenti che possono essere applicate}{}
|
|
\section{Nomenclatura}
|
|
Prima di iniziare con il ``dive-in'' vorremmo spendere qualche riga per fare un inquadratura generale di tutti i termini, non strettamente di uso comune, che andremo ad utilizzare nei capitoli successivi per cercare di essere il più possibile comprensibili anche ai meno avvezzi del settore
|
|
|
|
\begin{itemize}
|
|
\item Livelli di decentralizzazione
|
|
\begin{description}
|
|
\item[fdfdrfdgdf]
|
|
\item fsdsfffesdftrtggrd
|
|
\end{description}
|
|
\item Licenza
|
|
\begin{description}
|
|
\item Per licenza si intende un tipo di contratto con il quale il titolare dei diritti di sfruttamento economico sul software (programma informatico) definisce il regime giuridico di circolazione e le limitazioni nell'utilizzo e nella cessione dell'opera (che sia un'opera creativa, o un software, inteso come programma) \cite[]{wikipediaLicenzainformatica} che l'utente di un servizio deve accettare per utilizzare il suddetto.
|
|
\end{description}
|
|
\item Architettura
|
|
\item fsfrterh
|
|
\item ert retgertg
|
|
\item trest ebtre
|
|
\end{itemize}
|
|
|
|
|
|
\section{Stato dell'arte}
|
|
|
|
Al fine della notra analisi, abbiamo bisogno di studiare alcune soluzioni già esistenti sul mercato per il live streaming, con lo scopo di trarne vantaggi e difetti da cui partire per poter proporre una possibile soluzione alternativa a quelle già esistenti.
|
|
|
|
\subsection{Twitch}
|
|
|
|
Twitch è una piattaforma di live streaming di proprietà di Amazon lanciata nel 2011, originariamente specializzata nella trasmissione in diretta di videogiochi, eSports ed eventi riguardanti il mondo videoludico.
|
|
|
|
Una delle più famose e grandi, la piattaforma è stata originariamente sviluppata come una controparte di streaming per Justin.tv, una piattaforma di streaming generale. Tuttavia, Twitch si è concentrata esclusivamente sui contenuti di videogiochi e di eSporta anche se oramai oggi rimane tutt'ora la scelta `de-facto' per molti utenti non solo per lo streaming contenuti videoludici ma anche per lo `streaming general purpose' come ad esempio streaming di musica, arte, cucina e di varie attività creative.
|
|
|
|
Negli anni successivi, ha visto una rapida crescita e ha attirato una vasta gamma di creatori di contenuti, dalle grandi organizzazioni di esports ai singoli streamer indipendenti fino ad arrivare ad oggi con una user base di circa 3 milioni di viewers e 1.5 milioni di broadcaster giornalieri rispettivamente.
|
|
|
|
\begin{figure}[h]
|
|
\centering
|
|
\includegraphics[width=\textwidth]{images/twitchHome.png}
|
|
\caption{Home page di Twitch.}
|
|
\end{figure}
|
|
|
|
\pagebreak
|
|
\subsubsection{Caratteristiche}
|
|
|
|
Twitch offre molti servizi sotto un unico sito web accessibile con un semplice browser:
|
|
|
|
\serviceCharacteristics{Chiunque con un account approvato può condividere}
|
|
{Chiunque può guardare con o senza account}
|
|
{Centralizzata}
|
|
{Servizio accessibile via browser o applicazione mobile}
|
|
{Stream video e testo per funzionalità di live chat}
|
|
{Proprietaria con contratto di utilizzo `EULA'}
|
|
|
|
\section{Decentralizzazione (e accenno del prossimo capitolo)}
|
|
|
|
\chapter{La piattaforma ideale}
|
|
|
|
\section{Soluzione ideale}
|
|
\todo{Iniziare a spiegare come creare questa piattaforma ideale vs sistemi centralizzati esistenti}
|
|
In base a quello che abbiamo esposto fin'ora sorge spontanea la domanda e di conseguenza la ricerca di una piattaforma decentralizzata che soddisfi alcuni requisiti essenziali o meno.
|
|
\\Possiamo azzardare a stilare l'elenco di requisiti e features che vorremmo fossero presenti in questa piattaforma decentralizzata:
|
|
\begin{enumerate}
|
|
\item Decentralizzazione totale della infrastruttura
|
|
%\begin{description}
|
|
%\item Quindi eliminazione del rischio di controllo da parte di un singolo provider
|
|
%\item[Note:] I would like to describe something here
|
|
%\end{description}
|
|
\item Facilità nell'utilizzo
|
|
\item Basso costo di entrata
|
|
\item Interazione tra utenti in real time
|
|
\item Moderazione
|
|
\item Bassa latenza
|
|
\item Possibilità di monetizzazione del contenuto da parte dei singoli utenti
|
|
\item Altro? Si accettano proposte
|
|
\end{enumerate}
|
|
|
|
Andiamo ad analizzare meglio la nostra proposta:
|
|
|
|
\newpage
|
|
\todo{mirko: Sarebbe magari utile usare uno spettro come viene fatto nel libro di Cittadinanza digitale?
|
|
atrent: per ora non ne vedo utilità, vediamo come si sviluppa prima l'outline}
|
|
Punto 1: Quindi eliminazione del rischio di controllo da parte di un singolo, Resistenza agli attacchi DDOS, no single point of failure
|
|
|
|
Punto 2: Se la piattaforma è accessibile via Web o standalone app, o mobile app, se ci sono situazioni di relatività della rete con blocco di porte non standard e/o protocolli
|
|
|
|
Punto 3: È relazionato al punto 2 con la questione di facilità di accesso e utilizzo rispetto a piattaforme già esistenti PERO' nello specifico sarebbe più la parte di facilità di passaggio da una piattaforma all'altra da parte degli streamer e nella compatibilità dei software/strumenti
|
|
|
|
Punto 4: Banalmente come fa twitch e youtube live una chat pubblica tra utenti (quindi con autenticazione), in caso di conference audio/video condiviso tra più utenti in real time
|
|
|
|
Punto 5: moderazione degli utenti/streamer se ha senso farla
|
|
|
|
Punto 6: relazionato al punto 1, abbastanza ovvia come cosa
|
|
|
|
Punto 7: io la penso come incentivo da parte di una rete/piattaforma di attrarre nuove utenze
|
|
\section{Realizzazioni e implementazioni possibili ad oggi}
|
|
\subsection{Possibili problemi nella realizzazione}
|
|
\subsubsection{Brevetti, copyright, DRM, moderazione dei contenuti e degli utenti}
|
|
\subsubsection{Necessità di competizione}
|
|
\section{Varie sottosezioni per tutti i modi in cui si potrebbe realizzare ora}
|
|
\subsection{Protocolli/Software Stack: P2P, Matrix, Jitsi, Crowd CDN, standalone apps, etc \dots}
|
|
|
|
\section{Uno sguardo al futuro}
|
|
|
|
\chapter{Conclusioni}
|
|
|
|
\nocite{*}
|
|
\printbibliography
|
|
\addcontentsline{toc}{chapter}{Bibliografia}
|
|
|
|
\end{document} |