Final tweaks

This commit is contained in:
Claudio Maggioni 2018-06-13 23:40:11 +02:00
parent 6b8541bc8e
commit 667310a11b
3 changed files with 41 additions and 39 deletions

View File

@ -1,4 +1,4 @@
\documentclass[hidelinks,12pt,a4paper]{scrartcl}
\documentclass[hidelinks,12pt,a4paper,numbers=enddot]{scrartcl}
\usepackage{comment}
\includecomment{en}

View File

@ -1,4 +1,4 @@
\documentclass[hidelinks,12pt,a4paper]{scrartcl}
\documentclass[hidelinks,12pt,a4paper,numbers=enddot]{scrartcl}
\usepackage{comment}
\includecomment{it}

View File

@ -33,14 +33,14 @@
\begin{it}
\def\mdtitle{Alternanza scuola-lavoro estesa presso \textit{Agomir S.p.A.}}
\def\mdsubtitle{Sviluppo di applicazioni multipiattaforma per dispositivi mobili}
\def\mddate{8 giugno 2018}
\end{it}
\begin{en}
\def\mdtitle{Extended school internship at \textit{Agomir S.p.A.}}
\def\mdsubtitle{Multiplatform mobile application development}
\def\mddate{8 June 2018}
\end{en}
\def\mdauthor{Claudio Maggioni}
\def\mddate{\today}
\def\mdrevision{7}
% header and footer style
\clearscrheadfoot
@ -83,19 +83,21 @@
{\huge\bfseries\mdtitle\par}
\vspace{0.75cm}
{\Large\bfseries\mdsubtitle\par}
\vspace{2cm}
{\Large Tesi di maturità di\par}
\vfill
{\Large Tesi di maturità\par}
{\vspace{0.5cm}}
{\Large\itshape\mdauthor\par}
\vfill
% Bottom of the page
{\large\mddate\par}
\vspace{3cm}
\begin{it}
\vspace{0.5cm}
{\large\textsc{Traduzione in italiano}\par}
\end{it}
\begin{en}
{\large\textsc{Main copy}\par}
\end{en}
\vspace{0.5cm}
{\large\color{red}\textsc{Revisione \mdrevision}\par}
{\large\mddate\par}
\end{titlepage}
\newpage
@ -114,17 +116,17 @@
piccole e medie imprese) svolgendo un'attività di alternanza scuola-lavoro
estesa con cadenza settimanale (giovedì e venerdì pomeriggio). Mi occupo di
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
\textit{Apache Cordova}\cite{cordova:website}.
Tale approccio al mondo \textit{mobile} facilita lo sviluppo, perché al
posto di usare API e meccanismi legati alla piattaforma \`e possibile
utilizzare tecnologie note e standard come HTML e Javascript. Naturalmente
posto di usare \textit{API} e meccanismi legati alla piattaforma è possibile
utilizzare tecnologie note e standard come \textit{HTML} e \textit{Javascript}. Naturalmente
tali applicazioni richiedono pi\`u risorse e tendono ad essere meno fluide,
ma questo aspetto è meno rilevante in contesti gestionali come quelli
affrontati da Agomir, non legati ad esempio al mondo dei videogiochi o
all'elaborazione real-time.
all'elaborazione \textit{real-time}.
\end{it}
\begin{en}
\section{General information about the work done}
@ -135,13 +137,13 @@
industries) doing an extended school internship on a weekly basis (Thursdays
and Fridays, in the afternoon). I am involved in developing accounting
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
Cordova}\cite{cordova:website}.
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
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
less responsive than their native counterparts. However, this aspect is less
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,
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
del settore di sviluppo software gestionale (\textsc{SWG}), e ai suoi
del settore di sviluppo software gestionale (\textsc{SWG}), ed ai suoi
collaboratori.
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
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}
per i vari progetti.
@ -176,7 +178,7 @@
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
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
colleague Daniele Crippa in order to interface my projects' code with the
@ -204,7 +206,7 @@
\begin{description}
\item[Ordini cliente{\normalfont,}] per registrare ordini di prodotti a clienti;
\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};
\item[Magazzini{\normalfont,}] gestire e inventariare scorte in magazzino.
\end{description}
@ -278,29 +280,29 @@
\item L'applicazione non comunica direttamente con il gestionale, ma tramite
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
sviluppata internamente (chiamata \textit{restaurant}) per offrire le rotte
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
trasmessi come \texttt{application/x-www-form-urlencoded} mentre
i dati in output vengono trasmessi come \textsc{JSON}\cite{wiki:json}, e le
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
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,
\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
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
connessione alla rete.
@ -316,26 +318,26 @@
\item The smartphone app does not directly communicate with the accounting
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,
implemented by using an internally developed library named \textit{restaurant},
that contains the boilerplate needed to generate the \textsc{REST} routes
and to access the \textit{InteGRa} database, a normal \textit{PostgreSQL}
instance;
instance.
\item When information is exchanged by HTTP, input data is encoded
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
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
\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,
\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
\textit{InteGRaREST} thanks to a client version of \textit{restaurant},
@ -381,7 +383,7 @@
Seguono le interfacce delle classi \textit{CRUDUtils}, \textit{JsonProducer},
\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}
\begin{en}
\subsubsection{\textit{restaurant} -- server side}
@ -418,7 +420,7 @@
Below there are the interface listings for the classes \textit{CRUDUtils}, \textit{JsonProducer},
\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}
\begin{it}
@ -822,7 +824,7 @@ public abstract class CRUDUtils {
Oltre a quanto mostrato, \textit{restaurant} contiene vari metodi utilità per
la gestione di file \texttt{.properties}, per la validazione dei dati in
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}
\begin{en}
Beside what shown, \textit{restaurant} includes many utility methods able to
@ -833,7 +835,7 @@ public abstract class CRUDUtils {
\begin{it}
\subsubsection{\textit{restaurant} -- lato client}
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
ad oggetti, nonch\'e supporto alle generiche. Segue il listato dell'interfaccia della
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
\textit{TypeScript} programming language, an extension of \textit{Javascript}
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
server in the form of instances of ``entity'' classes, inheritors of the
abstract class \textit{Table}.
@ -1255,9 +1257,9 @@ Since this project was urgent for the customer, development on \textit{InteGRa
protocol and the VNC, RDP and SSH protocols, using the last ones to connect
to the remote hosts;
\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
\textit{guacamole-server} and to connect with remote PCs.
\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