diff --git a/english.tex b/english.tex index 1002f1f..4731a62 100644 --- a/english.tex +++ b/english.tex @@ -1,4 +1,4 @@ -\documentclass[hidelinks,12pt,a4paper]{scrartcl} +\documentclass[hidelinks,12pt,a4paper,numbers=enddot]{scrartcl} \usepackage{comment} \includecomment{en} diff --git a/italian.tex b/italian.tex index 4a2329f..332972a 100644 --- a/italian.tex +++ b/italian.tex @@ -1,4 +1,4 @@ -\documentclass[hidelinks,12pt,a4paper]{scrartcl} +\documentclass[hidelinks,12pt,a4paper,numbers=enddot]{scrartcl} \usepackage{comment} \includecomment{it} diff --git a/main.tex b/main.tex index 2c05476..cd12592 100644 --- a/main.tex +++ b/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}. @@ -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