English translation almost complete

This commit is contained in:
Claudio Maggioni 2018-06-04 21:08:19 +02:00
parent b5f6988f23
commit 641dcd3c57
1 changed files with 289 additions and 74 deletions

363
main.tex
View File

@ -5,7 +5,6 @@
\usepackage[english]{babel}
\end{en}
\usepackage{blindtext}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[pdftex]{graphicx}
@ -976,6 +975,37 @@ export class RESTService {
\subsection{Project status}
\end{en}
\begin{it}
\def\itgganttprg{Progettazione}
\def\itggantttf{Test funzioni}
\def\itgganttir{Impl. \textit{restaurant}}
\def\itgganttfunz{Impl. sezioni}
\def\itgganttim{Inv. di magazzino}
\def\itgganttcal{Agenda}
\def\itgganttsogg{Soggetti}
\def\itgganttco{Ordini cliente}
\def\itgganttrifr{Rininim. \textit{restaurant}}
\def\itggantttr{Test \textit{restaurant}}
\def\itgganttadtarch{Adattam. architettura}
\def\itgganttstr{Test}
\def\itgganttril{Finalizzazione}
\end{it}
\begin{en}
\def\itgganttprg{Planning}
\def\itggantttf{Sections testing}
\def\itgganttir{\textit{restaurant} impl.}
\def\itgganttfunz{Sections impl.}
\def\itgganttim{Warehouses}
\def\itgganttcal{Calendar}
\def\itgganttsogg{Customers and suppl.}
\def\itgganttco{Customers' orders}
\def\itgganttrifr{\textit{restaurant} improv.}
\def\itggantttr{\textit{restaurant} testing}
\def\itgganttadtarch{Architecture revising}
\def\itgganttstr{Testing}
\def\itgganttril{Finalisation}
\end{en}
\begin{figure}[H]
\centering
\resizebox{\ifdim\width>\linewidth\linewidth\else\width\fi}{!}{
@ -996,18 +1026,18 @@ export class RESTService {
\gantttitle{5}{4} \\
\gantttitlelist{25,...,52}{1}
\gantttitlelist{1,...,21}{1} \\
\ganttbar[name=prg]{Progettazione}{1}{1} \\
\ganttlinkedbar[name=ir]{Impl. \textit{restaurant}}{2}{37} \\
\ganttgroup[name=funz]{Impl. sezioni}{2}{13} \\
\ganttbar{Inv. di magazzino}{2}{4} \\
\ganttbar{Agenda}{5}{6} \\
\ganttbar{Soggetti}{7}{8} \\
\ganttbar{Ordini cliente}{11}{13} \\
\ganttbar[name=tf]{Test per sezioni}{14}{16} \\
\ganttlinkedgroup[name=tr]{Rifinim. \textit{restaurant}}{19}{46} \\
\ganttbar{Adattam. architettura}{19}{37} \\
\ganttbar[name=str]{Test}{38}{46} \\
\ganttbar[name=ril]{Finalizzazione}{47}{49}
\ganttbar[name=prg]{\itgganttprg}{1}{1} \\
\ganttlinkedbar[name=ir]{\itgganttir}{2}{37} \\
\ganttgroup[name=funz]{\itgganttfunz}{2}{13} \\
\ganttbar{\itgganttim}{2}{4} \\
\ganttbar{\itgganttcal}{5}{6} \\
\ganttbar{\itgganttsogg}{7}{8} \\
\ganttbar{\itgganttco}{11}{13} \\
\ganttbar[name=tf]{\itggantttf}{14}{16} \\
\ganttlinkedgroup[name=tr]{\itggantttr}{19}{46} \\
\ganttbar{\itgganttadtarch}{19}{37} \\
\ganttbar[name=str]{\itgganttstr}{38}{46} \\
\ganttbar[name=ril]{\itgganttril}{47}{49}
\ganttlink{funz}{tf}
\ganttlink{prg}{funz}
\ganttlink{ir}{str}
@ -1043,14 +1073,15 @@ export class RESTService {
\begin{it}
\subsection{Fasi del progetto}
Le fasi del progetto, di cui date di inizio e fine sono state specificate nel diagramma in figura \ref{fig:ganttitgmob}, sono:
Le fasi del progetto, di cui date di inizio e fine sono state specificate nel
diagramma in figura \ref{fig:ganttitgmob}, sono:
\begin{description}
\item[Progettazione] delineazione delle funzionalità da implementare
nell'applicazione e prime bozze dell'interfaccia utente;
\item[Implementazione \textit{restaurant}] implementazione della libreria, su
\item[Implementazione \textit{restaurant}] implementazione della libreria su
cui si basano tutte le sezioni del programma. Vista l'importanza di questo
componente, gli sviluppi vengono continuati in parallelo con
l'implementazione delle sezioni;
@ -1064,10 +1095,10 @@ export class RESTService {
\item Ordini cliente;
\end{itemize}
\item[Test per le sezioni] messa alla prova degli algoritmi e della UI per
\item[Test per le sezioni] collaudo degli algoritmi e della UI per
efficacia ed efficienza, nonch\'e eventuali correzioni;
\item[Rifinimento \textit{restaurant}] messa alla prova delle scelte
\item[Rifinimento \textit{restaurant}] collaudo delle scelte
architetturali e algoritmi usati nella libreria e rifinimento di essi;
Fase divisa in:
\begin{description}
@ -1084,95 +1115,279 @@ export class RESTService {
\begin{en}
\subsection{Project phases}
\blindtext
The various project phases, by which start and end dates are shown on
the diagram in figure \ref{fig:ganttitgmob}, are described below.
\begin{description}
\item[Planning] features definition and first drafts of the user interface;
\item[\textit{restaurant} implementation] implementation of the library on
which all the sections are based. Given the importance of this component,
it is developed concurrently with the sections;
\item[Sections implementation] creation of user interface and business logic
for all the features planned, which are:
\begin{itemize}
\item Warehouses;
\item Calendar;
\item Customers and suppliers;
\item Customers' orders;
\end{itemize}
\item[Sections testing] trial of algorithms and UI to achieve effectiveness
and efficiency and possible adjustments;
\item[\textit{restaurant} improvement] trial of architectural choices and
algorithms used inside the library, with improvement of the last ones.
This phase is divided in:
\begin{description}
\item[Architecture revising] analisis of the protocol aimed to find weak
points and possible optimisations;
\item[\textit{restaurant} testing] trial of the changes implemented before;
\end{description}
\item[Finalisation] collection of final tasks, including branding, pre-release
operations and possible development of per-customer customizations.
\end{description}
\end{en}
\begin{it}
\section{Il progetto secondario: \textit{Guac Remote}}
Questo progetto \`e destinato ad un'importante azienda del territorio, produttrice di macchine equilibratrici. Tale applicazione dovrebbe fungere da client di
desktop remoto (come \textit{TeamViewer}\footnote{TeamViewer: \url{https://www.teamviewer.com/it/}}) per il PC presente nel loro prodotto di punta, un sistema di calibrazione delle
ruote di autoveicoli funzionante mediante telecamere. Il programma dovrebbe permettere all'operatore di tale prodotto di interagire con il software presente nel macchinario, senza scendere dal veicolo.
Questo progetto \`e destinato ad un'importante azienda del territorio,
produttrice di macchine equilibratrici. Tale applicazione dovrebbe fungere da
client di desktop remoto (come \textit{TeamViewer}\footnote{TeamViewer:
\url{https://www.teamviewer.com/it}}) per il PC presente nel loro prodotto
di punta, un sistema di calibrazione delle ruote di autoveicoli funzionante
mediante telecamere. Il programma dovrebbe permettere all'operatore di tale
prodotto di interagire con il software presente nel macchinario, senza
scendere dal veicolo.
A causa di urgenza del committente, lo sviluppo di questo progetto ha interrotto e attualmente interrompe gli sviluppi
per \textit{InteGRa Mobile}.
A causa di urgenza da parte del committente, lo sviluppo di questo progetto ha
interrotto sviluppi per \textit{InteGRa Mobile} fino alla fine del periodo di
alternanza estesa.
\end{it}
\begin{en}
\section{The side project: \textit{Guac Remote}}
\subsection{Architettura software}
This project is made for an important local company, which produces
wheel balancers. This application should work as a remote desktop client
(as \textit{TeamViewer}\footnote{TeamViewer: \url{https://www.teamviewer.com}})
for the PC mounted inside their main product, an automatic wheel balancer
that works with cameras. The program should allow the user to interact with the
wheel balancing software, without needing them to exit from the veichle.
\end{en}
\begin{it}
\subsection{Architettura software}
\end{it}
\begin{en}
\subsection{Software architecture}
\end{en}
\begin{figure}[H]
\centering
\resizebox{\ifdim\width>\linewidth\linewidth\else\width\fi}{!}{\input{diagrams/guacremote}}
\caption{L'architettura di \textit{Guac Remote}}
\begin{it}
\caption{L'architettura di \textit{Guac Remote}}
\end{it}
\begin{en}
\caption{The architecture of \textit{Guac Remote} as a diagram}
\end{en}
\label{fig:argosarch}
\end{figure}
\textit{Guac Remote} è basata su un'applicativo e libreria per la connessione a computer remoto chiamato \textit{Apache Guacamole}\cite{guacamole:website}.
Tale software è costituito da due parti: \cite{guacdoc:arch}
\begin{description}
\item[\textit{guacamole-server} (o \textit{guacd})] un servizio scritto in C che funge da adattatore tra il protocollo \textit{guacamole} e i protocolli VNC, RDP o SSH, utilizzando questi ultimi per stabilire connessioni con gli host remoti;
\item[\textit{guacamole-client}] una WebApplication scritta tramite \textit{Java servlet} che fornisce un'interfaccia web per interagire con \textit{guacamole-server} e connettersi ai PC remoti.
\end{description}
Data la natura open-source del progetto, sia \textit{guacamole-server} che \textit{guacamole-client} possono essere usati come libreria per la realizzazione di software derivati. In particolare, \textit{guacamole-client} può essere scomposto nelle librerie \textit{guacamole-common-js}, che contiene il codice Javascript per il client, e \textit{guacamole-common}, che fornisce classi Java per la connessione con \textit{guacamole-server}. \cite{guacdoc:api}
\begin{it}
\textit{Guac Remote} è basata su un'applicativo e libreria per la connessione
a computer remoto chiamato \textit{Apache Guacamole}\cite{guacamole:website}.
Tale software è costituito da due parti:\cite{guacdoc:arch}
\begin{description}
\item[\textit{guacamole-server} (o \textit{guacd})] un servizio scritto
in C che funge da adattatore tra il protocollo \textit{guacamole} e i
protocolli VNC, RDP o SSH, utilizzando questi ultimi per stabilire connessioni
con gli host remoti;
\item[\textit{guacamole-client}] una WebApplication scritta tramite
\textit{Java servlet} che fornisce un'interfaccia web per interagire con
\textit{guacamole-server} e connettersi ai PC remoti.
\end{description}
Data la natura open-source del progetto, sia \textit{guacamole-server} che
\textit{guacamole-client} possono essere usati come libreria per la
realizzazione di software derivati. In particolare, \textit{guacamole-client}
può essere scomposto nelle librerie \textit{guacamole-common-js}, che contiene
il codice Javascript per il client, e \textit{guacamole-common}, che fornisce
classi Java per la connessione con \textit{guacamole-server}\cite{guacdoc:api}.
In \textit{Guac Remote}, \textit{Apache Guacamole} è usato per fornire accesso
remoto al PC presente nel macchinario, che contiene l'applicativo per la
calibrazione, all'applicazione installata sul tablet. Nel dettaglio,
\textit{guacamole-common-js} è usato nell'applicazione \textit{mobile} (la quale
è basata su \textit{Apache Cordova}) per fornire
un'interfaccia touchscreen per interagire con l'host remoto, mentre
\textit{guacamole-common}, tramite una piccola Java Web Application, assieme a
\textit{guacamole-server} sono installati sul PC.
In aggiunta, tablet e PC possono comunicare informazioni aggiuntive tramite
una WebSocket creata al momento della connessione, necessaria per alcune
estensioni al protocollo richieste dal cliente.
\end{it}
\begin{en}
\textit{Guac Remote} is based on an application and library for remote desktop
connectivity named \textit{Apache Guacamole}\cite{guacamole:website}. This
software is a combination of two components:\cite{guacdoc:arch}
\begin{description}
\item[\textit{guacamole-server} (a.k.a. \textit{guacd})] a daemon written
in C which takes the role of an adapter between the \textit{guacamole}
protocol and the VNC, RDP and SSH protocols, using the last ones to connect
to the remote hosts;
\item[\textit{guacamole-client}] a Web Application written with \textit{Java
Servlets} that offers a web interface for interacting with
\end{description}
\textit{guacamole-server} and to connect with remote PCs.
Considering the open-source nature of the project, both \textit{guacamole-server}
and \textit{guacamole-client} can be used as a library for the implementation of
similar software. To be precise, \textit{guacamole-client} can be divided in the
libraries \textit{guacamole-common-js}, containing the client-side Javascript
code, and \textit{guacamole-common}, which contains Java classes for connecting
with \textit{guacamole-server}\cite{guacdoc:api}.
In \textit{Guac Remote}, \textit{Apache Guacamole} is used for granting remote
access on the PC inside the machine, containing the balancing software, to the
tablet containing the mobile app. In particular, \textit{guacamole-common-js} is
used in the mobile app (which is built with \textit{Apache Cordova}) in order to
make a touchscreen interface for the interacting with the remote host, while
\textit{guacamole-common}, bundled in a small Java Web Application, toghteter
with \textit{guacamole-server} are installed on the PC.
In addition, the tablet and the PC can share additional information through a
WebSocket created at the same time as the connection, which is needed by some
custom extensions commisioned by the customer.
\end{en}
In \textit{Guac Remote}, \textit{Apache Guacamole} è usato per fornire accesso remoto al PC presente nel macchinario, che contiene l'applicativo per la calibrazione, all'applicazione installata sul tablet. Nel dettaglio, \textit{guacamole-common-js} è usato nell'applicazione \textit{mobile} fornire un'interfaccia touchscreen per interagire con l'host remoto, mentre \textit{guacamole-common}, tramite una piccola WebApplication, assieme a \textit{guacamole-server} sono installati sul PC.
\begin{it}
\subsection{Stato del progetto}
\end{it}
\begin{en}
\subsection{Project status}
\end{en}
In aggiunta, tablet e PC possono comunicare informazioni aggiuntive tramite una WebSocket creata al momento della connessione, necessaria per alcune estensioni al protocollo richieste dal cliente.
\subsection{Stato del progetto}
\begin{it}
\def\ganttargosprg{Incontro con il cliente}
\def\ganttargosprot{Realizzazione primo prototipo}
\def\ganttargosdemo{Prima demo al cliente}
\def\ganttargosstima{Stime orarie per sviluppi futuri}
\def\ganttargosimpl{Implementazione richieste \ldots}
\def\ganttargoszoom{Apertura tastiera e zoom \ldots}
\def\ganttargosscroll{Scroll a due dita}
\def\ganttargosconf{Interfaccia di configurazione}
\def\ganttargoskbd{Input tramite tastiera nativa \ldots}
\def\ganttargosdemodef{Demo al cliente}
\def\ganttargosagg{Implementazione richieste agg\ldots}
\def\ganttargoscon{Consegna}
\end{it}
\begin{en}
\def\ganttargosprg{Incontro con il cliente}
\def\ganttargosprot{Realizzazione primo prototipo}
\def\ganttargosdemo{Prima demo al cliente}
\def\ganttargosstima{Stime orarie per sviluppi futuri}
\def\ganttargosimpl{Implementazione richieste \ldots}
\def\ganttargoszoom{Apertura tastiera e zoom \ldots}
\def\ganttargosscroll{Scroll a due dita}
\def\ganttargosconf{Interfaccia di configurazione}
\def\ganttargoskbd{Input tramite tastiera nativa \ldots}
\def\ganttargosdemodef{Demo al cliente}
\def\ganttargosagg{Implementazione richieste agg\ldots}
\def\ganttargoscon{Consegna}
\end{en}
\begin{figure}[H]
\centering
\resizebox{\ifdim\width>\linewidth\linewidth\else\width\fi}{!}{
\begin{ganttchart}{1}{22}
\gantttitle{2018}{22} \\
\begin{ganttchart}{1}{32}
\gantttitle{2018}{32} \\
\gantttitle{2}{6}
\gantttitle{3}{8}
\gantttitle{4}{8} \\
\gantttitlelist{7,...,17}{2} \\
\foreach \n in {7,...,17}{
\gantttitle{4}{8}
\gantttitle{5}{9}
\gantttitle{6}{1} \\
\gantttitlelist{7,...,22}{2} \\
\foreach \n in {7,...,22}{
\gantttitle{G}{1}
\gantttitle{V}{1}
} \\
\ganttbar[name=prg]{Incontro con il cliente}{1}{1} \\
\ganttlinkedbar{Realizzazione primo prototipo}{2}{4} \\
\ganttlinkedbar{Prima demo al cliente}{5}{5} \\
\ganttlinkedbar{Stime orarie per sviluppi futuri}{6}{6} \\
\ganttlinkedgroup[name=impl]{Implementazione richieste \ldots}{8}{12} \\
\ganttbar{Apertura tastiera e zoom \ldots}{8}{9} \\
\ganttbar{Input tramite tastiera nativa \ldots}{10}{10} \\
\ganttbar{Scroll a due dita}{11}{11} \\
\ganttbar{Interfaccia di configurazione}{12}{12} \\
\ganttbar[name=demodef]{Demo al cliente}{13}{13} \\
\ganttlinkedbar{Implementazione richieste agg\ldots}{14}{20} \\
\ganttlinkedbar{Consegna}{21}{22}
\ganttbar[name=prg]{\ganttargosprg}{1}{1} \\
\ganttlinkedbar{\ganttargosprot}{2}{4} \\
\ganttlinkedbar{\ganttargosdemo}{5}{5} \\
\ganttlinkedbar{\ganttargosstima}{6}{6} \\
\ganttlinkedgroup[name=impl]{\ganttargosimpl}{8}{12} \\
\ganttbar{\ganttargoszoom}{8}{9} \\
\ganttbar{\ganttargoskbd}{10}{10} \\
\ganttbar{\ganttargosscroll}{11}{11} \\
\ganttbar{\ganttargosconf}{12}{12} \\
\ganttbar[name=demodef]{\ganttargosdemodef}{13}{13} \\
\ganttlinkedbar{\ganttargosagg}{14}{30} \\
\ganttlinkedbar{\ganttargoscon}{31}{32}
\ganttlink{impl}{demodef}
\end{ganttchart}
}
\caption{Il diagramma di Gantt del progetto \textit{Guac Remote}}
\begin{it}
\caption{Il diagramma di Gantt del progetto \textit{Guac Remote}}
\end{it}
\begin{en}
\caption{\textit{Guac Remote} diagram}
\end{en}
\label{fig:ganttargos}
\end{figure}
% TODO: cambiare quando diventa tesina vera e propria
Questo progetto, al giorno 06/04, non ha ritardi. L'applicazione \'e stata mostrata in demo il giorno 29/03, ed il cliente si ritiene soddisfatto del lavoro fatto fino ad ora.
\begin{it}
Questo progetto, al giorno 06/04, non ha ritardi. L'applicazione \'e stata
mostrata in demo il giorno 29/03, ed il cliente si ritiene soddisfatto del
lavoro fatto fino ad ora.
\end{it}
\subsection{Fasi del progetto}
\begin{it}
\subsection{Fasi del progetto}
\end{it}
\begin{en}
\subsection{Project phases}
\end{en}
Le fasi del progetto, di cui le date di inizio e di fine sono indicate nel diagramma della figura \ref{fig:ganttargos}, sono:
\begin{description}
\item[Incontro con il cliente] primo scambio di informazioni per capire gli obiettivi del progetto;
\item[Realizzazione primo prototipo] dimostrazione dell'efficacia del protocollo \textit{guacamole} tramite un prototipo del prodotto;
\item[Prima demo al cliente] demo del prototipo al cliente;
\item[Stime orarie per sviluppi futuri] delineazione della tabella di marcia per gli sviluppi futuri;
\item[Implementazione richieste del cliente] sviluppo delle estensioni al protocollo richieste. Nel dettaglio, esse sono:
\begin{description}
\item[Apertura tastiera e zoom al ``focus'' di un input] alla pressione di un campo di testo, l'applicazione \textit{mobile} deve automaticamente ingrandire l'area selezionata e mostrare una tastiera;
\item[Input tramite tastiera nativa Android o iOS] sostituzione della tastiera su schermo di \textit{guacamole-common-js} con quella nativa;
\item[Scroll a due dita] supporto della gesture di scroll verticale a due dita;
\item[Interfaccia di configurazione] creazione di una piccola finestra di configurazione, in cui inserire IP e porta del PC;
\end{description}
\item[Demo al cliente] dimostrazione degli sviluppi fatti al cliente e eventuale definizione di richieste aggiuntive;
\item[Implementazione delle richieste aggiuntive del cliente]
\item[Consegna] operazioni finali del progetto, tra cui branding e compilazione per rilascio.
\end{description}
\begin{it}
Le fasi del progetto, di cui le date di inizio e di fine sono indicate nel
diagramma della figura \ref{fig:ganttargos}, sono:
\begin{description}
\item[Incontro con il cliente] primo scambio di informazioni per capire gli
obiettivi del progetto;
\item[Realizzazione primo prototipo] dimostrazione dell'efficacia del protocollo
\textit{guacamole} tramite un prototipo del prodotto;
\item[Prima dmo al cliente] demo del prototipo al cliente;
\item[Stime orarie per sviluppi futuri] delineazione della tabella di marcia per
gli sviluppi futuri;
\item[Implementazione richieste del cliente] sviluppo delle estensioni al
protocollo richieste. Nel dettaglio, esse sono:
\begin{description}
\item[Apertura tastiera e zoom al ``focus'' di un input] alla pressione di un
campo di testo, l'applicazione \textit{mobile} deve automaticamente ingrandire
l'area selezionata e mostrare una tastiera;
\item[Input tramite tastiera nativa Android o iOS] sostituzione della tastiera
su schermo di \textit{guacamole-common-js} con quella nativa;
\item[Scroll a due dita] supporto della gesture di scroll verticale a due dita;
\item[Interfaccia di configurazione] creazione di una piccola finestra di
configurazione, in cui inserire IP e porta del PC;
\end{description}
\item[Demo al cliente] dimostrazione degli sviluppi fatti al cliente e eventuale
definizione di richieste aggiuntive;
\item[Implementazione delle richieste aggiuntive del cliente]
\item[Consegna] operazioni finali del progetto, tra cui branding e compilazione
per rilascio.
\end{description}
\end{it}
\begin{en}
STUB
\end{en}
\newpage