1
Fork 0
mirror of https://github.com/Steffo99/sophon.git synced 2024-12-22 06:44:21 +00:00

🎓 Apply some of the suggestions proposed by @Cicciodev

Co-authored by: Cicciodev <dev@francescofaenza.it>
This commit is contained in:
Steffo 2021-12-06 22:42:59 +01:00
parent 4d45228028
commit 3099c6bc56
Signed by: steffo
GPG key ID: 6965406171929D01
3 changed files with 24 additions and 27 deletions

View file

@ -63,7 +63,7 @@ Non si reputa nemmeno importante limitare le risorse utilizzate dai `notebook <n
Intuitività Intuitività
----------- -----------
Il modo in cui utilizzare l'interfaccia utente del software deve essere **intuitiva** per l'utente medio, senza che abbia bisogno di leggere alcuna guida o manuale. Il modo in cui utilizzare l'interfaccia utente del software deve essere **intuitiva** per l'utente medio, senza che egli abbia bisogno di leggere alcuna guida o manuale.
A tale scopo, l'interfaccia grafica deve utilizzare **design patterns comuni e familiari** all'utente medio. A tale scopo, l'interfaccia grafica deve utilizzare **design patterns comuni e familiari** all'utente medio.
@ -113,7 +113,7 @@ Responsività
Il software deve essere **utilizzabile su schermi di dimensione ridotta**, come quelli di un cellulare. Il software deve essere **utilizzabile su schermi di dimensione ridotta**, come quelli di un cellulare.
Pertanto, gli elementi dell'interfaccia devono essere disposti in modo che non escano dallo schermo qualora non ci fosse spazio sufficiente per mostrarli. Pertanto, gli elementi dell'interfaccia devono essere disposti in modo tale da permetterne la visualizzazione corretta su schermi di qualsiasi dimensione e risoluzione.
.. index:: .. index::
@ -126,7 +126,7 @@ Il software deve essere utilizzabile da **qualsiasi tipologia di utente**, inclu
Deve essere quindi possibile utilizzare il software **interamente da tastiera**, senza dover ricorrere a un mouse. Deve essere quindi possibile utilizzare il software **interamente da tastiera**, senza dover ricorrere a un mouse.
Inoltre, i colori scelti per l'interfaccia grafica **devono essere chiari anche a persone affette da daltonismo**. Inoltre, i colori dell'interfaccia grafica devono **essere scelti favorendo l'accessibilità degli utenti daltonici**.
.. index:: .. index::
@ -162,9 +162,9 @@ Esso è **eseguito dal server** sul quale è ospitato Sophon.
Python Python
^^^^^^ ^^^^^^
`Python <https://www.python.org/>`_ è un linguaggio di programmazione interpretato con tipizzazione forte, particolarmente popolare negli ambiti dello sviluppo web e data science. `Python <https://www.python.org/>`_ è un linguaggio di programmazione orientato agli oggetti interpretato con tipizzazione dinamica forte, particolarmente popolare negli ambiti dello sviluppo web e data science.
Ha numerosissime librerie (dette *packages*) sia incluse nell'eseguibile stesso del linguaggio, sia disponibili per il download sul `Python Package Index <https://pypi.org/>`_. Ha numerosissime librerie (dette *packages*), sia incluse nella distribuzione base del linguaggio, sia disponibili per il download sul `Python Package Index <https://pypi.org/>`_.
La sua sintassi è semplice ed human-friendly, come è possibile vedere dal seguente frammento di codice: La sua sintassi è semplice ed human-friendly, come è possibile vedere dal seguente frammento di codice:
@ -276,9 +276,9 @@ Viene **eseguito dal browser web** dell'utente che desidera interagire con Sopho
JavaScript JavaScript
^^^^^^^^^^ ^^^^^^^^^^
`JavaScript <https://it.wikipedia.org/wiki/JavaScript>`_ è un linguaggio di programmazione interpretato con tipizzazione debole. `JavaScript <https://it.wikipedia.org/wiki/JavaScript>`_ è un linguaggio di programmazione interpretato con tipizzazione dinamica debole.
È l'unico linguaggio utilizzabile per fornire interattività alle pagine web; pertanto, è indirettamente utilizzato dal modulo frontend di Sophon. È l'unico linguaggio utilizzabile per rendere interattive le pagine web; pertanto, è indirettamente utilizzato dal modulo frontend di Sophon.
Il suo modello di oggetti si basa su dizionari che mappano i nomi degli attributi ai loro corrispondenti valori. Il suo modello di oggetti si basa su dizionari che mappano i nomi degli attributi ai loro corrispondenti valori.
@ -580,7 +580,7 @@ I *network* Docker sono astrazioni per vari tipi di reti di calcolatori: in part
All'interno di un network è disponibile una funzionalità di risoluzione automatica degli indirizzi IP virtuali dei container: per accedere al container ``pear`` in HTTP, ad esempio, sarà sufficiente utilizzare ``apple`` come se fosse un nome di dominio: ``http://pear/``. All'interno di un network è disponibile una funzionalità di risoluzione automatica degli indirizzi IP virtuali dei container: per accedere al container ``pear`` in HTTP, ad esempio, sarà sufficiente utilizzare ``apple`` come se fosse un nome di dominio: ``http://pear/``.
Sono una versione più potente dei moduli di rete per macchine virtuali. Sono una versione più elaborata ed efficiente dei moduli di rete per macchine virtuali.
.. index:: .. index::
@ -589,7 +589,7 @@ Sono una versione più potente dei moduli di rete per macchine virtuali.
Volumi Docker Volumi Docker
^^^^^^^^^^^^^ ^^^^^^^^^^^^^
I *volumi* Docker sono astrazioni per filesystem che permettono la condivisione di file tra container [docker:volumes]_. I *volumi* Docker sono astrazioni per filesystem che permettono la permanenza e la condivisione tra container di file [docker:volumes]_.
Essi vengono montati all'interno di un container in una cartella configurabile detta *mount point*; tutti i container con accesso al volume vedranno gli stessi file all'interno di essa. Essi vengono montati all'interno di un container in una cartella configurabile detta *mount point*; tutti i container con accesso al volume vedranno gli stessi file all'interno di essa.
@ -613,7 +613,7 @@ Astrae la piattaforma su cui viene eseguito, in modo che tutte le immagini possa
Docker Compose Docker Compose
-------------- --------------
`Docker Compose <https://docs.docker.com/compose/>`_ è uno strumento da linea di comando che permette l'esecuzione di applicazioni Docker composte da tanti container. `Docker Compose <https://docs.docker.com/compose/>`_ è uno strumento da linea di comando che permette l'esecuzione di applicazioni Docker composte da più container.
Le applicazioni Compose sono definite all'interno di un file `YAML <https://it.wikipedia.org/wiki/YAML>`_ come il seguente: Le applicazioni Compose sono definite all'interno di un file `YAML <https://it.wikipedia.org/wiki/YAML>`_ come il seguente:
@ -693,15 +693,15 @@ Per ciascun repository sono messe a disposizione gratuitamente numerose funziona
Affero General Public License 3.0+ Affero General Public License 3.0+
---------------------------------- ----------------------------------
Sophon è rilasciato sotto la `GNU Affero General Public License 3`_ (o successiva). Sophon è rilasciato sotto la `GNU Affero General Public License v3`_ (o successiva).
Il testo completo della licenza è disponibile all'interno del file `LICENSE.txt`_ allegato al codice sorgente del software. Il testo completo della licenza è disponibile all'interno del file `LICENSE.txt`_ allegato al codice sorgente del software.
In breve, la licenza permette a chiunque di utilizzare, distribuire e modificare il software, a condizione che qualsiasi modifica venga ri-distribuita agli utenti del software modificato. In breve, la licenza, detta virale, permette a chiunque di utilizzare, distribuire e modificare il software, a condizione che qualsiasi modifica venga ri-distribuita agli utenti del software modificato utilizzando la stessa licenza.
Si specifica che la licenza copre tutti i file all'interno del repository ``Steffo99/sophon``, anche se essi non contengono un header che indica che sono protetti da copyright. Si specifica che la licenza copre tutti i file all'interno del repository ``Steffo99/sophon``, anche se essi non contengono un header che indica che sono protetti da copyright.
.. _GNU Affero General Public License 3: https://www.gnu.org/licenses/agpl-3.0.html .. _GNU Affero General Public License v3: https://www.gnu.org/licenses/agpl-3.0.html
.. _LICENSE.txt: https://github.com/Steffo99/sophon/blob/main/LICENSE.txt .. _LICENSE.txt: https://github.com/Steffo99/sophon/blob/main/LICENSE.txt
@ -778,10 +778,6 @@ Gli utenti di tipo *Utente* e *Superutente* devono identificarsi sull'istanza co
Di default, le credenziali sono un **nome utente** e una **password**, ma è possibile implementare un sistema diverso, ad esempio un sistema :abbr:`SSO (Single Sign-On)`. Di default, le credenziali sono un **nome utente** e una **password**, ma è possibile implementare un sistema diverso, ad esempio un sistema :abbr:`SSO (Single Sign-On)`.
.. warning::
Non avendo a disposizione sistemi di :abbr:`SSO (Single Sign-On)`, questa funzionalità non è stata testata, e potrebbe non funzionare.
.. index:: .. index::
pair: Sophon; gruppo pair: Sophon; gruppo
@ -922,8 +918,8 @@ Stato del notebook
Un notebook può essere *avviato* o *fermo* in base al suo stato di esecuzione sull'`istanza <Istanza in Sophon>` Sophon: Un notebook può essere *avviato* o *fermo* in base al suo stato di esecuzione sull'`istanza <Istanza in Sophon>` Sophon:
* è *avviato* se sta venendo eseguito ed è accessibile; * è *avviato* se è in esecuzione e accessibile;
* è *fermo* se non sta venendo eseguito o sta venendo preparato. * è *fermo* se non è in esecuzione o se è in fase di preparazione.
Alla creazione, un notebook è *fermo*. Alla creazione, un notebook è *fermo*.
@ -969,11 +965,11 @@ Blocco di un notebook
Qualsiasi **membro** del `gruppo di ricerca <Gruppi di ricerca in Sophon>` a cui appartiene il notebook può *bloccarlo* per segnalare agli altri utenti che vi hanno accesso di non utilizzare quello specifico notebook. Qualsiasi **membro** del `gruppo di ricerca <Gruppi di ricerca in Sophon>` a cui appartiene il notebook può *bloccarlo* per segnalare agli altri utenti che vi hanno accesso di non utilizzare quello specifico notebook.
Bloccare un notebook **rimuove dall'interfaccia web** i bottoni di interazione con esso per tutti gli utenti, tranne quello che ha richiesto il blocco. Bloccare un notebook **rimuove dall'interfaccia web** i bottoni di interazione con esso per tutti gli utenti, tranne l'utente richiedente il blocco.
.. note:: .. note::
Il blocco di un notebook **è solo estetico**, e non ha lo scopo di impedire agli utenti di interagire con il notebook, ma serve per indicare ai propri collaboratori che si stanno effettuando modifiche grandi che non permettono collaborazione sul notebook. Il blocco di un notebook **è solo estetico**, e non ha lo scopo di impedire agli utenti di interagire con il notebook, ma serve per indicare ai propri collaboratori che si stanno effettuando modifiche che non permettono collaborazione sul notebook.
Un notebook bloccato può essere sbloccato da qualsiasi **membro** del `gruppo di ricerca <Gruppi di ricerca in Sophon>`; il membro che ha richiesto il blocco potrà sbloccarlo **immediatamente**, mentre agli altri membri è richiesto di confermare l'azione. Un notebook bloccato può essere sbloccato da qualsiasi **membro** del `gruppo di ricerca <Gruppi di ricerca in Sophon>`; il membro che ha richiesto il blocco potrà sbloccarlo **immediatamente**, mentre agli altri membri è richiesto di confermare l'azione.

