mirror of
https://github.com/pds-nest/nest.git
synced 2024-11-28 23:44:19 +00:00
8884 lines
No EOL
225 KiB
TeX
8884 lines
No EOL
225 KiB
TeX
%% Generated by Sphinx.
|
||
\def\sphinxdocclass{report}
|
||
\documentclass[letterpaper,10pt,italian]{sphinxmanual}
|
||
\ifdefined\pdfpxdimen
|
||
\let\sphinxpxdimen\pdfpxdimen\else\newdimen\sphinxpxdimen
|
||
\fi \sphinxpxdimen=.75bp\relax
|
||
|
||
\PassOptionsToPackage{warn}{textcomp}
|
||
\usepackage[utf8]{inputenc}
|
||
\ifdefined\DeclareUnicodeCharacter
|
||
% support both utf8 and utf8x syntaxes
|
||
\ifdefined\DeclareUnicodeCharacterAsOptional
|
||
\def\sphinxDUC#1{\DeclareUnicodeCharacter{"#1}}
|
||
\else
|
||
\let\sphinxDUC\DeclareUnicodeCharacter
|
||
\fi
|
||
\sphinxDUC{00A0}{\nobreakspace}
|
||
\sphinxDUC{2500}{\sphinxunichar{2500}}
|
||
\sphinxDUC{2502}{\sphinxunichar{2502}}
|
||
\sphinxDUC{2514}{\sphinxunichar{2514}}
|
||
\sphinxDUC{251C}{\sphinxunichar{251C}}
|
||
\sphinxDUC{2572}{\textbackslash}
|
||
\fi
|
||
\usepackage{cmap}
|
||
\usepackage[T1]{fontenc}
|
||
\usepackage{amsmath,amssymb,amstext}
|
||
\usepackage{babel}
|
||
|
||
|
||
|
||
\usepackage{times}
|
||
\expandafter\ifx\csname T@LGR\endcsname\relax
|
||
\else
|
||
% LGR was declared as font encoding
|
||
\substitutefont{LGR}{\rmdefault}{cmr}
|
||
\substitutefont{LGR}{\sfdefault}{cmss}
|
||
\substitutefont{LGR}{\ttdefault}{cmtt}
|
||
\fi
|
||
\expandafter\ifx\csname T@X2\endcsname\relax
|
||
\expandafter\ifx\csname T@T2A\endcsname\relax
|
||
\else
|
||
% T2A was declared as font encoding
|
||
\substitutefont{T2A}{\rmdefault}{cmr}
|
||
\substitutefont{T2A}{\sfdefault}{cmss}
|
||
\substitutefont{T2A}{\ttdefault}{cmtt}
|
||
\fi
|
||
\else
|
||
% X2 was declared as font encoding
|
||
\substitutefont{X2}{\rmdefault}{cmr}
|
||
\substitutefont{X2}{\sfdefault}{cmss}
|
||
\substitutefont{X2}{\ttdefault}{cmtt}
|
||
\fi
|
||
|
||
|
||
\usepackage[Sonny]{fncychap}
|
||
\ChNameVar{\Large\normalfont\sffamily}
|
||
\ChTitleVar{\Large\normalfont\sffamily}
|
||
\usepackage{sphinx}
|
||
|
||
\fvset{fontsize=\small}
|
||
\usepackage{geometry}
|
||
|
||
|
||
% Include hyperref last.
|
||
\usepackage{hyperref}
|
||
% Fix anchor placement for figures with captions.
|
||
\usepackage{hypcap}% it must be loaded after hyperref.
|
||
% Set up styles of URL: it should be placed after hyperref.
|
||
\urlstyle{same}
|
||
|
||
\addto\captionsitalian{\renewcommand{\contentsname}{Manuale utente}}
|
||
|
||
\usepackage{sphinxmessages}
|
||
\setcounter{tocdepth}{3}
|
||
\setcounter{secnumdepth}{3}
|
||
|
||
|
||
\title{N.E.S.T.\@{}}
|
||
\date{30 mag 2021}
|
||
\release{0.1.0}
|
||
\author{Gruppo 2}
|
||
\newcommand{\sphinxlogo}{\vbox{}}
|
||
\renewcommand{\releasename}{Release}
|
||
\makeindex
|
||
\begin{document}
|
||
|
||
\ifdefined\shorthandoff
|
||
\ifnum\catcode`\=\string=\active\shorthandoff{=}\fi
|
||
\ifnum\catcode`\"=\active\shorthandoff{"}\fi
|
||
\fi
|
||
|
||
\pagestyle{empty}
|
||
\sphinxmaketitle
|
||
\pagestyle{plain}
|
||
\sphinxtableofcontents
|
||
\pagestyle{normal}
|
||
\phantomsection\label{\detokenize{index::doc}}
|
||
|
||
|
||
\sphinxAtStartPar
|
||
Benvenuto alla documentazione di N.E.S.T.!
|
||
|
||
|
||
\chapter{Il progetto in breve}
|
||
\label{\detokenize{guide/about:il-progetto-in-breve}}\label{\detokenize{guide/about::doc}}
|
||
\sphinxAtStartPar
|
||
\sphinxstylestrong{N.E.S.T.} (Noi Estraiamo Statistiche Tweet) è un progetto realizzato nel 2021 per
|
||
l\textquotesingle{}\sphinxstylestrong{esame di Progetto del Software} del corso di Informatica all\textquotesingle{}Unimore.
|
||
|
||
|
||
\section{Suddivisione in moduli}
|
||
\label{\detokenize{guide/about:suddivisione-in-moduli}}
|
||
\sphinxAtStartPar
|
||
Il progetto è composto da tre parti:
|
||
\begin{description}
|
||
\item[{{\hyperref[\detokenize{code/crawler/index:module-nest_crawler}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{nest\_crawler}}}}}}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Un modulo scritto in \sphinxhref{https://www.python.org/}{Python} usando \sphinxcode{\sphinxupquote{tweepy}} che recupera tweet attraverso la \sphinxhref{https://developer.twitter.com/en/docs/twitter-api}{Twitter API} secondo le
|
||
condizioni presenti all\textquotesingle{}interno del database e li salva per future elaborazioni.
|
||
|
||
\item[{{\hyperref[\detokenize{code/backend/index:module-nest_backend}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{nest\_backend}}}}}}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Un web server scritto in \sphinxhref{https://www.python.org/}{Python} usando il framework \sphinxhref{https://flask.palletsprojects.com/en/1.1.x/api/\#module-flask}{\sphinxcode{\sphinxupquote{flask}}} che fornisce un\textquotesingle{}API HTTP per visualizzare e
|
||
manipolare i dati dell\textquotesingle{}applicazione, gestendo autenticazione, autorizzazione e comunicazione con il database.
|
||
|
||
\item[{\sphinxcode{\sphinxupquote{nest\_frontend}}}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Una applicazione web scritta in \sphinxhref{https://reactjs.org/docs/introducing-jsx.html}{JSX} usando il framework \sphinxcode{\sphinxupquote{react}} che comunica con il backend, mostrando
|
||
all\textquotesingle{}utente i dati del backend in una formato immediatamente comprensibile.
|
||
|
||
\end{description}
|
||
|
||
|
||
\section{Screenshots}
|
||
\label{\detokenize{guide/about:screenshots}}
|
||
\noindent\sphinxincludegraphics{{frontendDashboard}.png}
|
||
|
||
\noindent\sphinxincludegraphics{{frontendRepositoryCreate}.png}
|
||
|
||
\noindent\sphinxincludegraphics{{frontendAnalysis}.png}
|
||
|
||
\noindent\sphinxincludegraphics{{frontendRepositoryShare}.png}
|
||
|
||
\noindent\sphinxincludegraphics{{frontendAlertCreate}.png}
|
||
|
||
|
||
\chapter{Installazione}
|
||
\label{\detokenize{guide/installation:installazione}}\label{\detokenize{guide/installation::doc}}
|
||
\sphinxAtStartPar
|
||
Questa guida illustra come installare interamente N.E.S.T. su un server Linux.
|
||
|
||
|
||
\section{Prerequisiti}
|
||
\label{\detokenize{guide/installation:prerequisiti}}
|
||
\sphinxAtStartPar
|
||
Per installare ed eseguire N.E.S.T., è necessario:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Una connessione a Internet
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Un sistema operativo Linux\sphinxhyphen{}based (preferibilmente \sphinxhref{https://wiki.archlinux.org/title/Main\_page}{Arch Linux})
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxhref{https://www.freedesktop.org/wiki/Software/systemd/}{SystemD \textasciicircum{}248.2}
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxhref{https://httpd.apache.org/}{Apache HTTP Server \textasciicircum{}2.4.46}
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxhref{https://www.postgresql.org/download/}{PostgreSQL \textasciicircum{}13.2}
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxhref{https://git-scm.com/}{Git \textasciicircum{}2.31.1}
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxhref{https://www.python.org/downloads/}{Python \textasciicircum{}3.8}
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxhref{https://python-poetry.org/}{Poetry \textasciicircum{}1.0}
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxhref{https://nodejs.org/}{NodeJS \textasciicircum{}16.0}
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxhref{https://www.npmjs.com/}{npm \textasciicircum{}7.13.0}
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Un mail server (interno o esterno) che supporti
|
||
l\textquotesingle{}\sphinxhref{https://it.wikipedia.org/wiki/Simple\_Mail\_Transfer\_Protocol}{SMTP}
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\section{Creare un nuovo utente}
|
||
\label{\detokenize{guide/installation:creare-un-nuovo-utente}}
|
||
\sphinxAtStartPar
|
||
Per motivi di sicurezza, si suggerisce di creare un nuovo utente con il quale eseguire il progetto:
|
||
|
||
\begin{sphinxadmonition}{note}{Nota:}
|
||
\sphinxAtStartPar
|
||
È necessario essere amministratori di sistema per eseguire i seguenti comandi.
|
||
Si veda il manuale di \sphinxhref{https://linux.die.net/man/8/useradd}{useradd} per più dettagli.
|
||
\end{sphinxadmonition}
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }mkdir \PYGZhy{}\PYGZhy{}parents /srv/nest
|
||
\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }useradd \PYGZhy{}\PYGZhy{}home\PYGZhy{}dir /srv/nest \PYGZhy{}\PYGZhy{}shell /bin/bash nest
|
||
\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }chown \PYGZhy{}\PYGZhy{}recursive nest: /srv/nest
|
||
\end{sphinxVerbatim}
|
||
|
||
|
||
\section{Scaricare il codice sorgente}
|
||
\label{\detokenize{guide/installation:scaricare-il-codice-sorgente}}
|
||
\sphinxAtStartPar
|
||
Per installare N.E.S.T., è necessario avere il codice sorgente disponibile sul server.
|
||
|
||
\sphinxAtStartPar
|
||
Si consiglia di scaricarlo tramite \sphinxstyleemphasis{Git}:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{nest:\PYGZti{}\PYGZdl{} }git clone https://gitlab.steffo.eu/nest/g2\PYGZhy{}progetto.git
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
Questo creerà una nuova cartella \sphinxcode{\sphinxupquote{g2\sphinxhyphen{}progetto}} nella directory in cui è stato eseguito il comando.
|
||
|
||
\sphinxAtStartPar
|
||
Per proseguire, sarà necessario entrarvi:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{nest:\PYGZti{}\PYGZdl{} }\PYG{n+nb}{cd} g2\PYGZhy{}progetto
|
||
\end{sphinxVerbatim}
|
||
|
||
|
||
\section{Creare il database}
|
||
\label{\detokenize{guide/installation:creare-il-database}}
|
||
\sphinxAtStartPar
|
||
N.E.S.T. necessita di un database PostgreSQL in cui salvare i dati.
|
||
|
||
\sphinxAtStartPar
|
||
Per motivi di sicurezza, si suggerisce di creare un ruolo isolato dal resto del DBMS apposta per N.E.S.T.:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{postgres:\PYGZti{}\PYGZdl{} }createuser nest
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
Per creare il database PostgreSQL, si esegua:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{postgres:\PYGZti{}\PYGZdl{} }createdb \PYGZhy{}\PYGZhy{}owner\PYG{o}{=}nest nest
|
||
\end{sphinxVerbatim}
|
||
|
||
|
||
\section{Creare un file di configurazione per il backend}
|
||
\label{\detokenize{guide/installation:creare-un-file-di-configurazione-per-il-backend}}
|
||
\sphinxAtStartPar
|
||
Il backend usa un file di configurazione per impostare alcune variabili.
|
||
|
||
\sphinxAtStartPar
|
||
Si crei un nuovo file nella working directory del progetto denominato \sphinxcode{\sphinxupquote{config.py}}:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{nest:\PYGZti{}/g2\PYGZhy{}progetto\PYGZdl{} }vim config.py
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
Il file dovrà avere i seguenti contenuti:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{c+c1}{\PYGZsh{} Una stringa rappresentante il database da utilizzare}
|
||
\PYG{c+c1}{\PYGZsh{} Per maggiori informazioni sulla sintassi, si veda https://docs.sqlalchemy.org/en/14/core/engines.html}
|
||
\PYG{n}{SQLALCHEMY\PYGZus{}DATABASE\PYGZus{}URI} \PYG{o}{=} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{postgresql://nest@/nest}\PYG{l+s+s2}{\PYGZdq{}}
|
||
|
||
\PYG{c+c1}{\PYGZsh{} Una stringa casuale utilizzata per generare i JSON Web Token (JWT)}
|
||
\PYG{c+c1}{\PYGZsh{} Va mantenuta segreta e costante per tutta l\PYGZsq{}operazione del backend!}
|
||
\PYG{c+c1}{\PYGZsh{} Si suggerisce di premere tasti casuali sulla tastiera finchè la riga non è piena.}
|
||
\PYG{n}{SECRET\PYGZus{}KEY} \PYG{o}{=} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{dsjiofgvinmodfiojvbnio3erfnoiweraqugu43ghjwrevniuwerng43iugnreuwignhritmj43i43nb8i42ug0wevkwovmwigtjj}\PYG{l+s+s2}{\PYGZdq{}}
|
||
\end{sphinxVerbatim}
|
||
|
||
|
||
\section{Installare le dipendenze Python}
|
||
\label{\detokenize{guide/installation:installare-le-dipendenze-python}}
|
||
\sphinxAtStartPar
|
||
Le dipendenze Python sono gestite da \sphinxstyleemphasis{Poetry}, e possono essere installate con:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{nest:\PYGZti{}/g2\PYGZhy{}progetto\PYGZdl{} }poetry install
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
Poetry creerà automaticamente un \sphinxhref{https://docs.python.org/3/library/venv.html}{venv} e vi installerà all\textquotesingle{}interno tutti
|
||
i pacchetti necessari all\textquotesingle{}esecuzione del backend e del crawler di N.E.S.T. .
|
||
|
||
\sphinxAtStartPar
|
||
\sphinxstylestrong{Si suggerisce di ricordare il nome del venv creato da Poetry}, in quanto sarà necessario per
|
||
{\hyperref[\detokenize{guide/installation:creare-un-servizio-systemd-per-il-backend}]{\sphinxcrossref{\DUrole{std,std-ref}{Creare un servizio SystemD per il backend}}}}:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+go}{Creating virtualenv nest\PYGZhy{}7C2fm2VD\PYGZhy{}py3.9 in /srv/nest/.cache/pypoetry/virtualenvs}
|
||
\end{sphinxVerbatim}
|
||
|
||
|
||
\section{Installare le dipendenze NodeJS}
|
||
\label{\detokenize{guide/installation:installare-le-dipendenze-nodejs}}
|
||
\sphinxAtStartPar
|
||
Le dipendenze NodeJS sono gestite da \sphinxstyleemphasis{npm}, e possono essere installate con:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{nest:\PYGZti{}/g2\PYGZhy{}progetto\PYGZdl{} }npm install
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
npm creerà automaticamente una cartella
|
||
\sphinxhref{https://docs.npmjs.com/cli/v7/configuring-npm/folders\#node-modules}{node\_modules} e vi installerà all\textquotesingle{}interno tutte
|
||
le librerie necessarie all\textquotesingle{}esecuzione del frontend di N.E.S.T. .
|
||
|
||
|
||
\section{Creare un servizio SystemD per il backend}
|
||
\label{\detokenize{guide/installation:creare-un-servizio-systemd-per-il-backend}}
|
||
\sphinxAtStartPar
|
||
Per fare in modo che il backend rimanga attivo in background, anche dopo un riavvio, si suggerisce di installarlo come
|
||
servizio di sistema di \sphinxstyleemphasis{SystemD}:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl edit \PYGZhy{}\PYGZhy{}force \PYGZhy{}\PYGZhy{}full nest\PYGZhy{}backend
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
Inserire all\textquotesingle{}interno del file le seguenti direttive:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
[Unit]
|
||
Description=N.E.S.T. Backend
|
||
Wants=network\PYGZhy{}online.target postgresql.service
|
||
After=network\PYGZhy{}online.target nss\PYGZhy{}lookup.target postgresql.service
|
||
|
||
[Service]
|
||
Type=exec
|
||
User=nest
|
||
Group=nest
|
||
WorkingDirectory=/srv/nest/g2\PYGZhy{}progetto
|
||
|
||
\PYGZsh{} Si sostituisca a questo il percorso del virtualenv creato in precedenza da Poetry
|
||
\PYGZsh{} ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
|
||
ExecStart=/srv/nest/.cache/pypoetry/virtualenvs/nest\PYGZhy{}7C2fm2VD\PYGZhy{}py3.9/bin/python \PYGZhy{}m gunicorn \PYGZhy{}b 127.0.0.1:30040 \PYGZhy{}\PYGZhy{}env=\PYGZdq{}FLASK\PYGZus{}CONFIG=../config.py\PYGZdq{} nest\PYGZus{}backend.app:rp\PYGZus{}app
|
||
|
||
[Install]
|
||
WantedBy=multi\PYGZhy{}user.target
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
Ora, si verifichi che il servizio si avvii correttamente eseguendolo manualmente con:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl start nest\PYGZhy{}backend
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
In caso di successo, l\textquotesingle{}API dovrebbe essere esposto sulla porta \sphinxcode{\sphinxupquote{30040}} dell\textquotesingle{}indirizzo di loopback \sphinxcode{\sphinxupquote{127.0.0.1}}:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }curl \PYG{l+m}{127}.0.0.1:30040/doa
|
||
\PYG{g+go}{If you see this, the server is fine.}
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
Si abiliti il servizio, in modo che venga automaticamente avviato al riavvio del sistema:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl \PYG{n+nb}{enable} nest\PYGZhy{}backend
|
||
\end{sphinxVerbatim}
|
||
|
||
|
||
\section{Compilare il frontend}
|
||
\label{\detokenize{guide/installation:compilare-il-frontend}}
|
||
\sphinxAtStartPar
|
||
Perchè sia possibile servire il frontend agli utenti, è necessario prima crearne una versione compilata ottimizzata.
|
||
|
||
\sphinxAtStartPar
|
||
È possibile farlo con il comando:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{nest:\PYGZti{}/g2\PYGZhy{}progetto\PYGZdl{} }npm run build
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
Verrà creata una cartella \sphinxcode{\sphinxupquote{build}} con all\textquotesingle{}interno la versione compilata.
|
||
|
||
|
||
\section{Creare un servizio SystemD per il frontend}
|
||
\label{\detokenize{guide/installation:creare-un-servizio-systemd-per-il-frontend}}
|
||
\sphinxAtStartPar
|
||
Per rendere disponibile alla rete la copia locale del frontend, si suggerisce di avviare lo script npm \sphinxcode{\sphinxupquote{serve}}
|
||
integrato con N.E.S.T. come un servizio di sistema di \sphinxstyleemphasis{SystemD}:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl edit \PYGZhy{}\PYGZhy{}force \PYGZhy{}\PYGZhy{}full nest\PYGZhy{}frontend
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
Inserire all\textquotesingle{}interno del file le seguenti direttive:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
[Unit]
|
||
Description=N.E.S.T. Frontend
|
||
Wants=network\PYGZhy{}online.target nest\PYGZhy{}backend.service
|
||
After=network\PYGZhy{}online.target nss\PYGZhy{}lookup.target nest\PYGZhy{}backend.service
|
||
|
||
[Service]
|
||
Type=exec
|
||
Environment=NODE\PYGZus{}ENV=production
|
||
User=nest
|
||
Group=nest
|
||
WorkingDirectory=/srv/nest/g2\PYGZhy{}progetto
|
||
ExecStart=/usr/bin/npm run serve
|
||
|
||
[Install]
|
||
WantedBy=multi\PYGZhy{}user.target
|
||
\end{sphinxVerbatim}
|
||
|
||
\begin{sphinxadmonition}{warning}{Avvertimento:}
|
||
\sphinxAtStartPar
|
||
Questo file non è stato testato, in quanto sul server demo è in uso una versione più complessa che usa
|
||
\sphinxhref{https://github.com/nvm-sh/nvm}{nvm} per gestire più versioni di NodeJS sullo stesso sistema.
|
||
|
||
\sphinxAtStartPar
|
||
La versione in uso sul server demo è:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
[Unit]
|
||
Description=N.E.S.T. Frontend
|
||
Wants=network\PYGZhy{}online.target nest\PYGZhy{}backend.service
|
||
After=network\PYGZhy{}online.target nss\PYGZhy{}lookup.target nest\PYGZhy{}backend.service
|
||
|
||
[Service]
|
||
Type=exec
|
||
Environment=NODE\PYGZus{}ENV=production
|
||
Environment=NODE\PYGZus{}VERSION=16
|
||
User=nest
|
||
Group=nest
|
||
WorkingDirectory=/srv/nest/g2\PYGZhy{}progetto
|
||
ExecStart=/srv/nest/.nvm/nvm\PYGZhy{}exec npm run serve
|
||
|
||
[Install]
|
||
WantedBy=multi\PYGZhy{}user.target
|
||
\end{sphinxVerbatim}
|
||
\end{sphinxadmonition}
|
||
|
||
\sphinxAtStartPar
|
||
Ora, si verifichi che il servizio si avvii correttamente eseguendolo manualmente con:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl start nest\PYGZhy{}frontend
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
In caso di successo, il frontend dovrebbe essere esposto sulla porta \sphinxcode{\sphinxupquote{30041}} dell\textquotesingle{}indirizzo di loopback \sphinxcode{\sphinxupquote{127.0.0.1}}:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }curl \PYG{l+m}{127}.0.0.1:30041
|
||
\PYG{g+go}{[...]}
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
Si abiliti il servizio, in modo che venga automaticamente avviato al riavvio del sistema:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl \PYG{n+nb}{enable} nest\PYGZhy{}frontend
|
||
\end{sphinxVerbatim}
|
||
|
||
|
||
\section{Creare un servizio SystemD per il crawler}
|
||
\label{\detokenize{guide/installation:creare-un-servizio-systemd-per-il-crawler}}
|
||
\sphinxAtStartPar
|
||
Perchè i repository vengano popolati di Tweet, è necessario configurare il crawler come servizio di \sphinxstyleemphasis{SystemD}:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl edit \PYGZhy{}\PYGZhy{}force \PYGZhy{}\PYGZhy{}full nest\PYGZhy{}crawler
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
All\textquotesingle{}interno del file, inserire le seguenti direttive:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
[Unit]
|
||
Description=N.E.S.T. Crawler
|
||
Wants=network\PYGZhy{}online.target nest\PYGZhy{}backend.service
|
||
After=network\PYGZhy{}online.target nss\PYGZhy{}lookup.target nest\PYGZhy{}backend.service
|
||
|
||
[Service]
|
||
Type=exec
|
||
Environment=FLASK\PYGZus{}CONFIG=../config.py
|
||
User=nest
|
||
Group=nest
|
||
WorkingDirectory=/srv/nest/g2\PYGZhy{}progetto
|
||
\PYGZsh{} Si sostituisca a questo il percorso del virtualenv creato in precedenza da Poetry
|
||
\PYGZsh{} ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
|
||
ExecStart=/srv/nest/.cache/pypoetry/virtualenvs/nest\PYGZhy{}7C2fm2VD\PYGZhy{}py3.9/bin/python \PYGZhy{}m nest\PYGZus{}crawler
|
||
|
||
[Install]
|
||
WantedBy=multi\PYGZhy{}user.target
|
||
\end{sphinxVerbatim}
|
||
|
||
|
||
\section{Configurare il crawler}
|
||
\label{\detokenize{guide/installation:configurare-il-crawler}}
|
||
\begin{sphinxadmonition}{note}{Nota:}
|
||
\sphinxAtStartPar
|
||
Per utilizzare gli API di Twitter, è necessario essere approvati dal supporto tecnico di Twitter.
|
||
|
||
\sphinxAtStartPar
|
||
È dunque necessario \sphinxhref{https://developer.twitter.com/en/apply-for-access}{fare richiesta}, e sarà possibile
|
||
procedere con l\textquotesingle{}installazione solo una volta ricevute le credenziali per l\textquotesingle{}utilizzo.
|
||
\end{sphinxadmonition}
|
||
|
||
\sphinxAtStartPar
|
||
Per impostare le variabili di ambiente richieste dal crawler, si suggerisce di creare un \sphinxstyleemphasis{file di override} di SystemD:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl edit nest\PYGZhy{}crawler
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
All\textquotesingle{}interno del file, inserire le seguenti direttive:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
[Service]
|
||
|
||
\PYGZsh{} Sostituire a questi caratteri la Consumer Key ricevuta da Twitter
|
||
\PYGZsh{} ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
|
||
Environment=C\PYGZus{}K=0000000000000000000000000
|
||
|
||
|
||
\PYGZsh{} Sostituire a questi caratteri il Consumer Secret ricevuto da Twitter
|
||
\PYGZsh{} ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
|
||
Environment=C\PYGZus{}S=00000000000000000000000000000000000000000000000000
|
||
|
||
\PYGZsh{} Sostituire a questi caratteri l\PYGZsq{}Access Token ricevuto da Twitter
|
||
\PYGZsh{} ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
|
||
Environment=A\PYGZus{}T=00000000000000000000000000000000000000000000000000
|
||
|
||
\PYGZsh{} Sostituire a questi caratteri l\PYGZsq{}Access Token Secret ricevuto da Twitter
|
||
\PYGZsh{} ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
|
||
Environment=A\PYGZus{}T\PYGZus{}S=000000000000000000000000000000000000000000000
|
||
|
||
\PYGZsh{} Sostituire con l\PYGZsq{}indirizzo del proprio SMTP mail server
|
||
\PYGZsh{} ↓↓↓↓↓↓↓↓↓↓↓↓↓↓
|
||
Environment=SMTP\PYGZus{}HOST=mail.gandi.net
|
||
|
||
\PYGZsh{} Sostituire con le proprie credenziali dell\PYGZsq{}SMTP mail server
|
||
\PYGZsh{} ↓↓↓↓↓↓↓↓↓↓↓↓
|
||
Environment=SMTP\PYGZus{}USERNAME=bot@ryg.one
|
||
\PYGZsh{} ↓↓↓↓↓↓↓↓
|
||
Environment=SMTP\PYGZus{}PASSWORD=password
|
||
|
||
\PYGZsh{} Sostituire con l\PYGZsq{}email da cui si desidera che vengano inviate le allerte
|
||
\PYGZsh{} ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
|
||
Environment=SMTP\PYGZus{}FROM\PYGZus{}EMAIL=nest\PYGZhy{}bot@ryg.one
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
Ora, si verifichi che il servizio si avvii correttamente eseguendolo manualmente con:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl start nest\PYGZhy{}crawler
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
Nel log di sistema non dovrebbe comparire nessun errore:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }journalctl nest\PYGZhy{}crawler
|
||
\end{sphinxVerbatim}
|
||
|
||
|
||
\section{Creare un timer SystemD per il crawler}
|
||
\label{\detokenize{guide/installation:creare-un-timer-systemd-per-il-crawler}}
|
||
\sphinxAtStartPar
|
||
Per fare in modo che il crawler venga eseguito periodicamente, si suggerisce di configurare un timer SystemD:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl edit \PYGZhy{}\PYGZhy{}force \PYGZhy{}\PYGZhy{}full nest\PYGZhy{}crawler.timer
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
Si inseriscano all\textquotesingle{}interno del file le seguenti direttive:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
[Unit]
|
||
Description=Run nest\PYGZhy{}crawler every 60 minutes
|
||
|
||
[Timer]
|
||
OnBootSec=60min
|
||
OnUnitActiveSec=60min
|
||
Unit=nest\PYGZhy{}crawler.service
|
||
|
||
[Install]
|
||
WantedBy=timers.target
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
Ora, si verifichi che il timer si avvii correttamente eseguendolo manualmente con:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl start nest\PYGZhy{}crawler.timer
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
Nello stato del timer non dovrebbe comparire nessun errore:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl status nest\PYGZhy{}crawler.timer
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
Si abiliti il timer, in modo che venga automaticamente avviato al riavvio del sistema:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl \PYG{n+nb}{enable} nest\PYGZhy{}crawler.timer
|
||
\end{sphinxVerbatim}
|
||
|
||
|
||
\section{Configurare Apache come reverse proxy}
|
||
\label{\detokenize{guide/installation:configurare-apache-come-reverse-proxy}}
|
||
\sphinxAtStartPar
|
||
Per rendere l\textquotesingle{}API e il frontend disponibili al pubblico, si suggerisce di configurare Apache HTTP Server
|
||
come reverse proxy.
|
||
|
||
\sphinxAtStartPar
|
||
La configurazione di Apache varia molto da distribuzione a distribuzione Linux, e talvolta anche da server a server;
|
||
pertanto, si fornisce solamente un file \sphinxhref{https://httpd.apache.org/docs/2.4/vhosts/examples.html}{VirtualHost} di
|
||
esempio da adattare al proprio setup:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{n+nt}{\PYGZlt{}VirtualHost} \PYG{l+s}{*:80}\PYG{n+nt}{\PYGZgt{}}
|
||
\PYG{n+nb}{ServerName} \PYG{l+s+s2}{\PYGZdq{}api.nest.steffo.eu\PYGZdq{}}
|
||
\PYG{n+nb}{ServerName} \PYG{l+s+s2}{\PYGZdq{}prod.nest.steffo.eu\PYGZdq{}}
|
||
|
||
\PYG{n+nb}{RewriteEngine} \PYG{k}{On}
|
||
\PYG{n+nb}{RewriteRule} \PYGZca{}(.*)\PYGZdl{} https://\PYGZpc{}\PYGZob{}HTTP\PYGZus{}HOST\PYGZcb{}\PYGZdl{}1 [R=301,L]
|
||
\PYG{n+nt}{\PYGZlt{}/VirtualHost}\PYG{n+nt}{\PYGZgt{}}
|
||
|
||
\PYG{n+nt}{\PYGZlt{}VirtualHost} \PYG{l+s}{*:443}\PYG{n+nt}{\PYGZgt{}}
|
||
\PYG{n+nb}{ServerName} \PYG{l+s+s2}{\PYGZdq{}api.nest.steffo.eu\PYGZdq{}}
|
||
|
||
\PYG{n+nb}{SSLEngine} \PYG{k}{on}
|
||
\PYG{n+nb}{SSLCertificateFile} \PYG{l+s+s2}{\PYGZdq{}/root/.acme.sh/*.nest.steffo.eu/fullchain.cer\PYGZdq{}}
|
||
\PYG{n+nb}{SSLCertificateKeyFile} \PYG{l+s+s2}{\PYGZdq{}/root/.acme.sh/*.nest.steffo.eu/*.nest.steffo.eu.key\PYGZdq{}}
|
||
|
||
\PYG{n+nb}{ProxyPass} \PYG{l+s+s2}{\PYGZdq{}/\PYGZdq{}} \PYG{l+s+s2}{\PYGZdq{}http://127.0.0.1:30040/\PYGZdq{}}
|
||
\PYG{n+nb}{ProxyPassReverse} \PYG{l+s+s2}{\PYGZdq{}/\PYGZdq{}} \PYG{l+s+s2}{\PYGZdq{}http://127.0.0.1:30040/\PYGZdq{}}
|
||
\PYG{n+nb}{RequestHeader} set \PYG{l+s+s2}{\PYGZdq{}X\PYGZhy{}Forwarded\PYGZhy{}Proto\PYGZdq{}} expr=\PYGZpc{}\PYGZob{}REQUEST\PYGZus{}SCHEME\PYGZcb{}
|
||
|
||
\PYG{n+nb}{Protocols} h2 http/1.1
|
||
\PYG{n+nb}{Header} always set Strict\PYGZhy{}Transport\PYGZhy{}Security \PYG{l+s+s2}{\PYGZdq{}max\PYGZhy{}age=63072000\PYGZdq{}}
|
||
\PYG{n+nt}{\PYGZlt{}/VirtualHost}\PYG{n+nt}{\PYGZgt{}}
|
||
|
||
\PYG{n+nt}{\PYGZlt{}VirtualHost} \PYG{l+s}{*:443}\PYG{n+nt}{\PYGZgt{}}
|
||
\PYG{n+nb}{ServerName} \PYG{l+s+s2}{\PYGZdq{}prod.nest.steffo.eu\PYGZdq{}}
|
||
|
||
\PYG{n+nb}{SSLEngine} \PYG{k}{on}
|
||
\PYG{n+nb}{SSLCertificateFile} \PYG{l+s+s2}{\PYGZdq{}/root/.acme.sh/*.nest.steffo.eu/fullchain.cer\PYGZdq{}}
|
||
\PYG{n+nb}{SSLCertificateKeyFile} \PYG{l+s+s2}{\PYGZdq{}/root/.acme.sh/*.nest.steffo.eu/*.nest.steffo.eu.key\PYGZdq{}}
|
||
|
||
\PYG{n+nb}{ProxyPass} \PYG{l+s+s2}{\PYGZdq{}/\PYGZdq{}} \PYG{l+s+s2}{\PYGZdq{}http://127.0.0.1:30041/\PYGZdq{}}
|
||
\PYG{n+nb}{ProxyPassReverse} \PYG{l+s+s2}{\PYGZdq{}/\PYGZdq{}} \PYG{l+s+s2}{\PYGZdq{}http://127.0.0.1:30041/\PYGZdq{}}
|
||
\PYG{n+nb}{RequestHeader} set \PYG{l+s+s2}{\PYGZdq{}X\PYGZhy{}Forwarded\PYGZhy{}Proto\PYGZdq{}} expr=\PYGZpc{}\PYGZob{}REQUEST\PYGZus{}SCHEME\PYGZcb{}
|
||
|
||
\PYG{n+nb}{Protocols} h2 http/1.1
|
||
\PYG{n+nb}{Header} always set Strict\PYGZhy{}Transport\PYGZhy{}Security \PYG{l+s+s2}{\PYGZdq{}max\PYGZhy{}age=63072000\PYGZdq{}}
|
||
\PYG{n+nt}{\PYGZlt{}/VirtualHost}\PYG{n+nt}{\PYGZgt{}}
|
||
\end{sphinxVerbatim}
|
||
|
||
|
||
\chapter{Aggiornamento}
|
||
\label{\detokenize{guide/updating:aggiornamento}}\label{\detokenize{guide/updating::doc}}
|
||
\sphinxAtStartPar
|
||
Per scaricare gli aggiornamenti di N.E.S.T. si esegua il seguente comando nella directory del codice sorgente:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{nest:g2\PYGZhy{}progetto\PYGZdl{} }git pull
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
Si aggiornino poi tutte le dipendenze:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{nest:g2\PYGZhy{}progetto\PYGZdl{} }poetry install
|
||
\PYG{g+gp}{nest:g2\PYGZhy{}progetto\PYGZdl{} }npm install
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
Si ricompili il frontend:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{nest:g2\PYGZhy{}progetto\PYGZdl{} }npm build
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
In seguito, si riavviino tutti i servizi di N.E.S.T.:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl restart nest\PYGZhy{}frontend nest\PYGZhy{}backend nest\PYGZhy{}crawler nest\PYGZhy{}crawler.timer
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
Si verifichi infine il corretto avvio di tutti i servizi:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl status nest\PYGZhy{}frontend nest\PYGZhy{}backend nest\PYGZhy{}crawler nest\PYGZhy{}crawler.timer
|
||
\end{sphinxVerbatim}
|
||
|
||
|
||
\chapter{Introduzione}
|
||
\label{\detokenize{development/goals:introduzione}}\label{\detokenize{development/goals::doc}}
|
||
|
||
\section{Obiettivo}
|
||
\label{\detokenize{development/goals:obiettivo}}
|
||
\sphinxAtStartPar
|
||
L\textquotesingle{}obiettivo del progetto è la creazione di un software per fornire l\textquotesingle{}aggregazione e l\textquotesingle{}analisi di \sphinxhref{https://help.twitter.com/it/using-twitter\#tweets}{Tweet}, in modo da
|
||
rilevare eventi \sphinxstyleemphasis{macroscopici}, \sphinxstyleemphasis{locali} o più semplicemente filtrarli in base a delle \sphinxstyleemphasis{keyword}.
|
||
|
||
\sphinxAtStartPar
|
||
Il prodotto sarà utilizzato dal cliente e da un piccolo gruppo di suoi dipendenti per effettuare ricerche statistiche.
|
||
|
||
\sphinxAtStartPar
|
||
Il software andrà ad integrarsi direttamente con \sphinxhref{https://twitter.com/}{Twitter}, da cui verranno raccolti dati e su cui verranno pubblicate
|
||
allerte su di essi.
|
||
|
||
|
||
\section{Campo di applicazione}
|
||
\label{\detokenize{development/goals:campo-di-applicazione}}
|
||
\sphinxAtStartPar
|
||
Il software trova utilizzo principalmente in \sphinxstylestrong{ambito statistico}, essendo il suo scopo quello di raccogliere dati e
|
||
permettere di analizzarli tramite un\textquotesingle{}interfaccia grafica.
|
||
|
||
|
||
\section{Caratteristiche degli utenti}
|
||
\label{\detokenize{development/goals:caratteristiche-degli-utenti}}
|
||
\sphinxAtStartPar
|
||
Il software potrà essere utilizzato da utenti con una discreta esperienza nell\textquotesingle{}analisi di dati ma senza particolari
|
||
conoscenze informatiche.
|
||
|
||
|
||
\section{Glossario}
|
||
\label{\detokenize{development/goals:glossario}}\begin{description}
|
||
\item[{Repository}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Raccolta di tweet che soddisfano determinate condizioni.
|
||
|
||
\item[{Condizione}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Predicato logico che deve essere soddisfatto da un tweet per essere raccolto in fase di raccolta dati, o per essere
|
||
contato in fase di allertamento utente.
|
||
|
||
\item[{Filtro}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Predicato logico che deve essere soddisfatto da un tweet per essere visualizzato in fase di analisi dati.
|
||
|
||
\item[{Allarme}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Notifica inviata all\textquotesingle{}utente attraverso un mezzo telematico, come email oppure un tweet.
|
||
|
||
\item[{Utente}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Utilizzatore del software con un proprio account creato dall\textquotesingle{}amministratore della piattaforma.
|
||
|
||
\sphinxAtStartPar
|
||
In particolare, la piattaforma prevederà due tipologie di utenti:
|
||
\begin{description}
|
||
\item[{Utente regolare}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Potranno eseguire attività di creazione, analisi, condivisione, archiviazione ed eliminazione dei propri repository.
|
||
|
||
\item[{Utente amministratore}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Potrà effettuare tutte le attività dell\textquotesingle{}utente regolare, e in aggiunta potrà creare ed eliminare nuovi utenti
|
||
regolari.
|
||
|
||
\end{description}
|
||
|
||
\end{description}
|
||
|
||
|
||
\section{Macro\sphinxhyphen{}funzionalità}
|
||
\label{\detokenize{development/goals:macro-funzionalita}}
|
||
\sphinxAtStartPar
|
||
Il software permetterà di selezionare \sphinxstylestrong{condizioni} con cui scegliere quali tweet raccogliere:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
in base ai loro \sphinxhref{https://help.twitter.com/it/using-twitter/how-to-use-hashtags}{hashtag}
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
in base al loro autore
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
in base alla loro \sphinxhref{https://help.twitter.com/en/safety-and-security/tweet-location-settings}{posizione geografica} (ove presente)
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
in base alla loro data di pubblicazione
|
||
|
||
\end{itemize}
|
||
|
||
\sphinxAtStartPar
|
||
Selezionate le condizioni, l\textquotesingle{}utente potrà creare una \sphinxstylestrong{repository}: una cartella in cui verranno raccolti i tweet
|
||
soddisfacenti le condizioni richieste.
|
||
|
||
\sphinxAtStartPar
|
||
Una volta raccolti, i tweet di una repository potranno essere \sphinxstylestrong{analizzati} in qualsiasi momento: durante l\textquotesingle{}analisi,
|
||
saranno mostrate statistiche e grafici relativi ai tweet.
|
||
|
||
\sphinxAtStartPar
|
||
La raccolta potrà essere interrotta in qualsiasi momento \sphinxstylestrong{archiviando} il repository.
|
||
|
||
\sphinxAtStartPar
|
||
Sarà possibile \sphinxstylestrong{condividere} una repository con altri utenti della piattaforma, permettendo loro di analizzarla.
|
||
|
||
\sphinxAtStartPar
|
||
Infine, l\textquotesingle{}utente potrà configurare una repository in modo che gli invii una \sphinxstylestrong{allerta} qualora vengano raccolti un dato
|
||
numero di tweet in una certa \sphinxstyleemphasis{finestra temporale}.
|
||
|
||
|
||
\section{Casi d\textquotesingle{}uso}
|
||
\label{\detokenize{development/goals:casi-d-uso}}
|
||
\sphinxAtStartPar
|
||
N.E.S.T. prevede tre tipologie di \sphinxstyleemphasis{agenti} ("utenti" UML): \sphinxstylestrong{utente}, \sphinxstylestrong{amministratore} e \sphinxstylestrong{sistema}.
|
||
|
||
\noindent\sphinxincludegraphics{{Utenti}.png}
|
||
|
||
\sphinxAtStartPar
|
||
I principali casi d’uso individuati durante la progettazione di N.E.S.T. sono:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
La gestione degli utenti da parte di un Amministratore:
|
||
|
||
\noindent\sphinxincludegraphics[width=400\sphinxpxdimen]{{CasiUso1}.PNG}
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
La gestione del login da parte di un Utente:
|
||
|
||
\noindent\sphinxincludegraphics[width=400\sphinxpxdimen]{{CasiUso2}.PNG}
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
La gestione delle Allerte sia dal punto di vista dell’Utente che del Sistema:
|
||
|
||
\noindent\sphinxincludegraphics[width=800\sphinxpxdimen]{{CasiUso3}.PNG}
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
La gestione della raccolta da parte dell\textquotesingle{}utente:
|
||
|
||
\noindent\sphinxincludegraphics[width=400\sphinxpxdimen]{{CasiUso4}.PNG}
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
La gestione di un repository da parte dell\textquotesingle{}utente:
|
||
|
||
\noindent\sphinxincludegraphics[width=400\sphinxpxdimen]{{CasiUso5}.PNG}
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
La visualizzazione di un repository:
|
||
|
||
\noindent\sphinxincludegraphics[width=400\sphinxpxdimen]{{CasiUso6}.PNG}
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\section{Backlog generale}
|
||
\label{\detokenize{development/goals:backlog-generale}}
|
||
\sphinxAtStartPar
|
||
Si riporta qui di seguito il Backlog definito ad inizio progetto, prima dell’avvio dello sviluppo.
|
||
Gli elementi dal bordo grigio sono le epiche:
|
||
|
||
\begin{sphinxadmonition}{note}{Nota:}
|
||
\sphinxAtStartPar
|
||
Alcune user story sono state rimosse in seguito al feedback ricevuto durante il primo sprint!
|
||
\end{sphinxadmonition}
|
||
|
||
\noindent\sphinxincludegraphics{{Backlog1}.PNG}
|
||
|
||
\noindent\sphinxincludegraphics{{Backlog2}.PNG}
|
||
|
||
\noindent\sphinxincludegraphics{{Backlog3}.PNG}
|
||
|
||
\noindent\sphinxincludegraphics{{Backlog4}.PNG}
|
||
|
||
\noindent\sphinxincludegraphics{{Backlog5}.PNG}
|
||
|
||
|
||
\chapter{Strumenti utilizzati}
|
||
\label{\detokenize{development/tools:strumenti-utilizzati}}\label{\detokenize{development/tools::doc}}
|
||
\sphinxAtStartPar
|
||
Nello sviluppo di N.E.S.T. sono stati usati i seguenti strumenti software:
|
||
|
||
\sphinxAtStartPar
|
||
\sphinxhref{https://www.jetbrains.com/idea/}{IntelliJ IDEA Ultimate}
|
||
\begin{quote}
|
||
|
||
\sphinxAtStartPar
|
||
IDE multilinguaggio utilizzato per lo sviluppo di tutte le parti di N.E.S.T., per la scrittura della documentazione,
|
||
per l\textquotesingle{}esecuzione del testing e per la visualizzazione del coverage, per il refactoring automatico e per l\textquotesingle{}analisi
|
||
statica del codice.
|
||
\end{quote}
|
||
|
||
\sphinxAtStartPar
|
||
\sphinxhref{https://git-scm.com/}{Git}
|
||
\begin{quote}
|
||
|
||
\sphinxAtStartPar
|
||
Software di controllo versione utilizzato per tracciare tutte le modifiche al software.
|
||
\end{quote}
|
||
|
||
\sphinxAtStartPar
|
||
\sphinxhref{https://about.gitlab.com/}{GitLab}
|
||
\begin{quote}
|
||
|
||
\sphinxAtStartPar
|
||
Applicazione web self\sphinxhyphen{}hosted per hosting di repository \sphinxhref{https://git-scm.com/}{Git}, utilizzato per ospitare il repository del progetto.
|
||
|
||
\begin{sphinxadmonition}{hint}{Suggerimento:}
|
||
\sphinxAtStartPar
|
||
È accessibile al seguente indirizzo: \sphinxurl{https://gitlab.steffo.eu/}
|
||
\end{sphinxadmonition}
|
||
\end{quote}
|
||
|
||
\sphinxAtStartPar
|
||
\sphinxhref{https://www.taiga.io/}{Taiga}
|
||
\begin{quote}
|
||
|
||
\sphinxAtStartPar
|
||
Applicazione web self\sphinxhyphen{}hosted per il Project Management, utilizzata per tracciare lo stato del progetto giorno per
|
||
giorno.
|
||
|
||
\begin{sphinxadmonition}{hint}{Suggerimento:}
|
||
\sphinxAtStartPar
|
||
È accessibile al seguente indirizzo: \sphinxurl{https://taiga.steffo.eu/}
|
||
\end{sphinxadmonition}
|
||
\end{quote}
|
||
|
||
\sphinxAtStartPar
|
||
\sphinxhref{https://www.sonarqube.org/}{SonarQube}
|
||
\begin{quote}
|
||
|
||
\sphinxAtStartPar
|
||
Applicazione web self\sphinxhyphen{}hosted per l\textquotesingle{}analisi statica e visualizzazione del coverage del software, utilizzata per
|
||
il miglioramento della qualità del codice del progetto.
|
||
|
||
\begin{sphinxadmonition}{hint}{Suggerimento:}
|
||
\sphinxAtStartPar
|
||
È accessibile al seguente indirizzo: \sphinxurl{https://sonarqube.steffo.eu/}
|
||
\end{sphinxadmonition}
|
||
\end{quote}
|
||
|
||
\sphinxAtStartPar
|
||
\sphinxhref{https://www.figma.com/}{Figma}
|
||
\begin{quote}
|
||
|
||
\sphinxAtStartPar
|
||
Applicazione web centralizzata per la creazione collaborativa di interfacce grafiche moderne.
|
||
\end{quote}
|
||
|
||
\sphinxAtStartPar
|
||
\sphinxhref{https://discord.com/}{Discord}
|
||
\begin{quote}
|
||
|
||
\sphinxAtStartPar
|
||
Piattaforma centralizzata di messaggistica istantanea e chiamate vocali utilizzata per la comunicazione sincrona
|
||
tra i membri del team.
|
||
\end{quote}
|
||
|
||
|
||
\chapter{Processo di sviluppo}
|
||
\label{\detokenize{development/process:processo-di-sviluppo}}\label{\detokenize{development/process::doc}}
|
||
|
||
\section{Ruoli}
|
||
\label{\detokenize{development/process:ruoli}}
|
||
\sphinxAtStartPar
|
||
Per lavorare più efficientemente, si è assegnato uno o più "ruoli" a ogni membro del team in base alle proprie
|
||
competenze.
|
||
\begin{quote}\begin{description}
|
||
\item[{Stefano Goldoni}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Product Owner, Tester
|
||
|
||
\item[{Flavia Cocca}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Scrum Master, UI Designer
|
||
|
||
\item[{Chiara Calzolari}] \leavevmode
|
||
\sphinxAtStartPar
|
||
UI Designer, Translator
|
||
|
||
\item[{Stefano Pigozzi}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Frontend Developer, Sysadmin
|
||
|
||
\item[{Giovanni Anniballi}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Lead Tester
|
||
|
||
\item[{Giorgio Minoccari}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Analyst, Crawler Developer
|
||
|
||
\item[{Lorenzo Balugani}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Database Architect, Backend Developer
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\sphinxAtStartPar
|
||
Questi ruoli sono stati usati in maniera \sphinxstylestrong{flessibile}; è capitato infatti moltissime volte che un membro con un ruolo
|
||
ne aiutasse un altro con un ruolo diverso: ad esempio, è successo che i Developer aiutassero i Tester indicando loro
|
||
particolarità specifiche dei linguaggi di programmazione utilizzati, oppure che gli UI Designer aiutassero nella
|
||
scrittura della documentazione.
|
||
|
||
|
||
\section{Sprint}
|
||
\label{\detokenize{development/process:sprint}}
|
||
\sphinxAtStartPar
|
||
Lo sviluppo si è svolto in \sphinxstylestrong{4 Sprint} dalla durata di \sphinxstylestrong{2 settimane ciascuno}.
|
||
|
||
|
||
\subsection{Sprint 0: 04 Apr \sphinxhyphen{} 18 Apr}
|
||
\label{\detokenize{development/sprint0/index:sprint-0-04-apr-18-apr}}\label{\detokenize{development/sprint0/index::doc}}
|
||
|
||
\subsubsection{Consegna}
|
||
\label{\detokenize{development/sprint0/index:consegna}}
|
||
\sphinxAtStartPar
|
||
La seguente documentazione è stata fornita dal cliente durante questo sprint:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxcode{\sphinxupquote{0\sphinxhyphen{}initial.pdf}}
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxcode{\sphinxupquote{0\sphinxhyphen{}sprint\sphinxhyphen{}requirements.pdf}}
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\subsubsection{Definition of Ready}
|
||
\label{\detokenize{development/sprint0/index:definition-of-ready}}
|
||
\sphinxAtStartPar
|
||
Il team ha definito lo stato di Ready di una User Story in base ai seguenti criteri:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
La User Story è stata compresa ed accettata da tutti i membri
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
I tester hanno confermato la possibilità di poterla testare
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Il Product Owner ha la visione necessaria per definirne la priorità
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Il Team è in grado di stimarla
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
La User Story è indipendente o dipendente da altre a priorità maggiore
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\subsubsection{Definition of Done}
|
||
\label{\detokenize{development/sprint0/index:definition-of-done}}
|
||
\sphinxAtStartPar
|
||
La definizione di Done è stata concordata da tutto il team con il Product Owner, ed è stata così
|
||
definita:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Sviluppo completo della funzionalità richiesta
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Definizione e superamento dei test
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Bozza della documentazione della funzionalità
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Merge dei sorgenti nel branch \sphinxcode{\sphinxupquote{main}} del repository Git
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\subsubsection{Statistiche}
|
||
\label{\detokenize{development/sprint0/index:statistiche}}
|
||
|
||
\paragraph{Gitinspector}
|
||
\label{\detokenize{development/sprint0/index:gitinspector}}
|
||
\sphinxAtStartPar
|
||
Questa statistica è stata generata dal prof. Marcello Missiroli con
|
||
\sphinxhref{https://github.com/ejwa/gitinspector}{Gitinspector} al termine dello Sprint.
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxcode{\sphinxupquote{0\sphinxhyphen{}stats.html}}
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\subsubsection{Sprint Retrospective}
|
||
\label{\detokenize{development/sprint0/index:sprint-retrospective}}
|
||
\sphinxAtStartPar
|
||
La Sprint Retrospective è disponibile al seguente link:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxcode{\sphinxupquote{0\sphinxhyphen{}retrospective.pdf}}
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\subsubsection{Sprint Review}
|
||
\label{\detokenize{development/sprint0/index:sprint-review}}
|
||
\sphinxAtStartPar
|
||
Il video di Sprint Review è disponibile al seguente link:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxurl{https://drive.google.com/file/d/12worWEcx-uf2UP4\_lnEOovHZpvR77MsG/view}
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\subsubsection{Artefatti}
|
||
\label{\detokenize{development/sprint0/index:artefatti}}
|
||
\sphinxAtStartPar
|
||
In questo sprint è stato realizzato un documento con i risultati dell\textquotesingle{}analisi effettuata per realizzare il software:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxcode{\sphinxupquote{0\sphinxhyphen{}result.pdf}}
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\subsubsection{Registro attività}
|
||
\label{\detokenize{development/sprint0/index:registro-attivita}}
|
||
|
||
\paragraph{Riunioni collettive}
|
||
\label{\detokenize{development/sprint0/index:riunioni-collettive}}
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\centering
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Ora
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
10h 6m
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}08
|
||
&
|
||
\sphinxAtStartPar
|
||
20:45
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Analisi documento di specifiche
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}09
|
||
&
|
||
\sphinxAtStartPar
|
||
14:15
|
||
&
|
||
\sphinxAtStartPar
|
||
35m
|
||
&
|
||
\sphinxAtStartPar
|
||
Intervista con il cliente
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}09
|
||
&
|
||
\sphinxAtStartPar
|
||
15:00
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Resoconto intervista
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}11
|
||
&
|
||
\sphinxAtStartPar
|
||
15:03
|
||
&
|
||
\sphinxAtStartPar
|
||
2h 39m
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione e planning poker
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}15
|
||
&
|
||
\sphinxAtStartPar
|
||
18:15
|
||
&
|
||
\sphinxAtStartPar
|
||
52m
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}17
|
||
&
|
||
\sphinxAtStartPar
|
||
15:05
|
||
&
|
||
\sphinxAtStartPar
|
||
4h
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione e partita a Scrumble
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
|
||
\paragraph{Attività individuali}
|
||
\label{\detokenize{development/sprint0/index:attivita-individuali}}
|
||
\begin{sphinxadmonition}{hint}{Suggerimento:}
|
||
\sphinxAtStartPar
|
||
Per vedere più in dettaglio il lavoro di sviluppo effettuato da ogni membro del gruppo, si suggerisce di
|
||
visualizzare il log di Git:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{\PYGZdl{} }git log
|
||
\end{sphinxVerbatim}
|
||
\end{sphinxadmonition}
|
||
|
||
|
||
\subparagraph{Stefano Goldoni}
|
||
\label{\detokenize{development/sprint0/index:stefano-goldoni}}
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\centering
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
6h 30m
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}08
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
user stories
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}09
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
epic
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}10
|
||
&
|
||
\sphinxAtStartPar
|
||
30m
|
||
&
|
||
\sphinxAtStartPar
|
||
use cases
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}11
|
||
&
|
||
\sphinxAtStartPar
|
||
30m
|
||
&
|
||
\sphinxAtStartPar
|
||
use cases
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}14
|
||
&
|
||
\sphinxAtStartPar
|
||
30m
|
||
&
|
||
\sphinxAtStartPar
|
||
documentazione SRS
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}15
|
||
&
|
||
\sphinxAtStartPar
|
||
30m
|
||
&
|
||
\sphinxAtStartPar
|
||
documentazione SRS
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}17
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 30m
|
||
&
|
||
\sphinxAtStartPar
|
||
diagrammi di attività
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
|
||
\subparagraph{Flavia Cocca}
|
||
\label{\detokenize{development/sprint0/index:flavia-cocca}}
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\centering
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
15h
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}08
|
||
&
|
||
\sphinxAtStartPar
|
||
2h 30m
|
||
&
|
||
\sphinxAtStartPar
|
||
brainstorming Ui
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}10
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
creazione frame in figma con relativo css
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}11
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 30m
|
||
&
|
||
\sphinxAtStartPar
|
||
mockup UI con relativo css (creazione componenti)
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}12
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 30m
|
||
&
|
||
\sphinxAtStartPar
|
||
mockup UI con relativo css (creazione componenti)
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}14
|
||
&
|
||
\sphinxAtStartPar
|
||
3h
|
||
&
|
||
\sphinxAtStartPar
|
||
mockup UI con relativo css (creazione pagine)
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}15
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
mockup UI con relativo css (creazioni pagine)
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}16
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
ultimi ritocchi UI
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}17
|
||
&
|
||
\sphinxAtStartPar
|
||
30m
|
||
&
|
||
\sphinxAtStartPar
|
||
Stesura documentazione partita scrumble
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
|
||
\subparagraph{Chiara Calzolari}
|
||
\label{\detokenize{development/sprint0/index:chiara-calzolari}}
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\centering
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
12h 30m
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}09
|
||
&
|
||
\sphinxAtStartPar
|
||
2.5h
|
||
&
|
||
\sphinxAtStartPar
|
||
Brainstorming UI
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}10
|
||
&
|
||
\sphinxAtStartPar
|
||
1.5h
|
||
&
|
||
\sphinxAtStartPar
|
||
mockup UI con relativo css (dashboard ed elenco repositories)
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}11
|
||
&
|
||
\sphinxAtStartPar
|
||
1.0h
|
||
&
|
||
\sphinxAtStartPar
|
||
mockup UI con relativo css (settings)
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}11
|
||
&
|
||
\sphinxAtStartPar
|
||
0.5h
|
||
&
|
||
\sphinxAtStartPar
|
||
Prima versione del logo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}12
|
||
&
|
||
\sphinxAtStartPar
|
||
3.0h
|
||
&
|
||
\sphinxAtStartPar
|
||
mockup UI con relativo css (creazione componenti, light/dark mode)
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}13
|
||
&
|
||
\sphinxAtStartPar
|
||
1.0h
|
||
&
|
||
\sphinxAtStartPar
|
||
mockup UI con relativo css (alerts)
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}15
|
||
&
|
||
\sphinxAtStartPar
|
||
1.0h
|
||
&
|
||
\sphinxAtStartPar
|
||
Versione definitiva del logo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}16
|
||
&
|
||
\sphinxAtStartPar
|
||
0.5h
|
||
&
|
||
\sphinxAtStartPar
|
||
mockup UI con relativo css (Notifications e Share)
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}17
|
||
&
|
||
\sphinxAtStartPar
|
||
1.0h
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione Mockup
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}17
|
||
&
|
||
\sphinxAtStartPar
|
||
0.5h
|
||
&
|
||
\sphinxAtStartPar
|
||
Doppiaggio video di presentazione
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
|
||
\subparagraph{Stefano Pigozzi}
|
||
\label{\detokenize{development/sprint0/index:stefano-pigozzi}}
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\centering
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
23h 30m
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}08
|
||
&
|
||
\sphinxAtStartPar
|
||
4h 30m
|
||
&
|
||
\sphinxAtStartPar
|
||
Configurazione Discord e GitLab
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}09
|
||
&
|
||
\sphinxAtStartPar
|
||
3h 30m
|
||
&
|
||
\sphinxAtStartPar
|
||
Riunione con il cliente e configurazione Taiga
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}10
|
||
&
|
||
\sphinxAtStartPar
|
||
4h
|
||
&
|
||
\sphinxAtStartPar
|
||
Configurazione Penpot, Taiga, UI Design, progettazione Database
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}11
|
||
&
|
||
\sphinxAtStartPar
|
||
3h 30m
|
||
&
|
||
\sphinxAtStartPar
|
||
Riunione, configurazione GitLab e project management
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}12
|
||
&
|
||
\sphinxAtStartPar
|
||
30m
|
||
&
|
||
\sphinxAtStartPar
|
||
Configurazione Twitter e UI Design
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}15
|
||
&
|
||
\sphinxAtStartPar
|
||
2h 30m
|
||
&
|
||
\sphinxAtStartPar
|
||
Partita a Scrumble e project management
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}16
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 30m
|
||
&
|
||
\sphinxAtStartPar
|
||
Project management e configurazione SonarQube
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}17
|
||
&
|
||
\sphinxAtStartPar
|
||
3h 30m
|
||
&
|
||
\sphinxAtStartPar
|
||
Riunione e partita a scrumble
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
|
||
\subparagraph{Giovanni Anniballi}
|
||
\label{\detokenize{development/sprint0/index:giovanni-anniballi}}
|
||
\begin{sphinxadmonition}{note}{Nota:}
|
||
\sphinxAtStartPar
|
||
Giovanni ha iniziato a raccogliere dati sul tempo impiegato a partire dallo Sprint 1.
|
||
\end{sphinxadmonition}
|
||
|
||
|
||
\subparagraph{Giorgio Minoccari}
|
||
\label{\detokenize{development/sprint0/index:giorgio-minoccari}}
|
||
\begin{sphinxadmonition}{note}{Nota:}
|
||
\sphinxAtStartPar
|
||
Giorgio ha iniziato a raccogliere dati sul tempo impiegato a partire dallo Sprint 1.
|
||
\end{sphinxadmonition}
|
||
|
||
|
||
\subparagraph{Lorenzo Balugani}
|
||
\label{\detokenize{development/sprint0/index:lorenzo-balugani}}
|
||
\begin{sphinxadmonition}{note}{Nota:}
|
||
\sphinxAtStartPar
|
||
Lorenzo ha iniziato a raccogliere dati sul tempo impiegato a partire dallo Sprint 1.
|
||
\end{sphinxadmonition}
|
||
|
||
|
||
\subsubsection{Risultati della partita di Scrumble}
|
||
\label{\detokenize{development/sprint0/index:risultati-della-partita-di-scrumble}}\begin{enumerate}
|
||
\sphinxsetlistlabels{\arabic}{enumi}{enumii}{}{.}%
|
||
\item {} \begin{quote}\begin{description}
|
||
\item[{Goal}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Learn
|
||
|
||
\item[{Question}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Do team members understand the Scrum roles?
|
||
|
||
\item[{Metric}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Knowledge of Scrum roles by questions
|
||
|
||
\item[{Evaluation}] \leavevmode\begin{quote}\begin{description}
|
||
\item[{1}] \leavevmode
|
||
\sphinxAtStartPar
|
||
no idea of the Scrum roles
|
||
|
||
\item[{5}] \leavevmode
|
||
\sphinxAtStartPar
|
||
perfect knowledge of the roles and their jobs
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item[{Chiara}] \leavevmode
|
||
\sphinxAtStartPar
|
||
4
|
||
|
||
\item[{Giorgio}] \leavevmode
|
||
\sphinxAtStartPar
|
||
4
|
||
|
||
\item[{Giovanni}] \leavevmode
|
||
\sphinxAtStartPar
|
||
4
|
||
|
||
\item[{Stefano P.}] \leavevmode
|
||
\sphinxAtStartPar
|
||
4
|
||
|
||
\item[{Lorenzo}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Stefano G.}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Flavia}] \leavevmode
|
||
\sphinxAtStartPar
|
||
4
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item {} \begin{quote}\begin{description}
|
||
\item[{Goal}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Learn
|
||
|
||
\item[{Question}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Do team members feel they learned the process?
|
||
|
||
\item[{Metric}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Opinions from the participants
|
||
|
||
\item[{Evaluation}] \leavevmode\begin{quote}\begin{description}
|
||
\item[{1}] \leavevmode
|
||
\sphinxAtStartPar
|
||
couldn\textquotesingle{}t repeat the game
|
||
|
||
\item[{5}] \leavevmode
|
||
\sphinxAtStartPar
|
||
could play the game as a Scrum Master by himself
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item[{Chiara}] \leavevmode
|
||
\sphinxAtStartPar
|
||
3
|
||
|
||
\item[{Giorgio}] \leavevmode
|
||
\sphinxAtStartPar
|
||
3
|
||
|
||
\item[{Giovanni}] \leavevmode
|
||
\sphinxAtStartPar
|
||
4
|
||
|
||
\item[{Stefano P.}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Lorenzo}] \leavevmode
|
||
\sphinxAtStartPar
|
||
3
|
||
|
||
\item[{Stefano G.}] \leavevmode
|
||
\sphinxAtStartPar
|
||
3
|
||
|
||
\item[{Flavia}] \leavevmode
|
||
\sphinxAtStartPar
|
||
3
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item {} \begin{quote}\begin{description}
|
||
\item[{Goal}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Learn
|
||
|
||
\item[{Question}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Does everyone keep up with the other players?
|
||
|
||
\item[{Metric}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Check during every sprint retrospective if every one is on point
|
||
|
||
\item[{Evaluation}] \leavevmode\begin{quote}\begin{description}
|
||
\item[{1}] \leavevmode
|
||
\sphinxAtStartPar
|
||
totally lost
|
||
|
||
\item[{5}] \leavevmode
|
||
\sphinxAtStartPar
|
||
leads the game driving the other players
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item[{Chiara}] \leavevmode
|
||
\sphinxAtStartPar
|
||
3
|
||
|
||
\item[{Giorgio}] \leavevmode
|
||
\sphinxAtStartPar
|
||
4
|
||
|
||
\item[{Giovanni}] \leavevmode
|
||
\sphinxAtStartPar
|
||
4
|
||
|
||
\item[{Stefano P.}] \leavevmode
|
||
\sphinxAtStartPar
|
||
4
|
||
|
||
\item[{Lorenzo}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Stefano G.}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Flavia}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item {} \begin{quote}\begin{description}
|
||
\item[{Goal}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Practice
|
||
|
||
\item[{Question}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Are the game mechanics linear and repeatable?
|
||
|
||
\item[{Metric}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Opinions from the participants
|
||
|
||
\item[{Evaluation}] \leavevmode\begin{quote}\begin{description}
|
||
\item[{1}] \leavevmode
|
||
\sphinxAtStartPar
|
||
feels the game is unrepeatable
|
||
|
||
\item[{5}] \leavevmode
|
||
\sphinxAtStartPar
|
||
feels the game could be played in any situation
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item[{Chiara}] \leavevmode
|
||
\sphinxAtStartPar
|
||
1
|
||
|
||
\item[{Giorgio}] \leavevmode
|
||
\sphinxAtStartPar
|
||
2
|
||
|
||
\item[{Giovanni}] \leavevmode
|
||
\sphinxAtStartPar
|
||
1
|
||
|
||
\item[{Stefano P.}] \leavevmode
|
||
\sphinxAtStartPar
|
||
1
|
||
|
||
\item[{Lorenzo}] \leavevmode
|
||
\sphinxAtStartPar
|
||
1
|
||
|
||
\item[{Stefano G.}] \leavevmode
|
||
\sphinxAtStartPar
|
||
2
|
||
|
||
\item[{Flavia}] \leavevmode
|
||
\sphinxAtStartPar
|
||
1
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item {} \begin{quote}\begin{description}
|
||
\item[{Goal}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Practice
|
||
|
||
\item[{Question}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Do team success in completing the game?
|
||
|
||
\item[{Metric}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Number of User Stories completed
|
||
|
||
\item[{Evaluation}] \leavevmode\begin{quote}\begin{description}
|
||
\item[{1}] \leavevmode
|
||
\sphinxAtStartPar
|
||
0 to 3 stories
|
||
|
||
\item[{2}] \leavevmode
|
||
\sphinxAtStartPar
|
||
4 to 6
|
||
|
||
\item[{3}] \leavevmode
|
||
\sphinxAtStartPar
|
||
7 to 9
|
||
|
||
\item[{4}] \leavevmode
|
||
\sphinxAtStartPar
|
||
10 to 12
|
||
|
||
\item[{5}] \leavevmode
|
||
\sphinxAtStartPar
|
||
13 to 15
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item[{Chiara}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Giorgio}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Giovanni}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Stefano P.}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Lorenzo}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Stefano G.}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Flavia}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item {} \begin{quote}\begin{description}
|
||
\item[{Goal}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Practice
|
||
|
||
\item[{Question}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Do team members efficiently estimate during sprint planning?
|
||
|
||
\item[{Metric}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Uniformity in evaluating the size and the priority of user stories
|
||
|
||
\item[{Evaluation}] \leavevmode\begin{quote}\begin{description}
|
||
\item[{1}] \leavevmode
|
||
\sphinxAtStartPar
|
||
abnormal difference from the other players
|
||
|
||
\item[{5}] \leavevmode
|
||
\sphinxAtStartPar
|
||
coherent and uniform with the group most of the time
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item[{Chiara}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Giorgio}] \leavevmode
|
||
\sphinxAtStartPar
|
||
4
|
||
|
||
\item[{Giovanni}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Stefano P.}] \leavevmode
|
||
\sphinxAtStartPar
|
||
4
|
||
|
||
\item[{Lorenzo}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item {} \begin{quote}\begin{description}
|
||
\item[{Goal}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Cooperation
|
||
|
||
\item[{Question}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Do team members know each other better?
|
||
|
||
\item[{Metric}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Level of players\textquotesingle{} serenity throughout the game
|
||
|
||
\item[{Evaluation}] \leavevmode\begin{quote}\begin{description}
|
||
\item[{1}] \leavevmode
|
||
\sphinxAtStartPar
|
||
never speaks with the other players
|
||
|
||
\item[{5}] \leavevmode
|
||
\sphinxAtStartPar
|
||
talks friendly to anyone in every situation
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item[{Chiara}] \leavevmode
|
||
\sphinxAtStartPar
|
||
4
|
||
|
||
\item[{Giorgio}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Giovanni}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Stefano P.}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Lorenzo}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Stefano G.}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Flavia}] \leavevmode
|
||
\sphinxAtStartPar
|
||
4
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item {} \begin{quote}\begin{description}
|
||
\item[{Goal}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Cooperation
|
||
|
||
\item[{Question}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Does the game let all players cooperate?
|
||
|
||
\item[{Metric}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Contribution of every player during the game
|
||
|
||
\item[{Evaluation}] \leavevmode\begin{quote}\begin{description}
|
||
\item[{1}] \leavevmode
|
||
\sphinxAtStartPar
|
||
never puts effort in doing something
|
||
|
||
\item[{5}] \leavevmode
|
||
\sphinxAtStartPar
|
||
every time is willing to understand what is going on
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item[{Chiara}] \leavevmode
|
||
\sphinxAtStartPar
|
||
4
|
||
|
||
\item[{Giorgio}] \leavevmode
|
||
\sphinxAtStartPar
|
||
3
|
||
|
||
\item[{Giovanni}] \leavevmode
|
||
\sphinxAtStartPar
|
||
3
|
||
|
||
\item[{Stefano P.}] \leavevmode
|
||
\sphinxAtStartPar
|
||
2
|
||
|
||
\item[{Lorenzo}] \leavevmode
|
||
\sphinxAtStartPar
|
||
3
|
||
|
||
\item[{Stefano G.}] \leavevmode
|
||
\sphinxAtStartPar
|
||
4
|
||
|
||
\item[{Flavia}] \leavevmode
|
||
\sphinxAtStartPar
|
||
3
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item {} \begin{quote}\begin{description}
|
||
\item[{Goal}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Cooperation
|
||
|
||
\item[{Question}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Do team member consult each other about a topic?
|
||
|
||
\item[{Metric}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Sharing of ideas
|
||
|
||
\item[{Evaluation}] \leavevmode\begin{quote}\begin{description}
|
||
\item[{1}] \leavevmode
|
||
\sphinxAtStartPar
|
||
never asks for an opinion
|
||
|
||
\item[{5}] \leavevmode
|
||
\sphinxAtStartPar
|
||
wants to discuss about every topic
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item[{Chiara}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Giorgio}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Giovanni}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Stefano P.}] \leavevmode
|
||
\sphinxAtStartPar
|
||
3
|
||
|
||
\item[{Lorenzo}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Stefano G.}] \leavevmode
|
||
\sphinxAtStartPar
|
||
4
|
||
|
||
\item[{Flavia}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item {} \begin{quote}\begin{description}
|
||
\item[{Goal}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Motivation
|
||
|
||
\item[{Question}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Do team members encourage collegues in need?
|
||
|
||
\item[{Metric}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Players explain something other players don\textquotesingle{}t understand
|
||
|
||
\item[{Evaluation}] \leavevmode\begin{quote}\begin{description}
|
||
\item[{1}] \leavevmode
|
||
\sphinxAtStartPar
|
||
not involved by the game
|
||
|
||
\item[{5}] \leavevmode
|
||
\sphinxAtStartPar
|
||
always makes sure everyone is on point
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item[{Chiara}] \leavevmode
|
||
\sphinxAtStartPar
|
||
3
|
||
|
||
\item[{Giorgio}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Giovanni}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Stefano P.}] \leavevmode
|
||
\sphinxAtStartPar
|
||
4
|
||
|
||
\item[{Lorenzo}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Stefano G.}] \leavevmode
|
||
\sphinxAtStartPar
|
||
4
|
||
|
||
\item[{Flavia}] \leavevmode
|
||
\sphinxAtStartPar
|
||
4
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item {} \begin{quote}\begin{description}
|
||
\item[{Goal}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Motivation
|
||
|
||
\item[{Question}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Does PO help the team?
|
||
|
||
\item[{Metric}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Quality of PO\textquotesingle{}s advices to get better in the next sprints
|
||
|
||
\item[{Evaluation}] \leavevmode\begin{quote}\begin{description}
|
||
\item[{1}] \leavevmode
|
||
\sphinxAtStartPar
|
||
poor/absent advices
|
||
|
||
\item[{5}] \leavevmode
|
||
\sphinxAtStartPar
|
||
wise and helpful suggestions when is required
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item[{Stefano G.}] \leavevmode
|
||
\sphinxAtStartPar
|
||
4
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item {} \begin{quote}\begin{description}
|
||
\item[{Goal}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Motivation
|
||
|
||
\item[{Question}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Does the team come up with good ideas?
|
||
|
||
\item[{Metric}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Effectiveness of sprint retrospective
|
||
|
||
\item[{Evaluation}] \leavevmode\begin{quote}\begin{description}
|
||
\item[{1}] \leavevmode
|
||
\sphinxAtStartPar
|
||
doesn\textquotesingle{}t express opinions during retrospective
|
||
|
||
\item[{5}] \leavevmode
|
||
\sphinxAtStartPar
|
||
feels the retrospective fundamental to express opinions
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item[{Chiara}] \leavevmode
|
||
\sphinxAtStartPar
|
||
4
|
||
|
||
\item[{Giorgio}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Giovanni}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Stefano P.}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Lorenzo}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Stefano G.}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Flavia}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item {} \begin{quote}\begin{description}
|
||
\item[{Goal}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Problem Solving
|
||
|
||
\item[{Question}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Do team members behave well when facing a problem?
|
||
|
||
\item[{Metric}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Level of the technical debt at the end of the game
|
||
|
||
\item[{Evaluation}] \leavevmode
|
||
\sphinxAtStartPar
|
||
On the game board, if the debt pawn is on the lowest stage,the evaluation is 5, for every higher stage it decreases by 1
|
||
|
||
\item[{Chiara}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Giorgio}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Giovanni}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Stefano P.}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Lorenzo}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Stefano G.}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Flavia}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item {} \begin{quote}\begin{description}
|
||
\item[{Goal}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Problem Solving
|
||
|
||
\item[{Question}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Does team organize their tasks properly?
|
||
|
||
\item[{Metric}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Average of tasks left at the end of each sprint
|
||
|
||
\item[{Evaluation}] \leavevmode\begin{quote}\begin{description}
|
||
\item[{1}] \leavevmode
|
||
\sphinxAtStartPar
|
||
21+ average tasks left
|
||
|
||
\item[{2}] \leavevmode
|
||
\sphinxAtStartPar
|
||
16\sphinxhyphen{}20 average tasks left
|
||
|
||
\item[{3}] \leavevmode
|
||
\sphinxAtStartPar
|
||
11\sphinxhyphen{}15 average tasks left
|
||
|
||
\item[{4}] \leavevmode
|
||
\sphinxAtStartPar
|
||
6\sphinxhyphen{}10 average tasks left
|
||
|
||
\item[{5}] \leavevmode
|
||
\sphinxAtStartPar
|
||
0\sphinxhyphen{}5 average tasks left
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item[{Chiara}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Giorgio}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Giovanni}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Stefano P.}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\item[{Lorenzo}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item {} \begin{quote}\begin{description}
|
||
\item[{Goal}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Problem Solving
|
||
|
||
\item[{Question}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Does PO plan efficiently the Sprint Backlog?
|
||
|
||
\item[{Metric}] \leavevmode
|
||
\sphinxAtStartPar
|
||
Average of tasks left at the end of each sprint
|
||
|
||
\item[{Evaluation}] \leavevmode\begin{quote}\begin{description}
|
||
\item[{1}] \leavevmode
|
||
\sphinxAtStartPar
|
||
21+ average tasks left
|
||
|
||
\item[{2}] \leavevmode
|
||
\sphinxAtStartPar
|
||
16\sphinxhyphen{}20 average tasks left
|
||
|
||
\item[{3}] \leavevmode
|
||
\sphinxAtStartPar
|
||
11\sphinxhyphen{}15 average tasks left
|
||
|
||
\item[{4}] \leavevmode
|
||
\sphinxAtStartPar
|
||
6\sphinxhyphen{}10 average tasks left
|
||
|
||
\item[{5}] \leavevmode
|
||
\sphinxAtStartPar
|
||
0\sphinxhyphen{}5 average tasks left
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\item[{Stefano G.}] \leavevmode
|
||
\sphinxAtStartPar
|
||
5
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\end{enumerate}
|
||
|
||
|
||
\subsection{Sprint 1: 19 Apr \sphinxhyphen{} 02 Mag}
|
||
\label{\detokenize{development/sprint1/index:sprint-1-19-apr-02-mag}}\label{\detokenize{development/sprint1/index::doc}}
|
||
|
||
\subsubsection{Consegna}
|
||
\label{\detokenize{development/sprint1/index:consegna}}
|
||
\sphinxAtStartPar
|
||
La seguente documentazione è stata fornita dal cliente durante questo Sprint:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxcode{\sphinxupquote{1\sphinxhyphen{}sprint\sphinxhyphen{}requirements.pdf}}
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\subsubsection{Goal}
|
||
\label{\detokenize{development/sprint1/index:goal}}
|
||
\sphinxAtStartPar
|
||
Il \sphinxstylestrong{goal} per questo Sprint è stato costruire una codebase facilmente mantenibile e modulare, che potesse accomodare
|
||
grossi cambiamenti nei sottomoduli senza impattare gli altri:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Dal lato \sphinxstylestrong{backend}: l\textquotesingle{}obiettivo è stato predisporre la struttura del database e creare le API calls
|
||
per il login degli utenti e la creazione dei repository
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Dal lato \sphinxstylestrong{testing}: creare un piccolo framework per il testing automatizzato del backend
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Dal lato \sphinxstylestrong{frontend}: creare la struttura con le componenti importate da Figma e implementare le schermate principali
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\paragraph{Backlog}
|
||
\label{\detokenize{development/sprint1/index:backlog}}
|
||
\noindent\sphinxincludegraphics[width=400\sphinxpxdimen]{{1-backlog}.png}
|
||
|
||
|
||
\paragraph{Task completati}
|
||
\label{\detokenize{development/sprint1/index:task-completati}}
|
||
\noindent\sphinxincludegraphics[width=400\sphinxpxdimen]{{1-tasks}.png}
|
||
|
||
|
||
\subsubsection{Definition of Ready}
|
||
\label{\detokenize{development/sprint1/index:definition-of-ready}}
|
||
\sphinxAtStartPar
|
||
Il team ha definito lo stato di Ready di una User Story in base ai seguenti criteri:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
La User Story è stata compresa ed accettata da tutti i membri
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
I tester hanno confermato la possibilità di poterla testare
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Il Product Owner ha la visione necessaria per definirne la priorità
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Il Team è in grado di stimarla
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
La User Story è indipendente o dipendente da altre a priorità maggiore
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\subsubsection{Definition of Done}
|
||
\label{\detokenize{development/sprint1/index:definition-of-done}}
|
||
\sphinxAtStartPar
|
||
La definizione di Done è stata concordata da tutto il team con il Product Owner, ed è stata così definita:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Sviluppo completo della funzionalità richiesta
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Definizione e superamento dei test
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Bozza della documentazione della funzionalità
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Merge dei sorgenti nel branch \sphinxcode{\sphinxupquote{main}} di GitLab
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\subsubsection{Statistiche}
|
||
\label{\detokenize{development/sprint1/index:statistiche}}
|
||
|
||
\paragraph{Burndown chart}
|
||
\label{\detokenize{development/sprint1/index:burndown-chart}}
|
||
\sphinxAtStartPar
|
||
Questa è la burndown chart relativa allo Sprint 1:
|
||
|
||
\noindent\sphinxincludegraphics{{1-burndown}.png}
|
||
|
||
|
||
\paragraph{Gitinspector}
|
||
\label{\detokenize{development/sprint1/index:gitinspector}}
|
||
\sphinxAtStartPar
|
||
Questa statistica è stata generata dal prof. Marcello Missiroli con
|
||
\sphinxhref{https://github.com/ejwa/gitinspector}{Gitinspector} al termine dello Sprint.
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxcode{\sphinxupquote{1\sphinxhyphen{}stats.html}}
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\subsubsection{Sprint Retrospective}
|
||
\label{\detokenize{development/sprint1/index:sprint-retrospective}}
|
||
\sphinxAtStartPar
|
||
La Sprint Retrospective è disponibile al seguente link:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxcode{\sphinxupquote{1\sphinxhyphen{}retrospective.pdf}}
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\subsubsection{Sprint Review}
|
||
\label{\detokenize{development/sprint1/index:sprint-review}}
|
||
\sphinxAtStartPar
|
||
Il video di Sprint Review è disponibile al seguente link:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxurl{https://drive.google.com/drive/folders/1dsis\_cGCRnVgZAkZjEVIZKt4NndkycaF}
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\subsubsection{Valutazione sul debito tecnico}
|
||
\label{\detokenize{development/sprint1/index:valutazione-sul-debito-tecnico}}
|
||
\sphinxAtStartPar
|
||
Durante questo sprint è stata prodotta dallo Scrum Master la seguente valutazione sul debito tecnico:
|
||
\begin{quote}
|
||
|
||
\sphinxAtStartPar
|
||
La valutazione del debito tecnico effettuata da SonarQube è relativa principalmente al backend,
|
||
poiché l’analisi del progetto sarebbe stata troppo dispendiosa a causa dell’elevato numero di file presente nella
|
||
cartella \sphinxcode{\sphinxupquote{/frontend}}.
|
||
|
||
\sphinxAtStartPar
|
||
Per quanto riguarda il backend invece il debito tecnico riscontrato è minore del 5\% come si può verificare dal
|
||
grado A attestato da SonarQube.
|
||
|
||
\sphinxAtStartPar
|
||
Un punto chiave nell’implementazione ha permesso al team di diminuire il debito tecnico, questo è avvenuto grazie
|
||
all’adozione del modello architetturale REST che ha migliorato esponenzialmente il tempo di risposta delle
|
||
richieste e la leggibilità del codice.
|
||
|
||
\begin{flushright}
|
||
---Flavia Cocca, Scrum Master
|
||
\end{flushright}
|
||
\end{quote}
|
||
|
||
|
||
\subsubsection{Valutazione sulle User Stories}
|
||
\label{\detokenize{development/sprint1/index:valutazione-sulle-user-stories}}
|
||
\sphinxAtStartPar
|
||
Durante questo sprint è stata prodotta dal Product Owner la seguente valutazione sulle User Stories:
|
||
\begin{quote}
|
||
|
||
\sphinxAtStartPar
|
||
Durante questo sprint non sono state ristimate le US in quanto non sono emerse al termine dello Sprint 0
|
||
valutazioni che lo rendessero necessario, di conseguenza non sono state neanche rivalutate le priorità.
|
||
|
||
\sphinxAtStartPar
|
||
Come Product Owner ho individuato come criterio di accettazione l\textquotesingle{}esito positivo dei test, anche per il fatto che
|
||
i test sono presenti in ogni US.
|
||
|
||
\sphinxAtStartPar
|
||
Durante lo sviluppo di questo primo sprint sono ovviamente emerse delle issue che sono state tracciate su Taiga.
|
||
Una di queste, la \#101 "L\textquotesingle{}API non è interamente REST" ha portato ad un refactoring di una parte del codice del
|
||
backend, del frontend e naturalmente anche delle procedure di test, che erano già state abbozzate.
|
||
La modifica comunque si è rilevata essere necessaria per rispondere appieno alle struttura tipica dei metodi REST.
|
||
|
||
\sphinxAtStartPar
|
||
Altre issue sono state inserite ma possono essere sistemate nello sprint successivo in quanto non influiscono sul
|
||
funzionamento atteso in questo primo sprint.
|
||
|
||
\sphinxAtStartPar
|
||
Un leggero ritardo sullo sviluppo del frontend non consente di chiudere alcune US, che verranno chiuse e
|
||
testate nel prossimo Sprint.
|
||
|
||
\begin{flushright}
|
||
---Stefano Goldoni, Product Owner
|
||
\end{flushright}
|
||
\end{quote}
|
||
|
||
|
||
\subsubsection{Registro attività}
|
||
\label{\detokenize{development/sprint1/index:registro-attivita}}
|
||
|
||
\paragraph{Riunioni collettive}
|
||
\label{\detokenize{development/sprint1/index:riunioni-collettive}}
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\centering
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Ora
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
2h
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}01
|
||
&
|
||
\sphinxAtStartPar
|
||
15:30
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
backlog grooming session
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
|
||
\paragraph{Attività individuali}
|
||
\label{\detokenize{development/sprint1/index:attivita-individuali}}
|
||
\begin{sphinxadmonition}{hint}{Suggerimento:}
|
||
\sphinxAtStartPar
|
||
Per vedere più in dettaglio il lavoro di sviluppo effettuato da ogni membro del gruppo, si suggerisce di
|
||
visualizzare il log di Git:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{\PYGZdl{} }git log
|
||
\end{sphinxVerbatim}
|
||
\end{sphinxadmonition}
|
||
|
||
|
||
\subparagraph{Stefano Goldoni}
|
||
\label{\detokenize{development/sprint1/index:stefano-goldoni}}
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\centering
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
23h 30m
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}20
|
||
&
|
||
\sphinxAtStartPar
|
||
30m
|
||
&
|
||
\sphinxAtStartPar
|
||
analisi test
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}20
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 30m
|
||
&
|
||
\sphinxAtStartPar
|
||
scrittura test cases
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}26
|
||
&
|
||
\sphinxAtStartPar
|
||
30m
|
||
&
|
||
\sphinxAtStartPar
|
||
predisposizione progetto in locale per il test
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}26
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
metodi di test login e creazione utente
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}28
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
metodi ti test
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}29
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
metodi di test
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}30
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
metodi di test backend
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}01
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
test frontend
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}01
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
test backend in pair programming
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}02
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}02
|
||
&
|
||
\sphinxAtStartPar
|
||
2h 30m
|
||
&
|
||
\sphinxAtStartPar
|
||
test backend
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
|
||
\subparagraph{Flavia Cocca}
|
||
\label{\detokenize{development/sprint1/index:flavia-cocca}}
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\centering
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
8h
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}27
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
modifica mockup UI
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}28
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Organizzazione Sprint retrospective
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}30
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
modifica mockup UI
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}01
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
Riunione con il team per Sprint review e Sprint retrospective
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}02
|
||
&
|
||
\sphinxAtStartPar
|
||
3h
|
||
&
|
||
\sphinxAtStartPar
|
||
Stesura documenti Sprint 1 (debito tecnico e relazione Sprint retrospective), realizzazione video Sprint1 review
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
|
||
\subparagraph{Chiara Calzolari}
|
||
\label{\detokenize{development/sprint1/index:chiara-calzolari}}
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\centering
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
6h 30m
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}26
|
||
&
|
||
\sphinxAtStartPar
|
||
3h
|
||
&
|
||
\sphinxAtStartPar
|
||
Configurazione ambiente di sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}27
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
modifica mockup UI (adeguamento al JS)
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}29
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
modifica mockup UI (Manage users)
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}01
|
||
&
|
||
\sphinxAtStartPar
|
||
30m
|
||
&
|
||
\sphinxAtStartPar
|
||
Ultimi ritocchi al mockup UI
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
|
||
\subparagraph{Stefano Pigozzi}
|
||
\label{\detokenize{development/sprint1/index:stefano-pigozzi}}
|
||
|
||
\begin{savenotes}\sphinxatlongtablestart\begin{longtable}[c]{|l|l|l|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
29h
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\endfirsthead
|
||
|
||
\multicolumn{3}{c}%
|
||
{\makebox[0pt]{\sphinxtablecontinued{\tablename\ \thetable{} \textendash{} continua dalla pagina precedente}}}\\
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
29h
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\endhead
|
||
|
||
\hline
|
||
\multicolumn{3}{r}{\makebox[0pt][r]{\sphinxtablecontinued{continues on next page}}}\\
|
||
\endfoot
|
||
|
||
\endlastfoot
|
||
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}19
|
||
&
|
||
\sphinxAtStartPar
|
||
18m
|
||
&
|
||
\sphinxAtStartPar
|
||
Configurazione IntelliJ IDEA
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}19
|
||
&
|
||
\sphinxAtStartPar
|
||
10m
|
||
&
|
||
\sphinxAtStartPar
|
||
Configurazione IntelliJ IDEA
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}20
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 26m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}21
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 3m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}21
|
||
&
|
||
\sphinxAtStartPar
|
||
3m
|
||
&
|
||
\sphinxAtStartPar
|
||
Configurazione IntelliJ IDEA
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}21
|
||
&
|
||
\sphinxAtStartPar
|
||
58m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}21
|
||
&
|
||
\sphinxAtStartPar
|
||
13m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}21
|
||
&
|
||
\sphinxAtStartPar
|
||
7m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}21
|
||
&
|
||
\sphinxAtStartPar
|
||
6m
|
||
&
|
||
\sphinxAtStartPar
|
||
Project management
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}21
|
||
&
|
||
\sphinxAtStartPar
|
||
15m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}21
|
||
&
|
||
\sphinxAtStartPar
|
||
32m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}21
|
||
&
|
||
\sphinxAtStartPar
|
||
10m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}22
|
||
&
|
||
\sphinxAtStartPar
|
||
5m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}22
|
||
&
|
||
\sphinxAtStartPar
|
||
16m
|
||
&
|
||
\sphinxAtStartPar
|
||
Presentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}22
|
||
&
|
||
\sphinxAtStartPar
|
||
36m
|
||
&
|
||
\sphinxAtStartPar
|
||
Riunione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}22
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 23m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}23
|
||
&
|
||
\sphinxAtStartPar
|
||
18m
|
||
&
|
||
\sphinxAtStartPar
|
||
Studio
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}23
|
||
&
|
||
\sphinxAtStartPar
|
||
42m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}23
|
||
&
|
||
\sphinxAtStartPar
|
||
10m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}23
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 9m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}23
|
||
&
|
||
\sphinxAtStartPar
|
||
3m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}24
|
||
&
|
||
\sphinxAtStartPar
|
||
19m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}24
|
||
&
|
||
\sphinxAtStartPar
|
||
19m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}25
|
||
&
|
||
\sphinxAtStartPar
|
||
2h 59m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}25
|
||
&
|
||
\sphinxAtStartPar
|
||
10m
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}26
|
||
&
|
||
\sphinxAtStartPar
|
||
13m
|
||
&
|
||
\sphinxAtStartPar
|
||
Configurazione SonarQube
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}26
|
||
&
|
||
\sphinxAtStartPar
|
||
12m
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}26
|
||
&
|
||
\sphinxAtStartPar
|
||
30m
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}26
|
||
&
|
||
\sphinxAtStartPar
|
||
4m
|
||
&
|
||
\sphinxAtStartPar
|
||
Riunione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}26
|
||
&
|
||
\sphinxAtStartPar
|
||
2h 58m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}26
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 4m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}26
|
||
&
|
||
\sphinxAtStartPar
|
||
56m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}26
|
||
&
|
||
\sphinxAtStartPar
|
||
6m
|
||
&
|
||
\sphinxAtStartPar
|
||
Project management
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}27
|
||
&
|
||
\sphinxAtStartPar
|
||
7m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}27
|
||
&
|
||
\sphinxAtStartPar
|
||
15m
|
||
&
|
||
\sphinxAtStartPar
|
||
Configurazione Taiga
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}27
|
||
&
|
||
\sphinxAtStartPar
|
||
29m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}27
|
||
&
|
||
\sphinxAtStartPar
|
||
35m
|
||
&
|
||
\sphinxAtStartPar
|
||
Collaborazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}28
|
||
&
|
||
\sphinxAtStartPar
|
||
34m
|
||
&
|
||
\sphinxAtStartPar
|
||
Collaborazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}29
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 42m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}29
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 26m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}29
|
||
&
|
||
\sphinxAtStartPar
|
||
48m
|
||
&
|
||
\sphinxAtStartPar
|
||
Project management
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}30
|
||
&
|
||
\sphinxAtStartPar
|
||
56m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}30
|
||
&
|
||
\sphinxAtStartPar
|
||
46m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}01
|
||
&
|
||
\sphinxAtStartPar
|
||
12m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}02
|
||
&
|
||
\sphinxAtStartPar
|
||
14m
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}02
|
||
&
|
||
\sphinxAtStartPar
|
||
28m
|
||
&
|
||
\sphinxAtStartPar
|
||
Bugfixing
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}02
|
||
&
|
||
\sphinxAtStartPar
|
||
15m
|
||
&
|
||
\sphinxAtStartPar
|
||
Collaborazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}02
|
||
&
|
||
\sphinxAtStartPar
|
||
3m
|
||
&
|
||
\sphinxAtStartPar
|
||
Bugfixing
|
||
\\
|
||
\hline
|
||
\end{longtable}\sphinxatlongtableend\end{savenotes}
|
||
|
||
|
||
\subparagraph{Giovanni Anniballi}
|
||
\label{\detokenize{development/sprint1/index:giovanni-anniballi}}
|
||
\sphinxAtStartPar
|
||
Per il lavoro di testing è stata utilizzata anche la tecnica del Pair Programming, grazie ad un plugin dell\textquotesingle{}IDE utilizzato.
|
||
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\centering
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
16h 30m
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}22
|
||
&
|
||
\sphinxAtStartPar
|
||
30m
|
||
&
|
||
\sphinxAtStartPar
|
||
Riunione con il team
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}23
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Studio struttura del backend
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}24
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 30m
|
||
&
|
||
\sphinxAtStartPar
|
||
Studio del backend, volto a capire il funzionamento delle varie API
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}26
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
Testing login e retrieval dei dati inerenti a tutti gli utenti registrati
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}27
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Testing creazione user
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}28
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
Test cancellazione utente e ritorno dei dati inerenti a quell’utente
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}29
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 30m
|
||
&
|
||
\sphinxAtStartPar
|
||
Test modica utenti e creazione della prima repository
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}30
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
Testing ritorno di tutte le repository di proprietà dell’utente loggato, ritorno delle info inerenti alla repository specificata
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}01
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
Riunione con il team per Sprint review e Sprint retrospective
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}01
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Testing modifica ed eliminazione di una repository (nome, stato)
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}02
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
Testing del frontend tramite UI, controllo generale dei test già effettuati.
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
|
||
\subparagraph{Giorgio Minoccari}
|
||
\label{\detokenize{development/sprint1/index:giorgio-minoccari}}
|
||
\sphinxAtStartPar
|
||
Durante lo Sprint ho principalmente svolto sviluppo e test riguardo alla API di twitter, in modo da poter effettuare chiamate efficenti e non venire limitati dal sito riguardo alle richieste effettuate.
|
||
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\centering
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
10h
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}21
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Primi test riguardo autenticazione Oauth per API twitter
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}23
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 30m
|
||
&
|
||
\sphinxAtStartPar
|
||
Autenticazione funzionante
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}24
|
||
&
|
||
\sphinxAtStartPar
|
||
30m
|
||
&
|
||
\sphinxAtStartPar
|
||
Test su ricerche generali con parole chiave
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}26
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Test su ricerche geolocalizzate
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}27
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Definizione di entita\textquotesingle{} di esempio nei database per provare funzioni legate ad esse
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}28
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
Definizione di funzioni per l\textquotesingle{}aggregazione di condizioni di diverso tipo per la ricerca di tweet tramite API
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}29
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Refactor codice scritto fino a quel momento, eliminazione di dati inutili
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}01
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Implementazioni di analisi su termini e hashtag restituiti dall\textquotesingle{}API
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}02
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Test di chiamata alle funzioni di ricerca a partire da repository con condizioni complesse aggregate
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
|
||
\subparagraph{Lorenzo Balugani}
|
||
\label{\detokenize{development/sprint1/index:lorenzo-balugani}}
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\centering
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
13h 30m
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}21
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
Implementazione Base di Dati
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}22
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
Login, creazione utenti
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}25
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Rimozione utenti, CORS, Creazione repo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}25
|
||
&
|
||
\sphinxAtStartPar
|
||
3h
|
||
&
|
||
\sphinxAtStartPar
|
||
Altre funzioni API
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}26
|
||
&
|
||
\sphinxAtStartPar
|
||
30m
|
||
&
|
||
\sphinxAtStartPar
|
||
Standardizzazione output json
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}26
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}27
|
||
&
|
||
\sphinxAtStartPar
|
||
30m
|
||
&
|
||
\sphinxAtStartPar
|
||
Aggiunto supporto al modulo explorer, fix
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}28
|
||
&
|
||
\sphinxAtStartPar
|
||
30m
|
||
&
|
||
\sphinxAtStartPar
|
||
Bugfixing
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}29
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Gestione migliorata errori
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}04\sphinxhyphen{}29
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Refactoring
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}02
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Bugfixing
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
|
||
\subsection{Sprint 2: 03 Mag \sphinxhyphen{} 16 Mag}
|
||
\label{\detokenize{development/sprint2/index:sprint-2-03-mag-16-mag}}\label{\detokenize{development/sprint2/index::doc}}
|
||
|
||
\subsubsection{Consegna}
|
||
\label{\detokenize{development/sprint2/index:consegna}}
|
||
\sphinxAtStartPar
|
||
La seguente documentazione è stata fornita dal cliente durante questo sprint:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxcode{\sphinxupquote{2\sphinxhyphen{}sprint\sphinxhyphen{}requirements.pdf}}
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\subsubsection{Goal}
|
||
\label{\detokenize{development/sprint2/index:goal}}
|
||
\sphinxAtStartPar
|
||
Il \sphinxstylestrong{goal} del secondo Sprint è stato la creazione, cancellazione e modifica dei repository, ovvero permettere
|
||
agli utenti di creare repository partendo da una ricerca che rispetta determinate condizioni.
|
||
|
||
|
||
\paragraph{Backlog}
|
||
\label{\detokenize{development/sprint2/index:backlog}}
|
||
\noindent\sphinxincludegraphics[width=400\sphinxpxdimen]{{2-backlog}.png}
|
||
|
||
|
||
\paragraph{Task completati}
|
||
\label{\detokenize{development/sprint2/index:task-completati}}
|
||
\noindent\sphinxincludegraphics[width=400\sphinxpxdimen]{{2-tasks}.png}
|
||
|
||
|
||
\subsubsection{Definition of Ready}
|
||
\label{\detokenize{development/sprint2/index:definition-of-ready}}
|
||
\sphinxAtStartPar
|
||
Il team ha definito lo stato di Ready di una User Story in base ai seguenti criteri:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
La User Story è stata compresa ed accettata da tutti i membri
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
I tester hanno confermato la possibilità di poterla testare
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Il Product Owner ha la visione necessaria per definirne la priorità
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Il Team è in grado di stimarla
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
La User Story è indipendente o dipendente da altre a priorità maggiore
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\subsubsection{Definition of Done}
|
||
\label{\detokenize{development/sprint2/index:definition-of-done}}
|
||
\sphinxAtStartPar
|
||
La definizione di Done è stata concordata da tutto il team con il Product Owner, ed è stata così definita:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Sviluppo completo della funzionalità richiesta
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Definizione e superamento dei test
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Bozza della documentazione della funzionalità
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Merge dei sorgenti nel branch \sphinxcode{\sphinxupquote{main}} di GitLab
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\subsubsection{Statistiche}
|
||
\label{\detokenize{development/sprint2/index:statistiche}}
|
||
|
||
\paragraph{Burndown chart}
|
||
\label{\detokenize{development/sprint2/index:burndown-chart}}
|
||
\sphinxAtStartPar
|
||
Questa è la burndown chart relativa allo Sprint 2:
|
||
|
||
\noindent\sphinxincludegraphics{{2-burndown}.png}
|
||
|
||
|
||
\paragraph{Gitinspector}
|
||
\label{\detokenize{development/sprint2/index:gitinspector}}
|
||
\sphinxAtStartPar
|
||
Questa statistica è stata generata dal prof. Marcello Missiroli con
|
||
\sphinxhref{https://github.com/ejwa/gitinspector}{Gitinspector} al termine dello Sprint.
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxcode{\sphinxupquote{2\sphinxhyphen{}stats.html}} (relativa al codice)
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxcode{\sphinxupquote{2D\sphinxhyphen{}stats.html}} (relativa a parte della documentazione)
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\subsubsection{Sprint Retrospective}
|
||
\label{\detokenize{development/sprint2/index:sprint-retrospective}}
|
||
\sphinxAtStartPar
|
||
La Sprint Retrospective è disponibile al seguente link:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxcode{\sphinxupquote{2\sphinxhyphen{}retrospective.pdf}}
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\subsubsection{Sprint Review}
|
||
\label{\detokenize{development/sprint2/index:sprint-review}}
|
||
\sphinxAtStartPar
|
||
Il video di Sprint Review è disponibile al seguente link:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxurl{https://drive.google.com/file/d/1x1kub-bpVJrwmGrn5LLU8ecqcbxFaoKg/view}
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\subsubsection{Registro attività}
|
||
\label{\detokenize{development/sprint2/index:registro-attivita}}
|
||
|
||
\paragraph{Riunioni collettive}
|
||
\label{\detokenize{development/sprint2/index:riunioni-collettive}}
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\centering
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Ora
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
1h
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}14
|
||
&
|
||
\sphinxAtStartPar
|
||
10:00
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Sprint Retrospective session
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
|
||
\paragraph{Attività individuali}
|
||
\label{\detokenize{development/sprint2/index:attivita-individuali}}
|
||
\begin{sphinxadmonition}{hint}{Suggerimento:}
|
||
\sphinxAtStartPar
|
||
Per vedere più in dettaglio il lavoro di sviluppo effettuato da ogni membro del gruppo, si suggerisce di
|
||
visualizzare il log di Git:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{\PYGZdl{} }git log
|
||
\end{sphinxVerbatim}
|
||
\end{sphinxadmonition}
|
||
|
||
|
||
\subparagraph{Stefano Goldoni}
|
||
\label{\detokenize{development/sprint2/index:stefano-goldoni}}
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\centering
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
16h
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}04
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
preparazione backlog sprint 2
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}10
|
||
&
|
||
\sphinxAtStartPar
|
||
3h
|
||
&
|
||
\sphinxAtStartPar
|
||
test sprint 2
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}11
|
||
&
|
||
\sphinxAtStartPar
|
||
2h 30m
|
||
&
|
||
\sphinxAtStartPar
|
||
test utenti e repository
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}12
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
test repository
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}13
|
||
&
|
||
\sphinxAtStartPar
|
||
2h 30m
|
||
&
|
||
\sphinxAtStartPar
|
||
test repository
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}14
|
||
&
|
||
\sphinxAtStartPar
|
||
3h
|
||
&
|
||
\sphinxAtStartPar
|
||
test conditions
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}15
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
test conditions + sonarqube scanner
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
|
||
\subparagraph{Flavia Cocca}
|
||
\label{\detokenize{development/sprint2/index:flavia-cocca}}
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\centering
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
16h
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}04
|
||
&
|
||
\sphinxAtStartPar
|
||
30m
|
||
&
|
||
\sphinxAtStartPar
|
||
Riunione per con PO, nuovo backlog
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}05
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Riunione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}07
|
||
&
|
||
\sphinxAtStartPar
|
||
3h
|
||
&
|
||
\sphinxAtStartPar
|
||
Refactoring test
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}08
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
Refactoring test
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}09
|
||
&
|
||
\sphinxAtStartPar
|
||
3h
|
||
&
|
||
\sphinxAtStartPar
|
||
Nuovi test
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}11
|
||
&
|
||
\sphinxAtStartPar
|
||
2h 30m
|
||
&
|
||
\sphinxAtStartPar
|
||
Discussione test e risoluzione di alcune issue
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}13
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Bugfixing
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}14
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Sprint Retrospective
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}15
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
|
||
\subparagraph{Stefano Pigozzi}
|
||
\label{\detokenize{development/sprint2/index:stefano-pigozzi}}
|
||
|
||
\begin{savenotes}\sphinxatlongtablestart\begin{longtable}[c]{|l|l|l|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
27h 30m
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\endfirsthead
|
||
|
||
\multicolumn{3}{c}%
|
||
{\makebox[0pt]{\sphinxtablecontinued{\tablename\ \thetable{} \textendash{} continua dalla pagina precedente}}}\\
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
27h 30m
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\endhead
|
||
|
||
\hline
|
||
\multicolumn{3}{r}{\makebox[0pt][r]{\sphinxtablecontinued{continues on next page}}}\\
|
||
\endfoot
|
||
|
||
\endlastfoot
|
||
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}05
|
||
&
|
||
\sphinxAtStartPar
|
||
40m
|
||
&
|
||
\sphinxAtStartPar
|
||
Riunione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}05
|
||
&
|
||
\sphinxAtStartPar
|
||
21m
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}06
|
||
&
|
||
\sphinxAtStartPar
|
||
9m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}06
|
||
&
|
||
\sphinxAtStartPar
|
||
3m
|
||
&
|
||
\sphinxAtStartPar
|
||
Configurazione Taiga
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}06
|
||
&
|
||
\sphinxAtStartPar
|
||
11m
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}06
|
||
&
|
||
\sphinxAtStartPar
|
||
9m
|
||
&
|
||
\sphinxAtStartPar
|
||
Riunione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}06
|
||
&
|
||
\sphinxAtStartPar
|
||
20m
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}06
|
||
&
|
||
\sphinxAtStartPar
|
||
39m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}06
|
||
&
|
||
\sphinxAtStartPar
|
||
15m
|
||
&
|
||
\sphinxAtStartPar
|
||
Riunione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}06
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 4m
|
||
&
|
||
\sphinxAtStartPar
|
||
Riunione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}07
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 47m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}07
|
||
&
|
||
\sphinxAtStartPar
|
||
17m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}07
|
||
&
|
||
\sphinxAtStartPar
|
||
34m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}07
|
||
&
|
||
\sphinxAtStartPar
|
||
34m
|
||
&
|
||
\sphinxAtStartPar
|
||
Project management
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}07
|
||
&
|
||
\sphinxAtStartPar
|
||
2h 44m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}08
|
||
&
|
||
\sphinxAtStartPar
|
||
13m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}08
|
||
&
|
||
\sphinxAtStartPar
|
||
29m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}08
|
||
&
|
||
\sphinxAtStartPar
|
||
18m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}10
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 00m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}10
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 15m
|
||
&
|
||
\sphinxAtStartPar
|
||
Configurazione GitLab
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}10
|
||
&
|
||
\sphinxAtStartPar
|
||
25m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}10
|
||
&
|
||
\sphinxAtStartPar
|
||
39m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}11
|
||
&
|
||
\sphinxAtStartPar
|
||
25m
|
||
&
|
||
\sphinxAtStartPar
|
||
Bugfixing
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}11
|
||
&
|
||
\sphinxAtStartPar
|
||
3h 57m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}11
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 45m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}12
|
||
&
|
||
\sphinxAtStartPar
|
||
10m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}12
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 51m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}13
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 00m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}13
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 20m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}14
|
||
&
|
||
\sphinxAtStartPar
|
||
20m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}14
|
||
&
|
||
\sphinxAtStartPar
|
||
3h 17m
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}15
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 8m
|
||
&
|
||
\sphinxAtStartPar
|
||
Porting dipendenze
|
||
\\
|
||
\hline
|
||
\end{longtable}\sphinxatlongtableend\end{savenotes}
|
||
|
||
|
||
\subparagraph{Chiara Calzolari}
|
||
\label{\detokenize{development/sprint2/index:chiara-calzolari}}
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\centering
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
11h
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}03
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Testing frontend e segnalazione issues
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}03
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Modifica mockup UI (Dashboard repository)
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}04
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Modifica mockup UI (adeguamento al JS)
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}10
|
||
&
|
||
\sphinxAtStartPar
|
||
3h
|
||
&
|
||
\sphinxAtStartPar
|
||
Configurazione ambiente di sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}11
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 30m
|
||
&
|
||
\sphinxAtStartPar
|
||
Modifica UI (traduzione in Italiano)
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}12
|
||
&
|
||
\sphinxAtStartPar
|
||
30m
|
||
&
|
||
\sphinxAtStartPar
|
||
Modifica UI (traduzione in Italiano)
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}14
|
||
&
|
||
\sphinxAtStartPar
|
||
3h
|
||
&
|
||
\sphinxAtStartPar
|
||
Realizzazione video demo sprint 2
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
|
||
\subparagraph{Giovanni Anniballi}
|
||
\label{\detokenize{development/sprint2/index:giovanni-anniballi}}
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\centering
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
17h
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}04
|
||
&
|
||
\sphinxAtStartPar
|
||
30m
|
||
&
|
||
\sphinxAtStartPar
|
||
Incontro con SM e PO per valutare quali US andranno nello sprint2
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}05
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Incontro con il team
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}07
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
Refactoring tests sugli user e primi utilizzi delle fixtures
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}08
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
Completamento test users
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}10
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Ulteriori approcci (fallimentari) al coverage di SonarQube
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}11
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
Discussione sui test e correzioni bug
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}12
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Test repository
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}13
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Generazione coverage pytest e setting sonarqube (riuscito!)
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}14
|
||
&
|
||
\sphinxAtStartPar
|
||
4h
|
||
&
|
||
\sphinxAtStartPar
|
||
Sprint review e retrospettiva, conclusione test repository
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}15
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
generazione nuovo coverage e fix a sonarqube
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}15
|
||
&
|
||
\sphinxAtStartPar
|
||
30m
|
||
&
|
||
\sphinxAtStartPar
|
||
fix piccoli bug segnalati da sonarqube
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
|
||
\subparagraph{Giorgio Minoccari}
|
||
\label{\detokenize{development/sprint2/index:giorgio-minoccari}}
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\centering
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
10h
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}04
|
||
&
|
||
\sphinxAtStartPar
|
||
30m
|
||
&
|
||
\sphinxAtStartPar
|
||
Aggiunta della condizione sull\textquotesingle{}utente
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}10
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
Tentativo di inserimento delle query con place\_id
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}11
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 30m
|
||
&
|
||
\sphinxAtStartPar
|
||
Test per passare alla versione 2.0 delle API
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}12
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Ritorno alla versione 1.1 perche\textquotesingle{} lascia disponibili le query sulla geolocalizzazione gratuitamente
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}14
|
||
&
|
||
\sphinxAtStartPar
|
||
5h
|
||
&
|
||
\sphinxAtStartPar
|
||
Integrazione e inserimento dei tweet catturati nel database
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
|
||
\subparagraph{Lorenzo Balugani}
|
||
\label{\detokenize{development/sprint2/index:lorenzo-balugani}}
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\centering
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
19h
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}05
|
||
&
|
||
\sphinxAtStartPar
|
||
4h
|
||
&
|
||
\sphinxAtStartPar
|
||
Setup di swagger, documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}06
|
||
&
|
||
\sphinxAtStartPar
|
||
4h
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione, sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}07
|
||
&
|
||
\sphinxAtStartPar
|
||
3h
|
||
&
|
||
\sphinxAtStartPar
|
||
Alert, documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}10
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
Alert Put, bugfixing
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}11
|
||
&
|
||
\sphinxAtStartPar
|
||
3h
|
||
&
|
||
\sphinxAtStartPar
|
||
Bugfixing, sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}12
|
||
&
|
||
\sphinxAtStartPar
|
||
3h
|
||
&
|
||
\sphinxAtStartPar
|
||
Risolti issue pubblicati su Taiga
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}13
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Bugfixing
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}14
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Bugfixing
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
|
||
\subsection{Sprint 3: 17 Mag \sphinxhyphen{} 30 Mag}
|
||
\label{\detokenize{development/sprint3/index:sprint-3-17-mag-30-mag}}\label{\detokenize{development/sprint3/index::doc}}
|
||
|
||
\subsubsection{Consegna}
|
||
\label{\detokenize{development/sprint3/index:consegna}}
|
||
\sphinxAtStartPar
|
||
La seguente documentazione è stata fornita dal cliente durante questo sprint:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxcode{\sphinxupquote{3\sphinxhyphen{}sprint\sphinxhyphen{}requirements.pdf}}
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxcode{\sphinxupquote{3\sphinxhyphen{}report.pdf}}
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\subsubsection{Goal}
|
||
\label{\detokenize{development/sprint3/index:goal}}
|
||
\sphinxAtStartPar
|
||
Il \sphinxstylestrong{goal} del terzo Sprint è stato far funzionare il crawler, gli alert e completare tutte i task rimanenti.
|
||
|
||
|
||
\paragraph{Backlog}
|
||
\label{\detokenize{development/sprint3/index:backlog}}
|
||
\noindent\sphinxincludegraphics[width=400\sphinxpxdimen]{{3-backlog}.png}
|
||
|
||
|
||
\paragraph{Task completati}
|
||
\label{\detokenize{development/sprint3/index:task-completati}}
|
||
\noindent\sphinxincludegraphics[width=400\sphinxpxdimen]{{3-tasks}.png}
|
||
|
||
|
||
\subsubsection{Grooming session}
|
||
\label{\detokenize{development/sprint3/index:grooming-session}}
|
||
\sphinxAtStartPar
|
||
Sono state definite le nuove \sphinxstylestrong{User Stories} da inserire nel progetto sulla base delle nuove richieste
|
||
pervenute dal cliente:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
analisi statistica più dettagliata
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
postare su Twitter
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
traduzione dell\textquotesingle{}interfaccia in inglese.
|
||
|
||
\end{itemize}
|
||
|
||
\sphinxAtStartPar
|
||
La richiesta relativa alle \sphinxstyleemphasis{ricerche basate sulla geolocalizzazione}, come già comunicato al cliente, non è stata
|
||
completata interamente per motivi tecnici legati a limitazioni sulle features delle \sphinxstylestrong{API 1.1 di Twitter} che non
|
||
permettono di eseguire query su campi di posizione geografica.
|
||
|
||
\sphinxAtStartPar
|
||
Le nuove User Stories sono state valutate tramite Scrum Poker, durante il quale ogni membro ha espresso
|
||
la sua valutazione.
|
||
|
||
\sphinxAtStartPar
|
||
Tutte le nuove richieste sono state accettate dal Product Owner e sono pronte ad essere inserite nello sprint di
|
||
sviluppo in partenza.
|
||
|
||
|
||
\subsubsection{Definition of Ready}
|
||
\label{\detokenize{development/sprint3/index:definition-of-ready}}
|
||
\sphinxAtStartPar
|
||
Il team ha definito lo stato di Ready di una User Story in base ai seguenti criteri:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
La User Story è stata compresa ed accettata da tutti i membri
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
I tester hanno confermato la possibilità di poterla testare
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Il Product Owner ha la visione necessaria per definirne la priorità
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Il Team è in grado di stimarla
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
La User Story è indipendente o dipendente da altre a priorità maggiore
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\subsubsection{Definition of Done}
|
||
\label{\detokenize{development/sprint3/index:definition-of-done}}
|
||
\sphinxAtStartPar
|
||
La definizione di Done è stata concordata da tutto il team con il Product Owner, ed è stata così definita:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Sviluppo completo della funzionalità richiesta
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Definizione e superamento dei test
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Bozza della documentazione della funzionalità
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Merge dei sorgenti nel branch \sphinxcode{\sphinxupquote{main}} di GitLab
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\subsubsection{Statistiche}
|
||
\label{\detokenize{development/sprint3/index:statistiche}}
|
||
|
||
\paragraph{Gitinspector}
|
||
\label{\detokenize{development/sprint3/index:gitinspector}}
|
||
\begin{sphinxadmonition}{note}{Nota:}
|
||
\sphinxAtStartPar
|
||
La statistica dello sprint 3 non è ancora stata generata dal prof. Marcello Missiroli.
|
||
\end{sphinxadmonition}
|
||
|
||
|
||
\paragraph{Schermata finale di SonarQube}
|
||
\label{\detokenize{development/sprint3/index:schermata-finale-di-sonarqube}}
|
||
\sphinxAtStartPar
|
||
La schermata finale di SonarQube è visibile a questo link:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxcode{\sphinxupquote{3\sphinxhyphen{}sonarqube.pdf}}
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\subsubsection{Final Retrospective}
|
||
\label{\detokenize{development/sprint3/index:final-retrospective}}\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxcode{\sphinxupquote{Retrospettiva finale}}
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\subsubsection{Demo}
|
||
\label{\detokenize{development/sprint3/index:demo}}
|
||
\sphinxAtStartPar
|
||
Il video di Demo è disponibile al seguente link:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxurl{https://drive.google.com/file/d/15o70Ffe51CNj8LTKHC9dGiqRVnbv9UpZ/view}
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\subsubsection{Registro attività}
|
||
\label{\detokenize{development/sprint3/index:registro-attivita}}
|
||
|
||
\paragraph{Riunioni collettive}
|
||
\label{\detokenize{development/sprint3/index:riunioni-collettive}}
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\centering
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
3.5h
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
17/05
|
||
&
|
||
\sphinxAtStartPar
|
||
2.0 h
|
||
&
|
||
\sphinxAtStartPar
|
||
Grooming session nuove richieste cliente
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
29/05
|
||
&
|
||
\sphinxAtStartPar
|
||
1.5 h
|
||
&
|
||
\sphinxAtStartPar
|
||
sprint retrospective
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
|
||
\paragraph{Attività individuali}
|
||
\label{\detokenize{development/sprint3/index:attivita-individuali}}
|
||
|
||
\subparagraph{Stefano Goldoni}
|
||
\label{\detokenize{development/sprint3/index:stefano-goldoni}}
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\centering
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
14h
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
21/05
|
||
&
|
||
\sphinxAtStartPar
|
||
2.0h
|
||
&
|
||
\sphinxAtStartPar
|
||
Analisi strumenti di test frontend
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
24/05
|
||
&
|
||
\sphinxAtStartPar
|
||
3.0h
|
||
&
|
||
\sphinxAtStartPar
|
||
Inizio test alerts
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
25/05
|
||
&
|
||
\sphinxAtStartPar
|
||
2.5h
|
||
&
|
||
\sphinxAtStartPar
|
||
Test alerts
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
26/05
|
||
&
|
||
\sphinxAtStartPar
|
||
3.0h
|
||
&
|
||
\sphinxAtStartPar
|
||
Test
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
28/05
|
||
&
|
||
\sphinxAtStartPar
|
||
3.5h
|
||
&
|
||
\sphinxAtStartPar
|
||
Test, refactory in base a Sonarqube
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
|
||
\subparagraph{Flavia Cocca}
|
||
\label{\detokenize{development/sprint3/index:flavia-cocca}}
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\centering
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
14h
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
20/05
|
||
&
|
||
\sphinxAtStartPar
|
||
2.0h
|
||
&
|
||
\sphinxAtStartPar
|
||
Trasferimento documenti in nuova documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
21/05
|
||
&
|
||
\sphinxAtStartPar
|
||
1.0h
|
||
&
|
||
\sphinxAtStartPar
|
||
Studio Sphinx
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
23/05
|
||
&
|
||
\sphinxAtStartPar
|
||
1.0h
|
||
&
|
||
\sphinxAtStartPar
|
||
Studio sintassi rST
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
24/05
|
||
&
|
||
\sphinxAtStartPar
|
||
1.0h
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
25/05
|
||
&
|
||
\sphinxAtStartPar
|
||
1.0h
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
26/05
|
||
&
|
||
\sphinxAtStartPar
|
||
1.0h
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
27/05
|
||
&
|
||
\sphinxAtStartPar
|
||
1.0h
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
28/05
|
||
&
|
||
\sphinxAtStartPar
|
||
3.0h
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
29/05
|
||
&
|
||
\sphinxAtStartPar
|
||
3.0h
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
|
||
\subparagraph{Chiara Calzolari}
|
||
\label{\detokenize{development/sprint3/index:chiara-calzolari}}
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\centering
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
17h 30m
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
17/05
|
||
&
|
||
\sphinxAtStartPar
|
||
3.0h
|
||
&
|
||
\sphinxAtStartPar
|
||
Traduzione UI
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
17/05
|
||
&
|
||
\sphinxAtStartPar
|
||
1.5h
|
||
&
|
||
\sphinxAtStartPar
|
||
Traduzione UI
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
18/05
|
||
&
|
||
\sphinxAtStartPar
|
||
1.5h
|
||
&
|
||
\sphinxAtStartPar
|
||
Traduzione UI
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
20/05
|
||
&
|
||
\sphinxAtStartPar
|
||
1.0h
|
||
&
|
||
\sphinxAtStartPar
|
||
Traduzione UI
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
22/05
|
||
&
|
||
\sphinxAtStartPar
|
||
1.0h
|
||
&
|
||
\sphinxAtStartPar
|
||
Traduzione UI
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
24/05
|
||
&
|
||
\sphinxAtStartPar
|
||
2.0h
|
||
&
|
||
\sphinxAtStartPar
|
||
Traduzione UI
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
24/05
|
||
&
|
||
\sphinxAtStartPar
|
||
1.0h
|
||
&
|
||
\sphinxAtStartPar
|
||
Traduzione UI
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
25/05
|
||
&
|
||
\sphinxAtStartPar
|
||
1.0h
|
||
&
|
||
\sphinxAtStartPar
|
||
Traduzione UI
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
27/05
|
||
&
|
||
\sphinxAtStartPar
|
||
0.5h
|
||
&
|
||
\sphinxAtStartPar
|
||
Traduzione UI
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
28/05
|
||
&
|
||
\sphinxAtStartPar
|
||
2.0h
|
||
&
|
||
\sphinxAtStartPar
|
||
Configurazione ambiente di sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
28/05
|
||
&
|
||
\sphinxAtStartPar
|
||
3.0h
|
||
&
|
||
\sphinxAtStartPar
|
||
Creazione video\sphinxhyphen{}demo
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
|
||
\subparagraph{Stefano Pigozzi}
|
||
\label{\detokenize{development/sprint3/index:stefano-pigozzi}}
|
||
|
||
\begin{savenotes}\sphinxatlongtablestart\begin{longtable}[c]{|l|l|l|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
50h 41m
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\endfirsthead
|
||
|
||
\multicolumn{3}{c}%
|
||
{\makebox[0pt]{\sphinxtablecontinued{\tablename\ \thetable{} \textendash{} continua dalla pagina precedente}}}\\
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
50h 41m
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\endhead
|
||
|
||
\hline
|
||
\multicolumn{3}{r}{\makebox[0pt][r]{\sphinxtablecontinued{continues on next page}}}\\
|
||
\endfoot
|
||
|
||
\endlastfoot
|
||
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}17
|
||
&
|
||
\sphinxAtStartPar
|
||
25m
|
||
&
|
||
\sphinxAtStartPar
|
||
Riunione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}17
|
||
&
|
||
\sphinxAtStartPar
|
||
19m
|
||
&
|
||
\sphinxAtStartPar
|
||
Riunione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}17
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}17
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 7m
|
||
&
|
||
\sphinxAtStartPar
|
||
Bugfixing
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}17
|
||
&
|
||
\sphinxAtStartPar
|
||
7m
|
||
&
|
||
\sphinxAtStartPar
|
||
User Interface
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}18
|
||
&
|
||
\sphinxAtStartPar
|
||
55m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}18
|
||
&
|
||
\sphinxAtStartPar
|
||
14m
|
||
&
|
||
\sphinxAtStartPar
|
||
Configurazione GitLab
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}18
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 52m
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}18
|
||
&
|
||
\sphinxAtStartPar
|
||
22m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}18
|
||
&
|
||
\sphinxAtStartPar
|
||
21m
|
||
&
|
||
\sphinxAtStartPar
|
||
User Interface
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}18
|
||
&
|
||
\sphinxAtStartPar
|
||
34m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}18
|
||
&
|
||
\sphinxAtStartPar
|
||
40m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}18
|
||
&
|
||
\sphinxAtStartPar
|
||
29m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}18
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 8m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}19
|
||
&
|
||
\sphinxAtStartPar
|
||
36m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}19
|
||
&
|
||
\sphinxAtStartPar
|
||
2h 40m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}19
|
||
&
|
||
\sphinxAtStartPar
|
||
44m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}19
|
||
&
|
||
\sphinxAtStartPar
|
||
19m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}20
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 26m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}20
|
||
&
|
||
\sphinxAtStartPar
|
||
2h 59m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}20
|
||
&
|
||
\sphinxAtStartPar
|
||
53m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}20
|
||
&
|
||
\sphinxAtStartPar
|
||
18m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}21
|
||
&
|
||
\sphinxAtStartPar
|
||
4h 32m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}22
|
||
&
|
||
\sphinxAtStartPar
|
||
2h 28m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}23
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 12m
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}23
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 2m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}23
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 13m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}23
|
||
&
|
||
\sphinxAtStartPar
|
||
16m
|
||
&
|
||
\sphinxAtStartPar
|
||
Code review
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}24
|
||
&
|
||
\sphinxAtStartPar
|
||
10m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}24
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 46m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}24
|
||
&
|
||
\sphinxAtStartPar
|
||
5m
|
||
&
|
||
\sphinxAtStartPar
|
||
Project Management
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}24
|
||
&
|
||
\sphinxAtStartPar
|
||
3m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}24
|
||
&
|
||
\sphinxAtStartPar
|
||
54m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}25
|
||
&
|
||
\sphinxAtStartPar
|
||
2h 13m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}25
|
||
&
|
||
\sphinxAtStartPar
|
||
2h 12m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}27
|
||
&
|
||
\sphinxAtStartPar
|
||
19m
|
||
&
|
||
\sphinxAtStartPar
|
||
Sviluppo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}27
|
||
&
|
||
\sphinxAtStartPar
|
||
34m
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}27
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 46m
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}27
|
||
&
|
||
\sphinxAtStartPar
|
||
33m
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}27
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 34m
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}28
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}28
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 30m
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}28
|
||
&
|
||
\sphinxAtStartPar
|
||
7m
|
||
&
|
||
\sphinxAtStartPar
|
||
Code review
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}29
|
||
&
|
||
\sphinxAtStartPar
|
||
1h 38m
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}29
|
||
&
|
||
\sphinxAtStartPar
|
||
2h 39m
|
||
&
|
||
\sphinxAtStartPar
|
||
Documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
2021\sphinxhyphen{}05\sphinxhyphen{}29
|
||
&
|
||
\sphinxAtStartPar
|
||
27m
|
||
&
|
||
\sphinxAtStartPar
|
||
Deployment
|
||
\\
|
||
\hline
|
||
\end{longtable}\sphinxatlongtableend\end{savenotes}
|
||
|
||
|
||
\subparagraph{Giovanni Anniballi}
|
||
\label{\detokenize{development/sprint3/index:giovanni-anniballi}}
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\centering
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
18h
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
17/05
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Ricontrollo generale codice, fix piccoli typo
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
18/05
|
||
&
|
||
\sphinxAtStartPar
|
||
1h
|
||
&
|
||
\sphinxAtStartPar
|
||
Aggiornati files di log e refactoring documentazione
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
21/05
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
Studio Jest, valutazione di test sul frontend
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
24/05
|
||
&
|
||
\sphinxAtStartPar
|
||
3h
|
||
&
|
||
\sphinxAtStartPar
|
||
Primi test sulle autorizzazioni
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
26/05
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
Fix ai test
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
27/05
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
Test autorizzazioni completati, fix
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
28/05
|
||
&
|
||
\sphinxAtStartPar
|
||
4h
|
||
&
|
||
\sphinxAtStartPar
|
||
Fix test malfunzionanti, refactoring test
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
29/05
|
||
&
|
||
\sphinxAtStartPar
|
||
3h
|
||
&
|
||
\sphinxAtStartPar
|
||
Aggiornamento documentazione, aggiunti ulteriori test seguendo i suggerimenti di SQ
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
|
||
\subparagraph{Giorgio Minoccari}
|
||
\label{\detokenize{development/sprint3/index:giorgio-minoccari}}
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\centering
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
22h
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
17/05
|
||
&
|
||
\sphinxAtStartPar
|
||
4h
|
||
&
|
||
\sphinxAtStartPar
|
||
Aggiunta associazione tra singoli tweet e condizioni che ne hanno scaturito il download
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
18/05
|
||
&
|
||
\sphinxAtStartPar
|
||
3h
|
||
&
|
||
\sphinxAtStartPar
|
||
Aggiunto salvataggio delle immagini presenti nei tweet e data in cui sono stati postati
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
20/05
|
||
&
|
||
\sphinxAtStartPar
|
||
3h
|
||
&
|
||
\sphinxAtStartPar
|
||
Ristrutturazione del crawler in uno script lanciabile separatamente su tutte le repository
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
21/05
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
Aggiunta degli alert e delle azioni che vengono svolte quando scatta il trigger
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
24/05
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
Bugfixing
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
25/05
|
||
&
|
||
\sphinxAtStartPar
|
||
4h
|
||
&
|
||
\sphinxAtStartPar
|
||
Refactoring di sicurezza
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
27/05
|
||
&
|
||
\sphinxAtStartPar
|
||
3h
|
||
&
|
||
\sphinxAtStartPar
|
||
Refactor struttura per poter associare le condizioni degli allarmi ai singoli tweet
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
28/05
|
||
&
|
||
\sphinxAtStartPar
|
||
6h
|
||
&
|
||
\sphinxAtStartPar
|
||
Completamento generale e bugfixing
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
|
||
\subparagraph{Lorenzo Balugani}
|
||
\label{\detokenize{development/sprint3/index:lorenzo-balugani}}
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\centering
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Data
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Durata
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Attività
|
||
\\
|
||
\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
22h
|
||
&\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Totale
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
17/05
|
||
&
|
||
\sphinxAtStartPar
|
||
4h
|
||
&
|
||
\sphinxAtStartPar
|
||
Bugfixing, supporto alla localizzazione degli errori
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
18/05
|
||
&
|
||
\sphinxAtStartPar
|
||
3h
|
||
&
|
||
\sphinxAtStartPar
|
||
Bugfixing
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
20/05
|
||
&
|
||
\sphinxAtStartPar
|
||
3h
|
||
&
|
||
\sphinxAtStartPar
|
||
API autorizzazioni, refactoring
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
21/05
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
Gestione tweet, rappresentazione tweet
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
24/05
|
||
&
|
||
\sphinxAtStartPar
|
||
2h
|
||
&
|
||
\sphinxAtStartPar
|
||
Bugfixing
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
25/05
|
||
&
|
||
\sphinxAtStartPar
|
||
4h
|
||
&
|
||
\sphinxAtStartPar
|
||
Docs, refactoring
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
27/05
|
||
&
|
||
\sphinxAtStartPar
|
||
3h
|
||
&
|
||
\sphinxAtStartPar
|
||
Bugfixing
|
||
\\
|
||
\hline
|
||
\sphinxAtStartPar
|
||
28/05
|
||
&
|
||
\sphinxAtStartPar
|
||
6h
|
||
&
|
||
\sphinxAtStartPar
|
||
Bugfixing
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
|
||
\section{Burndown chart complessiva}
|
||
\label{\detokenize{development/process:burndown-chart-complessiva}}
|
||
\noindent\sphinxincludegraphics{{Burndown4}.png}
|
||
|
||
|
||
\chapter{Artefatti}
|
||
\label{\detokenize{development/artifacts:artefatti}}\label{\detokenize{development/artifacts::doc}}
|
||
\sphinxAtStartPar
|
||
Gran parte degli artefatti sono stati elencati nei singoli sprint.
|
||
|
||
\sphinxAtStartPar
|
||
Vengono di seguito elencati alcuni artefatti che non sono stati precedentemente elencati:
|
||
|
||
|
||
\section{Diagrammi UML}
|
||
\label{\detokenize{development/artifacts:diagrammi-uml}}
|
||
\sphinxAtStartPar
|
||
Per la realizzazione dei diagrammi UML, utili nelle fasi iniziali di progettazione di N.E.S.T., è stato utilizzato
|
||
DrawIO (oggi diagrams.net). Si allega il file con il progetto UML.
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxcode{\sphinxupquote{Diagrammi UML}}
|
||
|
||
\end{itemize}
|
||
|
||
\sphinxAtStartPar
|
||
Dopo aver scaricato il file, recarsi su \sphinxurl{https://app.diagrams.net/} e tramite il menù \sphinxcode{\sphinxupquote{File \(\rightarrow\) Open from \(\rightarrow\) Device...}}
|
||
caricare il file appena scaricato.
|
||
|
||
|
||
\section{Demo}
|
||
\label{\detokenize{development/artifacts:demo}}
|
||
|
||
\subsection{Video}
|
||
\label{\detokenize{development/artifacts:video}}
|
||
\sphinxAtStartPar
|
||
Il video di demo è disponibile al seguente URL:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxurl{https://drive.google.com/file/d/15o70Ffe51CNj8LTKHC9dGiqRVnbv9UpZ/view}
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\subsection{Interattiva}
|
||
\label{\detokenize{development/artifacts:interattiva}}
|
||
\sphinxAtStartPar
|
||
Una demo interattiva è disponibile ai seguenti URL:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxurl{https://api.nest.steffo.eu/} (backend)
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxurl{https://prod.nest.steffo.eu/} (frontend pre\sphinxhyphen{}popolato)
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxurl{https://docs.nest.steffo.eu/} (documentazione e relazione)
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\chapter{Conclusioni}
|
||
\label{\detokenize{development/conclusions:conclusioni}}\label{\detokenize{development/conclusions::doc}}\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Il team dimostra di aver \sphinxstylestrong{imparato numerose nuove nozioni}, acquisendo dimestichezza con vari linguaggi e software,
|
||
come:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Python
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
NodeJS
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
reStructuredText
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
IntelliJ IDEA
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Taiga
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Git
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
GitLab
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
SystemD
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxstyleemphasis{Twitter}
|
||
|
||
\end{itemize}
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Il team ritiene che l\textquotesingle{}\sphinxstylestrong{organizzazione e collaborazione} tra tutti i membri del gruppo è stata eccellente:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Ciascuno aveva un suo compito e non sono sorti conflitti.
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
L\textquotesingle{}organizzazione strutturata ci ha permesso di procedere a ritmo sostenuto dall\textquotesingle{}inizio alla fine,
|
||
realizzando un prodotto efficace e modulare.
|
||
|
||
\end{itemize}
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Parte del team ritiene che \sphinxstylestrong{alcune attività}, come le varie riunioni, \sphinxstylestrong{sarebbero state più edificanti e veloci} se
|
||
fossero state effettuate in presenza, purtroppo la pandemia e la distanza non lo hanno reso possibile.
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Parte del team ritiene invece che il \sphinxstylestrong{lavoro a distanza} ci ha permesso di adottare metodi migliori di
|
||
\sphinxstylestrong{comunicazione asincrona}, permettendo ai membri di lavorare indipendentemente uno dall\textquotesingle{}altro in base alle proprie
|
||
disponibilità di tempo.
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\chapter{Suggerimenti relativi al corso}
|
||
\label{\detokenize{development/suggestions:suggerimenti-relativi-al-corso}}\label{\detokenize{development/suggestions::doc}}\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Il team concorda sull\textquotesingle{}\sphinxstylestrong{utilità del progetto} poiché permette di utilizzare le nozioni viste a lezione nella pratica,
|
||
facendo quindi esperienza sulle varie metodologie da adottare e le varie problematiche in cui si può incorrere.
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Il team concorda nel dire che \sphinxstylestrong{il progetto è eccessivamente corposo}:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Tecnicamente a 6 CFU dovrebbero corrispondere circa 125 ore di lavoro, mentre questo progetto ne ha richieste molte di più.
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Suggeriamo quindi di \sphinxstylestrong{alleggerire significativamente il carico di lavoro}, e renderlo più proporzionato ai
|
||
crediti previsti.
|
||
|
||
\end{itemize}
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Il team suggerisce di lasciare agli studenti \sphinxstylestrong{scelta completamente libera sugli strumenti da adottare}, in quanto si
|
||
sono verificati svariati problemi con quelli previsti dal corso:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Le istanze di Taiga, GitLab e SonarQube ospitate dall\textquotesingle{}Università si sono dimostrate inaffidabili,
|
||
portando il team a dover ospitare le proprie e quindi a perderci una fetta significativa del proprio tempo.
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
CAS è supportato solo su Debian, e lo script di installazione esegue operazioni con effetti collaterali sul
|
||
Docker del sistema host.
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
L\textquotesingle{}installazione di Taiga tramite Docker Compose ha richiesto 5 ore, in quanto una race condition presente nel
|
||
file \sphinxcode{\sphinxupquote{docker\sphinxhyphen{}compose.yml}} impediva al software di raggiungere il database.
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
L\textquotesingle{}installazione e manutenzione di GitLab ha richiesto 5 ore, e richiede competenze di amministrazione di sistema
|
||
avanzate che sono oltre il livello dello studente medio del terzo anno di Informatica.
|
||
|
||
\end{itemize}
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Taiga, per quanto funzionale, è un po\textquotesingle{} acerbo a livello di User Experience, il che ha portato a svariati grattacapi
|
||
durante il suo utilizzo da parte del team.
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Inoltre, è in parte superfluo: quasi tutte le funzionalità che fornisce sono già implementate sui sistemi di issues
|
||
di GitHub e GitLab.
|
||
|
||
\end{itemize}
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Utilizzare GitLab invece che il più popolare GitHub impedisce di sfruttare la licenza gratuita o \sphinxhref{https://education.github.com/pack}{universitaria} di
|
||
numerosi strumenti di Continuous Integration e Deployment, quali \sphinxhref{https://github.com/features/actions}{GitHub Actions}, \sphinxhref{https://readthedocs.org/}{Read the Docs} e \sphinxhref{https://render.com/}{Render}.
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
SonarQube, per quanto semplice da installare, è molto complesso da utilizzare: il team ha necessitato di parecchie
|
||
ore per capirne il funzionamento.
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
È forse anche superfluo: tutte le issues che ha segnalato erano già state segnalate in precedenza dal sistema di
|
||
linting di IntelliJ IDEA Ultimate.
|
||
|
||
\end{itemize}
|
||
|
||
\end{itemize}
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Il team concorda nel dire che sarebbe molto utile la \sphinxstylestrong{partecipazione diretta del prof} durante le prime fasi di
|
||
progetto, all\textquotesingle{}inizio del lavoro, per instradare il gruppo nella giusta direzione ed evitare l\textquotesingle{}effetto "salto nel buio":
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Sarebbe stato piacevole avere una spiegazione più dettagliata delle regole dello Scrumble, e soprattutto sul come
|
||
giocarlo a distanza.
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
Sarebbero state utili lezioni più specifica sui tool da utilizzare, come SonarQube.
|
||
|
||
\end{itemize}
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\chapter{Meta\sphinxhyphen{}documentazione}
|
||
\label{\detokenize{code/meta/index:meta-documentazione}}\label{\detokenize{code/meta/index::doc}}
|
||
\sphinxAtStartPar
|
||
La documentazione è scritta in \sphinxhref{https://docutils.sourceforge.io/rst.html}{reStructuredText}, ed è generata con
|
||
\sphinxhref{https://www.sphinx-doc.org/en/master/}{Sphinx}.
|
||
|
||
\sphinxAtStartPar
|
||
I dati relativi alla documentazione si trovano nella directory standard \sphinxcode{\sphinxupquote{/docs}};
|
||
in particolare, le sorgenti reStructuredText si trovano in \sphinxcode{\sphinxupquote{/docs/source}},
|
||
mentre l\textquotesingle{}ultima versione compilata si trova in \sphinxcode{\sphinxupquote{/docs/build}}.
|
||
|
||
\sphinxAtStartPar
|
||
Questa struttura permetterebbe l\textquotesingle{}integrazione con lo strumento di "Continuous Documentation"
|
||
\sphinxhref{https://readthedocs.com/}{ReadTheDocs}, qualora il progetto fosse ospitato su GitHub o disponessimo di una licenza
|
||
almeno \sphinxhref{https://readthedocs.com/pricing/}{Basic}.
|
||
|
||
|
||
\section{Compilazione con IntelliJ IDEA}
|
||
\label{\detokenize{code/meta/index:compilazione-con-intellij-idea}}
|
||
\sphinxAtStartPar
|
||
È possibile compilare manualmente la documentazione con IntelliJ IDEA.
|
||
|
||
\sphinxAtStartPar
|
||
Su sistemi Linux, è disponibile la Run Configuration \sphinxcode{\sphinxupquote{Docs}}, che compilerà la versione HTML della documentazione se
|
||
eseguita.
|
||
|
||
\noindent\sphinxincludegraphics{{docsRunConfig}.png}
|
||
|
||
|
||
\section{Compilazione con GNU Make}
|
||
\label{\detokenize{code/meta/index:compilazione-con-gnu-make}}
|
||
\sphinxAtStartPar
|
||
È possibile compilare manualmente la documentazione con GNU Make.
|
||
|
||
\sphinxAtStartPar
|
||
Come prima cosa, è necessario {\hyperref[\detokenize{guide/installation:installare-le-dipendenze-python}]{\sphinxcrossref{\DUrole{std,std-ref}{Installare le dipendenze Python}}}} del progetto:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{user:g2\PYGZhy{}progetto\PYGZdl{} }poetry install
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
Poi, si entri all\textquotesingle{}interno del virtual environment:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{user:g2\PYGZhy{}progetto\PYGZdl{} }poetry shell
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
Una volta all\textquotesingle{}interno del venv, si entri nella cartella della documentazione:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{user:g2\PYGZhy{}progetto\PYGZdl{} }\PYG{n+nb}{cd} docs
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
Infine, si esegua il target \sphinxcode{\sphinxupquote{html}} del Makefile:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{user:g2\PYGZhy{}progetto/docs\PYGZdl{} }make html
|
||
\end{sphinxVerbatim}
|
||
|
||
|
||
\section{Compilazione con Windows Powershell}
|
||
\label{\detokenize{code/meta/index:compilazione-con-windows-powershell}}
|
||
\sphinxAtStartPar
|
||
È possibile compilare manualmente la documentazione con Windows Powershell.
|
||
|
||
\sphinxAtStartPar
|
||
Come prima cosa, è necessario {\hyperref[\detokenize{guide/installation:installare-le-dipendenze-python}]{\sphinxcrossref{\DUrole{std,std-ref}{Installare le dipendenze Python}}}} del progetto:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{g2\PYGZhy{}progetto\PYGZgt{}} poetry install
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
Poi, si entri all\textquotesingle{}interno del virtual environment:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{g2\PYGZhy{}progetto\PYGZgt{}} poetry shell
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
Una volta all\textquotesingle{}interno del venv, si entri nella cartella della documentazione:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{g2\PYGZhy{}progetto\PYGZgt{}} \PYG{k}{cd} docs
|
||
\end{sphinxVerbatim}
|
||
|
||
\sphinxAtStartPar
|
||
Infine, si esegua lo script \sphinxcode{\sphinxupquote{make.bat}} con il parametro \sphinxcode{\sphinxupquote{html}}:
|
||
|
||
\begin{sphinxVerbatim}[commandchars=\\\{\}]
|
||
\PYG{g+gp}{g2\PYGZhy{}progetto/docs\PYGZgt{}} make html
|
||
\end{sphinxVerbatim}
|
||
|
||
|
||
\chapter{Struttura del database}
|
||
\label{\detokenize{code/database/index:struttura-del-database}}\label{\detokenize{code/database/index::doc}}\index{Alert (classe built\sphinxhyphen{}in)@\spxentry{Alert}\spxextra{classe built\sphinxhyphen{}in}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/database/index:Alert}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Alert}}}
|
||
\sphinxAtStartPar
|
||
Un alert è un allarme impostato da un utente che si "attiva" quando un numero di tweet che rispetta certe condizioni
|
||
(poste in and oppure or) supera una certa soglia, indicata dall\textquotesingle{}utente.
|
||
|
||
\sphinxAtStartPar
|
||
Ogni volta che l\textquotesingle{}alert si attiva, viene creata una "notifica", ovvero una entry nella tabella Notifications.
|
||
Questo permette di tenere conto del numero di volte in cui l\textquotesingle{}alert viene triggerato.
|
||
|
||
\sphinxAtStartPar
|
||
Gli alert sono legati al repository di appartenenza, e quando uno di essi viene allertato viene inviata una mail
|
||
all\textquotesingle{}admin e pubblicato un tweet sull\textquotesingle{}account Twitter usato per le analisi.
|
||
|
||
\sphinxAtStartPar
|
||
La tabella alert contiene le seguenti colonne:
|
||
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\raggedright
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Definizioni
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
id (INTEGER, PK)
|
||
&
|
||
\sphinxAtStartPar
|
||
l\textquotesingle{}identificativo dell\textquotesingle{}alert
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
name (VARCHAR, NOT NULL)
|
||
&
|
||
\sphinxAtStartPar
|
||
il nome dell\textquotesingle{}alert
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
limit (INTEGER, NOT NULL)
|
||
&
|
||
\sphinxAtStartPar
|
||
il numero di tweet che innescano l\textquotesingle{}alert
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
window\_size (INTEGER, NOT NULL)
|
||
&
|
||
\sphinxAtStartPar
|
||
numero di ore in cui il limit può venire superato
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
evaluation\_mode (ENUM/SMALLINT, NOT NULL)
|
||
&
|
||
\sphinxAtStartPar
|
||
può essere posto a all\_or oppure all\_not
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
repository\_id (INTEGER, FK, NOT NULL)
|
||
&\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{Authorization (classe built\sphinxhyphen{}in)@\spxentry{Authorization}\spxextra{classe built\sphinxhyphen{}in}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/database/index:Authorization}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Authorization}}}
|
||
\sphinxAtStartPar
|
||
Una autorizzazione è un\textquotesingle{}entità che rappresenta il permesso, concesso dal creatore del repository ad un altro utente,
|
||
di ispezionare il contenuto di un repo e di eseguire analisi su di esso.
|
||
|
||
\sphinxAtStartPar
|
||
La tabella authorization contiene le seguenti colonne:
|
||
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\raggedright
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Definizioni
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
rid (INTEGER, PK, FK)
|
||
&
|
||
\sphinxAtStartPar
|
||
id del repository
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
email (VARCHAR, PK, FK)
|
||
&
|
||
\sphinxAtStartPar
|
||
email dell\textquotesingle{}utente
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{Composed (classe built\sphinxhyphen{}in)@\spxentry{Composed}\spxextra{classe built\sphinxhyphen{}in}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/database/index:Composed}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Composed}}}
|
||
\sphinxAtStartPar
|
||
Composed è una tabella le cui righe indicano l\textquotesingle{}appartenenza di un Tweet ad un certo repository.
|
||
|
||
\sphinxAtStartPar
|
||
La tabella Composed contiene le seguenti colonne:
|
||
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\raggedright
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Definizioni
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
rid (INTEGER, PK, FK)
|
||
&
|
||
\sphinxAtStartPar
|
||
id del repository
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
snowflake (VARCHAR, PK, FK)
|
||
&
|
||
\sphinxAtStartPar
|
||
id del tweet
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{Condition (classe built\sphinxhyphen{}in)@\spxentry{Condition}\spxextra{classe built\sphinxhyphen{}in}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/database/index:Condition}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Condition}}}
|
||
\sphinxAtStartPar
|
||
Una condizione è un elemento che viene usato da repository e alert per cercare e classificare i tweet.
|
||
|
||
\sphinxAtStartPar
|
||
Le condizioni possono essere di diversi tipi:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxstylestrong{hashtag}: valore \sphinxcode{\sphinxupquote{0}}, richiede che il tweet contenga un dato hashtag
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxstylestrong{time}: valore \sphinxcode{\sphinxupquote{2}}, richiede che il tweet sia stato pubblicato prima o dopo una certa data
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxstylestrong{coordinates}: valore \sphinxcode{\sphinxupquote{3}}, richiede che il tweet sia stato pubblicato entro un certo raggio da delle
|
||
coordinate
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxstylestrong{user}: valore \sphinxcode{\sphinxupquote{5}}, richiede che il tweet sia stato pubblicato da un dato utente
|
||
|
||
\end{itemize}
|
||
|
||
\sphinxAtStartPar
|
||
La tabella condition contiene le seguenti colonne:
|
||
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\raggedright
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Definizioni
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
id (INTEGER, PK)
|
||
&
|
||
\sphinxAtStartPar
|
||
id della condition
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
type (ENUM/SMALLINT, NOT NULL)
|
||
&
|
||
\sphinxAtStartPar
|
||
tipo del contenuto
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
content (VARCHAR, NOT NULL)
|
||
&
|
||
\sphinxAtStartPar
|
||
contenuto della condition
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
repository\_id (INTEGER, FK, NOT NULL)
|
||
&\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{Contains (classe built\sphinxhyphen{}in)@\spxentry{Contains}\spxextra{classe built\sphinxhyphen{}in}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/database/index:Contains}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Contains}}}
|
||
\sphinxAtStartPar
|
||
Contains è una tabella le cui righe indicano la presenza di una certa condition rispetto ad un certo tweet.
|
||
|
||
\sphinxAtStartPar
|
||
La tabella contains contiene le seguenti colonne:
|
||
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\raggedright
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Definizioni
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
cid (INTEGER, PK, FK)
|
||
&
|
||
\sphinxAtStartPar
|
||
id della condition
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
snowflake (VARCHAR, PK, FK)
|
||
&
|
||
\sphinxAtStartPar
|
||
id del tweet
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{MadeOf (classe built\sphinxhyphen{}in)@\spxentry{MadeOf}\spxextra{classe built\sphinxhyphen{}in}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/database/index:MadeOf}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{MadeOf}}}
|
||
\sphinxAtStartPar
|
||
MadeOf è una tabella le cui righe indicano il legame tra un alert e una certa condition.
|
||
|
||
\sphinxAtStartPar
|
||
La tabella madeof contiene le seguenti colonne:
|
||
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\raggedright
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Definizioni
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
aid (INTEGER, PK, FK)
|
||
&
|
||
\sphinxAtStartPar
|
||
id dell\textquotesingle{}alert
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
cid (INTEGER, PK, FK)
|
||
&
|
||
\sphinxAtStartPar
|
||
id della condition
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{Notification (classe built\sphinxhyphen{}in)@\spxentry{Notification}\spxextra{classe built\sphinxhyphen{}in}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/database/index:Notification}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Notification}}}
|
||
\sphinxAtStartPar
|
||
Una notification è un\textquotesingle{}entità che consente di tenere traccia del momento in cui un certo alert si è attivato
|
||
per l\textquotesingle{}ultima volta.
|
||
|
||
\sphinxAtStartPar
|
||
La tabella notification contiene le seguenti colonne:
|
||
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\raggedright
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Definizioni
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
id (INTEGER, PK)
|
||
&
|
||
\sphinxAtStartPar
|
||
id della notifica
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
ora (TIMESTAMP, NOT NULL)
|
||
&
|
||
\sphinxAtStartPar
|
||
timestamp di attivazione
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
alert\_id (INTEGER, FK, NOT NULL)
|
||
&\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{Repository (classe built\sphinxhyphen{}in)@\spxentry{Repository}\spxextra{classe built\sphinxhyphen{}in}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/database/index:Repository}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Repository}}}
|
||
\sphinxAtStartPar
|
||
Un repository è un "contenitore" di tweet, a cui sono legati alert, autorizzazioni di lettura e condizioni.
|
||
|
||
\sphinxAtStartPar
|
||
Le condizioni possono essere messe in and oppure or, inoltre un repository può venire archiviato prima divenire
|
||
eliminato. Quando un repository non è archiviato, questo viene riempito di tweet su base oraria, cosa che non
|
||
accade se viene archiviato.
|
||
|
||
\sphinxAtStartPar
|
||
La tabella repository contiene le seguenti colonne:
|
||
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\raggedright
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Definizioni
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
id (INTEGER, PK)
|
||
&
|
||
\sphinxAtStartPar
|
||
id del repository
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
name (VARCHAR, NOT NULL)
|
||
&
|
||
\sphinxAtStartPar
|
||
nome del repository
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
start (TIMESTAMP)
|
||
&
|
||
\sphinxAtStartPar
|
||
timestamp di partenza del repository
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
end (TIMESTAMP)
|
||
&
|
||
\sphinxAtStartPar
|
||
timestamp di chiusura del repository
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
is\_active (BOOLEAN, NOT NULL)
|
||
&
|
||
\sphinxAtStartPar
|
||
flag per segnalare se il repo è aperto o meno
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
evaluation\_mode (ENUM/SMALLINT, NOT NULL)
|
||
&
|
||
\sphinxAtStartPar
|
||
può essere posto a all\_or oppure all\_not
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
owner\_id (VARCHAR, FK, NOT NULL)
|
||
&
|
||
\sphinxAtStartPar
|
||
email del proprietario
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
is\_deleted (BOOLEAN, NOT NULL)
|
||
&
|
||
\sphinxAtStartPar
|
||
flag per segnalare se l\textquotesingle{}oggetto è eliminato o meno
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{Tweet (classe built\sphinxhyphen{}in)@\spxentry{Tweet}\spxextra{classe built\sphinxhyphen{}in}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/database/index:Tweet}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Tweet}}}
|
||
\sphinxAtStartPar
|
||
Un tweet è un\textquotesingle{}entità che viene raccolta dal componente crawler, e quando viene inserita nella base di dati viene
|
||
legata ad un repository e alle condition che contiene. Un tweet contiene informazioni relativamente a chi l\textquotesingle{}ha
|
||
creato, eventuali immagini, il tempo di creazione, il tempo di inserimento nel db e l\textquotesingle{}opzionale posizione legata
|
||
al tweet.
|
||
|
||
\sphinxAtStartPar
|
||
La tabella tweet contiene le seguenti colonne:
|
||
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\raggedright
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Definizioni
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
snowflake (VARCHAR, PK)
|
||
&
|
||
\sphinxAtStartPar
|
||
id univoco del tweet
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
content (VARCHAR)
|
||
&
|
||
\sphinxAtStartPar
|
||
contenuto del tweet
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
location (VARCHAR)
|
||
&
|
||
\sphinxAtStartPar
|
||
stringa contenente informazioni sulla posizione
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
place (VARCHAR)
|
||
&
|
||
\sphinxAtStartPar
|
||
riservato per sviluppi futuri
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
poster (VARCHAR)
|
||
&
|
||
\sphinxAtStartPar
|
||
informazioni sull\textquotesingle{}utente che ha creato il tweet
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
insert\_time (TIMESTAMP, NOT NULL)
|
||
&
|
||
\sphinxAtStartPar
|
||
timestamp dell\textquotesingle{}inserimento del tweet
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
image\_url (VARCHAR)
|
||
&
|
||
\sphinxAtStartPar
|
||
link alle immagini, se presenti
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
post\_time (TIMESTAMP)
|
||
&
|
||
\sphinxAtStartPar
|
||
timestamp relativo all\textquotesingle{}invio del tweet
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{User (classe built\sphinxhyphen{}in)@\spxentry{User}\spxextra{classe built\sphinxhyphen{}in}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/database/index:User}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{User}}}
|
||
\sphinxAtStartPar
|
||
Uno user è l\textquotesingle{}utilizzatore della piattaforma.
|
||
|
||
\sphinxAtStartPar
|
||
E\textquotesingle{} presente di default un utente admin, il quale può creare nuovi utenti.
|
||
|
||
\sphinxAtStartPar
|
||
La tabella user contiene le seguenti colonne:
|
||
|
||
|
||
\begin{savenotes}\sphinxattablestart
|
||
\raggedright
|
||
\begin{tabulary}{\linewidth}[t]{|T|T|}
|
||
\hline
|
||
\sphinxstyletheadfamily &\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
Definizioni
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
email (VARCHAR, PK)
|
||
&
|
||
\sphinxAtStartPar
|
||
email dell\textquotesingle{}utente
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
username (VARCHAR, NOT NULL)
|
||
&
|
||
\sphinxAtStartPar
|
||
username dell\textquotesingle{}utente
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
password (BYTEARRAY, NOT NULL)
|
||
&
|
||
\sphinxAtStartPar
|
||
sale della password, codificata usando l\textquotesingle{}algoritmo bcrypt
|
||
\\
|
||
\hline\sphinxstyletheadfamily
|
||
\sphinxAtStartPar
|
||
isAdmin (BOOLEAN, NOT NULL)
|
||
&
|
||
\sphinxAtStartPar
|
||
true se l\textquotesingle{}utente è admin
|
||
\\
|
||
\hline
|
||
\end{tabulary}
|
||
\par
|
||
\sphinxattableend\end{savenotes}
|
||
|
||
\end{fulllineitems}
|
||
|
||
|
||
|
||
\chapter{\sphinxstyleliteralintitle{\sphinxupquote{nest\_backend}} \sphinxhyphen{} Web API in Python}
|
||
\label{\detokenize{code/backend/index:module-nest_backend}}\label{\detokenize{code/backend/index:nest-backend-web-api-in-python}}\label{\detokenize{code/backend/index::doc}}\index{modulo@\spxentry{modulo}!nest\_backend@\spxentry{nest\_backend}}\index{nest\_backend@\spxentry{nest\_backend}!modulo@\spxentry{modulo}}
|
||
|
||
\section{\sphinxstyleliteralintitle{\sphinxupquote{.gestione}} \sphinxhyphen{} Metodi di utility}
|
||
\label{\detokenize{code/backend/index:module-nest_backend.gestione}}\label{\detokenize{code/backend/index:gestione-metodi-di-utility}}\index{modulo@\spxentry{modulo}!nest\_backend.gestione@\spxentry{nest\_backend.gestione}}\index{nest\_backend.gestione@\spxentry{nest\_backend.gestione}!modulo@\spxentry{modulo}}
|
||
\sphinxAtStartPar
|
||
Gestione adds many fancy thingamajigs to the flask application, such as a login system and such.
|
||
\index{authenticate() (nel modulo nest\_backend.gestione)@\spxentry{authenticate()}\spxextra{nel modulo nest\_backend.gestione}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.gestione.authenticate}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_backend.gestione.}}\sphinxbfcode{\sphinxupquote{authenticate}}}{\emph{\DUrole{n}{username}}, \emph{\DUrole{n}{password}}}{}
|
||
\sphinxAtStartPar
|
||
Authentication method. It checks if the combination of username+password is a valid match. If not, it returns None.
|
||
:param username: the user\textquotesingle{}s email
|
||
:param password: the user\textquotesingle{}s password
|
||
:return: if the credentials are correct, it returns the user. Else, it returns None.
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{identity() (nel modulo nest\_backend.gestione)@\spxentry{identity()}\spxextra{nel modulo nest\_backend.gestione}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.gestione.identity}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_backend.gestione.}}\sphinxbfcode{\sphinxupquote{identity}}}{\emph{\DUrole{n}{payload}}}{}
|
||
\sphinxAtStartPar
|
||
Authentication verification method. It checks if the user is in fact registered on the server.
|
||
It is required by Flask\sphinxhyphen{}JWT, and shouldnt be used alone.
|
||
:param payload: the reqest payload.
|
||
:return: an User or None. It depends whether the user is actually registered on the platform.
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{gen\_password() (nel modulo nest\_backend.gestione)@\spxentry{gen\_password()}\spxextra{nel modulo nest\_backend.gestione}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.gestione.gen_password}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_backend.gestione.}}\sphinxbfcode{\sphinxupquote{gen\_password}}}{\emph{\DUrole{n}{password}}}{}
|
||
\sphinxAtStartPar
|
||
It generates an hashed password.
|
||
:param password: the password that needs to be hashed.
|
||
:return: the password\textquotesingle{}s hash.
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{find\_user() (nel modulo nest\_backend.gestione)@\spxentry{find\_user()}\spxextra{nel modulo nest\_backend.gestione}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.gestione.find_user}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_backend.gestione.}}\sphinxbfcode{\sphinxupquote{find\_user}}}{\emph{\DUrole{n}{email}}}{}
|
||
\end{fulllineitems}
|
||
|
||
\index{admin\_or\_403() (nel modulo nest\_backend.gestione)@\spxentry{admin\_or\_403()}\spxextra{nel modulo nest\_backend.gestione}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.gestione.admin_or_403}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_backend.gestione.}}\sphinxbfcode{\sphinxupquote{admin\_or\_403}}}{\emph{\DUrole{n}{f}}}{}
|
||
\end{fulllineitems}
|
||
|
||
\index{repository\_auth() (nel modulo nest\_backend.gestione)@\spxentry{repository\_auth()}\spxextra{nel modulo nest\_backend.gestione}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.gestione.repository_auth}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_backend.gestione.}}\sphinxbfcode{\sphinxupquote{repository\_auth}}}{\emph{\DUrole{n}{f}}}{}
|
||
\end{fulllineitems}
|
||
|
||
\index{json\_request\_authorizer() (nel modulo nest\_backend.gestione)@\spxentry{json\_request\_authorizer()}\spxextra{nel modulo nest\_backend.gestione}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.gestione.json_request_authorizer}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_backend.gestione.}}\sphinxbfcode{\sphinxupquote{json\_request\_authorizer}}}{\emph{\DUrole{n}{json}}, \emph{\DUrole{n}{serializable}}}{}
|
||
\end{fulllineitems}
|
||
|
||
\index{json\_error() (nel modulo nest\_backend.gestione)@\spxentry{json\_error()}\spxextra{nel modulo nest\_backend.gestione}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.gestione.json_error}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_backend.gestione.}}\sphinxbfcode{\sphinxupquote{json\_error}}}{\emph{\DUrole{n}{msg}}, \emph{\DUrole{n}{code}\DUrole{o}{=}\DUrole{default_value}{\textquotesingle{}errorUnknownError\textquotesingle{}}}}{}
|
||
\sphinxAtStartPar
|
||
Returns an error in json format
|
||
:param code: the code of the error according to the spec.
|
||
:param msg: the error message.
|
||
:return: a json formatted string.
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{json\_success() (nel modulo nest\_backend.gestione)@\spxentry{json\_success()}\spxextra{nel modulo nest\_backend.gestione}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.gestione.json_success}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_backend.gestione.}}\sphinxbfcode{\sphinxupquote{json\_success}}}{\emph{\DUrole{n}{data}}}{}
|
||
\sphinxAtStartPar
|
||
An happy little function. Its happy because the operation was successful.
|
||
:param data: the thing you want to be returned
|
||
:return: a json formatted string
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{error\_handler() (nel modulo nest\_backend.gestione)@\spxentry{error\_handler()}\spxextra{nel modulo nest\_backend.gestione}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.gestione.error_handler}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_backend.gestione.}}\sphinxbfcode{\sphinxupquote{error\_handler}}}{\emph{\DUrole{n}{e}}}{}
|
||
\end{fulllineitems}
|
||
|
||
\index{hashtag\_validator() (nel modulo nest\_backend.gestione)@\spxentry{hashtag\_validator()}\spxextra{nel modulo nest\_backend.gestione}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.gestione.hashtag_validator}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_backend.gestione.}}\sphinxbfcode{\sphinxupquote{hashtag\_validator}}}{\emph{\DUrole{n}{hashtag}}}{}
|
||
\end{fulllineitems}
|
||
|
||
|
||
|
||
\section{\sphinxstyleliteralintitle{\sphinxupquote{.database}} \sphinxhyphen{} Database}
|
||
\label{\detokenize{code/backend/index:module-nest_backend.database}}\label{\detokenize{code/backend/index:database-database}}\index{modulo@\spxentry{modulo}!nest\_backend.database@\spxentry{nest\_backend.database}}\index{nest\_backend.database@\spxentry{nest\_backend.database}!modulo@\spxentry{modulo}}
|
||
\sphinxAtStartPar
|
||
This module imports all the tables and the declarative base
|
||
|
||
|
||
\subsection{\sphinxstyleliteralintitle{\sphinxupquote{.base}} \sphinxhyphen{} Estensione flask}
|
||
\label{\detokenize{code/backend/index:module-nest_backend.database.base}}\label{\detokenize{code/backend/index:base-estensione-flask}}\index{modulo@\spxentry{modulo}!nest\_backend.database.base@\spxentry{nest\_backend.database.base}}\index{nest\_backend.database.base@\spxentry{nest\_backend.database.base}!modulo@\spxentry{modulo}}
|
||
|
||
\subsection{\sphinxstyleliteralintitle{\sphinxupquote{.tables}} \sphinxhyphen{} Tabelle}
|
||
\label{\detokenize{code/backend/index:module-nest_backend.database.tables}}\label{\detokenize{code/backend/index:tables-tabelle}}\index{modulo@\spxentry{modulo}!nest\_backend.database.tables@\spxentry{nest\_backend.database.tables}}\index{nest\_backend.database.tables@\spxentry{nest\_backend.database.tables}!modulo@\spxentry{modulo}}
|
||
\sphinxAtStartPar
|
||
This module contains all database classes.
|
||
\index{Alert (classe in nest\_backend.database.tables)@\spxentry{Alert}\spxextra{classe in nest\_backend.database.tables}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Alert}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{nest\_backend.database.tables.}}\sphinxbfcode{\sphinxupquote{Alert}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}~\begin{quote}
|
||
|
||
\sphinxAtStartPar
|
||
Basi: \sphinxcode{\sphinxupquote{sqlalchemy.orm.decl\_api.Model}}
|
||
\end{quote}
|
||
\index{id (nest\_backend.database.tables.Alert attributo)@\spxentry{id}\spxextra{nest\_backend.database.tables.Alert attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Alert.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{name (nest\_backend.database.tables.Alert attributo)@\spxentry{name}\spxextra{nest\_backend.database.tables.Alert attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Alert.name}}\pysigline{\sphinxbfcode{\sphinxupquote{name}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{limit (nest\_backend.database.tables.Alert attributo)@\spxentry{limit}\spxextra{nest\_backend.database.tables.Alert attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Alert.limit}}\pysigline{\sphinxbfcode{\sphinxupquote{limit}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{window\_size (nest\_backend.database.tables.Alert attributo)@\spxentry{window\_size}\spxextra{nest\_backend.database.tables.Alert attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Alert.window_size}}\pysigline{\sphinxbfcode{\sphinxupquote{window\_size}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{evaluation\_mode (nest\_backend.database.tables.Alert attributo)@\spxentry{evaluation\_mode}\spxextra{nest\_backend.database.tables.Alert attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Alert.evaluation_mode}}\pysigline{\sphinxbfcode{\sphinxupquote{evaluation\_mode}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{repository\_id (nest\_backend.database.tables.Alert attributo)@\spxentry{repository\_id}\spxextra{nest\_backend.database.tables.Alert attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Alert.repository_id}}\pysigline{\sphinxbfcode{\sphinxupquote{repository\_id}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{repository (nest\_backend.database.tables.Alert attributo)@\spxentry{repository}\spxextra{nest\_backend.database.tables.Alert attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Alert.repository}}\pysigline{\sphinxbfcode{\sphinxupquote{repository}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{notifications (nest\_backend.database.tables.Alert attributo)@\spxentry{notifications}\spxextra{nest\_backend.database.tables.Alert attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Alert.notifications}}\pysigline{\sphinxbfcode{\sphinxupquote{notifications}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{conditions (nest\_backend.database.tables.Alert attributo)@\spxentry{conditions}\spxextra{nest\_backend.database.tables.Alert attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Alert.conditions}}\pysigline{\sphinxbfcode{\sphinxupquote{conditions}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{to\_json() (nest\_backend.database.tables.Alert metodo)@\spxentry{to\_json()}\spxextra{nest\_backend.database.tables.Alert metodo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Alert.to_json}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{to\_json}}}{}{}
|
||
\end{fulllineitems}
|
||
|
||
\index{\_\_init\_\_() (nest\_backend.database.tables.Alert metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Alert metodo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Alert.__init__}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{\_\_init\_\_}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}
|
||
\sphinxAtStartPar
|
||
A simple constructor that allows initialization from kwargs.
|
||
|
||
\sphinxAtStartPar
|
||
Sets attributes on the constructed instance using the names and
|
||
values in \sphinxcode{\sphinxupquote{kwargs}}.
|
||
|
||
\sphinxAtStartPar
|
||
Only keys that are present as
|
||
attributes of the instance\textquotesingle{}s class are allowed. These could be,
|
||
for example, any mapped columns or relationships.
|
||
|
||
\end{fulllineitems}
|
||
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{Authorization (classe in nest\_backend.database.tables)@\spxentry{Authorization}\spxextra{classe in nest\_backend.database.tables}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Authorization}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{nest\_backend.database.tables.}}\sphinxbfcode{\sphinxupquote{Authorization}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}~\begin{quote}
|
||
|
||
\sphinxAtStartPar
|
||
Basi: \sphinxcode{\sphinxupquote{sqlalchemy.orm.decl\_api.Model}}
|
||
\end{quote}
|
||
\index{rid (nest\_backend.database.tables.Authorization attributo)@\spxentry{rid}\spxextra{nest\_backend.database.tables.Authorization attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Authorization.rid}}\pysigline{\sphinxbfcode{\sphinxupquote{rid}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{email (nest\_backend.database.tables.Authorization attributo)@\spxentry{email}\spxextra{nest\_backend.database.tables.Authorization attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Authorization.email}}\pysigline{\sphinxbfcode{\sphinxupquote{email}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{repository (nest\_backend.database.tables.Authorization attributo)@\spxentry{repository}\spxextra{nest\_backend.database.tables.Authorization attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Authorization.repository}}\pysigline{\sphinxbfcode{\sphinxupquote{repository}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{user (nest\_backend.database.tables.Authorization attributo)@\spxentry{user}\spxextra{nest\_backend.database.tables.Authorization attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Authorization.user}}\pysigline{\sphinxbfcode{\sphinxupquote{user}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{to\_json() (nest\_backend.database.tables.Authorization metodo)@\spxentry{to\_json()}\spxextra{nest\_backend.database.tables.Authorization metodo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Authorization.to_json}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{to\_json}}}{}{}
|
||
\end{fulllineitems}
|
||
|
||
\index{\_\_init\_\_() (nest\_backend.database.tables.Authorization metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Authorization metodo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Authorization.__init__}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{\_\_init\_\_}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}
|
||
\sphinxAtStartPar
|
||
A simple constructor that allows initialization from kwargs.
|
||
|
||
\sphinxAtStartPar
|
||
Sets attributes on the constructed instance using the names and
|
||
values in \sphinxcode{\sphinxupquote{kwargs}}.
|
||
|
||
\sphinxAtStartPar
|
||
Only keys that are present as
|
||
attributes of the instance\textquotesingle{}s class are allowed. These could be,
|
||
for example, any mapped columns or relationships.
|
||
|
||
\end{fulllineitems}
|
||
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{Composed (classe in nest\_backend.database.tables)@\spxentry{Composed}\spxextra{classe in nest\_backend.database.tables}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Composed}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{nest\_backend.database.tables.}}\sphinxbfcode{\sphinxupquote{Composed}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}~\begin{quote}
|
||
|
||
\sphinxAtStartPar
|
||
Basi: \sphinxcode{\sphinxupquote{sqlalchemy.orm.decl\_api.Model}}
|
||
\end{quote}
|
||
\index{rid (nest\_backend.database.tables.Composed attributo)@\spxentry{rid}\spxextra{nest\_backend.database.tables.Composed attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Composed.rid}}\pysigline{\sphinxbfcode{\sphinxupquote{rid}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{snowflake (nest\_backend.database.tables.Composed attributo)@\spxentry{snowflake}\spxextra{nest\_backend.database.tables.Composed attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Composed.snowflake}}\pysigline{\sphinxbfcode{\sphinxupquote{snowflake}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{repository (nest\_backend.database.tables.Composed attributo)@\spxentry{repository}\spxextra{nest\_backend.database.tables.Composed attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Composed.repository}}\pysigline{\sphinxbfcode{\sphinxupquote{repository}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{tweet (nest\_backend.database.tables.Composed attributo)@\spxentry{tweet}\spxextra{nest\_backend.database.tables.Composed attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Composed.tweet}}\pysigline{\sphinxbfcode{\sphinxupquote{tweet}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{\_\_init\_\_() (nest\_backend.database.tables.Composed metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Composed metodo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Composed.__init__}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{\_\_init\_\_}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}
|
||
\sphinxAtStartPar
|
||
A simple constructor that allows initialization from kwargs.
|
||
|
||
\sphinxAtStartPar
|
||
Sets attributes on the constructed instance using the names and
|
||
values in \sphinxcode{\sphinxupquote{kwargs}}.
|
||
|
||
\sphinxAtStartPar
|
||
Only keys that are present as
|
||
attributes of the instance\textquotesingle{}s class are allowed. These could be,
|
||
for example, any mapped columns or relationships.
|
||
|
||
\end{fulllineitems}
|
||
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{Condition (classe in nest\_backend.database.tables)@\spxentry{Condition}\spxextra{classe in nest\_backend.database.tables}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Condition}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{nest\_backend.database.tables.}}\sphinxbfcode{\sphinxupquote{Condition}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}~\begin{quote}
|
||
|
||
\sphinxAtStartPar
|
||
Basi: \sphinxcode{\sphinxupquote{sqlalchemy.orm.decl\_api.Model}}
|
||
\end{quote}
|
||
\index{id (nest\_backend.database.tables.Condition attributo)@\spxentry{id}\spxextra{nest\_backend.database.tables.Condition attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Condition.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{type (nest\_backend.database.tables.Condition attributo)@\spxentry{type}\spxextra{nest\_backend.database.tables.Condition attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Condition.type}}\pysigline{\sphinxbfcode{\sphinxupquote{type}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{content (nest\_backend.database.tables.Condition attributo)@\spxentry{content}\spxextra{nest\_backend.database.tables.Condition attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Condition.content}}\pysigline{\sphinxbfcode{\sphinxupquote{content}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{repository\_id (nest\_backend.database.tables.Condition attributo)@\spxentry{repository\_id}\spxextra{nest\_backend.database.tables.Condition attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Condition.repository_id}}\pysigline{\sphinxbfcode{\sphinxupquote{repository\_id}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{repository (nest\_backend.database.tables.Condition attributo)@\spxentry{repository}\spxextra{nest\_backend.database.tables.Condition attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Condition.repository}}\pysigline{\sphinxbfcode{\sphinxupquote{repository}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{tweets (nest\_backend.database.tables.Condition attributo)@\spxentry{tweets}\spxextra{nest\_backend.database.tables.Condition attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Condition.tweets}}\pysigline{\sphinxbfcode{\sphinxupquote{tweets}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{alerts (nest\_backend.database.tables.Condition attributo)@\spxentry{alerts}\spxextra{nest\_backend.database.tables.Condition attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Condition.alerts}}\pysigline{\sphinxbfcode{\sphinxupquote{alerts}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{to\_json() (nest\_backend.database.tables.Condition metodo)@\spxentry{to\_json()}\spxextra{nest\_backend.database.tables.Condition metodo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Condition.to_json}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{to\_json}}}{}{}
|
||
\end{fulllineitems}
|
||
|
||
\index{\_\_init\_\_() (nest\_backend.database.tables.Condition metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Condition metodo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Condition.__init__}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{\_\_init\_\_}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}
|
||
\sphinxAtStartPar
|
||
A simple constructor that allows initialization from kwargs.
|
||
|
||
\sphinxAtStartPar
|
||
Sets attributes on the constructed instance using the names and
|
||
values in \sphinxcode{\sphinxupquote{kwargs}}.
|
||
|
||
\sphinxAtStartPar
|
||
Only keys that are present as
|
||
attributes of the instance\textquotesingle{}s class are allowed. These could be,
|
||
for example, any mapped columns or relationships.
|
||
|
||
\end{fulllineitems}
|
||
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{Contains (classe in nest\_backend.database.tables)@\spxentry{Contains}\spxextra{classe in nest\_backend.database.tables}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Contains}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{nest\_backend.database.tables.}}\sphinxbfcode{\sphinxupquote{Contains}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}~\begin{quote}
|
||
|
||
\sphinxAtStartPar
|
||
Basi: \sphinxcode{\sphinxupquote{sqlalchemy.orm.decl\_api.Model}}
|
||
\end{quote}
|
||
\index{cid (nest\_backend.database.tables.Contains attributo)@\spxentry{cid}\spxextra{nest\_backend.database.tables.Contains attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Contains.cid}}\pysigline{\sphinxbfcode{\sphinxupquote{cid}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{snowflake (nest\_backend.database.tables.Contains attributo)@\spxentry{snowflake}\spxextra{nest\_backend.database.tables.Contains attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Contains.snowflake}}\pysigline{\sphinxbfcode{\sphinxupquote{snowflake}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{condition (nest\_backend.database.tables.Contains attributo)@\spxentry{condition}\spxextra{nest\_backend.database.tables.Contains attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Contains.condition}}\pysigline{\sphinxbfcode{\sphinxupquote{condition}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{tweet (nest\_backend.database.tables.Contains attributo)@\spxentry{tweet}\spxextra{nest\_backend.database.tables.Contains attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Contains.tweet}}\pysigline{\sphinxbfcode{\sphinxupquote{tweet}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{\_\_init\_\_() (nest\_backend.database.tables.Contains metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Contains metodo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Contains.__init__}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{\_\_init\_\_}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}
|
||
\sphinxAtStartPar
|
||
A simple constructor that allows initialization from kwargs.
|
||
|
||
\sphinxAtStartPar
|
||
Sets attributes on the constructed instance using the names and
|
||
values in \sphinxcode{\sphinxupquote{kwargs}}.
|
||
|
||
\sphinxAtStartPar
|
||
Only keys that are present as
|
||
attributes of the instance\textquotesingle{}s class are allowed. These could be,
|
||
for example, any mapped columns or relationships.
|
||
|
||
\end{fulllineitems}
|
||
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{Notification (classe in nest\_backend.database.tables)@\spxentry{Notification}\spxextra{classe in nest\_backend.database.tables}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Notification}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{nest\_backend.database.tables.}}\sphinxbfcode{\sphinxupquote{Notification}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}~\begin{quote}
|
||
|
||
\sphinxAtStartPar
|
||
Basi: \sphinxcode{\sphinxupquote{sqlalchemy.orm.decl\_api.Model}}
|
||
\end{quote}
|
||
\index{id (nest\_backend.database.tables.Notification attributo)@\spxentry{id}\spxextra{nest\_backend.database.tables.Notification attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Notification.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{ora (nest\_backend.database.tables.Notification attributo)@\spxentry{ora}\spxextra{nest\_backend.database.tables.Notification attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Notification.ora}}\pysigline{\sphinxbfcode{\sphinxupquote{ora}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{alert\_id (nest\_backend.database.tables.Notification attributo)@\spxentry{alert\_id}\spxextra{nest\_backend.database.tables.Notification attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Notification.alert_id}}\pysigline{\sphinxbfcode{\sphinxupquote{alert\_id}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{alert (nest\_backend.database.tables.Notification attributo)@\spxentry{alert}\spxextra{nest\_backend.database.tables.Notification attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Notification.alert}}\pysigline{\sphinxbfcode{\sphinxupquote{alert}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{to\_json() (nest\_backend.database.tables.Notification metodo)@\spxentry{to\_json()}\spxextra{nest\_backend.database.tables.Notification metodo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Notification.to_json}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{to\_json}}}{}{}
|
||
\end{fulllineitems}
|
||
|
||
\index{\_\_init\_\_() (nest\_backend.database.tables.Notification metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Notification metodo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Notification.__init__}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{\_\_init\_\_}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}
|
||
\sphinxAtStartPar
|
||
A simple constructor that allows initialization from kwargs.
|
||
|
||
\sphinxAtStartPar
|
||
Sets attributes on the constructed instance using the names and
|
||
values in \sphinxcode{\sphinxupquote{kwargs}}.
|
||
|
||
\sphinxAtStartPar
|
||
Only keys that are present as
|
||
attributes of the instance\textquotesingle{}s class are allowed. These could be,
|
||
for example, any mapped columns or relationships.
|
||
|
||
\end{fulllineitems}
|
||
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{Repository (classe in nest\_backend.database.tables)@\spxentry{Repository}\spxextra{classe in nest\_backend.database.tables}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{nest\_backend.database.tables.}}\sphinxbfcode{\sphinxupquote{Repository}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}~\begin{quote}
|
||
|
||
\sphinxAtStartPar
|
||
Basi: \sphinxcode{\sphinxupquote{sqlalchemy.orm.decl\_api.Model}}
|
||
\end{quote}
|
||
\index{id (nest\_backend.database.tables.Repository attributo)@\spxentry{id}\spxextra{nest\_backend.database.tables.Repository attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{name (nest\_backend.database.tables.Repository attributo)@\spxentry{name}\spxextra{nest\_backend.database.tables.Repository attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.name}}\pysigline{\sphinxbfcode{\sphinxupquote{name}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{start (nest\_backend.database.tables.Repository attributo)@\spxentry{start}\spxextra{nest\_backend.database.tables.Repository attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.start}}\pysigline{\sphinxbfcode{\sphinxupquote{start}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{end (nest\_backend.database.tables.Repository attributo)@\spxentry{end}\spxextra{nest\_backend.database.tables.Repository attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.end}}\pysigline{\sphinxbfcode{\sphinxupquote{end}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{is\_active (nest\_backend.database.tables.Repository attributo)@\spxentry{is\_active}\spxextra{nest\_backend.database.tables.Repository attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.is_active}}\pysigline{\sphinxbfcode{\sphinxupquote{is\_active}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{is\_deleted (nest\_backend.database.tables.Repository attributo)@\spxentry{is\_deleted}\spxextra{nest\_backend.database.tables.Repository attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.is_deleted}}\pysigline{\sphinxbfcode{\sphinxupquote{is\_deleted}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{evaluation\_mode (nest\_backend.database.tables.Repository attributo)@\spxentry{evaluation\_mode}\spxextra{nest\_backend.database.tables.Repository attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.evaluation_mode}}\pysigline{\sphinxbfcode{\sphinxupquote{evaluation\_mode}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{owner\_id (nest\_backend.database.tables.Repository attributo)@\spxentry{owner\_id}\spxextra{nest\_backend.database.tables.Repository attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.owner_id}}\pysigline{\sphinxbfcode{\sphinxupquote{owner\_id}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{owner (nest\_backend.database.tables.Repository attributo)@\spxentry{owner}\spxextra{nest\_backend.database.tables.Repository attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.owner}}\pysigline{\sphinxbfcode{\sphinxupquote{owner}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{authorizations (nest\_backend.database.tables.Repository attributo)@\spxentry{authorizations}\spxextra{nest\_backend.database.tables.Repository attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.authorizations}}\pysigline{\sphinxbfcode{\sphinxupquote{authorizations}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{tweets (nest\_backend.database.tables.Repository attributo)@\spxentry{tweets}\spxextra{nest\_backend.database.tables.Repository attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.tweets}}\pysigline{\sphinxbfcode{\sphinxupquote{tweets}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{alerts (nest\_backend.database.tables.Repository attributo)@\spxentry{alerts}\spxextra{nest\_backend.database.tables.Repository attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.alerts}}\pysigline{\sphinxbfcode{\sphinxupquote{alerts}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{conditions (nest\_backend.database.tables.Repository attributo)@\spxentry{conditions}\spxextra{nest\_backend.database.tables.Repository attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.conditions}}\pysigline{\sphinxbfcode{\sphinxupquote{conditions}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{to\_json() (nest\_backend.database.tables.Repository metodo)@\spxentry{to\_json()}\spxextra{nest\_backend.database.tables.Repository metodo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.to_json}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{to\_json}}}{}{}
|
||
\end{fulllineitems}
|
||
|
||
\index{\_\_init\_\_() (nest\_backend.database.tables.Repository metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Repository metodo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.__init__}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{\_\_init\_\_}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}
|
||
\sphinxAtStartPar
|
||
A simple constructor that allows initialization from kwargs.
|
||
|
||
\sphinxAtStartPar
|
||
Sets attributes on the constructed instance using the names and
|
||
values in \sphinxcode{\sphinxupquote{kwargs}}.
|
||
|
||
\sphinxAtStartPar
|
||
Only keys that are present as
|
||
attributes of the instance\textquotesingle{}s class are allowed. These could be,
|
||
for example, any mapped columns or relationships.
|
||
|
||
\end{fulllineitems}
|
||
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{Tweet (classe in nest\_backend.database.tables)@\spxentry{Tweet}\spxextra{classe in nest\_backend.database.tables}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Tweet}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{nest\_backend.database.tables.}}\sphinxbfcode{\sphinxupquote{Tweet}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}~\begin{quote}
|
||
|
||
\sphinxAtStartPar
|
||
Basi: \sphinxcode{\sphinxupquote{sqlalchemy.orm.decl\_api.Model}}
|
||
\end{quote}
|
||
\index{snowflake (nest\_backend.database.tables.Tweet attributo)@\spxentry{snowflake}\spxextra{nest\_backend.database.tables.Tweet attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Tweet.snowflake}}\pysigline{\sphinxbfcode{\sphinxupquote{snowflake}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{content (nest\_backend.database.tables.Tweet attributo)@\spxentry{content}\spxextra{nest\_backend.database.tables.Tweet attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Tweet.content}}\pysigline{\sphinxbfcode{\sphinxupquote{content}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{location (nest\_backend.database.tables.Tweet attributo)@\spxentry{location}\spxextra{nest\_backend.database.tables.Tweet attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Tweet.location}}\pysigline{\sphinxbfcode{\sphinxupquote{location}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{place (nest\_backend.database.tables.Tweet attributo)@\spxentry{place}\spxextra{nest\_backend.database.tables.Tweet attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Tweet.place}}\pysigline{\sphinxbfcode{\sphinxupquote{place}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{poster (nest\_backend.database.tables.Tweet attributo)@\spxentry{poster}\spxextra{nest\_backend.database.tables.Tweet attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Tweet.poster}}\pysigline{\sphinxbfcode{\sphinxupquote{poster}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{insert\_time (nest\_backend.database.tables.Tweet attributo)@\spxentry{insert\_time}\spxextra{nest\_backend.database.tables.Tweet attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Tweet.insert_time}}\pysigline{\sphinxbfcode{\sphinxupquote{insert\_time}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{post\_time (nest\_backend.database.tables.Tweet attributo)@\spxentry{post\_time}\spxextra{nest\_backend.database.tables.Tweet attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Tweet.post_time}}\pysigline{\sphinxbfcode{\sphinxupquote{post\_time}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{image\_url (nest\_backend.database.tables.Tweet attributo)@\spxentry{image\_url}\spxextra{nest\_backend.database.tables.Tweet attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Tweet.image_url}}\pysigline{\sphinxbfcode{\sphinxupquote{image\_url}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{repositories (nest\_backend.database.tables.Tweet attributo)@\spxentry{repositories}\spxextra{nest\_backend.database.tables.Tweet attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Tweet.repositories}}\pysigline{\sphinxbfcode{\sphinxupquote{repositories}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{conditions (nest\_backend.database.tables.Tweet attributo)@\spxentry{conditions}\spxextra{nest\_backend.database.tables.Tweet attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Tweet.conditions}}\pysigline{\sphinxbfcode{\sphinxupquote{conditions}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{to\_json() (nest\_backend.database.tables.Tweet metodo)@\spxentry{to\_json()}\spxextra{nest\_backend.database.tables.Tweet metodo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Tweet.to_json}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{to\_json}}}{}{}
|
||
\end{fulllineitems}
|
||
|
||
\index{\_\_init\_\_() (nest\_backend.database.tables.Tweet metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Tweet metodo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Tweet.__init__}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{\_\_init\_\_}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}
|
||
\sphinxAtStartPar
|
||
A simple constructor that allows initialization from kwargs.
|
||
|
||
\sphinxAtStartPar
|
||
Sets attributes on the constructed instance using the names and
|
||
values in \sphinxcode{\sphinxupquote{kwargs}}.
|
||
|
||
\sphinxAtStartPar
|
||
Only keys that are present as
|
||
attributes of the instance\textquotesingle{}s class are allowed. These could be,
|
||
for example, any mapped columns or relationships.
|
||
|
||
\end{fulllineitems}
|
||
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{User (classe in nest\_backend.database.tables)@\spxentry{User}\spxextra{classe in nest\_backend.database.tables}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.User}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{nest\_backend.database.tables.}}\sphinxbfcode{\sphinxupquote{User}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}~\begin{quote}
|
||
|
||
\sphinxAtStartPar
|
||
Basi: \sphinxcode{\sphinxupquote{sqlalchemy.orm.decl\_api.Model}}
|
||
\end{quote}
|
||
\index{email (nest\_backend.database.tables.User attributo)@\spxentry{email}\spxextra{nest\_backend.database.tables.User attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.User.email}}\pysigline{\sphinxbfcode{\sphinxupquote{email}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{username (nest\_backend.database.tables.User attributo)@\spxentry{username}\spxextra{nest\_backend.database.tables.User attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.User.username}}\pysigline{\sphinxbfcode{\sphinxupquote{username}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{password (nest\_backend.database.tables.User attributo)@\spxentry{password}\spxextra{nest\_backend.database.tables.User attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.User.password}}\pysigline{\sphinxbfcode{\sphinxupquote{password}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{isAdmin (nest\_backend.database.tables.User attributo)@\spxentry{isAdmin}\spxextra{nest\_backend.database.tables.User attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.User.isAdmin}}\pysigline{\sphinxbfcode{\sphinxupquote{isAdmin}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{owner\_of (nest\_backend.database.tables.User attributo)@\spxentry{owner\_of}\spxextra{nest\_backend.database.tables.User attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.User.owner_of}}\pysigline{\sphinxbfcode{\sphinxupquote{owner\_of}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{authorizations (nest\_backend.database.tables.User attributo)@\spxentry{authorizations}\spxextra{nest\_backend.database.tables.User attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.User.authorizations}}\pysigline{\sphinxbfcode{\sphinxupquote{authorizations}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{to\_json() (nest\_backend.database.tables.User metodo)@\spxentry{to\_json()}\spxextra{nest\_backend.database.tables.User metodo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.User.to_json}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{to\_json}}}{}{}
|
||
\end{fulllineitems}
|
||
|
||
\index{\_\_init\_\_() (nest\_backend.database.tables.User metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.User metodo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.User.__init__}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{\_\_init\_\_}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}
|
||
\sphinxAtStartPar
|
||
A simple constructor that allows initialization from kwargs.
|
||
|
||
\sphinxAtStartPar
|
||
Sets attributes on the constructed instance using the names and
|
||
values in \sphinxcode{\sphinxupquote{kwargs}}.
|
||
|
||
\sphinxAtStartPar
|
||
Only keys that are present as
|
||
attributes of the instance\textquotesingle{}s class are allowed. These could be,
|
||
for example, any mapped columns or relationships.
|
||
|
||
\end{fulllineitems}
|
||
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{MadeOf (classe in nest\_backend.database.tables)@\spxentry{MadeOf}\spxextra{classe in nest\_backend.database.tables}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.MadeOf}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{nest\_backend.database.tables.}}\sphinxbfcode{\sphinxupquote{MadeOf}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}~\begin{quote}
|
||
|
||
\sphinxAtStartPar
|
||
Basi: \sphinxcode{\sphinxupquote{sqlalchemy.orm.decl\_api.Model}}
|
||
\end{quote}
|
||
\index{aid (nest\_backend.database.tables.MadeOf attributo)@\spxentry{aid}\spxextra{nest\_backend.database.tables.MadeOf attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.MadeOf.aid}}\pysigline{\sphinxbfcode{\sphinxupquote{aid}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{cid (nest\_backend.database.tables.MadeOf attributo)@\spxentry{cid}\spxextra{nest\_backend.database.tables.MadeOf attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.MadeOf.cid}}\pysigline{\sphinxbfcode{\sphinxupquote{cid}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{alert (nest\_backend.database.tables.MadeOf attributo)@\spxentry{alert}\spxextra{nest\_backend.database.tables.MadeOf attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.MadeOf.alert}}\pysigline{\sphinxbfcode{\sphinxupquote{alert}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{condition (nest\_backend.database.tables.MadeOf attributo)@\spxentry{condition}\spxextra{nest\_backend.database.tables.MadeOf attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.MadeOf.condition}}\pysigline{\sphinxbfcode{\sphinxupquote{condition}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{\_\_init\_\_() (nest\_backend.database.tables.MadeOf metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.MadeOf metodo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.MadeOf.__init__}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{\_\_init\_\_}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}
|
||
\sphinxAtStartPar
|
||
A simple constructor that allows initialization from kwargs.
|
||
|
||
\sphinxAtStartPar
|
||
Sets attributes on the constructed instance using the names and
|
||
values in \sphinxcode{\sphinxupquote{kwargs}}.
|
||
|
||
\sphinxAtStartPar
|
||
Only keys that are present as
|
||
attributes of the instance\textquotesingle{}s class are allowed. These could be,
|
||
for example, any mapped columns or relationships.
|
||
|
||
\end{fulllineitems}
|
||
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{ConditionType (classe in nest\_backend.database.tables)@\spxentry{ConditionType}\spxextra{classe in nest\_backend.database.tables}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.ConditionType}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{nest\_backend.database.tables.}}\sphinxbfcode{\sphinxupquote{ConditionType}}}{\emph{\DUrole{n}{value}}}{}~\begin{quote}
|
||
|
||
\sphinxAtStartPar
|
||
Basi: \sphinxhref{https://docs.python.org/3.8/library/enum.html\#enum.Enum}{\sphinxcode{\sphinxupquote{enum.Enum}}}
|
||
\end{quote}
|
||
|
||
\sphinxAtStartPar
|
||
Vedi \sphinxhref{https://gitlab.steffo.eu/nest/g2-progetto/-/wikis/Specifica-delle-Conditions}{Specifica delle Conditions su
|
||
GitLab} .
|
||
\index{hashtag (nest\_backend.database.tables.ConditionType attributo)@\spxentry{hashtag}\spxextra{nest\_backend.database.tables.ConditionType attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.ConditionType.hashtag}}\pysigline{\sphinxbfcode{\sphinxupquote{hashtag}}\sphinxbfcode{\sphinxupquote{ = 0}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{location (nest\_backend.database.tables.ConditionType attributo)@\spxentry{location}\spxextra{nest\_backend.database.tables.ConditionType attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.ConditionType.location}}\pysigline{\sphinxbfcode{\sphinxupquote{location}}\sphinxbfcode{\sphinxupquote{ = 1}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{time (nest\_backend.database.tables.ConditionType attributo)@\spxentry{time}\spxextra{nest\_backend.database.tables.ConditionType attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.ConditionType.time}}\pysigline{\sphinxbfcode{\sphinxupquote{time}}\sphinxbfcode{\sphinxupquote{ = 2}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{coordinates (nest\_backend.database.tables.ConditionType attributo)@\spxentry{coordinates}\spxextra{nest\_backend.database.tables.ConditionType attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.ConditionType.coordinates}}\pysigline{\sphinxbfcode{\sphinxupquote{coordinates}}\sphinxbfcode{\sphinxupquote{ = 3}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{place (nest\_backend.database.tables.ConditionType attributo)@\spxentry{place}\spxextra{nest\_backend.database.tables.ConditionType attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.ConditionType.place}}\pysigline{\sphinxbfcode{\sphinxupquote{place}}\sphinxbfcode{\sphinxupquote{ = 4}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{user (nest\_backend.database.tables.ConditionType attributo)@\spxentry{user}\spxextra{nest\_backend.database.tables.ConditionType attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.ConditionType.user}}\pysigline{\sphinxbfcode{\sphinxupquote{user}}\sphinxbfcode{\sphinxupquote{ = 5}}}
|
||
\end{fulllineitems}
|
||
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{OperationType (classe in nest\_backend.database.tables)@\spxentry{OperationType}\spxextra{classe in nest\_backend.database.tables}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.OperationType}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{nest\_backend.database.tables.}}\sphinxbfcode{\sphinxupquote{OperationType}}}{\emph{\DUrole{n}{value}}}{}~\begin{quote}
|
||
|
||
\sphinxAtStartPar
|
||
Basi: \sphinxhref{https://docs.python.org/3.8/library/enum.html\#enum.Enum}{\sphinxcode{\sphinxupquote{enum.Enum}}}
|
||
\end{quote}
|
||
|
||
\sphinxAtStartPar
|
||
An enumeration.
|
||
\index{assign (nest\_backend.database.tables.OperationType attributo)@\spxentry{assign}\spxextra{nest\_backend.database.tables.OperationType attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.OperationType.assign}}\pysigline{\sphinxbfcode{\sphinxupquote{assign}}\sphinxbfcode{\sphinxupquote{ = 3}}}
|
||
\end{fulllineitems}
|
||
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{ConditionMode (classe in nest\_backend.database.tables)@\spxentry{ConditionMode}\spxextra{classe in nest\_backend.database.tables}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.ConditionMode}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{nest\_backend.database.tables.}}\sphinxbfcode{\sphinxupquote{ConditionMode}}}{\emph{\DUrole{n}{value}}}{}~\begin{quote}
|
||
|
||
\sphinxAtStartPar
|
||
Basi: \sphinxhref{https://docs.python.org/3.8/library/enum.html\#enum.Enum}{\sphinxcode{\sphinxupquote{enum.Enum}}}
|
||
\end{quote}
|
||
|
||
\sphinxAtStartPar
|
||
An enumeration.
|
||
\index{all\_or (nest\_backend.database.tables.ConditionMode attributo)@\spxentry{all\_or}\spxextra{nest\_backend.database.tables.ConditionMode attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.ConditionMode.all_or}}\pysigline{\sphinxbfcode{\sphinxupquote{all\_or}}\sphinxbfcode{\sphinxupquote{ = 0}}}
|
||
\end{fulllineitems}
|
||
|
||
\index{all\_and (nest\_backend.database.tables.ConditionMode attributo)@\spxentry{all\_and}\spxextra{nest\_backend.database.tables.ConditionMode attributo}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.ConditionMode.all_and}}\pysigline{\sphinxbfcode{\sphinxupquote{all\_and}}\sphinxbfcode{\sphinxupquote{ = 1}}}
|
||
\end{fulllineitems}
|
||
|
||
|
||
\end{fulllineitems}
|
||
|
||
|
||
|
||
\section{\sphinxstyleliteralintitle{\sphinxupquote{.routes}} \sphinxhyphen{} Percorsi API}
|
||
\label{\detokenize{code/backend/index:routes-percorsi-api}}
|
||
\begin{sphinxadmonition}{note}{Nota:}
|
||
\sphinxAtStartPar
|
||
La documentazione dei percorsi API è gestita da Swagger UI, disponibile a \sphinxcode{\sphinxupquote{/docs}} una volta che il webserver
|
||
del backend è avviato.
|
||
\end{sphinxadmonition}
|
||
|
||
\sphinxAtStartPar
|
||
Si allega una stampa dell\textquotesingle{}interfaccia swagger:
|
||
\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxcode{\sphinxupquote{Schermata di swagger}}
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\chapter{\sphinxstyleliteralintitle{\sphinxupquote{nest\_crawler}} \sphinxhyphen{} Crawler in Python}
|
||
\label{\detokenize{code/crawler/index:module-nest_crawler}}\label{\detokenize{code/crawler/index:nest-crawler-crawler-in-python}}\label{\detokenize{code/crawler/index::doc}}\index{modulo@\spxentry{modulo}!nest\_crawler@\spxentry{nest\_crawler}}\index{nest\_crawler@\spxentry{nest\_crawler}!modulo@\spxentry{modulo}}\index{associate\_condition\_tweet() (nel modulo nest\_crawler)@\spxentry{associate\_condition\_tweet()}\spxextra{nel modulo nest\_crawler}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/crawler/index:nest_crawler.associate_condition_tweet}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_crawler.}}\sphinxbfcode{\sphinxupquote{associate\_condition\_tweet}}}{\emph{\DUrole{n}{conditions\_type}}, \emph{\DUrole{n}{tweet}}}{}
|
||
\end{fulllineitems}
|
||
|
||
\index{authenticate() (nel modulo nest\_crawler)@\spxentry{authenticate()}\spxextra{nel modulo nest\_crawler}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/crawler/index:nest_crawler.authenticate}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_crawler.}}\sphinxbfcode{\sphinxupquote{authenticate}}}{}{}
|
||
\end{fulllineitems}
|
||
|
||
\index{is\_coordinate\_inside\_bounding\_box() (nel modulo nest\_crawler)@\spxentry{is\_coordinate\_inside\_bounding\_box()}\spxextra{nel modulo nest\_crawler}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/crawler/index:nest_crawler.is_coordinate_inside_bounding_box}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_crawler.}}\sphinxbfcode{\sphinxupquote{is\_coordinate\_inside\_bounding\_box}}}{\emph{\DUrole{n}{latitude}}, \emph{\DUrole{n}{longitude}}, \emph{\DUrole{n}{radius}}, \emph{\DUrole{n}{tweet\_latitude}}, \emph{\DUrole{n}{tweet\_longitude}}}{}
|
||
\end{fulllineitems}
|
||
|
||
\index{is\_repo\_alert\_triggered() (nel modulo nest\_crawler)@\spxentry{is\_repo\_alert\_triggered()}\spxextra{nel modulo nest\_crawler}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/crawler/index:nest_crawler.is_repo_alert_triggered}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_crawler.}}\sphinxbfcode{\sphinxupquote{is\_repo\_alert\_triggered}}}{\emph{\DUrole{n}{repository\_id}}}{}
|
||
\end{fulllineitems}
|
||
|
||
\index{search\_repo\_conditions() (nel modulo nest\_crawler)@\spxentry{search\_repo\_conditions()}\spxextra{nel modulo nest\_crawler}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/crawler/index:nest_crawler.search_repo_conditions}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_crawler.}}\sphinxbfcode{\sphinxupquote{search\_repo\_conditions}}}{\emph{\DUrole{n}{repository\_id}}}{}
|
||
\end{fulllineitems}
|
||
|
||
\index{send\_notification\_email() (nel modulo nest\_crawler)@\spxentry{send\_notification\_email()}\spxextra{nel modulo nest\_crawler}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/crawler/index:nest_crawler.send_notification_email}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_crawler.}}\sphinxbfcode{\sphinxupquote{send\_notification\_email}}}{\emph{\DUrole{n}{alert}}}{}
|
||
\end{fulllineitems}
|
||
|
||
\index{send\_notification\_tweet() (nel modulo nest\_crawler)@\spxentry{send\_notification\_tweet()}\spxextra{nel modulo nest\_crawler}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/crawler/index:nest_crawler.send_notification_tweet}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_crawler.}}\sphinxbfcode{\sphinxupquote{send\_notification\_tweet}}}{\emph{\DUrole{n}{alert}}}{}
|
||
\end{fulllineitems}
|
||
|
||
|
||
|
||
\chapter{\sphinxstyleliteralintitle{\sphinxupquote{nest\_frontend}} \sphinxhyphen{} Interfaccia utente in React}
|
||
\label{\detokenize{code/frontend/index:nest-frontend-interfaccia-utente-in-react}}\label{\detokenize{code/frontend/index::doc}}
|
||
\begin{sphinxadmonition}{warning}{Avvertimento:}
|
||
\sphinxAtStartPar
|
||
\sphinxhref{https://jsdoc.app/}{JSDoc} non sembra essere in grado di gestire correttamente il lato frontend del progetto.
|
||
|
||
\sphinxAtStartPar
|
||
Per maggiori dettagli sul funzionamento dei vari componenti, si suggerisce di guardare le \sphinxstylestrong{docstring presenti nel
|
||
codice sorgente}.
|
||
|
||
\sphinxAtStartPar
|
||
Seguono sotto le uniche classi che JSDoc è stato in grado di gestire (anche se vengono mostrate solo
|
||
parzialmente).
|
||
\end{sphinxadmonition}
|
||
|
||
|
||
\section{\sphinxstyleliteralintitle{\sphinxupquote{.objects}} \sphinxhyphen{} Oggetti vari di utility}
|
||
\label{\detokenize{code/frontend/index:objects-oggetti-vari-di-utility}}\index{Condition() (classe)@\spxentry{Condition()}\spxextra{classe}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/frontend/index:Condition}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Condition}}}{}{}
|
||
\sphinxAtStartPar
|
||
Condition class for an undefined/unknown condition.
|
||
|
||
\sphinxAtStartPar
|
||
See {[}the Condition spec{]}(\sphinxurl{https://gitlab.steffo.eu/nest/g2-progetto/-/wikis/sprint-2/Specifica-delle-Conditions}).
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{ConditionHashtag() (classe)@\spxentry{ConditionHashtag()}\spxextra{classe}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/frontend/index:ConditionHashtag}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{ConditionHashtag}}}{}{}
|
||
\sphinxAtStartPar
|
||
Require a tweet to contain a specific hashtag to be gathered.
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{ConditionUser() (classe)@\spxentry{ConditionUser()}\spxextra{classe}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/frontend/index:ConditionUser}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{ConditionUser}}}{}{}
|
||
\sphinxAtStartPar
|
||
Require a tweet to be posted by a certain user to be gathered.
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{ConditionTime() (classe)@\spxentry{ConditionTime()}\spxextra{classe}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/frontend/index:ConditionTime}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{ConditionTime}}}{}{}
|
||
\sphinxAtStartPar
|
||
Require a tweet to be posted before or after a certain time to be gathered.
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{ConditionLocation() (classe)@\spxentry{ConditionLocation()}\spxextra{classe}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/frontend/index:ConditionLocation}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{ConditionLocation}}}{}{}
|
||
\sphinxAtStartPar
|
||
Require a tweet to have coordinates associated and to be posted within the \sphinxhref{mailto:\{@link}{\{@link} MapArea\}.
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{NotImplementedError() (classe)@\spxentry{NotImplementedError()}\spxextra{classe}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/frontend/index:NotImplementedError}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{NotImplementedError}}}{}{}
|
||
\sphinxAtStartPar
|
||
Error thrown when a function is not implemented in the current class/instance.
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{BackendCommunicationError() (classe)@\spxentry{BackendCommunicationError()}\spxextra{classe}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/frontend/index:BackendCommunicationError}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{BackendCommunicationError}}}{}{}
|
||
\sphinxAtStartPar
|
||
An error in the N.E.S.T. frontend\sphinxhyphen{}backend communication.
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{ViewNotAllowedError() (classe)@\spxentry{ViewNotAllowedError()}\spxextra{classe}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/frontend/index:ViewNotAllowedError}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{ViewNotAllowedError}}}{}{}
|
||
\sphinxAtStartPar
|
||
Error thrown when trying to access a backend view which doesn\textquotesingle{}t exist or isn\textquotesingle{}t allowed in the used hook.
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{ServerNotConfiguredError() (classe)@\spxentry{ServerNotConfiguredError()}\spxextra{classe}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/frontend/index:ServerNotConfiguredError}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{ServerNotConfiguredError}}}{}{}
|
||
\sphinxAtStartPar
|
||
Error thrown when trying to access a backend view when outside a \sphinxhref{mailto:\{@link}{\{@link} ContextServer\}.
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{FetchAlreadyRunningError() (classe)@\spxentry{FetchAlreadyRunningError()}\spxextra{classe}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/frontend/index:FetchAlreadyRunningError}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{FetchAlreadyRunningError}}}{}{}
|
||
\sphinxAtStartPar
|
||
Error thrown when trying to access a backend view while another access is ongoing.
|
||
|
||
\sphinxAtStartPar
|
||
This is not allowed due to potential race conditions.
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{FetchError() (classe)@\spxentry{FetchError()}\spxextra{classe}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/frontend/index:FetchError}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{FetchError}}}{}{}
|
||
\sphinxAtStartPar
|
||
Abstract class for \sphinxhref{mailto:\{@link}{\{@link} DecodeError\} and \sphinxhref{mailto:\{@link}{\{@link} ResultError\}.
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{DecodeError() (classe)@\spxentry{DecodeError()}\spxextra{classe}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/frontend/index:DecodeError}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{DecodeError}}}{}{}
|
||
\sphinxAtStartPar
|
||
Error thrown when the frontend can\textquotesingle{}t parse the data received from the backend.
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{ResultError() (classe)@\spxentry{ResultError()}\spxextra{classe}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/frontend/index:ResultError}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{ResultError}}}{}{}
|
||
\sphinxAtStartPar
|
||
Error thrown when the backend returns a falsy \sphinxtitleref{"result"} value.
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{SerializationError() (classe)@\spxentry{SerializationError()}\spxextra{classe}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/frontend/index:SerializationError}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{SerializationError}}}{}{}
|
||
\sphinxAtStartPar
|
||
Error thrown when a string couldn\textquotesingle{}t be serialized into an object.
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{Filter() (classe)@\spxentry{Filter()}\spxextra{classe}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/frontend/index:Filter}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Filter}}}{\emph{negate=false}}{}
|
||
\sphinxAtStartPar
|
||
A filter applicable in the Analysis mode.
|
||
\begin{quote}\begin{description}
|
||
\item[{Parametri}] \leavevmode\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\sphinxstyleliteralstrong{\sphinxupquote{negate}} \sphinxhyphen{}\sphinxhyphen{} If the filter output should be reversed.
|
||
|
||
\end{itemize}
|
||
|
||
\end{description}\end{quote}
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{FilterContains() (classe)@\spxentry{FilterContains()}\spxextra{classe}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/frontend/index:FilterContains}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{FilterContains}}}{}{}
|
||
\sphinxAtStartPar
|
||
Checks if a tweet contains a string.
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{FilterHashtag() (classe)@\spxentry{FilterHashtag()}\spxextra{classe}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/frontend/index:FilterHashtag}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{FilterHashtag}}}{}{}
|
||
\sphinxAtStartPar
|
||
Check if a tweet contains an hashtag.
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{FilterPoster() (classe)@\spxentry{FilterPoster()}\spxextra{classe}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/frontend/index:FilterPoster}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{FilterPoster}}}{}{}
|
||
\sphinxAtStartPar
|
||
Check if a tweet was posted by a certain user.
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{FilterWithLocation() (classe)@\spxentry{FilterWithLocation()}\spxextra{classe}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/frontend/index:FilterWithLocation}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{FilterWithLocation}}}{}{}
|
||
\sphinxAtStartPar
|
||
Check if a tweet contains \sphinxtitleref{location} metadata.
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{FilterWithPlace() (classe)@\spxentry{FilterWithPlace()}\spxextra{classe}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/frontend/index:FilterWithPlace}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{FilterWithPlace}}}{}{}
|
||
\sphinxAtStartPar
|
||
Check if a tweet contains \sphinxtitleref{place} metadata.
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{FilterInsideMapArea() (classe)@\spxentry{FilterInsideMapArea()}\spxextra{classe}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/frontend/index:FilterInsideMapArea}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{FilterInsideMapArea}}}{}{}
|
||
\sphinxAtStartPar
|
||
Check if a tweet\textquotesingle{}s \sphinxtitleref{location} is inside a \sphinxhref{mailto:\{@link}{\{@link} MapArea\}.
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{FilterInsideTimeRay() (classe)@\spxentry{FilterInsideTimeRay()}\spxextra{classe}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/frontend/index:FilterInsideTimeRay}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{FilterInsideTimeRay}}}{}{}
|
||
\sphinxAtStartPar
|
||
Check if a tweet\textquotesingle{}s \sphinxtitleref{post\_time} is inside a \sphinxhref{mailto:\{@link}{\{@link} TimeRay\}.
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{FilterWithImage() (classe)@\spxentry{FilterWithImage()}\spxextra{classe}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/frontend/index:FilterWithImage}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{FilterWithImage}}}{}{}
|
||
\sphinxAtStartPar
|
||
Check if a tweet has an associated \sphinxtitleref{image\_url}.
|
||
|
||
\end{fulllineitems}
|
||
|
||
\index{FilterIsRetweet() (classe)@\spxentry{FilterIsRetweet()}\spxextra{classe}}
|
||
|
||
\begin{fulllineitems}
|
||
\phantomsection\label{\detokenize{code/frontend/index:FilterIsRetweet}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{FilterIsRetweet}}}{}{}
|
||
\sphinxAtStartPar
|
||
Check if a tweet is a retweet.
|
||
|
||
\end{fulllineitems}
|
||
|
||
|
||
|
||
\chapter{Altri collegamenti}
|
||
\label{\detokenize{index:altri-collegamenti}}\begin{itemize}
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\DUrole{xref,std,std-ref}{genindex}
|
||
|
||
\item {}
|
||
\sphinxAtStartPar
|
||
\DUrole{xref,std,std-ref}{modindex}
|
||
|
||
\end{itemize}
|
||
|
||
|
||
\renewcommand{\indexname}{Indice del modulo Python}
|
||
\begin{sphinxtheindex}
|
||
\let\bigletter\sphinxstyleindexlettergroup
|
||
\bigletter{n}
|
||
\item\relax\sphinxstyleindexentry{nest\_backend}\sphinxstyleindexpageref{code/backend/index:\detokenize{module-nest_backend}}
|
||
\item\relax\sphinxstyleindexentry{nest\_backend.database}\sphinxstyleindexpageref{code/backend/index:\detokenize{module-nest_backend.database}}
|
||
\item\relax\sphinxstyleindexentry{nest\_backend.database.base}\sphinxstyleindexpageref{code/backend/index:\detokenize{module-nest_backend.database.base}}
|
||
\item\relax\sphinxstyleindexentry{nest\_backend.database.tables}\sphinxstyleindexpageref{code/backend/index:\detokenize{module-nest_backend.database.tables}}
|
||
\item\relax\sphinxstyleindexentry{nest\_backend.gestione}\sphinxstyleindexpageref{code/backend/index:\detokenize{module-nest_backend.gestione}}
|
||
\item\relax\sphinxstyleindexentry{nest\_crawler}\sphinxstyleindexpageref{code/crawler/index:\detokenize{module-nest_crawler}}
|
||
\end{sphinxtheindex}
|
||
|
||
\renewcommand{\indexname}{Indice}
|
||
\printindex
|
||
\end{document} |