Final tweaks
This commit is contained in:
parent
6b8541bc8e
commit
667310a11b
3 changed files with 41 additions and 39 deletions
|
@ -1,4 +1,4 @@
|
||||||
\documentclass[hidelinks,12pt,a4paper]{scrartcl}
|
\documentclass[hidelinks,12pt,a4paper,numbers=enddot]{scrartcl}
|
||||||
\usepackage{comment}
|
\usepackage{comment}
|
||||||
|
|
||||||
\includecomment{en}
|
\includecomment{en}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
\documentclass[hidelinks,12pt,a4paper]{scrartcl}
|
\documentclass[hidelinks,12pt,a4paper,numbers=enddot]{scrartcl}
|
||||||
\usepackage{comment}
|
\usepackage{comment}
|
||||||
|
|
||||||
\includecomment{it}
|
\includecomment{it}
|
||||||
|
|
74
main.tex
74
main.tex
|
@ -33,14 +33,14 @@
|
||||||
\begin{it}
|
\begin{it}
|
||||||
\def\mdtitle{Alternanza scuola-lavoro estesa presso \textit{Agomir S.p.A.}}
|
\def\mdtitle{Alternanza scuola-lavoro estesa presso \textit{Agomir S.p.A.}}
|
||||||
\def\mdsubtitle{Sviluppo di applicazioni multipiattaforma per dispositivi mobili}
|
\def\mdsubtitle{Sviluppo di applicazioni multipiattaforma per dispositivi mobili}
|
||||||
|
\def\mddate{8 giugno 2018}
|
||||||
\end{it}
|
\end{it}
|
||||||
\begin{en}
|
\begin{en}
|
||||||
\def\mdtitle{Extended school internship at \textit{Agomir S.p.A.}}
|
\def\mdtitle{Extended school internship at \textit{Agomir S.p.A.}}
|
||||||
\def\mdsubtitle{Multiplatform mobile application development}
|
\def\mdsubtitle{Multiplatform mobile application development}
|
||||||
|
\def\mddate{8 June 2018}
|
||||||
\end{en}
|
\end{en}
|
||||||
\def\mdauthor{Claudio Maggioni}
|
\def\mdauthor{Claudio Maggioni}
|
||||||
\def\mddate{\today}
|
|
||||||
\def\mdrevision{7}
|
|
||||||
|
|
||||||
% header and footer style
|
% header and footer style
|
||||||
\clearscrheadfoot
|
\clearscrheadfoot
|
||||||
|
@ -83,19 +83,21 @@
|
||||||
{\huge\bfseries\mdtitle\par}
|
{\huge\bfseries\mdtitle\par}
|
||||||
\vspace{0.75cm}
|
\vspace{0.75cm}
|
||||||
{\Large\bfseries\mdsubtitle\par}
|
{\Large\bfseries\mdsubtitle\par}
|
||||||
\vspace{2cm}
|
|
||||||
{\Large Tesi di maturità di\par}
|
\vfill
|
||||||
|
|
||||||
|
{\Large Tesi di maturità\par}
|
||||||
{\vspace{0.5cm}}
|
{\vspace{0.5cm}}
|
||||||
{\Large\itshape\mdauthor\par}
|
{\Large\itshape\mdauthor\par}
|
||||||
\vfill
|
\vspace{3cm}
|
||||||
% Bottom of the page
|
|
||||||
{\large\mddate\par}
|
|
||||||
\begin{it}
|
\begin{it}
|
||||||
\vspace{0.5cm}
|
|
||||||
{\large\textsc{Traduzione in italiano}\par}
|
{\large\textsc{Traduzione in italiano}\par}
|
||||||
\end{it}
|
\end{it}
|
||||||
|
\begin{en}
|
||||||
|
{\large\textsc{Main copy}\par}
|
||||||
|
\end{en}
|
||||||
\vspace{0.5cm}
|
\vspace{0.5cm}
|
||||||
{\large\color{red}\textsc{Revisione \mdrevision}\par}
|
{\large\mddate\par}
|
||||||
\end{titlepage}
|
\end{titlepage}
|
||||||
|
|
||||||
\newpage
|
\newpage
|
||||||
|
@ -114,17 +116,17 @@
|
||||||
piccole e medie imprese) svolgendo un'attività di alternanza scuola-lavoro
|
piccole e medie imprese) svolgendo un'attività di alternanza scuola-lavoro
|
||||||
estesa con cadenza settimanale (giovedì e venerdì pomeriggio). Mi occupo di
|
estesa con cadenza settimanale (giovedì e venerdì pomeriggio). Mi occupo di
|
||||||
sviluppo software di tipo gestionale, nello specifico di applicazioni per
|
sviluppo software di tipo gestionale, nello specifico di applicazioni per
|
||||||
smartphone multipiattaforma (cioè compatibili sia con Android che con iOS)
|
smartphone multipiattaforma (cioè compatibili sia con \textit{Android} che con \textit{iOS})
|
||||||
utilizzando strumenti come \textit{Ionic Framework}\cite{ionic:website} e
|
utilizzando strumenti come \textit{Ionic Framework}\cite{ionic:website} e
|
||||||
\textit{Apache Cordova}\cite{cordova:website}.
|
\textit{Apache Cordova}\cite{cordova:website}.
|
||||||
|
|
||||||
Tale approccio al mondo \textit{mobile} facilita lo sviluppo, perché al
|
Tale approccio al mondo \textit{mobile} facilita lo sviluppo, perché al
|
||||||
posto di usare API e meccanismi legati alla piattaforma \`e possibile
|
posto di usare \textit{API} e meccanismi legati alla piattaforma è possibile
|
||||||
utilizzare tecnologie note e standard come HTML e Javascript. Naturalmente
|
utilizzare tecnologie note e standard come \textit{HTML} e \textit{Javascript}. Naturalmente
|
||||||
tali applicazioni richiedono pi\`u risorse e tendono ad essere meno fluide,
|
tali applicazioni richiedono pi\`u risorse e tendono ad essere meno fluide,
|
||||||
ma questo aspetto è meno rilevante in contesti gestionali come quelli
|
ma questo aspetto è meno rilevante in contesti gestionali come quelli
|
||||||
affrontati da Agomir, non legati ad esempio al mondo dei videogiochi o
|
affrontati da Agomir, non legati ad esempio al mondo dei videogiochi o
|
||||||
all'elaborazione real-time.
|
all'elaborazione \textit{real-time}.
|
||||||
\end{it}
|
\end{it}
|
||||||
\begin{en}
|
\begin{en}
|
||||||
\section{General information about the work done}
|
\section{General information about the work done}
|
||||||
|
@ -135,13 +137,13 @@
|
||||||
industries) doing an extended school internship on a weekly basis (Thursdays
|
industries) doing an extended school internship on a weekly basis (Thursdays
|
||||||
and Fridays, in the afternoon). I am involved in developing accounting
|
and Fridays, in the afternoon). I am involved in developing accounting
|
||||||
software, writing multiplatform smartphone applications (which work
|
software, writing multiplatform smartphone applications (which work
|
||||||
with both Android and iOS) to be precise. In order to do this, I am using tools
|
with both \textit{Android} and \textit{iOS}) to be precise. In order to do this, I am using tools
|
||||||
such as \textit{Ionic Framework}\cite{ionic:website} and \textit{Apache
|
such as \textit{Ionic Framework}\cite{ionic:website} and \textit{Apache
|
||||||
Cordova}\cite{cordova:website}.
|
Cordova}\cite{cordova:website}.
|
||||||
|
|
||||||
This type of approach to the mobile world makes development easier because
|
This type of approach to the mobile world makes development easier because
|
||||||
instead of using APIs and platform-dependent code it is possible to use
|
instead of using APIs and platform-dependent code it is possible to use
|
||||||
well-known and standardized technologies such as HTML and Javascript.
|
well-known and standardized technologies such as \textit{HTML} and \textit{Javascript}.
|
||||||
Naturally, these apps require more system resources and they generally are
|
Naturally, these apps require more system resources and they generally are
|
||||||
less responsive than their native counterparts. However, this aspect is less
|
less responsive than their native counterparts. However, this aspect is less
|
||||||
relevant in the world of accounting software that Agomir embraces, far from the
|
relevant in the world of accounting software that Agomir embraces, far from the
|
||||||
|
@ -154,7 +156,7 @@
|
||||||
Non ho diretto controllo manageriale su ciò che sviluppo in azienda,
|
Non ho diretto controllo manageriale su ciò che sviluppo in azienda,
|
||||||
in quanto ho un ruolo simile a quello di un dipendente. L'incarico di gestire
|
in quanto ho un ruolo simile a quello di un dipendente. L'incarico di gestire
|
||||||
l'andamento dei progetti spetta a Mario Goretti, A.D. dell'azienda e capo
|
l'andamento dei progetti spetta a Mario Goretti, A.D. dell'azienda e capo
|
||||||
del settore di sviluppo software gestionale (\textsc{SWG}), e ai suoi
|
del settore di sviluppo software gestionale (\textsc{SWG}), ed ai suoi
|
||||||
collaboratori.
|
collaboratori.
|
||||||
|
|
||||||
In generale sviluppo i progetti da solo. Collaboro con il collega Daniele
|
In generale sviluppo i progetti da solo. Collaboro con il collega Daniele
|
||||||
|
@ -162,7 +164,7 @@
|
||||||
l'organizzazione di nuovi progetti, nonché per ricevere da lui consigli utili
|
l'organizzazione di nuovi progetti, nonché per ricevere da lui consigli utili
|
||||||
per migliorare le mie competenze.
|
per migliorare le mie competenze.
|
||||||
|
|
||||||
Nonostante non abbia controllo totale \`e comunque mia responsabilità fare
|
Nonostante non abbia controllo totale è comunque mia responsabilità fare
|
||||||
stime orarie sul lavoro da svolgere nonché definire passi e \textit{milestone}
|
stime orarie sul lavoro da svolgere nonché definire passi e \textit{milestone}
|
||||||
per i vari progetti.
|
per i vari progetti.
|
||||||
|
|
||||||
|
@ -176,7 +178,7 @@
|
||||||
I do not directly manage the projects on which I work, because my role is more
|
I do not directly manage the projects on which I work, because my role is more
|
||||||
similar to that of an employee. The task of managing the status of the various
|
similar to that of an employee. The task of managing the status of the various
|
||||||
projects is given to Mario Goretti, CEO of the company and head of the
|
projects is given to Mario Goretti, CEO of the company and head of the
|
||||||
accounting software department (codenamed SWG), and to his collaborators.
|
accounting software department (codenamed \textsc{SWG}), and to his collaborators.
|
||||||
|
|
||||||
In general, I work on the tasks assigned to me alone. I sometimes work with my
|
In general, I work on the tasks assigned to me alone. I sometimes work with my
|
||||||
colleague Daniele Crippa in order to interface my projects' code with the
|
colleague Daniele Crippa in order to interface my projects' code with the
|
||||||
|
@ -204,7 +206,7 @@
|
||||||
\begin{description}
|
\begin{description}
|
||||||
\item[Ordini cliente{\normalfont,}] per registrare ordini di prodotti a clienti;
|
\item[Ordini cliente{\normalfont,}] per registrare ordini di prodotti a clienti;
|
||||||
\item[Soggetti{\normalfont,}] per consultare informazioni anagrafiche di clienti e fornitori;
|
\item[Soggetti{\normalfont,}] per consultare informazioni anagrafiche di clienti e fornitori;
|
||||||
\item[Agenda{\normalfont,}] per consultare e aggiungere eventi nel calendario presente
|
\item[Agenda{\normalfont,}] per consultare ed aggiungere eventi nel calendario presente
|
||||||
nell'ERP, il quale si pu\`o integrare con \textit{Outlook};
|
nell'ERP, il quale si pu\`o integrare con \textit{Outlook};
|
||||||
\item[Magazzini{\normalfont,}] gestire e inventariare scorte in magazzino.
|
\item[Magazzini{\normalfont,}] gestire e inventariare scorte in magazzino.
|
||||||
\end{description}
|
\end{description}
|
||||||
|
@ -278,29 +280,29 @@
|
||||||
|
|
||||||
\item L'applicazione non comunica direttamente con il gestionale, ma tramite
|
\item L'applicazione non comunica direttamente con il gestionale, ma tramite
|
||||||
una serie di chiamate \textsc{REST}\cite{wiki:rest} ad un endpoint lato
|
una serie di chiamate \textsc{REST}\cite{wiki:rest} ad un endpoint lato
|
||||||
server (chiamato \textit{InteGRaREST}) che svolge il ruolo di intermediario;
|
server (chiamato \textit{InteGRaREST}) che svolge il ruolo di intermediario.
|
||||||
|
|
||||||
\item Tale componente è una Java WebApplication che utilizza una libreria
|
\item Tale componente è una Java WebApplication che utilizza una libreria
|
||||||
sviluppata internamente (chiamata \textit{restaurant}) per offrire le rotte
|
sviluppata internamente (chiamata \textit{restaurant}) per offrire le rotte
|
||||||
accessibili al client e per interagire con il database di
|
accessibili al client e per interagire con il database di
|
||||||
\textit{InteGRa}, una normale istanza di \textit{PostgreSQL};
|
\textit{InteGRa}, una normale istanza di \textit{PostgreSQL}.
|
||||||
|
|
||||||
\item Nella fase di comunicazione tramite HTTP, i dati in input vengono
|
\item Nella fase di comunicazione tramite HTTP, i dati in input vengono
|
||||||
trasmessi come \texttt{application/x-www-form-urlencoded} mentre
|
trasmessi come \texttt{application/x-www-form-urlencoded} mentre
|
||||||
i dati in output vengono trasmessi come \textsc{JSON}\cite{wiki:json}, e le
|
i dati in output vengono trasmessi come \textsc{JSON}\cite{wiki:json}, e le
|
||||||
sessioni vengono identificate con un token presente come parametro nella
|
sessioni vengono identificate con un token presente come parametro nella
|
||||||
query string di ciascuna richiesta;
|
query string di ciascuna richiesta.
|
||||||
|
|
||||||
\item \textit{InteGRaREST} effettua autonomamente query \textsc{SQL} al
|
\item \textit{InteGRaREST} effettua autonomamente query \textsc{SQL} al
|
||||||
database per recuperare velocemente informazioni aventi
|
database per recuperare velocemente informazioni aventi
|
||||||
struttura dati e logiche di memorizzazione semplici;
|
struttura dati e logiche di memorizzazione semplici.
|
||||||
|
|
||||||
\item Nel caso sia necessario interagire con record complessi,
|
\item Nel caso sia necessario interagire con record complessi,
|
||||||
\textit{InteGRaREST} comunica con \textit{InteGRa} attraverso
|
\textit{InteGRaREST} comunica con \textit{InteGRa} attraverso
|
||||||
chiamate \textsc{SOAP}\cite{wiki:soap};
|
chiamate \textsc{SOAP}\cite{wiki:soap}.
|
||||||
|
|
||||||
\item \textit{InteGRa Mobile}, l'applicazione per dispositivi mobili, comunica
|
\item \textit{InteGRa Mobile}, l'applicazione per dispositivi mobili, comunica
|
||||||
con \textit{InteGRaREST} grazie a una versione client di \textit{restaurant},
|
con \textit{InteGRaREST} grazie ad una versione client di \textit{restaurant},
|
||||||
in grado di gestire (in modo limitato) operazioni eseguite in mancanza di
|
in grado di gestire (in modo limitato) operazioni eseguite in mancanza di
|
||||||
connessione alla rete.
|
connessione alla rete.
|
||||||
|
|
||||||
|
@ -316,26 +318,26 @@
|
||||||
|
|
||||||
\item The smartphone app does not directly communicate with the accounting
|
\item The smartphone app does not directly communicate with the accounting
|
||||||
software, but instead it interacts using \textsc{REST} calls\cite{wiki:rest}
|
software, but instead it interacts using \textsc{REST} calls\cite{wiki:rest}
|
||||||
with a middleware server application, named \textit{InteGRaREST};
|
with a middleware server application, named \textit{InteGRaREST}.
|
||||||
|
|
||||||
\item The last component mentioned is a Java WebApplication,
|
\item The last component mentioned is a Java WebApplication,
|
||||||
implemented by using an internally developed library named \textit{restaurant},
|
implemented by using an internally developed library named \textit{restaurant},
|
||||||
that contains the boilerplate needed to generate the \textsc{REST} routes
|
that contains the boilerplate needed to generate the \textsc{REST} routes
|
||||||
and to access the \textit{InteGRa} database, a normal \textit{PostgreSQL}
|
and to access the \textit{InteGRa} database, a normal \textit{PostgreSQL}
|
||||||
instance;
|
instance.
|
||||||
|
|
||||||
\item When information is exchanged by HTTP, input data is encoded
|
\item When information is exchanged by HTTP, input data is encoded
|
||||||
as the MIME type \texttt{application/x-www-form-urlencoded}, while output data
|
as the MIME type \texttt{application/x-www-form-urlencoded}, while output data
|
||||||
is encoded as \textsc{JSON}\cite{wiki:json}. Sessions are identified by
|
is encoded as \textsc{JSON}\cite{wiki:json}. Sessions are identified by
|
||||||
a token that must be included in the query string of each call;
|
a token that must be included in the query string of each call.
|
||||||
|
|
||||||
\item \textit{InteGRaREST} queries the database autonomously through
|
\item \textit{InteGRaREST} queries the database autonomously through
|
||||||
\textsc{SQL} in order to fetch and store data structures with simple
|
\textsc{SQL} in order to fetch and store data structures with simple
|
||||||
or absent logical constraints;
|
or absent logical constraints.
|
||||||
|
|
||||||
\item When interaction with data arranged in complex structures is needed,
|
\item When interaction with data arranged in complex structures is needed,
|
||||||
\textit{InteGRaREST} communicates with \textit{InteGRa} through
|
\textit{InteGRaREST} communicates with \textit{InteGRa} through
|
||||||
\textsc{SOAP} calls\cite{wiki:soap};
|
\textsc{SOAP} calls\cite{wiki:soap}.
|
||||||
|
|
||||||
\item \textit{InteGRa Mobile}, the smartphone app, interacts with
|
\item \textit{InteGRa Mobile}, the smartphone app, interacts with
|
||||||
\textit{InteGRaREST} thanks to a client version of \textit{restaurant},
|
\textit{InteGRaREST} thanks to a client version of \textit{restaurant},
|
||||||
|
@ -381,7 +383,7 @@
|
||||||
|
|
||||||
Seguono le interfacce delle classi \textit{CRUDUtils}, \textit{JsonProducer},
|
Seguono le interfacce delle classi \textit{CRUDUtils}, \textit{JsonProducer},
|
||||||
\textit{ReadableRESTController} e \textit{CRUDRESTController}, complete di
|
\textit{ReadableRESTController} e \textit{CRUDRESTController}, complete di
|
||||||
Javadoc (in inglese, come presente nei sorgenti originali).
|
\textit{Javadoc} (in inglese, come presente nei sorgenti originali).
|
||||||
\end{it}
|
\end{it}
|
||||||
\begin{en}
|
\begin{en}
|
||||||
\subsubsection{\textit{restaurant} -- server side}
|
\subsubsection{\textit{restaurant} -- server side}
|
||||||
|
@ -418,7 +420,7 @@
|
||||||
|
|
||||||
Below there are the interface listings for the classes \textit{CRUDUtils}, \textit{JsonProducer},
|
Below there are the interface listings for the classes \textit{CRUDUtils}, \textit{JsonProducer},
|
||||||
\textit{ReadableRESTController} and \textit{CRUDRESTController}, with the
|
\textit{ReadableRESTController} and \textit{CRUDRESTController}, with the
|
||||||
respective Javadoc comments (in english, as in the original sources).
|
respective \textit{Javadoc} comments (in english, as in the original sources).
|
||||||
\end{en}
|
\end{en}
|
||||||
|
|
||||||
\begin{it}
|
\begin{it}
|
||||||
|
@ -822,7 +824,7 @@ public abstract class CRUDUtils {
|
||||||
Oltre a quanto mostrato, \textit{restaurant} contiene vari metodi utilità per
|
Oltre a quanto mostrato, \textit{restaurant} contiene vari metodi utilità per
|
||||||
la gestione di file \texttt{.properties}, per la validazione dei dati in
|
la gestione di file \texttt{.properties}, per la validazione dei dati in
|
||||||
input, per la registrazione della \textit{timestamp} di creazione o modifica
|
input, per la registrazione della \textit{timestamp} di creazione o modifica
|
||||||
di un record, e altro ancora.
|
di un record, ed altro ancora.
|
||||||
\end{it}
|
\end{it}
|
||||||
\begin{en}
|
\begin{en}
|
||||||
Beside what shown, \textit{restaurant} includes many utility methods able to
|
Beside what shown, \textit{restaurant} includes many utility methods able to
|
||||||
|
@ -833,7 +835,7 @@ public abstract class CRUDUtils {
|
||||||
\begin{it}
|
\begin{it}
|
||||||
\subsubsection{\textit{restaurant} -- lato client}
|
\subsubsection{\textit{restaurant} -- lato client}
|
||||||
La parte \textit{client} della libreria \textit{restaurant} è implementata con il
|
La parte \textit{client} della libreria \textit{restaurant} è implementata con il
|
||||||
linguaggio \textit{TypeScript}, un'estensione di \textit{Javascript}
|
linguaggio di programmazione \textit{TypeScript}, un'estensione di \textit{Javascript}
|
||||||
che aggiunge tipizzazione statica, costrutti classici della programmazione
|
che aggiunge tipizzazione statica, costrutti classici della programmazione
|
||||||
ad oggetti, nonch\'e supporto alle generiche. Segue il listato dell'interfaccia della
|
ad oggetti, nonch\'e supporto alle generiche. Segue il listato dell'interfaccia della
|
||||||
classe \textit{RESTService}, la quale contiene metodi statici per comunicare
|
classe \textit{RESTService}, la quale contiene metodi statici per comunicare
|
||||||
|
@ -845,7 +847,7 @@ public abstract class CRUDUtils {
|
||||||
The client portion of the \textit{restaurant} library is implemented with the
|
The client portion of the \textit{restaurant} library is implemented with the
|
||||||
\textit{TypeScript} programming language, an extension of \textit{Javascript}
|
\textit{TypeScript} programming language, an extension of \textit{Javascript}
|
||||||
offering static typing, common OOP constructs and generics support. The
|
offering static typing, common OOP constructs and generics support. The
|
||||||
following listings describes the \textit{RESTService} class interface, which
|
following listing describes the \textit{RESTService} class interface, which
|
||||||
contains some static methods useful to exchange data asynchronously with the
|
contains some static methods useful to exchange data asynchronously with the
|
||||||
server in the form of instances of ``entity'' classes, inheritors of the
|
server in the form of instances of ``entity'' classes, inheritors of the
|
||||||
abstract class \textit{Table}.
|
abstract class \textit{Table}.
|
||||||
|
@ -1256,8 +1258,8 @@ Since this project was urgent for the customer, development on \textit{InteGRa
|
||||||
to the remote hosts;
|
to the remote hosts;
|
||||||
\item[\textit{guacamole-client}{\normalfont,}] a Web Application written with \textit{Java
|
\item[\textit{guacamole-client}{\normalfont,}] a Web Application written with \textit{Java
|
||||||
Servlets} that offers a web interface for interacting with
|
Servlets} that offers a web interface for interacting with
|
||||||
\end{description}
|
|
||||||
\textit{guacamole-server} and to connect with remote PCs.
|
\textit{guacamole-server} and to connect with remote PCs.
|
||||||
|
\end{description}
|
||||||
Considering the open-source nature of the project, both \textit{guacamole-server}
|
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
|
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
|
similar software. To be precise, \textit{guacamole-client} can be divided in the
|
||||||
|
|
Reference in a new issue