1
Fork 0
mirror of https://github.com/pds-nest/nest.git synced 2024-11-24 05:54:18 +00:00

Complete installation and updating pages

This commit is contained in:
Steffo 2021-05-29 18:03:44 +02:00
parent 979a5d4176
commit 17f709cea6
Signed by: steffo
GPG key ID: 6965406171929D01
36 changed files with 1161 additions and 335 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -1,9 +1,6 @@
Conclusioni
===========
.. todo::
Scrivere le conclusioni.
"cosa avete imparato, cosa è andato bene, cosa cambiereste"
Abbiamo imparato molto, acquisendo dimestichezza con vari linguaggi o software che prima non conoscevamo.
Un lato che è andato molto bene di questo progetto è stata l'organizzazione e collaborazione tra tutti i membri del gruppo: ciascuno aveva un suo compito e non sono sorti conflitti. In generale questo ha velocizzato molto la lavorazione, e il progetto è proseguito con velocità sostenuta anche per questo.
Alcune di queste attività, come le varie riunioni, sarebbero state più edificanti e veloci se fatte in presenza, ma purtroppo la pandemia e la distanza non lo hanno reso possibile.

View file

@ -1,11 +1,42 @@
Processo di sviluppo
====================
Lo sviluppo è stato suddiviso in 4 sprint, ciascuno della durata di 2 settimane:
Sprint 0 - dal 5 Aprile al 18 Aprile
`Diari`_ dei partecipanti
`Retrospettiva`_ dello sprint 0
.. _Diari: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint0/index.html#registro-attivita
.. _Retrospettiva: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint0/index.html#retrospettiva-finale
Sprint 1 - dal 19 Aprile al 2 Maggio
Burndown dello sprint 1
.. image:: Burndown1.png
:width: 400
`Diari`_ dei partecipanti
`Retrospettiva`_ dello sprint 1
.. _Diari: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint1/index.html#registro-attivita
.. _Retrospettiva: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint1/index.html#retrospettiva-finale
Sprint 2 - dal 3 Maggio al 16 Maggio
Burndown dello sprint 2
.. image:: Burndown2.png
:width: 400
`Diari`_ dei partecipanti
`Retrospettiva`_ dello sprint 2
.. _Diari: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint2/index.html#registro-attivita
.. _Retrospettiva: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint2/index.html#retrospettiva-finale
Sprint 3 - dal 19 Maggio al 30 Maggio
Burndown dello sprint 3
.. image:: Burndown3.png
:width: 400
`Diari`_ dei partecipanti
`Retrospettiva`_ dello sprint 3
.. _Diari: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint3/index.html#registro-attivita
.. _Retrospettiva: http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint3/index.html#retrospettiva-finale
In generale:
Burndown totale
.. image:: Burndown4.png
:width: 400
.. todo::
Descrivere genericamente il processo di sviluppo seguito, includendo:
"numero e durata degli sprint, burndown complessivo, diari dei partecipanti e/o diario di gruppo,
retrospettiva finale"
Visto che i diari e la retrospettiva li abbiamo già altrove, suggerirei di metterci solo un link usando ``:ref:``.
Mi dicono che qui non funzionano alcune robe, mettere a posto
Also, fixare i link interni

View file

@ -470,12 +470,11 @@ Questa statistica è stata generata dal prof. Marcello Missiroli con
.. _Gitinspector: https://github.com/ejwa/gitinspector
Artefatti
---------
Sprint Retrospective
--------------------
In questo sprint è stato realizzato il seguente documento:
- :download:`Documento generale dello Sprint 0 <0-result.pdf>`
- :download:`Sprint 0 Retrospective <sprint-0_retrospective.pdf>`
Sprint review
@ -485,3 +484,10 @@ Il video di sprint review è disponibile al seguente link:
- https://drive.google.com/file/d/12worWEcx-uf2UP4_lnEOovHZpvR77MsG/view
Artefatti
---------
In questo sprint è stato realizzato il seguente documento:
- :download:`Documento generale dello Sprint 0 <0-result.pdf>`

View file

@ -1,11 +1,6 @@
Sprint 1: 19 Apr - 02 Mag
=========================
.. todo::
Inserire informazioni generali sullo sprint, come inizio e fine.
Consegna
--------
@ -17,25 +12,49 @@ La seguente documentazione è stata fornita dal cliente durante questo sprint:
Goal
----
.. todo::
Il **goal** per questo sprint è stato costruire una codebase facilmente mantenibile e modulare, che potesse accomodare grossi
cambiamenti nei sottomoduli senza impattare gli altri:
Inserire qui lo sprint goal.
- Dal punto di vista del **backend**: l'obiettivo è stato predisporre la struttura del database e creare le api calls per illogin degli utenti e la creazione dei repository
- Dal punto di vista del **frontend**: creare la struttura con le componenti importate da figma e implementare le schermate principali
Tutto ciò è visibile dai task completati:
.. image:: Sprint1Task.png
:width: 400
Backlog
-------
.. todo::
.. image:: BacklogSprint1.png
:width: 400
Mostrare qui lo sprint backlog di Taiga.
**Burndown Chart**
.. image:: Chart1.png
:width: 600
Definition of done
Definition of Ready
-------------------
Il team ha definito lo stato di Ready di una User Story in base ai seguenti criteri:
* La User Story è stata compresa ed accettata da tutti i membri
* I tester hanno confermato la possibilità di poterla testare
* Il Product Owner ha la visione necessaria per definirne la priorità
* Il Team è in grado di stimarla
* La User Story è indipendente o dipendente da altre a priorità maggiore
Definition of Done
------------------
.. todo::
La definizione di Done è stata concordata da tutto il team con il Product Owner, ed è stata così definita:
Inserire qui la definition of done dello sprint.
* Sviluppo completo della funzionalità richiesta
* Definizione e superamento dei test
* Bozza della documentazione della funzionalità
* Merge dei sorgenti nel branch ``main`` di GitLab
Registro attività
@ -486,10 +505,19 @@ Questa statistica è stata generata dal prof. Marcello Missiroli con
.. _Gitinspector: https://github.com/ejwa/gitinspector
Sprint retrospective
--------------------
- :download:`Sprint 1 Retrospective <1-retrospective.pdf>`
Sprint review
-------------
.. todo::
Il video di sprint review è disponibile al seguente link:
Inserire un link alla sprint review.
- https://drive.google.com/drive/folders/1dsis_cGCRnVgZAkZjEVIZKt4NndkycaF?usp=sharing
Artefatti
---------
- :download:`Valutazion SM Debito Tecnico <ValutazioneSMDebitoTecnico.md>`
- :download:`Valutazione PO User Stories <valutazionePO__US_realizzate_o_rifiutate.md>`

View file

@ -1,11 +1,6 @@
Sprint 2: 03 Mag - 16 Mag
=========================
.. todo::
Inserire informazioni generali sullo sprint, come inizio e fine.
Consegna
--------
@ -16,26 +11,49 @@ La seguente documentazione è stata fornita dal cliente durante questo sprint:
Goal
----
Il **goal** del secondo sprint è stato la creazione, cancellazione e modifica dei repository, ovvero permettere agli utenti
di creare repo partendo da una ricerca che rispetta determinate condizioni.
.. todo::
Tutto ciò è visibile dai task completati:
.. image:: Sprint2Task.png
:width: 390
Inserire qui lo sprint goal.
Backlog
-------
.. todo::
.. image:: BacklogSprint2.png
:width: 400
Mostrare qui lo sprint backlog di Taiga.
**Burndown Chart**
.. image:: Chart2.png
:width: 600
Definition of done
Definition of Ready
-------------------
Il team ha definito lo stato di Ready di una User Story in base ai seguenti criteri:
* La User Story è stata compresa ed accettata da tutti i membri
* I tester hanno confermato la possibilità di poterla testare
* Il Product Owner ha la visione necessaria per definirne la priorità
* Il Team è in grado di stimarla
* La User Story è indipendente o dipendente da altre a priorità maggiore
Definition of Done
------------------
.. todo::
La definizione di Done è stata concordata da tutto il team con il Product Owner, ed è stata così definita:
* Sviluppo completo della funzionalità richiesta
* Definizione e superamento dei test
* Bozza della documentazione della funzionalità
* Merge dei sorgenti nel branch ``main`` di GitLab
Inserire qui la definition of done dello sprint.
Registro attività
@ -423,9 +441,14 @@ Questa statistica è stata generata dal prof. Marcello Missiroli con
.. _Gitinspector: https://github.com/ejwa/gitinspector
Sprint retrospective
--------------------
- :download:`Sprint 2 Retrospective <RetrospectiveSprint2.pdf>`
Sprint review
-------------
.. todo::
Il video di sprint review è disponibile al seguente link:
Inserire un link alla sprint review.
- https://drive.google.com/file/d/1x1kub-bpVJrwmGrn5LLU8ecqcbxFaoKg/view?usp=sharing

View file

