%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[12pt,a4paper]{book} % o article, book, ...

% TODO inserire vari packages (todonotes, ecc.)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 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{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[backend=biber]{biblatex}

\usepackage{csquotes}

\usepackage{epigraph} % per le frasi inizio capitolo

\usepackage{fancyhdr}
\setlength{\headheight}{14.5pt}
\setlength{\marginparwidth }{2cm}
\pagestyle{empty}

%\usepackage{etoolbox}

\usepackage[colorinlistoftodos]{todonotes}
%\usepackage[disable]{todonotes}

\usepackage{refcheck}

\usepackage{tikz}
\usetikzlibrary{arrows}



\newenvironment{usecaseenv}{
    \def\arraystretch{2}
    \begin{tabular}{lp{10.5cm}}\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]{10.5cm} \end{minipage}% 
   &\begin{minipage}[t][][t]{10.5cm}
    #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{Obbiettivi:}{#4}
            \end{usecaseenv}
        \end{center}
        \caption{#5}
    \end{figure}
    \renewcommand{\figurename}{\oldFigureName} %reset caption figure name
}

\addbibresource{Biblio.bib}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}

% Frontespizio
\begin{titlepage}
\begin{center}
\includegraphics[width=\textwidth]{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}


%\fancyhf{}
\fancyhead[LE]{\slshape \rightmark} %section
\fancyhead[RE]{\thepage}
\fancyhead[RO]{\slshape \leftmark} % chapter
\fancyhead[LO]{\thepage}

%\chapter o \sections (dipende dal documentclass e cosa vogliamo fare)
%\makeatletter
%\patchcmd{\@makechapterhead}{50\p@}{0pt}{}{}
%\patchcmd{\@makeschapterhead}{50\p@}{0pt}{}{}
%\makeatother
\pagestyle{fancy}

\chapter{Introduzione}
\setcounter{page}{1}
\todo{Dei concetti base da cui partire}
Al giorno d'oggi internet viene sempre più utilizzato...

%TCP/IP over Avian Carriers\cite{waitzman1990standard}\\
\newpage
\section{TCP/IP, Internet e  World Wide Web}
\todo{Spiegare inizio di internet, dei metodi di comunicazione unicast/multicast/broadcast e come si applicano alle reti a foresta e albero rispettivamente}
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=3cm,
    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] () [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}
\newpage
\section{Web e centralizzazione con client/server}
\section{Live streaming e interaction}
\newpage
\section{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 a schermo con dei 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 

\chapter{Decentralizzazione}
\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 oggettivi e soggettivi
\\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 Resistenza ai single point of failure
    \item Facilità nell'utilizzo
    \item Basso costo di entrata
    \item Interazione tra utenti in real time
    \item Bassa latenza
    \item Possibilità di monetizzazione del contenuto da parte dei singoli utenti
    \item Altro? Si accettano proposte
 \end{enumerate}


%\chapter{Cap3}

\nocite{*}
\printbibliography
\addcontentsline{toc}{chapter}{Bibliografia}

\end{document}