View file

@ -98,7 +98,7 @@ Miglioramenti all'autenticazione
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. module:: sophon.auth1 .. module:: sophon.auth1
La classe :class:`rest_framework.authentication.TokenAuthentication` viene modificata per ottenere un comportamento conforme agli standard del web. La classe :class:`rest_framework.authentication.TokenAuthentication` viene modificata per ottenere un comportamento conforme allo standard della Bearer authentication.
.. class:: BearerTokenAuthentication(rest_framework.authentication.TokenAuthentication) .. class:: BearerTokenAuthentication(rest_framework.authentication.TokenAuthentication)
@ -355,7 +355,7 @@ Vengono definiti tre viewset in grado di utilizzare i metodi aggiunti dalle clas
Classe **astratta** che estende la classe base :class:`ReadSophonViewSet` aggiungendoci i metodi di :class:`rest_framework.viewsets.ModelViewSet` che effettuano modifiche sugli oggetti. Classe **astratta** che estende la classe base :class:`ReadSophonViewSet` aggiungendoci i metodi di :class:`rest_framework.viewsets.ModelViewSet` che effettuano modifiche sugli oggetti.
Depreca i metodi ``perform_*`` di :mod:`rest_framework`, introducendone versioni migliorate con una signature diversa dal nome di ``hook_*``. Depreca i metodi ``perform_*`` di :mod:`rest_framework`, introducendone versioni estese con una signature diversa dal nome di ``hook_*``.
.. method:: perform_create(self, serializer) .. method:: perform_create(self, serializer)
@ -956,7 +956,7 @@ Axios
Per effettuare richieste all'API web, si è deciso di utilizzare la libreria :mod:`axios`, in quanto permette di creare dei "client" personalizzabili con varie proprietà. Per effettuare richieste all'API web, si è deciso di utilizzare la libreria :mod:`axios`, in quanto permette di creare dei "client" personalizzabili con varie proprietà.
In particolare, si è scelto di forkarla, integrando anticipatamente una proposta di funzionalità che permette alle richieste di essere interrotte attraverso degli :class:`AbortController`. In particolare, si è scelto di effettuare un fork della stessa, integrando anticipatamente una proposta di funzionalità che permette alle richieste di essere interrotte attraverso degli :class:`AbortController`.
Client personalizzati Client personalizzati

