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}
|
||||
|
||||
\includecomment{en}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
\documentclass[hidelinks,12pt,a4paper]{scrartcl}
|
||||
\documentclass[hidelinks,12pt,a4paper,numbers=enddot]{scrartcl}
|
||||
\usepackage{comment}
|
||||
|
||||
\includecomment{it}
|
||||
|
|
74
main.tex
74
main.tex
|
@ -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}.
|
||||
|
@ -1256,8 +1258,8 @@ Since this project was urgent for the customer, development on \textit{InteGRa
|
|||
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
|
||||
\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
|
||||
|
|
Reference in a new issue