diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000000000000000000000000000000000..0101db119331ba8124eb6f2db484a73797b4e213 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,24 @@ +root = true + +[Makefile] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = space +insert_final_newline = false +max_line_length = 120 +tab_width = 4 + +[*.bib] +charset = utf-8 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +charset = utf-8 +insert_final_newline = true + +[*.tex] +charset = utf-8 +insert_final_newline = true +trim_trailing_whitespace = true \ No newline at end of file diff --git a/Makefile b/Makefile index 26f245c58b217752989f70d8dd4da154123f2d8f..0b4b83850fe3ede80bd6f4bfb47dd59bea9d17de 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,36 @@ -clean: - rm -rf ./out/* - rm -rf ./auxil/* \ No newline at end of file +# Executables +latexmk = latexmk + +# Main file name +MAIN = FERRON_relazione +MAIN_READABLE = $(MAIN)-readable +MAIN_PRINTABLE = $(MAIN)-printable +MAIN_ABSTRACT = $(MAIN)-abstract +MASTER = main +MASTER_TEX = $(MASTER).tex +WORKING_DIR = src/ + +all: readable printable abstract + +printable: --$(MAIN_PRINTABLE).pdf + +readable: --$(MAIN_READABLE).pdf + +abstract: --$(MAIN_ABSTRACT).pdf + +--$(MAIN_READABLE).pdf: + cd $(WORKING_DIR) && \ + $(latexmk) -interaction=nonstopmode -shell-escape -synctex=1 -lualatex -usepretex='\newif\ifprint \printfalse\newif\ifabstract \abstracttrue' $(MASTER_TEX) && \ + mv $(MASTER).pdf $(MAIN_READABLE).pdf + +--$(MAIN_PRINTABLE).pdf: + cd $(WORKING_DIR) && \ + $(latexmk) -interaction=nonstopmode -shell-escape -synctex=1 -lualatex -usepretex='\newif\ifprint \printtrue\newif\ifabstract \abstracttrue' $(MASTER_TEX) && \ + mv $(MASTER).pdf $(MAIN_PRINTABLE).pdf + +--$(MAIN_ABSTRACT).pdf: + cd $(WORKING_DIR) && \ + $(latexmk) -interaction=nonstopmode -shell-escape -synctex=1 -lualatex -usepretex='\newif\ifprint \printfalse\newif\ifabstract \abstractfalse' $(MASTER_TEX) && \ + mv $(MASTER).pdf $(MAIN_ABSTRACT).pdf + +.PHONY: all readable printable abstract \ No newline at end of file diff --git a/README.md b/README.md index 878c8f206bf9ff9d9fe8ba8ccb8706ceb9523cfe..53d0059ed6524e366c63b8ff1376010bff8201ff 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,39 @@ Contenitore per la stesura della relazione del lavoro svolto durante lo stage. -## Dimensionamento immagini +## Struttura del progetto + +``` +preamble/ +├─ preamble.tex +├─ shorcuts.tex +├─ packages/ +│ ├─ packages.tex +│ ├─ minted.tex +│ ├─ tikz.tex +│ ├─ ams.tex +│ ├─ biblatex.tex +├─ my-macros/ +│ ├─ my-macros.tex +│ ├─ arabiczeropad.tex +│ ├─ datafile.tex +│ ├─ cutimage.tex +│ ├─ file.tex +│ ├─ inputpath.tex +│ ├─ mintedpath.tex +│ ├─ newthread.tex +│ ├─ prog.tex +├─ workarounds/ +│ ├─ workarounds.tex +│ ├─ fixpdfx.tex +│ ├─ issue-1041.tex +``` + +## Composizione + +Alcune buone pratiche da seguire durante la composizione. + +### Dimensionamento immagini Nell'`\includegraphics[width=\linewidth]{...}` usare come fattore di `width` un [valore](https://www.wolframalpha.com/input/?i=Union%5BTable%5BRound%5B0.35*%28sqrt%282%29%29%5En%2C0.1%5D%2C+%7Bn%2C1%2C15%7D%5D%2CTable%5B0.35%2C%7B1%7D%5D%5D) della sequenza geometrica di ragione diff --git a/src/FERRON_relazione.tex b/src/FERRON_relazione.tex deleted file mode 100644 index 2aff1c97d08df52d69d7f80b6078110658c49ff2..0000000000000000000000000000000000000000 --- a/src/FERRON_relazione.tex +++ /dev/null @@ -1,148 +0,0 @@ -% !TeX document-id = {8602df8a-3751-46db-a1ee-ff0ee04eb7bd} -% !BIB TS-program = biber -% !TEX TS-program = lualatex -% !TeX encoding = UTF-8 - -\providecommand{\optpdfx}{a-2b,mathxmp,LATxmp} %option x-4 for print, a-2b for archive (also display) - -\title{Sviluppo di una piattaforma e-commerce per la vendita di mobili metallizzati} - -% Preamble -\ProvidesFile{FERRON_relazione.tex}[] -\documentclass[% -corpo=11.5pt,% -tipotesi=triennale,% -evenboxes,% -%draft,% -%libro,twoside% uncomment to print PDF -]{toptesi} - -\usepackage{clrscode3e,minted} -\setminted{linenos} -\let\IWANTTHISlisting=\listing - -\usepackage{makeidx} - -\makeatletter -\begin{pdfxmetadata} - \Title{\@title} - \Author[it-IT]{Lorenzo Ferron} - % If you don’t know what to use for the Subject, you can use the Title again in this field. - \Subject{\@title} - \Keywords{e-commerce\sep architecture\sep data layer\sep presentation layer\sep business layer\sep requirements\sep Bachelor's Degree\sep italian} - \Language{it-IT\sep en-US} - \Copyright[en-US]{WTFPL Version 2} - \Copyrighted{False} - \Source{\jobname.tex} - %\Publisher{} -\end{pdfxmetadata} -\usepackage[\optpdfx]{pdfx} -\makeatother - -\errorcontextlines=9% more information on the console in case of errors - -\setmainfont[Ligatures=TeX]{TeX Gyre Termes}% font Times -\setsansfont[Ligatures=TeX, Scale=MatchLowercase]{TeX Gyre Heros}% font Helvetica -\setmonofont{UM Typewriter}% font typewriter un po' più scuri del font Courier -\usepackage{amsmath,amsthm} % per la matematica estesa -\usepackage[math-style=ISO]{unicode-math}% per la matematica UNICODE - % specify math-style=ISO for ISO compliant math - % specify math-style=TeX for TeX standard style -\setmathfont{XITS Math}% font matematici UNICODE che van bene con i Times -\setmathfont[range={\mathcal,\mathbfcal},StylisticSet=1,partial=upright]{XITS Math} - -\usepackage[italian]{cleveref} - -\SetLanguageKeys{italian}{indentfirst=false} - -\usepackage[figuresright]{rotating} -\usepackage{pgf-umlsd, enumitem, microtype} - -\RequirePackage{xargs} - -\AfterEndPreamble{% - \input{preamble/my-macros.tex} -} - -\usepackage[autostyle,italian=guillemets]{csquotes} -\usepackage[% -backend=biber,% -style=numeric-comp,% -datamodel=software,% -citestyle=numeric,% -sorting=nty,% -urldate=long,% -dateabbrev=false,% -abbreviate=false,% -natbib -]{biblatex} -\DeclareLanguageMapping{italian}{italian-software} % software-biblatex: unsupported language. For now. -\usepackage{software-biblatex} -% \AfterEndPreamble{\input{preamble/workarounds/issue-1041.tex}} % uncomment with biblatex 3.15 or 3.15a -\addbibresource{references.bib} - -\unless\ifcsname ver@hyperref.sty\endcsname\usepackage{hyperref}\fi -\hypersetup{% - pdfpagemode={UseOutlines},% - unicode,% - psdextra,% - bookmarksopen,% - pdfstartview={FitH},% - colorlinks,% - linkcolor={blue},% - citecolor={blue},% - urlcolor={blue} -} - -\usepackage{bookmark} - -\includeonly{% - contents/introduzione/introduzione,% - contents/introduzione-al-lavoro/introduzione-al-lavoro,% - contents/strumenti-utilizzati/strumenti-utilizzati,% - contents/lavoro-svolto/lavoro-svolto,% - contents/conclusioni/conclusioni,% - contents/appendices/orm/orm,% -} - -\ExtendCaptions{italian}{Abstract}{Ringraziamenti} - -\begin{document} - - \let\listing=\IWANTTHISlisting - - \Crefname{section}{Paragrafo}{Paragrafi} - \Crefname{subsection}{Paragrafo}{Paragrafi} - - \makeatletter - \begin{ThesisTitlePage} - % see FERRON_relazione.cfg - \end{ThesisTitlePage} - \makeatother - - \sommario - - \input{contents/abstract.tex} - - \indici - - \mainmatter - - \include{contents/introduzione/introduzione} - \include{contents/introduzione-al-lavoro/introduzione-al-lavoro} - \include{contents/lavoro-svolto/lavoro-svolto} - \include{contents/strumenti-utilizzati/strumenti-utilizzati} - \include{contents/conclusioni/conclusioni} - - \appendix - - \include{contents/appendices/orm/orm} - - \backmatter - - \cleardoublepage - \phantomsection - \bookmarksetup{startatroot} - \printbibliography[heading=bibintoc] - -\end{document} \ No newline at end of file diff --git a/src/contents/appendices/orm/orm.tex b/src/contents/appendices/orm/orm.tex index d79576b81196048cc0b8436d805202038f5292ea..46a324f3418e803e9561a4546f4ff7a2611c6c8b 100644 --- a/src/contents/appendices/orm/orm.tex +++ b/src/contents/appendices/orm/orm.tex @@ -1,5 +1,5 @@ % !TeX encoding = UTF-8 -% !TeX root = ../../../FERRON_relazione.tex +% !TeX root = ../../../main.tex \chapter{ORM}\label{ch:orm} diff --git a/src/contents/conclusioni/conclusioni.tex b/src/contents/conclusioni/conclusioni.tex index b21ef4a918e3d2e48838b7b0fb1269595ecaa22a..427446f321e169ba191b3e01301e5ac4c106f294 100644 --- a/src/contents/conclusioni/conclusioni.tex +++ b/src/contents/conclusioni/conclusioni.tex @@ -1,5 +1,5 @@ % !TeX encoding = UTF-8 -% !TeX root = ../../FERRON_relazione.tex +% !TeX root = ../../main.tex \chapter{Conclusioni e sviluppi futuri} \label{ch:conclusioni} @@ -32,4 +32,4 @@ Quindi se di lì a poco l'utente riesegue l'accesso non troverà il carrello com Purtroppo tale difetto è portato da una considerazione di prestazioni, infatti per correggerlo basterebbe che il salvataggio avvenisse ogni qualvolta si fa una modifica sul carrello. Ad ogni modo se questa operazione risulta frequente, si rischia di avere un gran numero di scritture sulla base di dati. -Si potrebbe infine passare a uno sviluppo più rapido, senza cambiare linguaggio, ma utilizzando un \textenglish{framework} come Spring~\cite{spring}, che nonostante faccia uso di \mbox{\prog{Tomcat}}, rende più agevole e compatta l'implementazione perché fornisce un gran numero di annotazioni, le quali fanno inteso uso della riflessione di Java. \ No newline at end of file +Si potrebbe infine passare a uno sviluppo più rapido, senza cambiare linguaggio, ma utilizzando un \textenglish{framework} come Spring~\cite{spring}, che nonostante faccia uso di \mbox{\prog{Tomcat}}, rende più agevole e compatta l'implementazione perché fornisce un gran numero di annotazioni, le quali fanno inteso uso della riflessione di Java. diff --git a/src/contents/introduzione-al-lavoro/introduzione-al-lavoro.tex b/src/contents/introduzione-al-lavoro/introduzione-al-lavoro.tex index 8e5d8f60b6f04e47060c3605e5c60ef03df9e34e..78fbed6d5d0b6c6af69b4d4ab65df4fb43238e24 100644 --- a/src/contents/introduzione-al-lavoro/introduzione-al-lavoro.tex +++ b/src/contents/introduzione-al-lavoro/introduzione-al-lavoro.tex @@ -1,5 +1,5 @@ % !TeX encoding = UTF-8 -% !TeX root = ../../FERRON_relazione.tex +% !TeX root = ../../main.tex \chapter{Introduzione al lavoro} \label{ch:introduzione-al-lavoro} @@ -68,7 +68,7 @@ In \Cref{fig:scrum} è illustrato il processo Scrum, per approfondimenti si veda \subsection{I requisiti} \label{subsec:i-requisiti} -Concludiamo il capitolo dedicando questa sezione ai requisiti, che saranno ripresi in dettaglio nel \Cref{ch:lavoro-svolto} per analizzarne le eventuali problematiche e le idee implementative. +Concludiamo il capitolo dedicando questo \namecref{subsec:i-requisiti} ai requisiti, che saranno ripresi in dettaglio nel \Cref{ch:lavoro-svolto} per analizzarne le eventuali problematiche e le idee implementative. Si ricorda che i requisiti sono stati raccolti attraverso le storie utente proposte al committente, come prevede la metodologia Scrum. Cominciamo dai requisiti funzionali espressi, per semplicità , come requisiti dell'utente, cioè con un linguaggio naturale e un alto livello di astrazione. @@ -173,4 +173,4 @@ format=\bfseries\upshape\sffamily \item Le date saranno memorizzate nel formato AAAA/MM/GG\@. \item\label{itm:utf-8} Gli input saranno memorizzati nella codifica UTF-8. -\end{enumerate} \ No newline at end of file +\end{enumerate} diff --git a/src/contents/introduzione/introduzione.tex b/src/contents/introduzione/introduzione.tex index e7e7db6fba6a27f8bd0e609157a8869c6132f738..3ba682f3b8cf6c5d2aecc9acfb33980614284b71 100644 --- a/src/contents/introduzione/introduzione.tex +++ b/src/contents/introduzione/introduzione.tex @@ -1,5 +1,5 @@ % !TeX encoding = UTF-8 -% !TeX root = ../../FERRON_relazione.tex +% !TeX root = ../../main.tex \chapter{Introduzione} \label{ch:introduzione} @@ -28,4 +28,4 @@ Ci si scusa in anticipo se non tutte le scelte saranno trattate, ma si promette Giunto al \Cref{ch:strumenti-utilizzati}, il lettore conoscerà meglio gli strumenti utilizzati, alcuni già incontrati nel capitolo precedente. Infine nell'ultimo capitolo, il \ref{ch:conclusioni}, verranno proposte e commentate alcune migliorie, che potrebbero far parte della fase di manutenzione migliorativa del progetto. -Per ogni possibile miglioramento si illustrerà uno o più modi di procedere nel realizzarlo, ovviamente sarà solo un'analisi teorica, la quale tralascerà le problematica che potrebbero sorgere. \ No newline at end of file +Per ogni possibile miglioramento si illustrerà uno o più modi di procedere nel realizzarlo, ovviamente sarà solo un'analisi teorica, la quale tralascerà le problematica che potrebbero sorgere. diff --git a/src/contents/lavoro-svolto/contents/architecture.tex b/src/contents/lavoro-svolto/contents/architecture.tex index 995d32d8e3f013dd4a1dcb62dd529ae67cfc1a8b..abf09cd1b5ef0317a4aaaca34964a9481cd3df18 100644 --- a/src/contents/lavoro-svolto/contents/architecture.tex +++ b/src/contents/lavoro-svolto/contents/architecture.tex @@ -1,5 +1,5 @@ % !TeX encoding = UTF-8 -% !TeX root = ../../../FERRON_relazione.tex +% !TeX root = ../../../main.tex \section{Architettura} \label{sec:architettura} @@ -47,4 +47,4 @@ Questa filosofia consente un rapido sviluppo, tralasciando lunghe riunioni di pr \mbox{Amazon}, infatti afferma che può far passare una modifica dalla fase di \textenglish{deployment} a quella di produzione ogni $11,6$ secondi. Per maggiori dettagli su queste architetture si faccia riferimento a \cite{Richardson2019}. -Nel seguito del capitolo si dedicherà una sezione per ciascuno dei livelli presentati in \Cref{fig:architecture}. \ No newline at end of file +Nel seguito del capitolo si dedicherà un paragrafo per ciascuno dei livelli presentati in \Cref{fig:architecture}. diff --git a/src/contents/lavoro-svolto/contents/business-layer.tex b/src/contents/lavoro-svolto/contents/business-layer.tex index 8d6110062b6b2ec4402737a10d7155a41af9d30a..0b1d346e7721d5dfe10cda4847ea5bc4b30f2efa 100644 --- a/src/contents/lavoro-svolto/contents/business-layer.tex +++ b/src/contents/lavoro-svolto/contents/business-layer.tex @@ -1,20 +1,36 @@ % !TeX encoding = UTF-8 -% !TeX root = ../../../FERRON_relazione.tex +% !TeX root = ../../../main.tex \section{Business layer} \label{sec:business-layer} Questo livello occupa il ruolo di collante tra ciò che è mostrato all'utente e i dati che saranno manipolati. La mole di dati che lo attraversa richiede di essere gestita in maniera efficiente e sicura. -Vista l'importanza di questi aspetti, non gli si poteva non dedicare una sezione. +Vista l'importanza di questi aspetti, non gli si poteva non dedicare un paragrafo. In particolare saranno soprattutto discusse le problematiche di sicurezza che sono sorte, le loro soluzioni e quale impatto sulle prestazioni hanno portato queste ultime. Infine non mancherà la discussione di un problema di concorrenza, che è sempre presente nelle piattaforme \ecommerce. +\subsection{Il problema della cache} +\label{subsec:il-problema-della-cache} + +Le pagine che richiedono un autenticazione non devono poter essere visibili una volta effettuato il \textenglish{logout}. +Tuttavia i \textenglish{browser}, per necessità di efficienza, salvano in \textenglish{cache} le pagine visitate. +Questo comporta la possibilità di recuperare dalla cronologia, le pagine, che richiedono autenticazione nonostante si sia fatto il \textenglish{logout}. +Per impedire questo comportamento, il \textenglish{browser} non dovrebbe memorizzare le pagine sensibili in \textenglish{cache}. +Ciò può essere realizzato impostando opportunamente gli \textenglish{header} HTTP di tali pagine. +Più precisamente, prima che la risposta giunga al \textenglish{client} vi è un filtro (vedi \Cref{ch:strumenti-utilizzati}) che inserisce nell'\textenglish{header} i seguenti valori: +\begin{verbatim} + Cache-Control: no-cache, no-store, must-revalidate + Pragma: no-cache +\end{verbatim} +A questo punto qualora una pagina, che necessita di autenticazione, venga nuovamente richiesta, non essendo trovata nella \textenglish{cache}, sarà inviata dal \textenglish{server}, che potrà fare gli opportuni controlli. +Per tanto pagando un piccolo prezzo in termini di prestazioni, si ha una maggiore sicurezza. + \subsection{Accounting} \label{subsec:accounting} -In questa sezione esamineremo il \textenglish{login} e la registrazione. +In questo \namecref{subsec:accounting} esamineremo il \textenglish{login} e la registrazione. Partiamo da quest'ultima. La registrazione consiste nel completamento di un \textenglish{form} richiedente un'\textenglish{e-mail} e una \textenglish{passphrase} di almeno 8 caratteri. @@ -35,7 +51,7 @@ Si noti che tale controllo non assicura l'esistenza della casella di posta sul d Tuttavia tale problema può essere ovviato controllando che l'\textenglish{e-mail} di conferma dell'\account arrivi a destinazione. In caso contrario è possibile eliminare l'\account appena creato. -Qualora tutti i controlli passassero si può procedere con l'effettiva memorizzazione\linebreak dell'\account sulla base di dati. +Qualora tutti i controlli passassero si può procedere con l'effettiva memorizzazione dell'\account sulla base di dati. Quest'operazione implica il salvataggio della \textenglish{passphrase} in maniera sicura. In primo luogo bisogna considerare che l'utente generalmente riutilizza le stesse \textenglish{password}, per tale motivo è necessario prevedere un meccanismo che non renda visibile la \textenglish{password} né agli utenti legittimi, come ai manutentori della base di dati, né a un potenziale malintenzionato, che ottiene illecitamente l'accesso. Per fare ciò si utilizza una funzione di derivazione della chiave, che presa in ingresso una \textenglish{passphrase} restituisce una chiave crittografica. @@ -54,22 +70,6 @@ Inoltre effettuando il \textenglish{login} vi è un \textenglish{refresh} del va Infine si vuol far presente che qualora l'accesso venga sbagliato per 5 volte consecutive, non sarà permesso accedere per 5 minuti. Anche questa misura è stata adottata per evitare attacchi a forza bruta, infatti ogni 5 tentativi vi è un lasso di tempo che rallenta sensibilmente il processo di attacco. -\subsection{Il problema della cache} -\label{subsec:il-problema-della-cache} - -Le pagine che richiedono un autenticazione non devono poter essere visibili una volta effettuato il \textenglish{logout}. -Tuttavia i \textenglish{browser}, per necessità di efficienza, salvano in \textenglish{cache} le pagine visitate. -Questo comporta la possibilità di recuperare dalla cronologia, le pagine, che richiedono autenticazione nonostante si sia fatto il \textenglish{logout}. -Per impedire questo comportamento, il \textenglish{browser} non dovrebbe memorizzare le pagine sensibili in \textenglish{cache}. -Ciò può essere realizzato impostando opportunamente gli \textenglish{header} HTTP di tali pagine. -Più precisamente, prima che la risposta giunga al \textenglish{client} vi è un filtro (vedi \Cref{ch:strumenti-utilizzati}) che inserisce nell'\textenglish{header} i seguenti valori: -\begin{verbatim} - Cache-Control: no-cache, no-store, must-revalidate - Pragma: no-cache -\end{verbatim} -A questo punto qualora una pagina, che necessita di autenticazione, venga nuovamente richiesta, non essendo trovata nella \textenglish{cache}, sarà inviata dal \textenglish{server}, che potrà fare gli opportuni controlli. -Per tanto pagando un piccolo prezzo in termini di prestazioni, si ha una maggiore sicurezza. - \subsection{XSS} \label{subsec:xss} @@ -100,7 +100,7 @@ In particolare la struttura dati scelta è una \texttt{BiMap} implementata da Gu \label{subsec:concorrenza} Cosa succede se due utenti acquistano contemporaneamente lo stesso prodotto, ma la quantità totale richiesta è superiore alle scorte in magazzino? -Questo sarà il problema affrontato nella sezione. +Questo sarà il problema affrontato nel \namecref{subsec:concorrenza}. Il comportamento desiderato sarebbe quello in cui uno solo dei due utenti effettua l'ordine, mentre l'altro viene rimandato alla pagina del carrello per essere avvisato della quantità insufficiente. Questo comportamento può essere ottenuto usando le transazioni. @@ -117,4 +117,4 @@ Un semplice meccanismo, ma che presenta un difetto, infatti durante il processam Tale fatto si potrebbe ripercuotere sulle prestazioni, ecco perché si è cercato di ridurre la quantità di computazione tra il lancio della transazione e la sua finalizzazione. Ad esempio si è dichiarato ed eventualmente inizializzato le variabili necessarie prima di lanciare la transazione, in modo tale che queste operazioni non fossero eseguite quando il \textenglish{lock} era attivo, garantendone però la presenza qualora vi si faccia riferimento. -Qualora non si usassero le transazioni, le \textenglish{query} verrebbero eseguite non appena possibile, ma tale comportamento porterebbe ad uno stato di inconsistenza e nessun ordine sarebbe realmente evaso. \ No newline at end of file +Qualora non si usassero le transazioni, le \textenglish{query} verrebbero eseguite non appena possibile, ma tale comportamento porterebbe ad uno stato di inconsistenza e nessun ordine sarebbe realmente evaso. diff --git a/src/contents/lavoro-svolto/contents/data-layer.tex b/src/contents/lavoro-svolto/contents/data-layer.tex index cd8dcf53046053b8c962be33e6c6333595fa4d9c..f8d68db14ccaa2c005d61175c66847abddcdcbe6 100644 --- a/src/contents/lavoro-svolto/contents/data-layer.tex +++ b/src/contents/lavoro-svolto/contents/data-layer.tex @@ -1,5 +1,5 @@ % !TeX encoding = UTF-8 -% !TeX root = ../../../FERRON_relazione.tex +% !TeX root = ../../../main.tex \section{Data layer} \label{sec:data-layer} @@ -97,10 +97,10 @@ Si ricorda che un evento è una procedura o funzione memorizzata sullo schema di Si tiene a precisare che l'eliminazione di un cliente consiste nel slegare le tabelle \texttt{\textenglish{customer}} e \texttt{\textenglish{login}}, ponendo \verb|login_id = NULL| quando un \textenglish{record} della tabella \texttt{\textenglish{login}} viene rimosso, ovvero il vincolo di chiave esterna sull'eliminazione è \texttt{SET NULL}. Così facendo l'utente non potrà più accedere ai suoi dati, ma l'azienda proprietaria della piattaforma potrà esaminare lo \textbf{storico} delle vendite, compresi gli indirizzi apposti alle bolle di spedizione. -Se si osserva attentamente il diagramma ristrutturato si noterà la presenza della tabella \verb|user_role|, ma tale nome non compare all'interno del diagramma ER, perché questa tabella è necessaria al funzionamento di \mbox{\prog{Tomcat}}. +Se si osserva attentamente il diagramma ristrutturato si noterà la presenza della tabella \linebreak\verb|user_role|, ma tale nome non compare all'interno del diagramma ER, perché questa tabella è necessaria al funzionamento di \mbox{\prog{Tomcat}}. Tuttavia permette di distinguere se un cliente loggato è un'azienda oppure un privato (vedi \ref{itm:user-type}), nel diagramma ER questa distinzione è fatta sulla base della generalizzazione (completa ed esclusiva). -Un altro aspetto importante è la codifica usata dallo schema della base di dati, ovvero \verb|utf8mb4_0900_as_cs| (vedi \ref{itm:utf-8}), il quale è basato sulla codifica Unicode 9.0 e gestisce sia gli accenti (\textit{\textenglish{accent sensitive}}) sia la differenza tra maiuscole e minuscole (\textit{\textenglish{case sensitive}}). +Un altro aspetto importante è la codifica usata dallo schema della base di dati, ovvero \linebreak\verb|utf8mb4_0900_as_cs| (vedi \ref{itm:utf-8}), il quale è basato sulla codifica Unicode 9.0 e gestisce sia gli accenti (\textit{\textenglish{accent sensitive}}) sia la differenza tra maiuscole e minuscole (\textit{\textenglish{case sensitive}}). Tale codifica è utile nel caso in cui la piattaforma voglia affermarsi anche in un mercato internazionale. In conclusione si ricorda che sullo schema della base di dati si sono definiti due utenti con privilegi differenti per manipolare i dati. @@ -109,4 +109,4 @@ In conclusione si ricorda che sullo schema della base di dati si sono definiti d \includegraphics[width=\linewidth]{eer.eps} \caption{Diagramma EER del progetto.} \label{fig:eer} -\end{sidewaysfigure} \ No newline at end of file +\end{sidewaysfigure} diff --git a/src/contents/lavoro-svolto/contents/presentation-layer.tex b/src/contents/lavoro-svolto/contents/presentation-layer.tex index 68cbf019e2eeae4db2348db09ef32a12df0844b6..6daed886beb25188dee4a87efcdd1ad530ed9aef 100644 --- a/src/contents/lavoro-svolto/contents/presentation-layer.tex +++ b/src/contents/lavoro-svolto/contents/presentation-layer.tex @@ -1,5 +1,5 @@ % !TeX encoding = UTF-8 -% !TeX root = ../../../FERRON_relazione.tex +% !TeX root = ../../../main.tex \section{Presentation layer} \label{sec:presentation-layer} @@ -42,4 +42,4 @@ Un discorso analogo vale anche per la PEC presente nella tabella \texttt{busines Anche la validazione dei nomi e/o cognomi viene effettuata a livello \textenglish{client}, prima di essere inviata al \textenglish{server}. In generale tali validazioni devono assicurarsi che non vi siano né caratteri speciali né numeri, ma solo caratteri alfabetici, senza distinzione tra quelli cirillici e gli ideogrammi. -Nelle \textenglish{regular expression} di POSIX per indicare questo gruppo di caratteri viene utilizzata la classe \verb|[:alpha:]|, che non è ancora supportata nativamente dagli interpreti di JavaScript, per questo motivo la definizione della regola in \mbox{jQuery} \textenglish{Validation} è stata fatta servendosi della libreria XRegExp~\cite{xregexp}. \ No newline at end of file +Nelle \textenglish{regular expression} di POSIX per indicare questo gruppo di caratteri viene utilizzata la classe \verb|[:alpha:]|, che non è ancora supportata nativamente dagli interpreti di JavaScript, per questo motivo la definizione della regola in \mbox{jQuery} \textenglish{Validation} è stata fatta servendosi della libreria XRegExp~\cite{xregexp}. diff --git a/src/contents/lavoro-svolto/lavoro-svolto.tex b/src/contents/lavoro-svolto/lavoro-svolto.tex index 329e4b205e6672072bbb0168b5d9b508e55aef1c..7eaa439494d74665e2ce9f5b976c5ee78546ce2c 100644 --- a/src/contents/lavoro-svolto/lavoro-svolto.tex +++ b/src/contents/lavoro-svolto/lavoro-svolto.tex @@ -1,5 +1,5 @@ % !TeX encoding = UTF-8 -% !TeX root = ../../FERRON_relazione.tex +% !TeX root = ../../main.tex \chapter{Lavoro svolto} \label{ch:lavoro-svolto} @@ -17,4 +17,4 @@ Si farà inoltre riferimento ad alcuni aspetti tecnici degli strumenti utilizzat \input{contents/architecture.tex} \input{contents/data-layer.tex} \input{contents/business-layer.tex} -\input{contents/presentation-layer.tex} \ No newline at end of file +\input{contents/presentation-layer.tex} diff --git a/src/contents/strumenti-utilizzati/strumenti-utilizzati.tex b/src/contents/strumenti-utilizzati/strumenti-utilizzati.tex index df8d4cd27cad9ddea47b78fa661e0c5f9e8bb542..9875b1b2801c0b427118333286582479c875faa9 100644 --- a/src/contents/strumenti-utilizzati/strumenti-utilizzati.tex +++ b/src/contents/strumenti-utilizzati/strumenti-utilizzati.tex @@ -6,8 +6,8 @@ \graphicspath{{contents/strumenti-utilizzati/assets/img/}} In questo capitolo si tratteranno alcuni degli strumenti fin qui citati. -In particolare si dedicherà una sezione a \mbox{\prog{Tomcat}} vista la sua centralità nel progetto. -Nella successiva sezione si raggrupperanno tutti gli altri strumenti usati, ma non si tratteranno le librerie, anche se alcune sono già state citate nel precedente capitolo. +In particolare si dedicherà un paragrafo a \mbox{\prog{Tomcat}} vista la sua centralità nel progetto. +Nel successivo \namecref{sec:tomcat} si raggrupperanno tutti gli altri strumenti usati, ma non si tratteranno le librerie, anche se alcune sono già state citate nel precedente capitolo. \section{Tomcat} \label{sec:tomcat} @@ -70,7 +70,7 @@ Come per gli \textenglish{stream}, introdotti da Java 8, anche gli EL \textengli \section{Altri strumenti usati} \label{sec:altri-strumenti-usati} -In questa sezione seguirà una rapida rassegna degli altri strumenti utilizzati nel progetto. +In questo \nameCref{sec:altri-strumenti-usati} seguirà una rapida rassegna degli altri strumenti utilizzati nel progetto. \begin{itemize} \item \mbox{\prog{Braintree}}~\cite{braintree} è una piattaforma di pagamento \textenglish{on-line}, che permette di raccogliere i dati del metodo di pagamento per effettuare le transazioni. Tra i metodi di pagamento accettati se ne sono scelti due: quello delle carte di credito e quello di PayPal. diff --git a/src/FERRON_relazione.cfg b/src/main.cfg similarity index 100% rename from src/FERRON_relazione.cfg rename to src/main.cfg diff --git a/src/main.tex b/src/main.tex new file mode 100644 index 0000000000000000000000000000000000000000..3bedacfce6fce3ee1a7f5513459124de315fa1e4 --- /dev/null +++ b/src/main.tex @@ -0,0 +1,89 @@ +% !TeX document-id = {8602df8a-3751-46db-a1ee-ff0ee04eb7bd} +% !BIB TS-program = biber +% !TEX TS-program = make -C ../ readable | txs:///view-pdf FERRON_relazione-readable.pdf +% !TeX encoding = UTF-8 +%! Author = Lorenzo Ferron + +\ifprint + \providecommand{\optpdfx}{x-410,mathxmp,LATxmp} + \providecommand{\optprint}{libro,twoside} +\else + \providecommand{\optpdfx}{a-3b,mathxmp,LATxmp} + \providecommand{\optprint}{\empty} +\fi + +\title{Sviluppo di una piattaforma e-commerce per la vendita di mobili metallizzati} + +% Preamble +\ProvidesFile{main.tex}[] +\documentclass[% +corpo=11.5pt,% +tipotesi=triennale,% +evenboxes,% +%draft,% +\optprint,% +]{toptesi} + +\ifabstract + \includeonly{% + contents/introduzione/introduzione,% + contents/introduzione-al-lavoro/introduzione-al-lavoro,% + contents/strumenti-utilizzati/strumenti-utilizzati,% + contents/lavoro-svolto/lavoro-svolto,% + contents/conclusioni/conclusioni,% + contents/appendices/orm/orm,% + } +\else + \includeonly{% DO NOT EDIT! + } +\fi + +\input{preamble/preamble.tex} + +\ExtendCaptions{italian}{Abstract}{Ringraziamenti} + +% Document +\begin{document} + + \Crefname{section}{Paragrafo}{Paragrafi} + \crefname{section}{paragrafo}{paragrafi} + \Crefname{subsection}{Paragrafo}{Paragrafi} + \crefname{subsection}{paragrafo}{paragrafi} + \Crefname{line}{Linea}{Linee} + + \makeatletter + \begin{ThesisTitlePage} + % see main.cfg + \end{ThesisTitlePage} + \makeatother + + \sommario + + \input{contents/abstract.tex} + + \microtypesetup{protrusion=false} + \ifabstract + \indici + \fi + \microtypesetup{protrusion=true} + + \mainmatter + + \include{contents/introduzione/introduzione} + \include{contents/introduzione-al-lavoro/introduzione-al-lavoro} + \include{contents/lavoro-svolto/lavoro-svolto} + \include{contents/strumenti-utilizzati/strumenti-utilizzati} + \include{contents/conclusioni/conclusioni} + + \appendix + + \include{contents/appendices/orm/orm} + + \backmatter + + \cleardoublepage + \phantomsection + \bookmarksetup{startatroot} + \printbibliography[heading=bibintoc] + +\end{document} diff --git a/src/preamble/fonts.tex b/src/preamble/fonts.tex new file mode 100644 index 0000000000000000000000000000000000000000..8c8150c340b29a8753b5745e5d0b4a181eaf42e9 --- /dev/null +++ b/src/preamble/fonts.tex @@ -0,0 +1,6 @@ +%! Author = lorenzo +%! Date = 13/02/22 + +\setmainfont[Ligatures=TeX]{TeX Gyre Termes}% font Times +\setsansfont[Ligatures=TeX, Scale=MatchLowercase]{TeX Gyre Heros}% font Helvetica +\setmonofont{UM Typewriter}% font typewriter un po' più scuri del font Courier \ No newline at end of file diff --git a/src/preamble/my-macros.tex b/src/preamble/my-macros.tex deleted file mode 100644 index 04948d93dfdd1527e8f426f299634e2fa38d84bb..0000000000000000000000000000000000000000 --- a/src/preamble/my-macros.tex +++ /dev/null @@ -1,37 +0,0 @@ -\NewDocumentCommand\prog{s m}{\textsf{\bfseries#2}% - \IfBooleanTF{#1}{}{\index{programma!#2@\textsf{\bfseries#2}}}} - -\NewDocumentCommand\file{s m}{\texttt{#2}% - \IfBooleanTF{#1}{}{\index{file!#2@\texttt{#2}}}} - -\renewcommand{\listingscaption}{\figurename} - -\makeatletter -\AddEnumerateCounter{\arabiczeropad}{\@arabiczeropad}{0} -\def\arabiczeropad#1#2{\expandafter\@arabiczeropad\csname c@#1\endcsname{#2}} -\def\@arabiczeropad#1#2{% - \directlua{ - local u = require("luacode.util.zeropadding") - tex.print(u:zeropadding("#2", "\@arabic#1")) - }% -} -\makeatother - -\makeatletter -\newcommand*\inputpath[1]{ - \def\input@path{#1} -} -\makeatother - -\providecommand{\ecommerce}{\textenglish{e-commerce}\xspace} -\providecommand{\account}{\textenglish{account}\xspace} - -% new command for adding a distance option for threads as well -% \newthread[color][distance]{id}{title} -\renewcommandx{\newthread}[4][1=gray!30, 2=0.2]{ - \newinst[#2]{#3}{#4} - \stepcounter{threadnum} - \node[below of=inst\theinstnum,node distance=0.8cm] (thread\thethreadnum) {}; - \tikzstyle{threadcolor\thethreadnum}=[fill=#1] - \tikzstyle{instcolor#3}=[fill=#1] -} \ No newline at end of file diff --git a/src/preamble/my-macros/arabiczeropad.tex b/src/preamble/my-macros/arabiczeropad.tex new file mode 100644 index 0000000000000000000000000000000000000000..f6f51444bfd32c793e59552c254d4fb06e55735b --- /dev/null +++ b/src/preamble/my-macros/arabiczeropad.tex @@ -0,0 +1,13 @@ +%! Author = lorenzo +%! Date = 13/02/22 + +\makeatletter +\AddEnumerateCounter{\arabiczeropad}{\@arabiczeropad}{0} +\def\arabiczeropad#1#2{\expandafter\@arabiczeropad\csname c@#1\endcsname{#2}} +\def\@arabiczeropad#1#2{% + \directlua{ + local u = require("luacode.util.zeropadding") + tex.print(u:zeropadding("#2", "\@arabic#1")) + }% +} +\makeatother \ No newline at end of file diff --git a/src/preamble/my-macros/cutimage.tex b/src/preamble/my-macros/cutimage.tex new file mode 100644 index 0000000000000000000000000000000000000000..741eae82fe1f7c0b4c91b895de046ab2292df9e1 --- /dev/null +++ b/src/preamble/my-macros/cutimage.tex @@ -0,0 +1,22 @@ +%! Author = lorenzo +%! Date = 17/12/21 + +% enable tikz in packages/packages.tex +% enable adjustbox in packages/packages.tex + +\newcommand{\cutimage}[3]{ + \adjustbox{max width=\textwidth}{ + \tikz{ + \node[inner sep=0pt] (A) { + \adjincludegraphics[Clip={0} {0} {#2\width} {0}]{#1} + }; + \draw[decoration={zigzag, mirror,segment length=6mm,amplitude=1.1pt}, decorate](A.north east) -- (A.south east) + } + \tikz{ + \node[inner sep=0pt] (A) { + \adjincludegraphics[Clip={#3\width} {0} {0} {0}]{#1} + }; + \draw[decoration={zigzag, mirror,segment length=6mm,amplitude=1.1pt}, decorate](A.north west) -- (A.south west) + } + } +} \ No newline at end of file diff --git a/src/preamble/my-macros/datafile.tex b/src/preamble/my-macros/datafile.tex new file mode 100644 index 0000000000000000000000000000000000000000..a67f6270e68ed5f559d4483e60303ddcab1026ed --- /dev/null +++ b/src/preamble/my-macros/datafile.tex @@ -0,0 +1,12 @@ +%! Author = lorenzo +%! Date = 17/12/21 + +\newcommand{\datafile}[2]{ + \embedfile[ + filespec={#2}, + ucfilespec={#2}, + filesystem=URL, + mimetype=application/octet-stream, + afrelationship={/Unspecified}, + desc={#2},stringmethod=escape + ]{#1#2}} \ No newline at end of file diff --git a/src/preamble/my-macros/file.tex b/src/preamble/my-macros/file.tex new file mode 100644 index 0000000000000000000000000000000000000000..348939d0bebda46972af9971fdb9a0555feb0b55 --- /dev/null +++ b/src/preamble/my-macros/file.tex @@ -0,0 +1,5 @@ +%! Author = lorenzo +%! Date = 13/02/22 + +\NewDocumentCommand\file{s m}{\texttt{#2}% + \IfBooleanTF{#1}{}{\index{file!#2@\texttt{#2}}}} \ No newline at end of file diff --git a/src/preamble/my-macros/inputpath.tex b/src/preamble/my-macros/inputpath.tex new file mode 100644 index 0000000000000000000000000000000000000000..cd1e9e81a35347e19e2b07c0432ed26d8fef6f8c --- /dev/null +++ b/src/preamble/my-macros/inputpath.tex @@ -0,0 +1,8 @@ +%! Author = lorenzo +%! Date = 17/12/21 + +\makeatletter +\newcommand*\inputpath[1]{ + \def\input@path{#1} +} +\makeatother \ No newline at end of file diff --git a/src/preamble/my-macros/lref.tex b/src/preamble/my-macros/lref.tex new file mode 100644 index 0000000000000000000000000000000000000000..304d92d0f8e58f3868581c046786af6ae5480ba0 --- /dev/null +++ b/src/preamble/my-macros/lref.tex @@ -0,0 +1,4 @@ +%! Author = lorenzo +%! Date = 19/12/21 + +\newcommand{\lref}[1]{\hyperlink{#1}{\ref*{#1}}} \ No newline at end of file diff --git a/src/preamble/my-macros/mintedpath.tex b/src/preamble/my-macros/mintedpath.tex new file mode 100644 index 0000000000000000000000000000000000000000..209326d1acc0ab2fd3cdff6a6565c537a4997325 --- /dev/null +++ b/src/preamble/my-macros/mintedpath.tex @@ -0,0 +1,24 @@ +%! Author = lorenzo +%! Date = 17/12/21 + +\ExplSyntaxOn +\NewDocumentCommand{\mintedpath}{m} +{ + \seq_gset_split:Nnn \g_paulie_mintedpath_seq { } { #1 } + \seq_gput_left:Nn \g_paulie_mintedpath_seq { } +} + +\seq_new:N \g_paulie_mintedpath_seq + +\NewDocumentCommand{\pathinputminted}{O{}mm} +{ + \seq_map_inline:Nn \g_paulie_mintedpath_seq + { + \file_if_exist:nT { ##1 #3 } + { + \inputminted[#1]{#2}{##1 #3} + \seq_map_break: + } + } +} +\ExplSyntaxOff \ No newline at end of file diff --git a/src/preamble/my-macros/my-macros.tex b/src/preamble/my-macros/my-macros.tex new file mode 100644 index 0000000000000000000000000000000000000000..56f25f0163b88920554a23a8e57dd4db0a679ea0 --- /dev/null +++ b/src/preamble/my-macros/my-macros.tex @@ -0,0 +1,12 @@ +%! Author = lorenzo +%! Date = 17/12/21 + +%\input{preamble/my-macros/cutimage.tex} +\input{preamble/my-macros/file.tex} +\input{preamble/my-macros/arabiczeropad.tex} +\input{preamble/my-macros/inputpath.tex} +\input{preamble/my-macros/mintedpath.tex} +\input{preamble/my-macros/prog.tex} +%\input{preamble/my-macros/datafile.tex} +\input{preamble/my-macros/vlabel.tex} +\input{preamble/my-macros/lref.tex} \ No newline at end of file diff --git a/src/preamble/my-macros/prog.tex b/src/preamble/my-macros/prog.tex new file mode 100644 index 0000000000000000000000000000000000000000..f78a6aef8faa43bdaef51b66c57e8e284f4fc407 --- /dev/null +++ b/src/preamble/my-macros/prog.tex @@ -0,0 +1,5 @@ +%! Author = lorenzo +%! Date = 13/02/22 + +\NewDocumentCommand\prog{s m}{\textsf{\bfseries#2}% + \IfBooleanTF{#1}{}{\index{programma!#2@\textsf{\bfseries#2}}}} \ No newline at end of file diff --git a/src/preamble/my-macros/vlabel.tex b/src/preamble/my-macros/vlabel.tex new file mode 100644 index 0000000000000000000000000000000000000000..563e53fc062405c8385f84f59b95d43945305ea9 --- /dev/null +++ b/src/preamble/my-macros/vlabel.tex @@ -0,0 +1,4 @@ +%! Author = lorenzo +%! Date = 19/12/21 + +\newcommand{\Vlabel}[1]{\label[line]{#1}\hypertarget{#1}{}} \ No newline at end of file diff --git a/src/preamble/packages/ams.tex b/src/preamble/packages/ams.tex new file mode 100644 index 0000000000000000000000000000000000000000..85c267ef6ccae90169fdc2fb1d6076ee360873fa --- /dev/null +++ b/src/preamble/packages/ams.tex @@ -0,0 +1,8 @@ +%! Author = lorenzo +%! Date = 13/02/22 + +\usepackage{amsmath,amsthm} % per la matematica estesa +\usepackage[math-style=ISO]{unicode-math}% per la matematica UNICODE + +\setmathfont{XITS Math}% font matematici UNICODE che van bene con i Times +\setmathfont[range={\mathcal,\mathbfcal},StylisticSet=1,partial=upright]{XITS Math} \ No newline at end of file diff --git a/src/preamble/packages/amsthm.tex b/src/preamble/packages/amsthm.tex new file mode 100644 index 0000000000000000000000000000000000000000..da2d2955a6f08b719f39d2b10bfd79073cbd75be --- /dev/null +++ b/src/preamble/packages/amsthm.tex @@ -0,0 +1,12 @@ +\theoremstyle{definition} + +\newtheoremstyle{break} +{\topsep}{\topsep}% +{}{}% +{\bfseries}{}% +{\newline}{}% +\theoremstyle{break} +\newtheorem{definizione}{Definizione} +\newtheorem{thm}{Teorema} +\newtheorem{cor}{Corollary}[thm] +\newtheorem{lem}[thm]{Lemma} diff --git a/src/preamble/packages/biblatex.tex b/src/preamble/packages/biblatex.tex new file mode 100644 index 0000000000000000000000000000000000000000..d83cdd092167ca0c196b0d2a64717d79e49c15cb --- /dev/null +++ b/src/preamble/packages/biblatex.tex @@ -0,0 +1,23 @@ +%! Author = lorenzo +%! Date = 13/02/22 + +\usepackage[autostyle,italian=guillemets]{csquotes} +\usepackage[% +backend=biber,% +style=numeric-comp,% +datamodel=software,% +citestyle=numeric,% +sorting=nty,% +urldate=long,% +dateabbrev=false,% +abbreviate=false,% +natbib +]{biblatex} +\DeclareLanguageMapping{italian}{italian-software} % software-biblatex: unsupported language. For now. +\usepackage{software-biblatex} + +% enable more breaks at URLs. See https://tex.stackexchange.com/a/134281. +\setcounter{biburllcpenalty}{7000} +\setcounter{biburlucpenalty}{8000} + +\addbibresource{references.bib} \ No newline at end of file diff --git a/src/preamble/packages/hyperref.tex b/src/preamble/packages/hyperref.tex new file mode 100644 index 0000000000000000000000000000000000000000..3d3c50df17d4365782c0f0aa7f0235a4c46adce9 --- /dev/null +++ b/src/preamble/packages/hyperref.tex @@ -0,0 +1,15 @@ +%! Author = lorenzo +%! Date = 13/02/22 + +\unless\ifcsname ver@hyperref.sty\endcsname\usepackage{hyperref}\fi +\hypersetup{% + pdfpagemode={UseOutlines},% + unicode,% + psdextra,% + bookmarksopen,% + pdfstartview={FitH},% + colorlinks,% + linkcolor={blue},% + citecolor={blue},% + urlcolor={blue} +} \ No newline at end of file diff --git a/src/preamble/packages/microtype.tex b/src/preamble/packages/microtype.tex new file mode 100644 index 0000000000000000000000000000000000000000..5164361bbae15548a3873d661e57d849e44eb714 --- /dev/null +++ b/src/preamble/packages/microtype.tex @@ -0,0 +1,5 @@ +%! Author = lorenzo +%! Date = 14/02/22 + +\usepackage[activate={true,nocompatibility},final,tracking=true,factor=1100,stretch=10,shrink=10]{microtype} +\SetTracking{encoding={*}, shape=sc}{40} \ No newline at end of file diff --git a/src/preamble/packages/minted.tex b/src/preamble/packages/minted.tex new file mode 100644 index 0000000000000000000000000000000000000000..63b57dd4ff1c473a2cdfa2445544cf6aa15aa29c --- /dev/null +++ b/src/preamble/packages/minted.tex @@ -0,0 +1,26 @@ +%! Author = lorenzo +%! Date = 13/02/22 + +% from http://tex.stackexchange.com/questions/57151/how-do-i-prevent-conflicts-between-accsupp-and-hyperref +\usepackage{accsupp} +\newcommand\emptyaccsupp[1]{\BeginAccSupp{ActualText={}}#1\EndAccSupp{}} + +\usepackage[ +%chapter, % uncomment if listings to be counted by chapter +]{minted} +\setminted{linenos,breaklines,bgcolor=bg,breakanywheresymbolpre={}} +\setmintedinline{bgcolor={}} +\renewcommand{\theFancyVerbLine}{% + \textcolor[rgb]{0.5,0.5,1.0}{% + \scriptsize + \emptyaccsupp{% + \arabic{FancyVerbLine}% + }% + }% +} +%\let\IWANTTHISlisting=\listing % uncomment if you use minted inside listing env. See below. +%\AtBeginDocument{ % uncomment if you use minted inside listing env. See above. +% \let\listing=\IWANTTHISlisting +% \Crefname{listing}{\listingscaption}{Listati} +%} +%\renewcommand{\listingscaption}{Listato} % uncomment if you use minted inside listing env. See above. \ No newline at end of file diff --git a/src/preamble/packages/packages.tex b/src/preamble/packages/packages.tex new file mode 100644 index 0000000000000000000000000000000000000000..b917f889e13977404a76e79797833b76051e5e02 --- /dev/null +++ b/src/preamble/packages/packages.tex @@ -0,0 +1,23 @@ +%! Author = lorenzo +%! Date = 13/02/22 + +% Packages + +\input{preamble/packages/xcolor.tex} +\input{preamble/packages/pdfx.tex} +\input{preamble/packages/minted.tex} +\usepackage{clrscode3e} +\usepackage{makeidx} +%\usepackage{adjustbox} +%\input{preamble/packages/tikz.tex} +%\usepackage{embedfile} +\input{preamble/packages/ams.tex} +\usepackage[figuresright]{rotating} +\input{preamble/packages/pgf-umlsd.tex} +\usepackage{enumitem,ragged2e} +\input{preamble/packages/microtype.tex} +\input{preamble/packages/biblatex.tex} +\input{preamble/packages/hyperref.tex} +\usepackage{bookmark} +\usepackage[italian]{cleveref} +%\input{preamble/packages/amsthm.tex} diff --git a/src/preamble/packages/pdfx.tex b/src/preamble/packages/pdfx.tex new file mode 100644 index 0000000000000000000000000000000000000000..68fe159ad30b4d197fb451a8c53a46eba6e4ff84 --- /dev/null +++ b/src/preamble/packages/pdfx.tex @@ -0,0 +1,18 @@ +%! Author = lorenzo +%! Date = 13/02/22 + +\makeatletter +\begin{pdfxmetadata} + \Title{\@title} + \Author[it-IT]{Lorenzo Ferron} + % If you don’t know what to use for the Subject, you can use the Title again in this field. + \Subject{\@title} + \Keywords{e-commerce\sep architecture\sep data layer\sep presentation layer\sep business layer\sep requirements\sep Bachelor's Degree\sep italian} + \Language{it-IT\sep en-US} + \Copyright[en-US]{WTFPL Version 2} + \Copyrighted{False} + \Source{\jobname.tex} + %\Publisher{} +\end{pdfxmetadata} +\usepackage[\optpdfx]{pdfx} +\makeatother \ No newline at end of file diff --git a/src/preamble/packages/pgf-umlsd.tex b/src/preamble/packages/pgf-umlsd.tex new file mode 100644 index 0000000000000000000000000000000000000000..b7d86d8a2c65b1426efa20ea30a78f8a9a6f2235 --- /dev/null +++ b/src/preamble/packages/pgf-umlsd.tex @@ -0,0 +1,17 @@ +%! Author = lorenzo +%! Date = 13/02/22 + +\usepackage{pgf-umlsd} + +\RequirePackage{xargs} + +% new command for adding a distance option for threads as well +% \newthread[color][distance]{id}{title} +\renewcommandx{\newthread}[4][1=gray!30, 2=0.2]{ + \newinst[#2]{#3}{#4} + \stepcounter{threadnum} + \node[below of=inst\theinstnum,node distance=0.8cm] (thread\thethreadnum) {}; + \tikzstyle{threadcolor\thethreadnum}=[fill=#1] + \tikzstyle{instcolor#3}=[fill=#1] +} + diff --git a/src/preamble/packages/tikz.tex b/src/preamble/packages/tikz.tex new file mode 100644 index 0000000000000000000000000000000000000000..f5a812df9d88f51c5ee4ebacaea10576ae9c2af4 --- /dev/null +++ b/src/preamble/packages/tikz.tex @@ -0,0 +1,5 @@ +%! Author = lorenzo +%! Date = 13/02/22 + +\usepackage{tikz} +\usetikzlibrary{decorations.pathmorphing} \ No newline at end of file diff --git a/src/preamble/packages/xcolor.tex b/src/preamble/packages/xcolor.tex new file mode 100644 index 0000000000000000000000000000000000000000..c4b6671213ddf3666c17858e71b38e531a7cdcaf --- /dev/null +++ b/src/preamble/packages/xcolor.tex @@ -0,0 +1,5 @@ +%! Author = lorenzo +%! Date = 13/02/22 + +\usepackage[svgnames]{xcolor} +\definecolor{bg}{rgb}{.95,.95,.95} \ No newline at end of file diff --git a/src/preamble/preamble.tex b/src/preamble/preamble.tex new file mode 100644 index 0000000000000000000000000000000000000000..73e0f5f812bdae4fed59c3c4f54e94b25e9d3cff --- /dev/null +++ b/src/preamble/preamble.tex @@ -0,0 +1,16 @@ +%! Author = lorenzo +%! Date = 13/02/22 + +\errorcontextlines=100% more information on the console in case of errors + +\SetLanguageKeys{italian}{indentfirst=false} + +\input{preamble/fonts.tex} + +\input{preamble/shorcuts.tex} + +\input{preamble/packages/packages.tex} + +\input{preamble/my-macros/my-macros.tex} + +\input{preamble/workarounds/pygmentize-single-quote.tex} \ No newline at end of file diff --git a/src/preamble/shorcuts.tex b/src/preamble/shorcuts.tex new file mode 100644 index 0000000000000000000000000000000000000000..c81d86d4d3848511eac6c455c7a42644627c936a --- /dev/null +++ b/src/preamble/shorcuts.tex @@ -0,0 +1,5 @@ +%! Author = lorenzo +%! Date = 13/02/22 + +\providecommand{\ecommerce}{\textenglish{e-commerce}\xspace} +\providecommand{\account}{\textenglish{account}\xspace} \ No newline at end of file diff --git a/src/preamble/workarounds/fixpdfx.sty b/src/preamble/workarounds/fixpdfx.sty new file mode 100644 index 0000000000000000000000000000000000000000..b2b59fd6000c48cbe216358d2df366b64dc33e2a --- /dev/null +++ b/src/preamble/workarounds/fixpdfx.sty @@ -0,0 +1,60 @@ +\ProvidesPackage{fixpdfx}[2021-07-22 A package that fixes pdfx errors on TeX Live 2021 in a quick and dirty way] + +% temporarily reverts https://github.com/latex3/latex2e/commit/5fb2860f2fedc87b213730f06ec1d77bcab4814a +% resp. https://github.com/latex3/latex2e/commit/dd2ec509ec98e9c359a41e35aea6aade86485ca2 +% as it breaks pdfx (see https://tex.stackexchange.com/questions/605854/error-using-pdfx-on-tex-live-2021) + +\@ifpackageloaded{pdfx}{ + \PackageError{fixpdfx}{pdfx is loaded}{This package must be loaded before pdfx} +}{} + +\ExplSyntaxOn + +% this is the old implementation from base/ltpara.dtx, version 1.0g +\cs_new_protected:Npn \__old_para_end: { + % ltpara v1.0h as well as firstaid/latex2e-first-aid-for-external-files.dtx v1.0o inserted + % \scan_stop: here, which breaks pdfx + \mode_if_horizontal:TF { + \mode_if_inner:F { + \tex_unskip:D + \hook_use:n{para/end} + \@kernel@after@para@end + \mode_if_horizontal:TF { + \if_int_compare:w 0 < \tex_lastnodetype:D + \tex_kern:D \c_zero_dim + \fi: + \tex_par:D + \hook_use:n{para/after} + \@kernel@after@para@after + } + { \msg_error:nnnn { hooks }{ para-mode }{end}{horizontal} } + } + } + \tex_par:D +} + +\PackageWarning{fixpdfx}{Patching~\para_end:~implementation~to~fix~pdfx} +\cs_set_eq:NN \par \__old_para_end: +% these two aren't actually required to fix pdfx, so we'll skip them... +%\cs_set_eq:NN \@@par \__old_para_end: +%\cs_set_eq:NN \endgraf \__old_para_end: + +\AtBeginDocument{ + \@ifpackageloaded{pdfx}{}{ + \PackageError{fixpdfx}{pdfx~is~not~loaded}{You~did~not~load~pdfx~and~thus~do~not~need~this~package} + } + % pdfx v1.6.3 from 2019-02-27 is bad, so anything later is hopefully fixed... + \@ifpackagelater{pdfx}{2019/02/28}{ + \PackageError{fixpdfx}{Please~check~whether~you~really~need~this~package.}{Your~pdfx~package~is~more~recent~than~2019-02-27~and~thus~might~not~require~this~package's~fix.} + }{} + + \PackageWarning{fixpdf}{Restoring~old~\para_end:~implementation} + + % restore additional definitions + \cs_set_eq:NN \par \para_end: + % see above: as we didn't replace them, no need to restore them. + %\cs_set_eq:NN \@@par \para_end: + %\cs_set_eq:NN \endgraf \para_end: +} + +\ExplSyntaxOff \ No newline at end of file diff --git a/src/preamble/workarounds/pygmentize-single-quote.tex b/src/preamble/workarounds/pygmentize-single-quote.tex new file mode 100644 index 0000000000000000000000000000000000000000..84296b79b9288614267794fa084ddd342d16073e --- /dev/null +++ b/src/preamble/workarounds/pygmentize-single-quote.tex @@ -0,0 +1,10 @@ +\begingroup +\makeatletter +\catcode`'=\active +\catcode``=\active +\gdef\raise@quotes#1{\raisebox{.1ex}{\fontencoding{TS1}\fontfamily{cmtt}\selectfont#1}} +\g@addto@macro\@noligs +{\def'{\raise@quotes{\textquotesingle}}% + \def`{\raise@quotes{\textasciigrave}}% +} +\endgroup \ No newline at end of file diff --git a/src/references.bib b/src/references.bib index bf1b41372883eca30229a6aa226aa68403a87f1c..4f5bf41944357bca44fb6d257e45adcc7b2a8ad2 100644 --- a/src/references.bib +++ b/src/references.bib @@ -1,5 +1,3 @@ -% Encoding: UTF-8 - @Software{msaccess, author = {{Microsoft Corporation}}, date = {1992-11}, @@ -463,8 +461,4 @@ @Comment{jabref-meta: databaseType:biblatex;} -@Comment{jabref-meta: fileDirectory-lorenzo-knuth78:/tmp;} - -@Comment{jabref-meta: fileDirectoryLatex-lorenzo-knuth78:/media/sf_UNIUPO/2019-2020/laurea/relazione/src;} - @Comment{jabref-meta: protectedFlag:true;}