@ -1,11 +1,6 @@
Sprint 3: 17 Mag - 30 Mag
=========================
.. todo::
Inserire informazioni generali sullo sprint, come inizio e fine.
Consegna
--------
@ -18,25 +13,59 @@ La seguente documentazione è stata fornita dal cliente durante questo sprint:
Goal
----
.. todo::
Il **goal** del terzo Sprint è stato far funzionare il crawler, gli alert e completare tutte i task rimanenti.
Tutto ciò è visibile dai task completati:
.. image:: Task3.png
:width: 400
Grooming session
----------------
Sono state definite le nuove **User Stories** da inserire nel progetto sulla base delle nuove richieste pervenute dal cliente:
- analisi statistica più dettagliata
- postare su Twitter
- traduzione dell'interfaccia in inglese.
| La richiesta relativa alle *ricerche basate sulla geolocalizzazione*, come già comunicato al cliente, non è stata inserita per motivi tecnici legati alle features delle **API 1.1** che non permettono di eseguire query sui campi di posizione geografica.
| Le nuove User Stories sono state valutate tramite il metodo dello Scrum Poker, durante il quale ogni membro ha espresso la sua valutazione.
| Tutte le nuove richieste sono state accettate dal Product Owner e sono pronte ad essere inserite nello sprint di sviluppo in partenza.
Inserire qui lo sprint goal.
Backlog
-------
.. image:: Backlog3.png
:width: 400
.. todo::
**Burndown Chart**
Mostrare qui lo sprint backlog di Taiga.
.. image:: Chart3.png
:width: 600
Definition of done
Definition of Ready
-------------------
Il team ha definito lo stato di Ready di una User Story in base ai seguenti criteri:
* La User Story è stata compresa ed accettata da tutti i membri
* I tester hanno confermato la possibilità di poterla testare
* Il Product Owner ha la visione necessaria per definirne la priorità
* Il Team è in grado di stimarla
* La User Story è indipendente o dipendente da altre a priorità maggiore
Definition of Done
------------------
.. todo::
La definizione di Done è stata concordata da tutto il team con il Product Owner, ed è stata così definita:
Inserire qui la definition of done dello sprint.
* Sviluppo completo della funzionalità richiesta
* Definizione e superamento dei test
* Bozza della documentazione della funzionalità
* Merge dei sorgenti nel branch ``main`` di GitLab
Registro attività
@ -81,12 +110,24 @@ Stefano Goldoni
- Durata
- Attività
* -
-
- 14h
- Totale
* -
-
-
* - 21/05
- 2.0h
- Analisi strumenti di test frontend
* - 24/05
- 3.0h
- Inizio test alerts
* - 25/05
- 2.5h
- Test alerts
* - 26/05
- 3.0h
- Test
* - 28/05
- 3.5h
- Test, refactory in base a Sonarqube
Flavia Cocca
@ -99,13 +140,44 @@ Flavia Cocca
- Durata
- Attività
* -
-
- 14h
- Totale
* -
-
-
* - 20/05
- 2.0h
- Trasferimento documenti in nuova documentazione
* - 21/05
- 1.0h
- Studio Sphinx
* - 23/05
- 1.0h
- Studio sintassi rST
* - 24/05
- 1.0h
- Documentazione
* - 25/05
- 1.0h
- Documentazione
* - 26/05
- 1.0h
- Documentazione
* - 27/05
- 1.0h
- Documentazione
* - 28/05
- 3.0h
- Documentazione
* - 29/05
- 3.0h
- Documentazione
Chiara Calzolari
""""""""""""""""
@ -117,12 +189,42 @@ Chiara Calzolari
- Durata
- Attività
* -
-
- 17h 30m
- Totale
* -
-
-
* - 17/05
- 3.0h
- Traduzione UI
* - 17/05
- 1.5h
- Traduzione UI
* - 18/05
- 1.5h
- Traduzione UI
* - 20/05
- 1.0h
- Traduzione UI
* - 22/05
- 1.0h
- Traduzione UI
* - 24/05
- 2.0h
- Traduzione UI
* - 24/05
- 1.0h
- Traduzione UI
* - 25/05
- 1.0h
- Traduzione UI
* - 27/05
- 0.5h
- Traduzione UI
* - 28/05
- 2.0h
- Configurazione ambiente di sviluppo
* - 28/05
- 3.0h
- Creazione video-demo
Stefano Pigozzi
@ -153,12 +255,45 @@ Giovanni Anniballi
- Durata
- Attività
* -
-
- 18h
- Totale
* -
-
-
* - 17/05
- 1h
- Ricontrollo generale codice, fix piccoli typo
* - 18/05
- 1h
- Aggiornati files di log e refactoring documentazione
* - 21/05
- 2h
- Studio Jest, valutazione di test sul frontend
* - 24/05
- 3h
- Primi test sulle autorizzazioni
* - 26/05
- 2h
- Fix ai test
* - 27/05
- 2h
- Test autorizzazioni completati, fix
* - 28/05
- 4h
- Fix test malfunzionanti, refactoring test
* - 29/05
- 3h
- Aggiornamento documentazione, aggiunti ulteriori test seguendo i suggerimenti di SQ
Giorgio Minoccari
@ -189,12 +324,33 @@ Lorenzo Balugani
- Durata
- Attività
* -
-
- 22h
- Totale
* -
-
-
* - 17/05
- 4h
- Bugfixing, supporto alla localizzazione degli errori
* - 18/05
- 3h
- Bugfixing
* - 20/05
- 3h
- API autorizzazioni, refactoring
* - 21/05
- 2h
- Gestione tweet, rappresentazione tweet
* - 24/05
- 2h
- Bugfixing
* - 25/05
- 4h
- Docs, refactoring
* - 27/05
- 3h
- Bugfixing
* - 28/05
- 6h
- Bugfixing
Statistiche
@ -219,6 +375,9 @@ Retrospettiva finale
Schermata finale di SonarQube
-----------------------------
.. todo::
- :download:`Schermata finale Sonarqube <sonarqube.pdf>`
Inserire qui uno screenshot della schermata finale di SonarQube.
Demo
----
- https://drive.google.com/file/d/15o70Ffe51CNj8LTKHC9dGiqRVnbv9UpZ/view?usp=sharing

View file

@ -1,6 +1,15 @@
Suggerimenti relativi al corso
==============================
* Il *team* concorda **sull'utilità del progetto** poiché permette di utlizzare le nozioni viste a lezione praticamente (le varie metodologie da adottare e le problematiche in cui si può incorrere).
* Il *team* concorda nel dire che **il progetto è eccessivamente corposo**:
* Tecnicamente a 6 cfu dovrebbero corrispondere circa 125 ore di lavoro, mentre questo progetto ne ha richieste molte di più.
* Suggeriamo quindi di alleggerire il carico di lavoro, e renderlo più proporzionale ai crediti assegnati.
* Il *team* suggerisce di **utilizzare GitHub al posto di Gitlab**, poiché più comodo e funzionale.
* Il *team* concorda nel dire che sarebbe molto utile la **partecipazione diretta del prof** durante le prime fasi di progetto, all'inizio del lavoro, per instradare il gruppo nella giusta direzione ed evitare l'effetto "salto nel buio":
* Sarebbe stato piacevole avere una buona spiegazione delle regole dello Scrumble
* Avere qualche lezione più specifica sui tool da utilizzare (sonarqube ecc..)
.. todo::
Che suggerimenti avete da dare al prof. Missiroli? :)

View file

@ -19,6 +19,8 @@ Per installare ed eseguire N.E.S.T., è necessario:
- `Poetry ^1.0 <https://python-poetry.org/>`_
- `NodeJS ^16.0 <https://nodejs.org/>`_
- `npm ^7.13.0 <https://www.npmjs.com/>`_
- Un mail server (interno o esterno) che supporti
l'`SMTP <https://it.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol>`_
Creare un nuovo utente
@ -280,17 +282,143 @@ Si abiliti il servizio, in modo che venga automaticamente avviato al riavvio del
Creare un servizio SystemD per il crawler
-----------------------------------------
.. todo::
Perchè i repository vengano popolati di Tweet, è necessario configurare il crawler come servizio di *SystemD*:
Scrivere una guida all'installazione di un servizio SystemD per il crawler.
.. code-block:: console
root:~# systemctl edit --force --full nest-crawler
All'interno del file, inserire le seguenti direttive:
.. code-block:: systemd
[Unit]
Description=N.E.S.T. Crawler
Wants=network-online.target nest-backend.service
After=network-online.target nss-lookup.target nest-backend.service
[Service]
Type=exec
Environment=FLASK_CONFIG=../config.py
User=nest
Group=nest
WorkingDirectory=/srv/nest/g2-progetto
# Si sostituisca a questo il percorso del virtualenv creato in precedenza da Poetry
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
ExecStart=/srv/nest/.cache/pypoetry/virtualenvs/nest-7C2fm2VD-py3.9/bin/python -m nest_crawler
[Install]
WantedBy=multi-user.target
Configurare il crawler
----------------------
.. note::
Per utilizzare gli API di Twitter, è necessario essere approvati dal supporto tecnico di Twitter.
È dunque necessario `fare richiesta <https://developer.twitter.com/en/apply-for-access>`_, e sarà possibile
procedere con l'installazione solo una volta ricevute le credenziali per l'utilizzo.
Per impostare le variabili di ambiente richieste dal crawler, si suggerisce di creare un *file di override* di SystemD:
.. code-block:: console
root:~# systemctl edit nest-crawler
All'interno del file, inserire le seguenti direttive:
.. code-block:: systemd
[Service]
# Sostituire a questi caratteri la Consumer Key ricevuta da Twitter
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Environment=C_K=0000000000000000000000000
# Sostituire a questi caratteri il Consumer Secret ricevuto da Twitter
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Environment=C_S=00000000000000000000000000000000000000000000000000
# Sostituire a questi caratteri l'Access Token ricevuto da Twitter
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Environment=A_T=00000000000000000000000000000000000000000000000000
# Sostituire a questi caratteri l'Access Token Secret ricevuto da Twitter
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Environment=A_T_S=000000000000000000000000000000000000000000000
# Sostituire con l'indirizzo del proprio SMTP mail server
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Environment=SMTP_HOST=mail.gandi.net
# Sostituire con le proprie credenziali dell'SMTP mail server
# ↓↓↓↓↓↓↓↓↓↓↓↓
Environment=SMTP_USERNAME=bot@ryg.one
# ↓↓↓↓↓↓↓↓
Environment=SMTP_PASSWORD=password
# Sostituire con l'email da cui si desidera che vengano inviate le allerte
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Environment=SMTP_FROM_EMAIL=nest-bot@ryg.one
Ora, si verifichi che il servizio si avvii correttamente eseguendolo manualmente con:
.. code-block:: console
root:~# systemctl start nest-crawler
Nel log di sistema non dovrebbe comparire nessun errore:
.. code-block:: console
root:~# journalctl nest-crawler
Creare un timer SystemD per il crawler
-----------------------------------------
.. todo::
Per fare in modo che il crawler venga eseguito periodicamente, si suggerisce di configurare un timer SystemD:
Scrivere una guida all'esecuzione ripetuta del crawler attraverso un timer SystemD.
.. code-block:: console
root:~# systemctl edit --force --full nest-crawler.timer
Si inseriscano all'interno del file le seguenti direttive:
.. code-block:: systemd
[Unit]
Description=Run nest-crawler every 60 minutes
[Timer]
OnBootSec=60min
OnUnitActiveSec=60min
Unit=nest-crawler.service
[Install]
WantedBy=timers.target
Ora, si verifichi che il timer si avvii correttamente eseguendolo manualmente con:
.. code-block:: console
root:~# systemctl start nest-crawler.timer
Nello stato del timer non dovrebbe comparire nessun errore:
.. code-block:: console
root:~# systemctl status nest-crawler.timer
Si abiliti il timer, in modo che venga automaticamente avviato al riavvio del sistema:
.. code-block:: console
root:~# systemctl enable nest-crawler.timer
Configurare Apache come reverse proxy

View file

@ -9,6 +9,7 @@ Benvenuto alla documentazione di N.E.S.T.!
guide/about
guide/installation
guide/updating
.. toctree::
@ -28,6 +29,7 @@ Benvenuto alla documentazione di N.E.S.T.!
.. toctree::
:maxdepth: 2
:caption: Documentazione tecnica
code/meta/index
@ -37,12 +39,6 @@ Benvenuto alla documentazione di N.E.S.T.!
code/frontend/index
.. toctree::
:hidden:
development/clientinterview
Cose rimaste da fare
--------------------

View file

@ -180,13 +180,9 @@
<div class="section" id="conclusioni">
<h1>Conclusioni<a class="headerlink" href="#conclusioni" title="Link a questa intestazione"></a></h1>
<div class="admonition-todo admonition" id="id1">
<p class="admonition-title">Da fare</p>
<p>Scrivere le conclusioni.</p>
<blockquote>
<div><p>«cosa avete imparato, cosa è andato bene, cosa cambiereste»</p>
</div></blockquote>
</div>
<p>Abbiamo imparato molto, acquisendo dimestichezza con vari linguaggi o software che prima non conoscevamo.
Un lato che è andato molto bene di questo progetto è stata lorganizzazione e collaborazione tra tutti i membri del gruppo: ciascuno aveva un suo compito e non sono sorti conflitti. In generale questo ha velocizzato molto la lavorazione, e il progetto è proseguito con velocità sostenuta anche per questo.
Alcune di queste attività, come le varie riunioni, sarebbero state più edificanti e veloci se fatte in presenza, ma purtroppo la pandemia e la distanza non lo hanno reso possibile.</p>
</div>

View file

@ -180,14 +180,72 @@
<div class="section" id="processo-di-sviluppo">
<h1>Processo di sviluppo<a class="headerlink" href="#processo-di-sviluppo" title="Link a questa intestazione"></a></h1>
<p>Lo sviluppo è stato suddiviso in 4 sprint, ciascuno della durata di 2 settimane:
Sprint 0 - dal 5 Aprile al 18 Aprile</p>
<div class="system-message">
<p class="system-message-title">System Message: ERROR/3 (<span class="docutils literal">/mnt/tera/ext4/code/g2-progetto-2/docs/source/development/process.rst</span>, line 6)</p>
<p>Unexpected indentation.</p>
</div>
<blockquote>
<div><p><a href="#id2"><span class="problematic" id="id3">`Diari`_</span></a> dei partecipanti
<a href="#id4"><span class="problematic" id="id5">`Retrospettiva`_</span></a> dello sprint 0
.. _Diari: <a class="reference external" href="http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint0/index.html#registro-attivita">http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint0/index.html#registro-attivita</a>
.. _Retrospettiva: <a class="reference external" href="http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint0/index.html#retrospettiva-finale">http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint0/index.html#retrospettiva-finale</a></p>
</div></blockquote>
<div class="system-message">
<p class="system-message-title">System Message: WARNING/2 (<span class="docutils literal">/mnt/tera/ext4/code/g2-progetto-2/docs/source/development/process.rst</span>, line 10)</p>
<p>Block quote ends without a blank line; unexpected unindent.</p>
</div>
<dl>
<dt>Sprint 1 - dal 19 Aprile al 2 Maggio</dt><dd><dl>
<dt>Burndown dello sprint 1</dt><dd><a class="reference internal image-reference" href="../_images/Burndown1.png"><img alt="../_images/Burndown1.png" src="../_images/Burndown1.png" style="width: 400px;" /></a>
</dd>
</dl>
<div class="system-message">
<p class="system-message-title">System Message: WARNING/2 (<span class="docutils literal">/mnt/tera/ext4/code/g2-progetto-2/docs/source/development/process.rst</span>, line 14)</p>
<p>Definition list ends without a blank line; unexpected unindent.</p>
</div>
<p><a href="#id6"><span class="problematic" id="id7">`Diari`_</span></a> dei partecipanti
<a href="#id8"><span class="problematic" id="id9">`Retrospettiva`_</span></a> dello sprint 1
.. _Diari: <a class="reference external" href="http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint1/index.html#registro-attivita">http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint1/index.html#registro-attivita</a>
.. _Retrospettiva: <a class="reference external" href="http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint1/index.html#retrospettiva-finale">http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint1/index.html#retrospettiva-finale</a></p>
</dd>
<dt>Sprint 2 - dal 3 Maggio al 16 Maggio</dt><dd><dl>
<dt>Burndown dello sprint 2</dt><dd><a class="reference internal image-reference" href="../_images/Burndown2.png"><img alt="../_images/Burndown2.png" src="../_images/Burndown2.png" style="width: 400px;" /></a>
</dd>
</dl>
<div class="system-message">
<p class="system-message-title">System Message: WARNING/2 (<span class="docutils literal">/mnt/tera/ext4/code/g2-progetto-2/docs/source/development/process.rst</span>, line 22)</p>
<p>Definition list ends without a blank line; unexpected unindent.</p>
</div>
<p><a href="#id10"><span class="problematic" id="id11">`Diari`_</span></a> dei partecipanti
<a href="#id12"><span class="problematic" id="id13">`Retrospettiva`_</span></a> dello sprint 2
.. _Diari: <a class="reference external" href="http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint2/index.html#registro-attivita">http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint2/index.html#registro-attivita</a>
.. _Retrospettiva: <a class="reference external" href="http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint2/index.html#retrospettiva-finale">http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint2/index.html#retrospettiva-finale</a></p>
</dd>
<dt>Sprint 3 - dal 19 Maggio al 30 Maggio</dt><dd><dl>
<dt>Burndown dello sprint 3</dt><dd><a class="reference internal image-reference" href="../_images/Burndown3.png"><img alt="../_images/Burndown3.png" src="../_images/Burndown3.png" style="width: 400px;" /></a>
</dd>
</dl>
<div class="system-message">
<p class="system-message-title">System Message: WARNING/2 (<span class="docutils literal">/mnt/tera/ext4/code/g2-progetto-2/docs/source/development/process.rst</span>, line 30)</p>
<p>Definition list ends without a blank line; unexpected unindent.</p>
</div>
<p><a href="#id14"><span class="problematic" id="id15">`Diari`_</span></a> dei partecipanti
<a href="#id16"><span class="problematic" id="id17">`Retrospettiva`_</span></a> dello sprint 3
.. _Diari: <a class="reference external" href="http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint3/index.html#registro-attivita">http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint3/index.html#registro-attivita</a>
.. _Retrospettiva: <a class="reference external" href="http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint3/index.html#retrospettiva-finale">http://localhost:63342/N.E.S.T./Modulo%20unico/docs/build/html/development/sprint3/index.html#retrospettiva-finale</a></p>
</dd>
<dt>In generale:</dt><dd><dl>
<dt>Burndown totale</dt><dd><a class="reference internal image-reference" href="../_images/Burndown4.png"><img alt="../_images/Burndown4.png" src="../_images/Burndown4.png" style="width: 400px;" /></a>
</dd>
</dl>
</dd>
</dl>
<div class="admonition-todo admonition" id="id1">
<p class="admonition-title">Da fare</p>
<p>Descrivere genericamente il processo di sviluppo seguito, includendo:</p>
<blockquote>
<div><p>«numero e durata degli sprint, burndown complessivo, diari dei partecipanti e/o diario di gruppo,
retrospettiva finale»</p>
</div></blockquote>
<p>Visto che i diari e la retrospettiva li abbiamo già altrove, suggerirei di metterci solo un link usando <code class="docutils literal notranslate"><span class="pre">:ref:</span></code>.</p>
<p>Mi dicono che qui non funzionano alcune robe, mettere a posto
Also, fixare i link interni</p>
</div>
</div>

View file

@ -119,8 +119,9 @@
<li class="toctree-l3"><a class="reference internal" href="#gitinspector">Gitinspector</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#artefatti">Artefatti</a></li>
<li class="toctree-l2"><a class="reference internal" href="#sprint-retrospective">Sprint Retrospective</a></li>
<li class="toctree-l2"><a class="reference internal" href="#sprint-review">Sprint review</a></li>
<li class="toctree-l2"><a class="reference internal" href="#artefatti">Artefatti</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../sprint1/index.html">Sprint 1: 19 Apr - 02 Mag</a></li>
@ -1171,11 +1172,10 @@ definita:</p>
</ul>
</div>
</div>
<div class="section" id="artefatti">
<h2>Artefatti<a class="headerlink" href="#artefatti" title="Link a questa intestazione"></a></h2>
<p>In questo sprint è stato realizzato il seguente documento:</p>
<div class="section" id="sprint-retrospective">
<h2>Sprint Retrospective<a class="headerlink" href="#sprint-retrospective" title="Link a questa intestazione"></a></h2>
<ul class="simple">
<li><p><a class="reference download internal" download="" href="../../_downloads/d8e10120028bfd129b2cd34bea08128f/0-result.pdf"><code class="xref download docutils literal notranslate"><span class="pre">Documento</span> <span class="pre">generale</span> <span class="pre">dello</span> <span class="pre">Sprint</span> <span class="pre">0</span></code></a></p></li>
<li><p><a class="reference download internal" download="" href="../../_downloads/2ef8733545ae04f32e2402496e5203a3/sprint-0_retrospective.pdf"><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">0</span> <span class="pre">Retrospective</span></code></a></p></li>
</ul>
</div>
<div class="section" id="sprint-review">
@ -1185,6 +1185,13 @@ definita:</p>
<li><p><a class="reference external" href="https://drive.google.com/file/d/12worWEcx-uf2UP4_lnEOovHZpvR77MsG/view">https://drive.google.com/file/d/12worWEcx-uf2UP4_lnEOovHZpvR77MsG/view</a></p></li>
</ul>
</div>
<div class="section" id="artefatti">
<h2>Artefatti<a class="headerlink" href="#artefatti" title="Link a questa intestazione"></a></h2>
<p>In questo sprint è stato realizzato il seguente documento:</p>
<ul class="simple">
<li><p><a class="reference download internal" download="" href="../../_downloads/d8e10120028bfd129b2cd34bea08128f/0-result.pdf"><code class="xref download docutils literal notranslate"><span class="pre">Documento</span> <span class="pre">generale</span> <span class="pre">dello</span> <span class="pre">Sprint</span> <span class="pre">0</span></code></a></p></li>
</ul>
</div>
</div>

View file

@ -101,7 +101,8 @@
<li class="toctree-l2"><a class="reference internal" href="#consegna">Consegna</a></li>
<li class="toctree-l2"><a class="reference internal" href="#goal">Goal</a></li>
<li class="toctree-l2"><a class="reference internal" href="#backlog">Backlog</a></li>
<li class="toctree-l2"><a class="reference internal" href="#definition-of-done">Definition of done</a></li>
<li class="toctree-l2"><a class="reference internal" href="#definition-of-ready">Definition of Ready</a></li>
<li class="toctree-l2"><a class="reference internal" href="#definition-of-done">Definition of Done</a></li>
<li class="toctree-l2"><a class="reference internal" href="#registro-attivita">Registro attività</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#riunioni-collettive">Riunioni collettive</a></li>
<li class="toctree-l3"><a class="reference internal" href="#attivita-individuali">Attività individuali</a><ul>
@ -120,7 +121,9 @@
<li class="toctree-l3"><a class="reference internal" href="#gitinspector">Gitinspector</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#sprint-retrospective">Sprint retrospective</a></li>
<li class="toctree-l2"><a class="reference internal" href="#sprint-review">Sprint review</a></li>
<li class="toctree-l2"><a class="reference internal" href="#artefatti">Artefatti</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../sprint2/index.html">Sprint 2: 03 Mag - 16 Mag</a></li>
@ -205,10 +208,6 @@
<div class="section" id="sprint-1-19-apr-02-mag">
<h1>Sprint 1: 19 Apr - 02 Mag<a class="headerlink" href="#sprint-1-19-apr-02-mag" title="Link a questa intestazione"></a></h1>
<div class="admonition-todo admonition" id="id1">
<p class="admonition-title">Da fare</p>
<p>Inserire informazioni generali sullo sprint, come inizio e fine.</p>
</div>
<div class="section" id="consegna">
<h2>Consegna<a class="headerlink" href="#consegna" title="Link a questa intestazione"></a></h2>
<p>La seguente documentazione è stata fornita dal cliente durante questo sprint:</p>
@ -218,24 +217,41 @@
</div>
<div class="section" id="goal">
<h2>Goal<a class="headerlink" href="#goal" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id2">
<p class="admonition-title">Da fare</p>
<p>Inserire qui lo sprint goal.</p>
</div>
<p>Il <strong>goal</strong> per questo sprint è stato costruire una codebase facilmente mantenibile e modulare, che potesse accomodare grossi
cambiamenti nei sottomoduli senza impattare gli altri:</p>
<ul class="simple">
<li><p>Dal punto di vista del <strong>backend</strong>: lobiettivo è stato predisporre la struttura del database e creare le api calls per illogin degli utenti e la creazione dei repository</p></li>
<li><p>Dal punto di vista del <strong>frontend</strong>: creare la struttura con le componenti importate da figma e implementare le schermate principali</p></li>
</ul>
<p>Tutto ciò è visibile dai task completati:</p>
<a class="reference internal image-reference" href="../../_images/Sprint1Task.png"><img alt="../../_images/Sprint1Task.png" src="../../_images/Sprint1Task.png" style="width: 400px;" /></a>
</div>
<div class="section" id="backlog">
<h2>Backlog<a class="headerlink" href="#backlog" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id3">
<p class="admonition-title">Da fare</p>
<p>Mostrare qui lo sprint backlog di Taiga.</p>
<a class="reference internal image-reference" href="../../_images/BacklogSprint1.png"><img alt="../../_images/BacklogSprint1.png" src="../../_images/BacklogSprint1.png" style="width: 400px;" /></a>
<p><strong>Burndown Chart</strong></p>
<a class="reference internal image-reference" href="../../_images/Chart1.png"><img alt="../../_images/Chart1.png" src="../../_images/Chart1.png" style="width: 600px;" /></a>
</div>
<div class="section" id="definition-of-ready">
<h2>Definition of Ready<a class="headerlink" href="#definition-of-ready" title="Link a questa intestazione"></a></h2>
<p>Il team ha definito lo stato di Ready di una User Story in base ai seguenti criteri:</p>
<ul class="simple">
<li><p>La User Story è stata compresa ed accettata da tutti i membri</p></li>
<li><p>I tester hanno confermato la possibilità di poterla testare</p></li>
<li><p>Il Product Owner ha la visione necessaria per definirne la priorità</p></li>
<li><p>Il Team è in grado di stimarla</p></li>
<li><p>La User Story è indipendente o dipendente da altre a priorità maggiore</p></li>
</ul>
</div>
<div class="section" id="definition-of-done">
<h2>Definition of done<a class="headerlink" href="#definition-of-done" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id4">
<p class="admonition-title">Da fare</p>
<p>Inserire qui la definition of done dello sprint.</p>
</div>
<h2>Definition of Done<a class="headerlink" href="#definition-of-done" title="Link a questa intestazione"></a></h2>
<p>La definizione di Done è stata concordata da tutto il team con il Product Owner, ed è stata così definita:</p>
<ul class="simple">
<li><p>Sviluppo completo della funzionalità richiesta</p></li>
<li><p>Definizione e superamento dei test</p></li>
<li><p>Bozza della documentazione della funzionalità</p></li>
<li><p>Merge dei sorgenti nel branch <code class="docutils literal notranslate"><span class="pre">main</span></code> di GitLab</p></li>
</ul>
</div>
<div class="section" id="registro-attivita">
<h2>Registro attività<a class="headerlink" href="#registro-attivita" title="Link a questa intestazione"></a></h2>
@ -836,12 +852,25 @@
</ul>
</div>
</div>
<div class="section" id="sprint-retrospective">
<h2>Sprint retrospective<a class="headerlink" href="#sprint-retrospective" title="Link a questa intestazione"></a></h2>
<ul class="simple">
<li><p><a class="reference download internal" download="" href="../../_downloads/0a034db869a28558a2be85af6a9d75cf/1-retrospective.pdf"><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">1</span> <span class="pre">Retrospective</span></code></a></p></li>
</ul>
</div>
<div class="section" id="sprint-review">
<h2>Sprint review<a class="headerlink" href="#sprint-review" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id6">
<p class="admonition-title">Da fare</p>
<p>Inserire un link alla sprint review.</p>
<p>Il video di sprint review è disponibile al seguente link:</p>
<ul class="simple">
<li><p><a class="reference external" href="https://drive.google.com/drive/folders/1dsis_cGCRnVgZAkZjEVIZKt4NndkycaF?usp=sharing">https://drive.google.com/drive/folders/1dsis_cGCRnVgZAkZjEVIZKt4NndkycaF?usp=sharing</a></p></li>
</ul>
</div>
<div class="section" id="artefatti">
<h2>Artefatti<a class="headerlink" href="#artefatti" title="Link a questa intestazione"></a></h2>
<ul class="simple">
<li><p><a class="reference download internal" download="" href="../../_downloads/d8c4da33d05b63a3cd53bacae9c0a087/ValutazioneSMDebitoTecnico.md"><code class="xref download docutils literal notranslate"><span class="pre">Valutazion</span> <span class="pre">SM</span> <span class="pre">Debito</span> <span class="pre">Tecnico</span></code></a></p></li>
<li><p><a class="reference download internal" download="" href="../../_downloads/54a2c0ccf5ec9b97f97930a108b4737d/valutazionePO__US_realizzate_o_rifiutate.md"><code class="xref download docutils literal notranslate"><span class="pre">Valutazione</span> <span class="pre">PO</span> <span class="pre">User</span> <span class="pre">Stories</span></code></a></p></li>
</ul>
</div>
</div>

View file

@ -90,6 +90,7 @@
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../guide/about.html">Il progetto in breve</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../guide/installation.html">Installazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../guide/updating.html">Aggiornamento</a></li>
</ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul class="current">
@ -102,7 +103,8 @@
<li class="toctree-l2"><a class="reference internal" href="#consegna">Consegna</a></li>
<li class="toctree-l2"><a class="reference internal" href="#goal">Goal</a></li>
<li class="toctree-l2"><a class="reference internal" href="#backlog">Backlog</a></li>
<li class="toctree-l2"><a class="reference internal" href="#definition-of-done">Definition of done</a></li>
<li class="toctree-l2"><a class="reference internal" href="#definition-of-ready">Definition of Ready</a></li>
<li class="toctree-l2"><a class="reference internal" href="#definition-of-done">Definition of Done</a></li>
<li class="toctree-l2"><a class="reference internal" href="#registro-attivita">Registro attività</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#riunioni-collettive">Riunioni collettive</a></li>
<li class="toctree-l3"><a class="reference internal" href="#attivita-individuali">Attività individuali</a><ul>
@ -121,6 +123,7 @@
<li class="toctree-l3"><a class="reference internal" href="#gitinspector">Gitinspector</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#sprint-retrospective">Sprint retrospective</a></li>
<li class="toctree-l2"><a class="reference internal" href="#sprint-review">Sprint review</a></li>
</ul>
</li>
@ -205,10 +208,6 @@
<div class="section" id="sprint-2-03-mag-16-mag">
<h1>Sprint 2: 03 Mag - 16 Mag<a class="headerlink" href="#sprint-2-03-mag-16-mag" title="Link a questa intestazione"></a></h1>
<div class="admonition-todo admonition" id="id1">
<p class="admonition-title">Da fare</p>
<p>Inserire informazioni generali sullo sprint, come inizio e fine.</p>
</div>
<div class="section" id="consegna">
<h2>Consegna<a class="headerlink" href="#consegna" title="Link a questa intestazione"></a></h2>
<p>La seguente documentazione è stata fornita dal cliente durante questo sprint:</p>
@ -218,24 +217,37 @@
</div>
<div class="section" id="goal">
<h2>Goal<a class="headerlink" href="#goal" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id2">
<p class="admonition-title">Da fare</p>
<p>Inserire qui lo sprint goal.</p>
</div>
<p>Il <strong>goal</strong> del secondo sprint è stato la creazione, cancellazione e modifica dei repository, ovvero permettere agli utenti
di creare repo partendo da una ricerca che rispetta determinate condizioni.</p>
<p>Tutto ciò è visibile dai task completati:</p>
<a class="reference internal image-reference" href="../../_images/Sprint2Task.png"><img alt="../../_images/Sprint2Task.png" src="../../_images/Sprint2Task.png" style="width: 390px;" /></a>
</div>
<div class="section" id="backlog">
<h2>Backlog<a class="headerlink" href="#backlog" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id3">
<p class="admonition-title">Da fare</p>
<p>Mostrare qui lo sprint backlog di Taiga.</p>
<a class="reference internal image-reference" href="development/sprint2/BacklogSprint2.png"><img alt="development/sprint2/BacklogSprint2.png" src="development/sprint2/BacklogSprint2.png" style="width: 400px;" /></a>
<p><strong>Burndown Chart</strong></p>
<a class="reference internal image-reference" href="../../_images/Chart2.png"><img alt="../../_images/Chart2.png" src="../../_images/Chart2.png" style="width: 600px;" /></a>
</div>
<div class="section" id="definition-of-ready">
<h2>Definition of Ready<a class="headerlink" href="#definition-of-ready" title="Link a questa intestazione"></a></h2>
<p>Il team ha definito lo stato di Ready di una User Story in base ai seguenti criteri:</p>
<ul class="simple">
<li><p>La User Story è stata compresa ed accettata da tutti i membri</p></li>
<li><p>I tester hanno confermato la possibilità di poterla testare</p></li>
<li><p>Il Product Owner ha la visione necessaria per definirne la priorità</p></li>
<li><p>Il Team è in grado di stimarla</p></li>
<li><p>La User Story è indipendente o dipendente da altre a priorità maggiore</p></li>
</ul>
</div>
<div class="section" id="definition-of-done">
<h2>Definition of done<a class="headerlink" href="#definition-of-done" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id4">
<p class="admonition-title">Da fare</p>
<p>Inserire qui la definition of done dello sprint.</p>
</div>
<h2>Definition of Done<a class="headerlink" href="#definition-of-done" title="Link a questa intestazione"></a></h2>
<p>La definizione di Done è stata concordata da tutto il team con il Product Owner, ed è stata così definita:</p>
<ul class="simple">
<li><p>Sviluppo completo della funzionalità richiesta</p></li>
<li><p>Definizione e superamento dei test</p></li>
<li><p>Bozza della documentazione della funzionalità</p></li>
<li><p>Merge dei sorgenti nel branch <code class="docutils literal notranslate"><span class="pre">main</span></code> di GitLab</p></li>
</ul>
</div>
<div class="section" id="registro-attivita">
<h2>Registro attività<a class="headerlink" href="#registro-attivita" title="Link a questa intestazione"></a></h2>
@ -755,12 +767,18 @@
</ul>
</div>
</div>
<div class="section" id="sprint-retrospective">
<h2>Sprint retrospective<a class="headerlink" href="#sprint-retrospective" title="Link a questa intestazione"></a></h2>
<ul class="simple">
<li><p><a class="reference download internal" download="" href="../../_downloads/d7da8958e80992420c2b0eef73947059/RetrospectiveSprint2.pdf"><code class="xref download docutils literal notranslate"><span class="pre">Sprint</span> <span class="pre">2</span> <span class="pre">Retrospective</span></code></a></p></li>
</ul>
</div>
<div class="section" id="sprint-review">
<h2>Sprint review<a class="headerlink" href="#sprint-review" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id6">
<p class="admonition-title">Da fare</p>
<p>Inserire un link alla sprint review.</p>
</div>
<p>Il video di sprint review è disponibile al seguente link:</p>
<ul class="simple">
<li><p><a class="reference external" href="https://drive.google.com/file/d/1x1kub-bpVJrwmGrn5LLU8ecqcbxFaoKg/view?usp=sharing">https://drive.google.com/file/d/1x1kub-bpVJrwmGrn5LLU8ecqcbxFaoKg/view?usp=sharing</a></p></li>
</ul>
</div>
</div>

View file

@ -102,8 +102,10 @@
<li class="toctree-l1 current"><a class="current reference internal" href="#">Sprint 3: 17 Mag - 30 Mag</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#consegna">Consegna</a></li>
<li class="toctree-l2"><a class="reference internal" href="#goal">Goal</a></li>
<li class="toctree-l2"><a class="reference internal" href="#grooming-session">Grooming session</a></li>
<li class="toctree-l2"><a class="reference internal" href="#backlog">Backlog</a></li>
<li class="toctree-l2"><a class="reference internal" href="#definition-of-done">Definition of done</a></li>
<li class="toctree-l2"><a class="reference internal" href="#definition-of-ready">Definition of Ready</a></li>
<li class="toctree-l2"><a class="reference internal" href="#definition-of-done">Definition of Done</a></li>
<li class="toctree-l2"><a class="reference internal" href="#registro-attivita">Registro attività</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#riunioni-collettive">Riunioni collettive</a></li>
<li class="toctree-l3"><a class="reference internal" href="#attivita-individuali">Attività individuali</a><ul>
@ -124,6 +126,7 @@
</li>
<li class="toctree-l2"><a class="reference internal" href="#retrospettiva-finale">Retrospettiva finale</a></li>
<li class="toctree-l2"><a class="reference internal" href="#schermata-finale-di-sonarqube">Schermata finale di SonarQube</a></li>
<li class="toctree-l2"><a class="reference internal" href="#demo">Demo</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../artifacts.html">Artefatti</a></li>
@ -206,10 +209,6 @@
<div class="section" id="sprint-3-17-mag-30-mag">
<h1>Sprint 3: 17 Mag - 30 Mag<a class="headerlink" href="#sprint-3-17-mag-30-mag" title="Link a questa intestazione"></a></h1>
<div class="admonition-todo admonition" id="id1">
<p class="admonition-title">Da fare</p>
<p>Inserire informazioni generali sullo sprint, come inizio e fine.</p>
</div>
<div class="section" id="consegna">
<h2>Consegna<a class="headerlink" href="#consegna" title="Link a questa intestazione"></a></h2>
<p>La seguente documentazione è stata fornita dal cliente durante questo sprint:</p>
@ -220,28 +219,54 @@
</div>
<div class="section" id="goal">
<h2>Goal<a class="headerlink" href="#goal" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id2">
<p class="admonition-title">Da fare</p>
<p>Inserire qui lo sprint goal.</p>
<p>Il <strong>goal</strong> del terzo Sprint è stato far funzionare il crawler, gli alert e completare tutte i task rimanenti.</p>
<p>Tutto ciò è visibile dai task completati:</p>
<a class="reference internal image-reference" href="../../_images/Task3.png"><img alt="../../_images/Task3.png" src="../../_images/Task3.png" style="width: 400px;" /></a>
</div>
<div class="section" id="grooming-session">
<h2>Grooming session<a class="headerlink" href="#grooming-session" title="Link a questa intestazione"></a></h2>
<p>Sono state definite le nuove <strong>User Stories</strong> da inserire nel progetto sulla base delle nuove richieste pervenute dal cliente:</p>
<ul class="simple">
<li><p>analisi statistica più dettagliata</p></li>
<li><p>postare su Twitter</p></li>
<li><p>traduzione dellinterfaccia in inglese.</p></li>
</ul>
<div class="line-block">
<div class="line">La richiesta relativa alle <em>ricerche basate sulla geolocalizzazione</em>, come già comunicato al cliente, non è stata inserita per motivi tecnici legati alle features delle <strong>API 1.1</strong> che non permettono di eseguire query sui campi di posizione geografica.</div>
<div class="line">Le nuove User Stories sono state valutate tramite il metodo dello Scrum Poker, durante il quale ogni membro ha espresso la sua valutazione.</div>
<div class="line">Tutte le nuove richieste sono state accettate dal Product Owner e sono pronte ad essere inserite nello sprint di sviluppo in partenza.</div>
</div>
</div>
<div class="section" id="backlog">
<h2>Backlog<a class="headerlink" href="#backlog" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id3">
<p class="admonition-title">Da fare</p>
<p>Mostrare qui lo sprint backlog di Taiga.</p>
<a class="reference internal image-reference" href="../../_images/Backlog3.png"><img alt="../../_images/Backlog3.png" src="../../_images/Backlog3.png" style="width: 400px;" /></a>
<p><strong>Burndown Chart</strong></p>
<a class="reference internal image-reference" href="../../_images/Chart3.png"><img alt="../../_images/Chart3.png" src="../../_images/Chart3.png" style="width: 600px;" /></a>
</div>
<div class="section" id="definition-of-ready">
<h2>Definition of Ready<a class="headerlink" href="#definition-of-ready" title="Link a questa intestazione"></a></h2>
<p>Il team ha definito lo stato di Ready di una User Story in base ai seguenti criteri:</p>
<ul class="simple">
<li><p>La User Story è stata compresa ed accettata da tutti i membri</p></li>
<li><p>I tester hanno confermato la possibilità di poterla testare</p></li>
<li><p>Il Product Owner ha la visione necessaria per definirne la priorità</p></li>
<li><p>Il Team è in grado di stimarla</p></li>
<li><p>La User Story è indipendente o dipendente da altre a priorità maggiore</p></li>
</ul>
</div>
<div class="section" id="definition-of-done">
<h2>Definition of done<a class="headerlink" href="#definition-of-done" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id4">
<p class="admonition-title">Da fare</p>
<p>Inserire qui la definition of done dello sprint.</p>
</div>
<h2>Definition of Done<a class="headerlink" href="#definition-of-done" title="Link a questa intestazione"></a></h2>
<p>La definizione di Done è stata concordata da tutto il team con il Product Owner, ed è stata così definita:</p>
<ul class="simple">
<li><p>Sviluppo completo della funzionalità richiesta</p></li>
<li><p>Definizione e superamento dei test</p></li>
<li><p>Bozza della documentazione della funzionalità</p></li>
<li><p>Merge dei sorgenti nel branch <code class="docutils literal notranslate"><span class="pre">main</span></code> di GitLab</p></li>
</ul>
</div>
<div class="section" id="registro-attivita">
<h2>Registro attività<a class="headerlink" href="#registro-attivita" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id5">
<div class="admonition-todo admonition" id="id1">
<p class="admonition-title">Da fare</p>
<p>Compilare il registro attività dello sprint 3.</p>
</div>
@ -291,14 +316,30 @@
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"></th>
<th class="head"><p>14h</p></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td></td>
<td></td>
<td></td>
<tr class="row-odd"><td><p>21/05</p></td>
<td><p>2.0h</p></td>
<td><p>Analisi strumenti di test frontend</p></td>
</tr>
<tr class="row-even"><td><p>24/05</p></td>
<td><p>3.0h</p></td>
<td><p>Inizio test alerts</p></td>
</tr>
<tr class="row-odd"><td><p>25/05</p></td>
<td><p>2.5h</p></td>
<td><p>Test alerts</p></td>
</tr>
<tr class="row-even"><td><p>26/05</p></td>
<td><p>3.0h</p></td>
<td><p>Test</p></td>
</tr>
<tr class="row-odd"><td><p>28/05</p></td>
<td><p>3.5h</p></td>
<td><p>Test, refactory in base a Sonarqube</p></td>
</tr>
</tbody>
</table>
@ -317,14 +358,46 @@
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"></th>
<th class="head"><p>14h</p></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td></td>
<td></td>
<td></td>
<tr class="row-odd"><td><p>20/05</p></td>
<td><p>2.0h</p></td>
<td><p>Trasferimento documenti in nuova documentazione</p></td>
</tr>
<tr class="row-even"><td><p>21/05</p></td>
<td><p>1.0h</p></td>
<td><p>Studio Sphinx</p></td>
</tr>
<tr class="row-odd"><td><p>23/05</p></td>
<td><p>1.0h</p></td>
<td><p>Studio sintassi rST</p></td>
</tr>
<tr class="row-even"><td><p>24/05</p></td>
<td><p>1.0h</p></td>
<td><p>Documentazione</p></td>
</tr>
<tr class="row-odd"><td><p>25/05</p></td>
<td><p>1.0h</p></td>
<td><p>Documentazione</p></td>
</tr>
<tr class="row-even"><td><p>26/05</p></td>
<td><p>1.0h</p></td>
<td><p>Documentazione</p></td>
</tr>
<tr class="row-odd"><td><p>27/05</p></td>
<td><p>1.0h</p></td>
<td><p>Documentazione</p></td>
</tr>
<tr class="row-even"><td><p>28/05</p></td>
<td><p>3.0h</p></td>
<td><p>Documentazione</p></td>
</tr>
<tr class="row-odd"><td><p>29/05</p></td>
<td><p>3.0h</p></td>
<td><p>Documentazione</p></td>
</tr>
</tbody>
</table>
@ -343,14 +416,54 @@
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"></th>
<th class="head"><p>17h 30m</p></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td></td>
<td></td>
<td></td>
<tr class="row-odd"><td><p>17/05</p></td>
<td><p>3.0h</p></td>
<td><p>Traduzione UI</p></td>
</tr>
<tr class="row-even"><td><p>17/05</p></td>
<td><p>1.5h</p></td>
<td><p>Traduzione UI</p></td>
</tr>
<tr class="row-odd"><td><p>18/05</p></td>
<td><p>1.5h</p></td>
<td><p>Traduzione UI</p></td>
</tr>
<tr class="row-even"><td><p>20/05</p></td>
<td><p>1.0h</p></td>
<td><p>Traduzione UI</p></td>
</tr>
<tr class="row-odd"><td><p>22/05</p></td>
<td><p>1.0h</p></td>
<td><p>Traduzione UI</p></td>
</tr>
<tr class="row-even"><td><p>24/05</p></td>
<td><p>2.0h</p></td>
<td><p>Traduzione UI</p></td>
</tr>
<tr class="row-odd"><td><p>24/05</p></td>
<td><p>1.0h</p></td>
<td><p>Traduzione UI</p></td>
</tr>
<tr class="row-even"><td><p>25/05</p></td>
<td><p>1.0h</p></td>
<td><p>Traduzione UI</p></td>
</tr>
<tr class="row-odd"><td><p>27/05</p></td>
<td><p>0.5h</p></td>
<td><p>Traduzione UI</p></td>
</tr>
<tr class="row-even"><td><p>28/05</p></td>
<td><p>2.0h</p></td>
<td><p>Configurazione ambiente di sviluppo</p></td>
</tr>
<tr class="row-odd"><td><p>28/05</p></td>
<td><p>3.0h</p></td>
<td><p>Creazione video-demo</p></td>
</tr>
</tbody>
</table>
@ -395,14 +508,42 @@
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"></th>
<th class="head"><p>18h</p></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td></td>
<td></td>
<td></td>
<tr class="row-odd"><td><p>17/05</p></td>
<td><p>1h</p></td>
<td><p>Ricontrollo generale codice, fix piccoli typo</p></td>
</tr>
<tr class="row-even"><td><p>18/05</p></td>
<td><p>1h</p></td>
<td><p>Aggiornati files di log e refactoring documentazione</p></td>
</tr>
<tr class="row-odd"><td><p>21/05</p></td>
<td><p>2h</p></td>
<td><p>Studio Jest, valutazione di test sul frontend</p></td>
</tr>
<tr class="row-even"><td><p>24/05</p></td>
<td><p>3h</p></td>
<td><p>Primi test sulle autorizzazioni</p></td>
</tr>
<tr class="row-odd"><td><p>26/05</p></td>
<td><p>2h</p></td>
<td><p>Fix ai test</p></td>
</tr>
<tr class="row-even"><td><p>27/05</p></td>
<td><p>2h</p></td>
<td><p>Test autorizzazioni completati, fix</p></td>
</tr>
<tr class="row-odd"><td><p>28/05</p></td>
<td><p>4h</p></td>
<td><p>Fix test malfunzionanti, refactoring test</p></td>
</tr>
<tr class="row-even"><td><p>29/05</p></td>
<td><p>3h</p></td>
<td><p>Aggiornamento documentazione, aggiunti ulteriori test seguendo i suggerimenti di SQ</p></td>
</tr>
</tbody>
</table>
@ -447,14 +588,42 @@
<th class="head"><p>Attività</p></th>
</tr>
<tr class="row-even"><th class="head"></th>
<th class="head"></th>
<th class="head"><p>22h</p></th>
<th class="head"><p>Totale</p></th>
</tr>
</thead>
<tbody>
<tr class="row-odd"><td></td>
<td></td>
<td></td>
<tr class="row-odd"><td><p>17/05</p></td>
<td><p>4h</p></td>
<td><p>Bugfixing, supporto alla localizzazione degli errori</p></td>
</tr>
<tr class="row-even"><td><p>18/05</p></td>
<td><p>3h</p></td>
<td><p>Bugfixing</p></td>
</tr>
<tr class="row-odd"><td><p>20/05</p></td>
<td><p>3h</p></td>
<td><p>API autorizzazioni, refactoring</p></td>
</tr>
<tr class="row-even"><td><p>21/05</p></td>
<td><p>2h</p></td>
<td><p>Gestione tweet, rappresentazione tweet</p></td>
</tr>
<tr class="row-odd"><td><p>24/05</p></td>
<td><p>2h</p></td>
<td><p>Bugfixing</p></td>
</tr>
<tr class="row-even"><td><p>25/05</p></td>
<td><p>4h</p></td>
<td><p>Docs, refactoring</p></td>
</tr>
<tr class="row-odd"><td><p>27/05</p></td>
<td><p>3h</p></td>
<td><p>Bugfixing</p></td>
</tr>
<tr class="row-even"><td><p>28/05</p></td>
<td><p>6h</p></td>
<td><p>Bugfixing</p></td>
</tr>
</tbody>
</table>
@ -465,7 +634,7 @@
<h2>Statistiche<a class="headerlink" href="#statistiche" title="Link a questa intestazione"></a></h2>
<div class="section" id="gitinspector">
<h3>Gitinspector<a class="headerlink" href="#gitinspector" title="Link a questa intestazione"></a></h3>
<div class="admonition-todo admonition" id="id6">
<div class="admonition-todo admonition" id="id2">
<p class="admonition-title">Da fare</p>
<p>Il prof. Marcello Missiroli non ha ancora generato la statistica dello Sprint 3.</p>
</div>
@ -473,17 +642,22 @@
</div>
<div class="section" id="retrospettiva-finale">
<h2>Retrospettiva finale<a class="headerlink" href="#retrospettiva-finale" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id7">
<div class="admonition-todo admonition" id="id3">
<p class="admonition-title">Da fare</p>
<p>Inserire qui la Retrospettiva finale.</p>
</div>
</div>
<div class="section" id="schermata-finale-di-sonarqube">
<h2>Schermata finale di SonarQube<a class="headerlink" href="#schermata-finale-di-sonarqube" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id8">
<p class="admonition-title">Da fare</p>
<p>Inserire qui uno screenshot della schermata finale di SonarQube.</p>
<ul class="simple">
<li><p><a class="reference download internal" download="" href="../../_downloads/d417ae167a3d99b54bd37ef26407aa0d/sonarqube.pdf"><code class="xref download docutils literal notranslate"><span class="pre">Schermata</span> <span class="pre">finale</span> <span class="pre">Sonarqube</span></code></a></p></li>
</ul>
</div>
<div class="section" id="demo">
<h2>Demo<a class="headerlink" href="#demo" title="Link a questa intestazione"></a></h2>
<ul class="simple">
<li><p><a class="reference external" href="https://drive.google.com/file/d/15o70Ffe51CNj8LTKHC9dGiqRVnbv9UpZ/view?usp=sharing">https://drive.google.com/file/d/15o70Ffe51CNj8LTKHC9dGiqRVnbv9UpZ/view?usp=sharing</a></p></li>
</ul>
</div>
</div>

View file

@ -180,10 +180,26 @@
<div class="section" id="suggerimenti-relativi-al-corso">
<h1>Suggerimenti relativi al corso<a class="headerlink" href="#suggerimenti-relativi-al-corso" title="Link a questa intestazione"></a></h1>
<div class="admonition-todo admonition" id="id1">
<p class="admonition-title">Da fare</p>
<p>Che suggerimenti avete da dare al prof. Missiroli? :)</p>
</div>
<ul>
<li><p>Il <em>team</em> concorda <strong>sullutilità del progetto</strong> poiché permette di utlizzare le nozioni viste a lezione praticamente (le varie metodologie da adottare e le problematiche in cui si può incorrere).</p></li>
<li><p>Il <em>team</em> concorda nel dire che <strong>il progetto è eccessivamente corposo</strong>:</p>
<blockquote>
<div><ul class="simple">
<li><p>Tecnicamente a 6 cfu dovrebbero corrispondere circa 125 ore di lavoro, mentre questo progetto ne ha richieste molte di più.</p></li>
<li><p>Suggeriamo quindi di alleggerire il carico di lavoro, e renderlo più proporzionale ai crediti assegnati.</p></li>
</ul>
</div></blockquote>
</li>
<li><p>Il <em>team</em> suggerisce di <strong>utilizzare GitHub al posto di Gitlab</strong>, poiché più comodo e funzionale.</p></li>
<li><p>Il <em>team</em> concorda nel dire che sarebbe molto utile la <strong>partecipazione diretta del prof</strong> durante le prime fasi di progetto, allinizio del lavoro, per instradare il gruppo nella giusta direzione ed evitare leffetto «salto nel buio»:</p>
<blockquote>
<div><ul class="simple">
<li><p>Sarebbe stato piacevole avere una buona spiegazione delle regole dello Scrumble</p></li>
<li><p>Avere qualche lezione più specifica sui tool da utilizzare (sonarqube ecc..)</p></li>
</ul>
</div></blockquote>
</li>
</ul>
</div>

View file

@ -88,6 +88,7 @@
<ul>
<li class="toctree-l1"><a class="reference internal" href="guide/about.html">Il progetto in breve</a></li>
<li class="toctree-l1"><a class="reference internal" href="guide/installation.html">Installazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="guide/updating.html">Aggiornamento</a></li>
</ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul>

View file

@ -101,6 +101,7 @@
<li class="toctree-l2"><a class="reference internal" href="#compilare-il-frontend">Compilare il frontend</a></li>
<li class="toctree-l2"><a class="reference internal" href="#creare-un-servizio-systemd-per-il-frontend">Creare un servizio SystemD per il frontend</a></li>
<li class="toctree-l2"><a class="reference internal" href="#creare-un-servizio-systemd-per-il-crawler">Creare un servizio SystemD per il crawler</a></li>
<li class="toctree-l2"><a class="reference internal" href="#configurare-il-crawler">Configurare il crawler</a></li>
<li class="toctree-l2"><a class="reference internal" href="#creare-un-timer-systemd-per-il-crawler">Creare un timer SystemD per il crawler</a></li>
<li class="toctree-l2"><a class="reference internal" href="#configurare-apache-come-reverse-proxy">Configurare Apache come reverse proxy</a></li>
</ul>
@ -210,6 +211,8 @@
<li><p><a class="reference external" href="https://python-poetry.org/">Poetry ^1.0</a></p></li>
<li><p><a class="reference external" href="https://nodejs.org/">NodeJS ^16.0</a></p></li>
<li><p><a class="reference external" href="https://www.npmjs.com/">npm ^7.13.0</a></p></li>
<li><p>Un mail server (interno o esterno) che supporti
l”<a class="reference external" href="https://it.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol">SMTP</a></p></li>
</ul>
</div>
<div class="section" id="creare-un-nuovo-utente">
@ -409,16 +412,117 @@ WantedBy=multi-user.target
</div>
<div class="section" id="creare-un-servizio-systemd-per-il-crawler">
<h2>Creare un servizio SystemD per il crawler<a class="headerlink" href="#creare-un-servizio-systemd-per-il-crawler" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id1">
<p class="admonition-title">Da fare</p>
<p>Scrivere una guida allinstallazione di un servizio SystemD per il crawler.</p>
<p>Perchè i repository vengano popolati di Tweet, è necessario configurare il crawler come servizio di <em>SystemD</em>:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">root:~# </span>systemctl edit --force --full nest-crawler
</pre></div>
</div>
<p>Allinterno del file, inserire le seguenti direttive:</p>
<div class="highlight-systemd notranslate"><div class="highlight"><pre><span></span>[Unit]
Description=N.E.S.T. Crawler
Wants=network-online.target nest-backend.service
After=network-online.target nss-lookup.target nest-backend.service
[Service]
Type=exec
Environment=FLASK_CONFIG=../config.py
User=nest
Group=nest
WorkingDirectory=/srv/nest/g2-progetto
# Si sostituisca a questo il percorso del virtualenv creato in precedenza da Poetry
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
ExecStart=/srv/nest/.cache/pypoetry/virtualenvs/nest-7C2fm2VD-py3.9/bin/python -m nest_crawler
[Install]
WantedBy=multi-user.target
</pre></div>
</div>
</div>
<div class="section" id="configurare-il-crawler">
<h2>Configurare il crawler<a class="headerlink" href="#configurare-il-crawler" title="Link a questa intestazione"></a></h2>
<div class="admonition note">
<p class="admonition-title">Nota</p>
<p>Per utilizzare gli API di Twitter, è necessario essere approvati dal supporto tecnico di Twitter.</p>
<p>È dunque necessario <a class="reference external" href="https://developer.twitter.com/en/apply-for-access">fare richiesta</a>, e sarà possibile
procedere con linstallazione solo una volta ricevute le credenziali per lutilizzo.</p>
</div>
<p>Per impostare le variabili di ambiente richieste dal crawler, si suggerisce di creare un <em>file di override</em> di SystemD:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">root:~# </span>systemctl edit nest-crawler
</pre></div>
</div>
<p>Allinterno del file, inserire le seguenti direttive:</p>
<div class="highlight-systemd notranslate"><div class="highlight"><pre><span></span>[Service]
# Sostituire a questi caratteri la Consumer Key ricevuta da Twitter
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Environment=C_K=0000000000000000000000000
# Sostituire a questi caratteri il Consumer Secret ricevuto da Twitter
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Environment=C_S=00000000000000000000000000000000000000000000000000
# Sostituire a questi caratteri l&#39;Access Token ricevuto da Twitter
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Environment=A_T=00000000000000000000000000000000000000000000000000
# Sostituire a questi caratteri l&#39;Access Token Secret ricevuto da Twitter
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Environment=A_T_S=000000000000000000000000000000000000000000000
# Sostituire con l&#39;indirizzo del proprio SMTP mail server
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Environment=SMTP_HOST=mail.gandi.net
# Sostituire con le proprie credenziali dell&#39;SMTP mail server
# ↓↓↓↓↓↓↓↓↓↓↓↓
Environment=SMTP_USERNAME=bot@ryg.one
# ↓↓↓↓↓↓↓↓
Environment=SMTP_PASSWORD=password
# Sostituire con l&#39;email da cui si desidera che vengano inviate le allerte
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Environment=SMTP_FROM_EMAIL=nest-bot@ryg.one
</pre></div>
</div>
<p>Ora, si verifichi che il servizio si avvii correttamente eseguendolo manualmente con:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">root:~# </span>systemctl start nest-crawler
</pre></div>
</div>
<p>Nel log di sistema non dovrebbe comparire nessun errore:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">root:~# </span>journalctl nest-crawler
</pre></div>
</div>
</div>
<div class="section" id="creare-un-timer-systemd-per-il-crawler">
<h2>Creare un timer SystemD per il crawler<a class="headerlink" href="#creare-un-timer-systemd-per-il-crawler" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition" id="id2">
<p class="admonition-title">Da fare</p>
<p>Scrivere una guida allesecuzione ripetuta del crawler attraverso un timer SystemD.</p>
<p>Per fare in modo che il crawler venga eseguito periodicamente, si suggerisce di configurare un timer SystemD:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">root:~# </span>systemctl edit --force --full nest-crawler.timer
</pre></div>
</div>
<p>Si inseriscano allinterno del file le seguenti direttive:</p>
<div class="highlight-systemd notranslate"><div class="highlight"><pre><span></span>[Unit]
Description=Run nest-crawler every 60 minutes
[Timer]
OnBootSec=60min
OnUnitActiveSec=60min
Unit=nest-crawler.service
[Install]
WantedBy=timers.target
</pre></div>
</div>
<p>Ora, si verifichi che il timer si avvii correttamente eseguendolo manualmente con:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">root:~# </span>systemctl start nest-crawler.timer
</pre></div>
</div>
<p>Nello stato del timer non dovrebbe comparire nessun errore:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">root:~# </span>systemctl status nest-crawler.timer
</pre></div>
</div>
<p>Si abiliti il timer, in modo che venga automaticamente avviato al riavvio del sistema:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">root:~# </span>systemctl <span class="nb">enable</span> nest-crawler.timer
</pre></div>
</div>
</div>
<div class="section" id="configurare-apache-come-reverse-proxy">

View file

@ -89,6 +89,7 @@
<ul>
<li class="toctree-l1"><a class="reference internal" href="guide/about.html">Il progetto in breve</a></li>
<li class="toctree-l1"><a class="reference internal" href="guide/installation.html">Installazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="guide/updating.html">Aggiornamento</a></li>
</ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul>
@ -200,10 +201,12 @@
<li class="toctree-l2"><a class="reference internal" href="guide/installation.html#compilare-il-frontend">Compilare il frontend</a></li>
<li class="toctree-l2"><a class="reference internal" href="guide/installation.html#creare-un-servizio-systemd-per-il-frontend">Creare un servizio SystemD per il frontend</a></li>
<li class="toctree-l2"><a class="reference internal" href="guide/installation.html#creare-un-servizio-systemd-per-il-crawler">Creare un servizio SystemD per il crawler</a></li>
<li class="toctree-l2"><a class="reference internal" href="guide/installation.html#configurare-il-crawler">Configurare il crawler</a></li>
<li class="toctree-l2"><a class="reference internal" href="guide/installation.html#creare-un-timer-systemd-per-il-crawler">Creare un timer SystemD per il crawler</a></li>
<li class="toctree-l2"><a class="reference internal" href="guide/installation.html#configurare-apache-come-reverse-proxy">Configurare Apache come reverse proxy</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="guide/updating.html">Aggiornamento</a></li>
</ul>
</div>
<div class="toctree-wrapper compound">
@ -228,39 +231,48 @@
<li class="toctree-l2"><a class="reference internal" href="development/sprint0/index.html#registro-attivita">Registro attività</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint0/index.html#risultati-della-partita-di-scrumble">Risultati della partita di Scrumble</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint0/index.html#statistiche">Statistiche</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint0/index.html#artefatti">Artefatti</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint0/index.html#sprint-retrospective">Sprint Retrospective</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint0/index.html#sprint-review">Sprint review</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint0/index.html#artefatti">Artefatti</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="development/sprint1/index.html">Sprint 1: 19 Apr - 02 Mag</a><ul>
<li class="toctree-l2"><a class="reference internal" href="development/sprint1/index.html#consegna">Consegna</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint1/index.html#goal">Goal</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint1/index.html#backlog">Backlog</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint1/index.html#definition-of-done">Definition of done</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint1/index.html#definition-of-ready">Definition of Ready</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint1/index.html#definition-of-done">Definition of Done</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint1/index.html#registro-attivita">Registro attività</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint1/index.html#statistiche">Statistiche</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint1/index.html#sprint-retrospective">Sprint retrospective</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint1/index.html#sprint-review">Sprint review</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint1/index.html#artefatti">Artefatti</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="development/sprint2/index.html">Sprint 2: 03 Mag - 16 Mag</a><ul>
<li class="toctree-l2"><a class="reference internal" href="development/sprint2/index.html#consegna">Consegna</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint2/index.html#goal">Goal</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint2/index.html#backlog">Backlog</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint2/index.html#definition-of-done">Definition of done</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint2/index.html#definition-of-ready">Definition of Ready</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint2/index.html#definition-of-done">Definition of Done</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint2/index.html#registro-attivita">Registro attività</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint2/index.html#statistiche">Statistiche</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint2/index.html#sprint-retrospective">Sprint retrospective</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint2/index.html#sprint-review">Sprint review</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="development/sprint3/index.html">Sprint 3: 17 Mag - 30 Mag</a><ul>
<li class="toctree-l2"><a class="reference internal" href="development/sprint3/index.html#consegna">Consegna</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint3/index.html#goal">Goal</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint3/index.html#grooming-session">Grooming session</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint3/index.html#backlog">Backlog</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint3/index.html#definition-of-done">Definition of done</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint3/index.html#definition-of-ready">Definition of Ready</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint3/index.html#definition-of-done">Definition of Done</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint3/index.html#registro-attivita">Registro attività</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint3/index.html#statistiche">Statistiche</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint3/index.html#retrospettiva-finale">Retrospettiva finale</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint3/index.html#schermata-finale-di-sonarqube">Schermata finale di SonarQube</a></li>
<li class="toctree-l2"><a class="reference internal" href="development/sprint3/index.html#demo">Demo</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="development/artifacts.html">Artefatti</a><ul>
@ -283,11 +295,7 @@
<li class="toctree-l1"><a class="reference internal" href="code/database/index.html">Struttura del database</a></li>
<li class="toctree-l1"><a class="reference internal" href="code/backend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_backend</span></code> - Web API in Python</a><ul>
<li class="toctree-l2"><a class="reference internal" href="code/backend/index.html#module-nest_backend.gestione"><code class="docutils literal notranslate"><span class="pre">.gestione</span></code> - Metodi di utility</a></li>
<li class="toctree-l2"><a class="reference internal" href="code/backend/index.html#module-nest_backend.database"><code class="docutils literal notranslate"><span class="pre">.database</span></code> - Database</a><ul>
<li class="toctree-l3"><a class="reference internal" href="code/backend/index.html#module-nest_backend.database.base"><code class="docutils literal notranslate"><span class="pre">.base</span></code> - Estensione flask</a></li>
<li class="toctree-l3"><a class="reference internal" href="code/backend/index.html#module-nest_backend.database.tables"><code class="docutils literal notranslate"><span class="pre">.tables</span></code> - Tabelle</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="code/backend/index.html#module-nest_backend.database"><code class="docutils literal notranslate"><span class="pre">.database</span></code> - Database</a></li>
<li class="toctree-l2"><a class="reference internal" href="code/backend/index.html#routes-percorsi-api"><code class="docutils literal notranslate"><span class="pre">.routes</span></code> - Percorsi API</a></li>
</ul>
</li>
@ -295,12 +303,6 @@
<li class="toctree-l1"><a class="reference internal" href="code/frontend/index.html"><code class="docutils literal notranslate"><span class="pre">nest_frontend</span></code> - Interfaccia utente in React</a></li>
</ul>
</div>
<div class="system-message">
<p class="system-message-title">System Message: WARNING/2 (<span class="docutils literal">/mnt/tera/ext4/code/g2-progetto-2/docs/source/index.rst</span>, line 40)</p>
<p>toctree contains reference to nonexisting document “development/clientinterview”</p>
</div>
<div class="toctree-wrapper compound">
</div>
<div class="section" id="cose-rimaste-da-fare">
<h2>Cose rimaste da fare<a class="headerlink" href="#cose-rimaste-da-fare" title="Link a questa intestazione"></a></h2>
<div class="admonition-todo admonition">
@ -315,14 +317,6 @@
<p class="todo-source">(L'<a class="reference internal" href="development/artifacts.html#id2"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/artifacts.rst, linea 12.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Scrivere le conclusioni.</p>
<blockquote>
<div><p>«cosa avete imparato, cosa è andato bene, cosa cambiereste»</p>
</div></blockquote>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/conclusions.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/conclusions.rst, linea 4.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Lasciamo il tempo al futuro?</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/goals.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/goals.rst, linea 4.)</p>
@ -333,119 +327,25 @@
<p class="todo-source">(L'<a class="reference internal" href="development/goals.html#id2"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/goals.rst, linea 64.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Descrivere genericamente il processo di sviluppo seguito, includendo:</p>
<blockquote>
<div><p>«numero e durata degli sprint, burndown complessivo, diari dei partecipanti e/o diario di gruppo,
retrospettiva finale»</p>
</div></blockquote>
<p>Visto che i diari e la retrospettiva li abbiamo già altrove, suggerirei di metterci solo un link usando <code class="docutils literal notranslate"><span class="pre">:ref:</span></code>.</p>
<p>Mi dicono che qui non funzionano alcune robe, mettere a posto
Also, fixare i link interni</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/process.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/process.rst, linea 4.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Inserire informazioni generali sullo sprint, come inizio e fine.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint1/index.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint1/index.rst, linea 4.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Inserire qui lo sprint goal.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint1/index.html#id2"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint1/index.rst, linea 20.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Mostrare qui lo sprint backlog di Taiga.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint1/index.html#id3"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint1/index.rst, linea 28.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Inserire qui la definition of done dello sprint.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint1/index.html#id4"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint1/index.rst, linea 36.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Inserire un link alla sprint review.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint1/index.html#id6"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint1/index.rst, linea 492.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Inserire informazioni generali sullo sprint, come inizio e fine.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint2/index.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint2/index.rst, linea 4.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Inserire qui lo sprint goal.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint2/index.html#id2"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint2/index.rst, linea 20.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Mostrare qui lo sprint backlog di Taiga.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint2/index.html#id3"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint2/index.rst, linea 28.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Inserire qui la definition of done dello sprint.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint2/index.html#id4"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint2/index.rst, linea 36.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Inserire un link alla sprint review.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint2/index.html#id6"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint2/index.rst, linea 429.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Inserire informazioni generali sullo sprint, come inizio e fine.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint3/index.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 4.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Inserire qui lo sprint goal.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint3/index.html#id2"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 21.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Mostrare qui lo sprint backlog di Taiga.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint3/index.html#id3"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 29.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Inserire qui la definition of done dello sprint.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint3/index.html#id4"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 37.)</p>
<p class="todo-source">(L'<a class="reference internal" href="development/process.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/process.rst, linea 39.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Compilare il registro attività dello sprint 3.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint3/index.html#id5"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 45.)</p>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint3/index.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 74.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Il prof. Marcello Missiroli non ha ancora generato la statistica dello Sprint 3.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint3/index.html#id6"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 206.)</p>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint3/index.html#id2"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 362.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Inserire qui la Retrospettiva finale.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint3/index.html#id7"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 214.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Inserire qui uno screenshot della schermata finale di SonarQube.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint3/index.html#id8"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 222.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Che suggerimenti avete da dare al prof. Missiroli? :)</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="development/suggestions.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/suggestions.rst, linea 4.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Scrivere una guida allinstallazione di un servizio SystemD per il crawler.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="guide/installation.html#id1"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/guide/installation.rst, linea 283.)</p>
<div class="admonition-todo admonition">
<p class="admonition-title">Da fare</p>
<p>Scrivere una guida allesecuzione ripetuta del crawler attraverso un timer SystemD.</p>
</div>
<p class="todo-source">(L'<a class="reference internal" href="guide/installation.html#id2"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/guide/installation.rst, linea 291.)</p>
<p class="todo-source">(L'<a class="reference internal" href="development/sprint3/index.html#id3"><em>riga originale</em></a> si trova in /mnt/tera/ext4/code/g2-progetto-2/docs/source/development/sprint3/index.rst, linea 370.)</p>
</div>
<div class="section" id="altri-collegamenti">
<h2>Altri collegamenti<a class="headerlink" href="#altri-collegamenti" title="Link a questa intestazione"></a></h2>

Binary file not shown.

View file

@ -91,6 +91,7 @@
<ul>
<li class="toctree-l1"><a class="reference internal" href="guide/about.html">Il progetto in breve</a></li>
<li class="toctree-l1"><a class="reference internal" href="guide/installation.html">Installazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="guide/updating.html">Aggiornamento</a></li>
</ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul>

View file

@ -91,6 +91,7 @@
<ul>
<li class="toctree-l1"><a class="reference internal" href="guide/about.html">Il progetto in breve</a></li>
<li class="toctree-l1"><a class="reference internal" href="guide/installation.html">Installazione</a></li>
<li class="toctree-l1"><a class="reference internal" href="guide/updating.html">Aggiornamento</a></li>
</ul>
<p class="caption"><span class="caption-text">Relazione sul progetto</span></p>
<ul>

File diff suppressed because one or more lines are too long

View file

@ -19,6 +19,8 @@ Per installare ed eseguire N.E.S.T., è necessario:
- `Poetry ^1.0 <https://python-poetry.org/>`_
- `NodeJS ^16.0 <https://nodejs.org/>`_
- `npm ^7.13.0 <https://www.npmjs.com/>`_
- Un mail server (interno o esterno) che supporti
l'`SMTP <https://it.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol>`_
Creare un nuovo utente
@ -280,17 +282,143 @@ Si abiliti il servizio, in modo che venga automaticamente avviato al riavvio del
Creare un servizio SystemD per il crawler
-----------------------------------------
.. todo::
Perchè i repository vengano popolati di Tweet, è necessario configurare il crawler come servizio di *SystemD*:
Scrivere una guida all'installazione di un servizio SystemD per il crawler.
.. code-block:: console
root:~# systemctl edit --force --full nest-crawler
All'interno del file, inserire le seguenti direttive:
.. code-block:: systemd
[Unit]
Description=N.E.S.T. Crawler
Wants=network-online.target nest-backend.service
After=network-online.target nss-lookup.target nest-backend.service
[Service]
Type=exec
Environment=FLASK_CONFIG=../config.py
User=nest
Group=nest
WorkingDirectory=/srv/nest/g2-progetto
# Si sostituisca a questo il percorso del virtualenv creato in precedenza da Poetry
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
ExecStart=/srv/nest/.cache/pypoetry/virtualenvs/nest-7C2fm2VD-py3.9/bin/python -m nest_crawler
[Install]
WantedBy=multi-user.target
Configurare il crawler
----------------------
.. note::
Per utilizzare gli API di Twitter, è necessario essere approvati dal supporto tecnico di Twitter.
È dunque necessario `fare richiesta <https://developer.twitter.com/en/apply-for-access>`_, e sarà possibile
procedere con l'installazione solo una volta ricevute le credenziali per l'utilizzo.
Per impostare le variabili di ambiente richieste dal crawler, si suggerisce di creare un *file di override* di SystemD:
.. code-block:: console
root:~# systemctl edit nest-crawler
All'interno del file, inserire le seguenti direttive:
.. code-block:: systemd
[Service]
# Sostituire a questi caratteri la Consumer Key ricevuta da Twitter
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Environment=C_K=0000000000000000000000000
# Sostituire a questi caratteri il Consumer Secret ricevuto da Twitter
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Environment=C_S=00000000000000000000000000000000000000000000000000
# Sostituire a questi caratteri l'Access Token ricevuto da Twitter
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Environment=A_T=00000000000000000000000000000000000000000000000000
# Sostituire a questi caratteri l'Access Token Secret ricevuto da Twitter
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Environment=A_T_S=000000000000000000000000000000000000000000000
# Sostituire con l'indirizzo del proprio SMTP mail server
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Environment=SMTP_HOST=mail.gandi.net
# Sostituire con le proprie credenziali dell'SMTP mail server
# ↓↓↓↓↓↓↓↓↓↓↓↓
Environment=SMTP_USERNAME=bot@ryg.one
# ↓↓↓↓↓↓↓↓
Environment=SMTP_PASSWORD=password
# Sostituire con l'email da cui si desidera che vengano inviate le allerte
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Environment=SMTP_FROM_EMAIL=nest-bot@ryg.one
Ora, si verifichi che il servizio si avvii correttamente eseguendolo manualmente con:
.. code-block:: console
root:~# systemctl start nest-crawler
Nel log di sistema non dovrebbe comparire nessun errore:
.. code-block:: console
root:~# journalctl nest-crawler
Creare un timer SystemD per il crawler
-----------------------------------------
.. todo::
Per fare in modo che il crawler venga eseguito periodicamente, si suggerisce di configurare un timer SystemD:
Scrivere una guida all'esecuzione ripetuta del crawler attraverso un timer SystemD.
.. code-block:: console
root:~# systemctl edit --force --full nest-crawler.timer
Si inseriscano all'interno del file le seguenti direttive:
.. code-block:: systemd
[Unit]
Description=Run nest-crawler every 60 minutes
[Timer]
OnBootSec=60min
OnUnitActiveSec=60min
Unit=nest-crawler.service
[Install]
WantedBy=timers.target
Ora, si verifichi che il timer si avvii correttamente eseguendolo manualmente con:
.. code-block:: console
root:~# systemctl start nest-crawler.timer
Nello stato del timer non dovrebbe comparire nessun errore:
.. code-block:: console
root:~# systemctl status nest-crawler.timer
Si abiliti il timer, in modo che venga automaticamente avviato al riavvio del sistema:
.. code-block:: console
root:~# systemctl enable nest-crawler.timer
Configurare Apache come reverse proxy

View file

@ -0,0 +1,20 @@
Aggiornamento
=============
Per scaricare gli aggiornamenti di N.E.S.T. si esegua il seguente comando nella directory del codice sorgente:
.. code-block:: console
nest:g2-progetto$ git pull
In seguito, si riavviino tutti i servizi di N.E.S.T.:
.. code-block:: console
root:~# systemctl restart nest-frontend nest-backend nest-crawler nest-crawler.timer
Si verifichi infine il corretto avvio di tutti i servizi:
.. code-block:: console
root:~# systemctl status nest-frontend nest-backend nest-crawler nest-crawler.timer

View file

@ -9,6 +9,7 @@ Benvenuto alla documentazione di N.E.S.T.!
guide/about
guide/installation
guide/updating
.. toctree::
@ -28,6 +29,7 @@ Benvenuto alla documentazione di N.E.S.T.!
.. toctree::
:maxdepth: 2
:caption: Documentazione tecnica
code/meta/index
@ -37,12 +39,6 @@ Benvenuto alla documentazione di N.E.S.T.!
code/frontend/index
.. toctree::
:hidden:
development/clientinterview
Cose rimaste da fare
--------------------