View file

@ -61,7 +61,7 @@ Il paradigma web "2.0" ha portato miglioramenti significativi agli editor :abbr:
Ciò ha semplificato il processo di collaborazione sui documenti: non è più necessario inviare ai collaboratori tutte le revisioni dei documenti, ma è possibile semplicemente condividergli un link, al quale sarà possibile accedere al documento. Ciò ha semplificato il processo di collaborazione sui documenti: non è più necessario inviare ai collaboratori tutte le revisioni dei documenti, ma è possibile semplicemente condividergli un link, al quale sarà possibile accedere al documento.
Da questa funzionalità ne è poi derivata un'altra, che ha rivoluzionato la scrittura di testi: la possibilità di collaborare online con gli altri autori, vedendo le loro modifiche in tempo reale sulla propria pagina. Da questa funzionalità ne è poi derivata un'altra, che ha rivoluzionato la scrittura di testi: la possibilità di collaborare online con gli altri autori, vedendo le loro modifiche in tempo reale.
Il più importante di questi editor è `Google Docs <https://docs.google.com/>`_, rilasciato nel 2009; la sua popolarità ha portato allo sviluppo di alternative come `Office 365 <https://www.office.com/>`_, una versione web di `Microsoft Word <Editor WYSIWYG>`. Il più importante di questi editor è `Google Docs <https://docs.google.com/>`_, rilasciato nel 2009; la sua popolarità ha portato allo sviluppo di alternative come `Office 365 <https://www.office.com/>`_, una versione web di `Microsoft Word <Editor WYSIWYG>`.
@ -103,6 +103,7 @@ Come tutti i notebook computazionali è strutturato in celle, le quali possono c
Prende ispirazione dai `web-based editor <Web-based editor>`, permettendo agli utenti di modificare i notebook direttamente da un browser web, e include rudimentali funzionalità di collaborazione in tempo reale [jupyter:collaboration]_. Prende ispirazione dai `web-based editor <Web-based editor>`, permettendo agli utenti di modificare i notebook direttamente da un browser web, e include rudimentali funzionalità di collaborazione in tempo reale [jupyter:collaboration]_.
.. figure:: hist_example.png .. figure:: hist_example.png
:scale: 100%
Un esempio di notebook Jupyter con una cella di testo e una cella di Python che emette un grafico [matplotlib:histograms]_. Un esempio di notebook Jupyter con una cella di testo e una cella di Python che emette un grafico [matplotlib:histograms]_.
@ -188,7 +189,7 @@ Un esempio di cloud provider che fornisce questo servizio è Google, con `Google
Usare il modello :abbr:`SaaS (Software as a Service)` è il modo più semplice per usare Jupyter, in quanto non richiede di effettuare alcuna installazione sul proprio computer, e in genere permette di collaborare online con altri utenti. Usare il modello :abbr:`SaaS (Software as a Service)` è il modo più semplice per usare Jupyter, in quanto non richiede di effettuare alcuna installazione sul proprio computer, e in genere permette di collaborare online con altri utenti.
In genere, però, Jupyter sulle piattaforme :abbr:`SaaS (Software as a Service)` non permette l'installazione di plugin, limitando la personalizzazione, e, se si necessitano più risorse di quelle offerte gratuitamente dai provider, si rischia di trovarsi a pagare mensilmente cifre elevate. Di contro, però, Jupyter sulle piattaforme :abbr:`SaaS (Software as a Service)` non permette l'installazione di plugin, limitando la personalizzazione, e, se si necessitano più risorse di quelle offerte gratuitamente dai provider, si rischiano canoni mensili elevati.
.. index:: .. index::
@ -203,4 +204,4 @@ A tale scopo, è disponibile il progetto `JupyterHub <https://jupyter.org/hub>`_
È performante ed efficace, e in base alla configurazione scelta dall'amministratore, può permettere agli utenti di personalizzare il loro ambiente di lavoro con plugin. È performante ed efficace, e in base alla configurazione scelta dall'amministratore, può permettere agli utenti di personalizzare il loro ambiente di lavoro con plugin.
L'interfaccia di gestione utenti e notebook è però molto essenziale, essendo un progetto piuttosto nuovo, e in aggiunta non supporta nativamente la collaborazione real-time su un singolo notebook, preferendo il modello *"tanti server Jupyter da utente singolo"* [jupyter:hub]_. L'interfaccia di gestione utenti e notebook è però molto essenziale, e in aggiunta non supporta nativamente la collaborazione real-time su un singolo notebook, preferendo il modello *"tanti server Jupyter da utente singolo"* [jupyter:hub]_.