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

🎓 Complete presentation

This commit is contained in:
Steffo 2021-11-18 19:32:27 +01:00
parent e16d470192
commit dd7f491d46
Signed by: steffo
GPG key ID: 6965406171929D01
9 changed files with 352 additions and 37 deletions

179
backend/poetry.lock generated
View file

@ -6,6 +6,14 @@ category = "dev"
optional = false
python-versions = "*"
[[package]]
name = "appdirs"
version = "1.4.4"
description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
category = "dev"
optional = false
python-versions = "*"
[[package]]
name = "asgiref"
version = "3.4.1"
@ -80,6 +88,17 @@ humanfriendly = ">=9.1"
[package.extras]
cron = ["capturer (>=2.4)"]
[[package]]
name = "commonmark"
version = "0.9.1"
description = "Python parser for the CommonMark Markdown spec"
category = "dev"
optional = false
python-versions = "*"
[package.extras]
test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"]
[[package]]
name = "deprecation"
version = "2.1.0"
@ -290,6 +309,14 @@ python-versions = ">=3.6"
[package.dependencies]
pyparsing = ">=2.0.2,<3"
[[package]]
name = "pillow"
version = "8.4.0"
description = "Python Imaging Library (Fork)"
category = "dev"
optional = false
python-versions = ">=3.6"
[[package]]
name = "psycopg2"
version = "2.9.1"
@ -387,6 +414,19 @@ category = "dev"
optional = false
python-versions = ">=3.6"
[[package]]
name = "recommonmark"
version = "0.7.1"
description = "A docutils-compatibility bridge to CommonMark, enabling you to write CommonMark inside of Docutils & Sphinx projects."
category = "dev"
optional = false
python-versions = "*"
[package.dependencies]
commonmark = ">=0.8.1"
docutils = ">=0.11"
sphinx = ">=1.3.1"
[[package]]
name = "requests"
version = "2.26.0"
@ -405,6 +445,68 @@ urllib3 = ">=1.21.1,<1.27"
socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"]
use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"]
[[package]]
name = "rinoh-typeface-dejavuserif"
version = "0.1.3"
description = "DejaVu Serif typeface"
category = "dev"
optional = false
python-versions = "*"
[package.dependencies]
rinohtype = "*"
[[package]]
name = "rinoh-typeface-texgyrecursor"
version = "0.1.1"
description = "TeX Gyre Cursor typeface"
category = "dev"
optional = false
python-versions = "*"
[package.dependencies]
rinohtype = "*"
[[package]]
name = "rinoh-typeface-texgyreheros"
version = "0.1.1"
description = "TeX Gyre Heros typeface"
category = "dev"
optional = false
python-versions = "*"
[package.dependencies]
rinohtype = "*"
[[package]]
name = "rinoh-typeface-texgyrepagella"
version = "0.1.1"
description = "TeX Gyre Pagella typeface"
category = "dev"
optional = false
python-versions = "*"
[package.dependencies]
rinohtype = "*"
[[package]]
name = "rinohtype"
version = "0.5.3"
description = "The Python document processor"
category = "dev"
optional = false
python-versions = ">=3.6.1,<4.0.0"
[package.dependencies]
appdirs = ">=1.4.3,<2.0.0"
docutils = ">=0.15"
recommonmark = ">=0.6.0"
rinoh-typeface-dejavuserif = ">=0.1.3,<0.2.0"
rinoh-typeface-texgyrecursor = ">=0.1.1,<0.2.0"
rinoh-typeface-texgyreheros = ">=0.1.1,<0.2.0"
rinoh-typeface-texgyrepagella = ">=0.1.1,<0.2.0"
Sphinx = ">=2.2.1"
[[package]]
name = "six"
version = "1.16.0"
@ -628,13 +730,17 @@ test = ["websockets"]
[metadata]
lock-version = "1.1"
python-versions = "^3.9"
content-hash = "951a40d1e27bbe63eb358fade1e7639cf16ac42ea2e814bae9b5b267478d5ce0"
content-hash = "51ddb46bd6559cbdb22d529967f3368f91b034862c4df87b14e785aa282aa03d"
[metadata.files]
alabaster = [
{ file = "alabaster-0.7.12-py2.py3-none-any.whl", hash = "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359" },
{ file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02" },
]
appdirs = [
{ file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128" },
{ file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41" },
]
asgiref = [
{ file = "asgiref-3.4.1-py3-none-any.whl", hash = "sha256:ffc141aa908e6f175673e7b1b3b7af4fdb0ecb738fc5c8b88f69f055c2415214" },
{ file = "asgiref-3.4.1.tar.gz", hash = "sha256:4ef1ab46b484e3c706329cedeff284a5d40824200638503f5768edb6de7d58e9" },
@ -663,6 +769,10 @@ coloredlogs = [
{ file = "coloredlogs-15.0.1-py2.py3-none-any.whl", hash = "sha256:612ee75c546f53e92e70049c9dbfcc18c935a2b9a53b66085ce9ef6a6e5c0934" },
{ file = "coloredlogs-15.0.1.tar.gz", hash = "sha256:7c991aa71a4577af2f82600d8f8f3a89f936baeaf9b50a9c197da014e5bf16b0" },
]
commonmark = [
{ file = "commonmark-0.9.1-py2.py3-none-any.whl", hash = "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9" },
{ file = "commonmark-0.9.1.tar.gz", hash = "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60" },
]
deprecation = [
{ file = "deprecation-2.1.0-py2.py3-none-any.whl", hash = "sha256:a10811591210e1fb0e768a8c25517cabeabcba6f0bf96564f8ff45189f90b14a" },
{ file = "deprecation-2.1.0.tar.gz", hash = "sha256:72b3bde64e5d778694b0cf68178aed03d15e15477116add3fb773e581f9518ff" },
@ -825,6 +935,49 @@ packaging = [
{ file = "packaging-21.2-py3-none-any.whl", hash = "sha256:14317396d1e8cdb122989b916fa2c7e9ca8e2be9e8060a6eff75b6b7b4d8a7e0" },
{ file = "packaging-21.2.tar.gz", hash = "sha256:096d689d78ca690e4cd8a89568ba06d07ca097e3306a4381635073ca91479966" },
]
pillow = [
{ file = "Pillow-8.4.0-cp310-cp310-macosx_10_10_universal2.whl", hash = "sha256:81f8d5c81e483a9442d72d182e1fb6dcb9723f289a57e8030811bac9ea3fef8d" },
{ file = "Pillow-8.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3f97cfb1e5a392d75dd8b9fd274d205404729923840ca94ca45a0af57e13dbe6" },
{ file = "Pillow-8.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb9fc393f3c61f9054e1ed26e6fe912c7321af2f41ff49d3f83d05bacf22cc78" },
{ file = "Pillow-8.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d82cdb63100ef5eedb8391732375e6d05993b765f72cb34311fab92103314649" },
{ file = "Pillow-8.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62cc1afda735a8d109007164714e73771b499768b9bb5afcbbee9d0ff374b43f" },
{ file = "Pillow-8.4.0-cp310-cp310-win32.whl", hash = "sha256:e3dacecfbeec9a33e932f00c6cd7996e62f53ad46fbe677577394aaa90ee419a" },
{ file = "Pillow-8.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:620582db2a85b2df5f8a82ddeb52116560d7e5e6b055095f04ad828d1b0baa39" },
{ file = "Pillow-8.4.0-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:1bc723b434fbc4ab50bb68e11e93ce5fb69866ad621e3c2c9bdb0cd70e345f55" },
{ file = "Pillow-8.4.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72cbcfd54df6caf85cc35264c77ede902452d6df41166010262374155947460c" },
{ file = "Pillow-8.4.0-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:70ad9e5c6cb9b8487280a02c0ad8a51581dcbbe8484ce058477692a27c151c0a" },
{ file = "Pillow-8.4.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25a49dc2e2f74e65efaa32b153527fc5ac98508d502fa46e74fa4fd678ed6645" },
{ file = "Pillow-8.4.0-cp36-cp36m-win32.whl", hash = "sha256:93ce9e955cc95959df98505e4608ad98281fff037350d8c2671c9aa86bcf10a9" },
{ file = "Pillow-8.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:2e4440b8f00f504ee4b53fe30f4e381aae30b0568193be305256b1462216feff" },
{ file = "Pillow-8.4.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:8c803ac3c28bbc53763e6825746f05cc407b20e4a69d0122e526a582e3b5e153" },
{ file = "Pillow-8.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8a17b5d948f4ceeceb66384727dde11b240736fddeda54ca740b9b8b1556b29" },
{ file = "Pillow-8.4.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1394a6ad5abc838c5cd8a92c5a07535648cdf6d09e8e2d6df916dfa9ea86ead8" },
{ file = "Pillow-8.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:792e5c12376594bfcb986ebf3855aa4b7c225754e9a9521298e460e92fb4a488" },
{ file = "Pillow-8.4.0-cp37-cp37m-win32.whl", hash = "sha256:d99ec152570e4196772e7a8e4ba5320d2d27bf22fdf11743dd882936ed64305b" },
{ file = "Pillow-8.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:7b7017b61bbcdd7f6363aeceb881e23c46583739cb69a3ab39cb384f6ec82e5b" },
{ file = "Pillow-8.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:d89363f02658e253dbd171f7c3716a5d340a24ee82d38aab9183f7fdf0cdca49" },
{ file = "Pillow-8.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0a0956fdc5defc34462bb1c765ee88d933239f9a94bc37d132004775241a7585" },
{ file = "Pillow-8.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b7bb9de00197fb4261825c15551adf7605cf14a80badf1761d61e59da347779" },
{ file = "Pillow-8.4.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72b9e656e340447f827885b8d7a15fc8c4e68d410dc2297ef6787eec0f0ea409" },
{ file = "Pillow-8.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5a4532a12314149d8b4e4ad8ff09dde7427731fcfa5917ff16d0291f13609df" },
{ file = "Pillow-8.4.0-cp38-cp38-win32.whl", hash = "sha256:82aafa8d5eb68c8463b6e9baeb4f19043bb31fefc03eb7b216b51e6a9981ae09" },
{ file = "Pillow-8.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:066f3999cb3b070a95c3652712cffa1a748cd02d60ad7b4e485c3748a04d9d76" },
{ file = "Pillow-8.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:5503c86916d27c2e101b7f71c2ae2cddba01a2cf55b8395b0255fd33fa4d1f1a" },
{ file = "Pillow-8.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4acc0985ddf39d1bc969a9220b51d94ed51695d455c228d8ac29fcdb25810e6e" },
{ file = "Pillow-8.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b052a619a8bfcf26bd8b3f48f45283f9e977890263e4571f2393ed8898d331b" },
{ file = "Pillow-8.4.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:493cb4e415f44cd601fcec11c99836f707bb714ab03f5ed46ac25713baf0ff20" },
{ file = "Pillow-8.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8831cb7332eda5dc89b21a7bce7ef6ad305548820595033a4b03cf3091235ed" },
{ file = "Pillow-8.4.0-cp39-cp39-win32.whl", hash = "sha256:5e9ac5f66616b87d4da618a20ab0a38324dbe88d8a39b55be8964eb520021e02" },
{ file = "Pillow-8.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:3eb1ce5f65908556c2d8685a8f0a6e989d887ec4057326f6c22b24e8a172c66b" },
{ file = "Pillow-8.4.0-pp36-pypy36_pp73-macosx_10_10_x86_64.whl", hash = "sha256:ddc4d832a0f0b4c52fff973a0d44b6c99839a9d016fe4e6a1cb8f3eea96479c2" },
{ file = "Pillow-8.4.0-pp36-pypy36_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a3e5ddc44c14042f0844b8cf7d2cd455f6cc80fd7f5eefbe657292cf601d9ad" },
{ file = "Pillow-8.4.0-pp36-pypy36_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c70e94281588ef053ae8998039610dbd71bc509e4acbc77ab59d7d2937b10698" },
{ file = "Pillow-8.4.0-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:3862b7256046fcd950618ed22d1d60b842e3a40a48236a5498746f21189afbbc" },
{ file = "Pillow-8.4.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4901622493f88b1a29bd30ec1a2f683782e57c3c16a2dbc7f2595ba01f639df" },
{ file = "Pillow-8.4.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84c471a734240653a0ec91dec0996696eea227eafe72a33bd06c92697728046b" },
{ file = "Pillow-8.4.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:244cf3b97802c34c41905d22810846802a3329ddcb93ccc432870243211c79fc" },
{ file = "Pillow-8.4.0.tar.gz", hash = "sha256:b8e2f83c56e141920c39464b852de3719dfbfb6e3c99a2d8da0edf4fb33176ed" },
]
psycopg2 = [
{ file = "psycopg2-2.9.1-cp36-cp36m-win32.whl", hash = "sha256:7f91312f065df517187134cce8e395ab37f5b601a42446bdc0f0d51773621854" },
{ file = "psycopg2-2.9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:830c8e8dddab6b6716a4bf73a09910c7954a92f40cf1d1e702fb93c8a919cc56" },
@ -933,10 +1086,34 @@ pyyaml = [
{ file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c" },
{ file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2" },
]
recommonmark = [
{ file = "recommonmark-0.7.1-py2.py3-none-any.whl", hash = "sha256:1b1db69af0231efce3fa21b94ff627ea33dee7079a01dd0a7f8482c3da148b3f" },
{ file = "recommonmark-0.7.1.tar.gz", hash = "sha256:bdb4db649f2222dcd8d2d844f0006b958d627f732415d399791ee436a3686d67" },
]
requests = [
{ file = "requests-2.26.0-py2.py3-none-any.whl", hash = "sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24" },
{ file = "requests-2.26.0.tar.gz", hash = "sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7" },
]
rinoh-typeface-dejavuserif = [
{ file = "rinoh-typeface-dejavuserif-0.1.3.tar.gz", hash = "sha256:8be129230ac98ab2ebfbf5b570575052ba7069e4087ce36a2d4c1d85182833ce" },
{ file = "rinoh_typeface_dejavuserif-0.1.3-py3-none-any.whl", hash = "sha256:35ba67bf25e526b4b8180dc31d8fa2ff9b594d924e8790e8074699cd2f0e7da8" },
]
rinoh-typeface-texgyrecursor = [
{ file = "rinoh-typeface-texgyrecursor-0.1.1.tar.gz", hash = "sha256:076f7dbbd0201b0d44f4c77e4f7070474e1365152dc8509b5cded04c1648308a" },
{ file = "rinoh_typeface_texgyrecursor-0.1.1-py3-none-any.whl", hash = "sha256:98080e6af2271e67cff1d69033cb6c3a6baa58de41a66dce1a1102b4dd41de72" },
]
rinoh-typeface-texgyreheros = [
{ file = "rinoh-typeface-texgyreheros-0.1.1.tar.gz", hash = "sha256:fd7082e917bccc292894447f11d15a3efce9f1386056118b57b66cc2f5a36bbd" },
{ file = "rinoh_typeface_texgyreheros-0.1.1-py3-none-any.whl", hash = "sha256:0c921a040a84b0af031e4a36d196d46b65fb18929d88df5ed26533b57100e6c9" },
]
rinoh-typeface-texgyrepagella = [
{ file = "rinoh-typeface-texgyrepagella-0.1.1.tar.gz", hash = "sha256:53f4dba338c6b1df758888f23ce1ed728e5be45746f161488ad3b944e5e79fd2" },
{ file = "rinoh_typeface_texgyrepagella-0.1.1-py3-none-any.whl", hash = "sha256:0144e3b828a31b405ab9be1dec67f48be360d9f86d109578924fd1d7e0e1ded6" },
]
rinohtype = [
{ file = "rinohtype-0.5.3-py3-none-any.whl", hash = "sha256:8bd4f0dd188026ede65286eab4bcfb3bffc594fe4bca7cf1f0125ccd35ff995a" },
{ file = "rinohtype-0.5.3.tar.gz", hash = "sha256:7b4dea40df49a7f623ad0382b3802cb72a7e72d0e30facba135cd86b977b5762" },
]
six = [
{ file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" },
{ file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926" },

View file

@ -25,6 +25,8 @@ Sphinx = "^4.2.0"
sphinx-rtd-theme = "^1.0.0"
sphinx-autobuild = "^2021.3.14"
sphinxcontrib-bibtex = "^2.4.1"
rinohtype = "^0.5.3"
Pillow = "^8.4.0"
[build-system]
requires = ["poetry-core>=1.0.0"]

View file

@ -159,3 +159,11 @@ bibtex_bibfiles = [
"refs.bib",
]
bibtex_reference_style = "super"
# Rinohtype
rinoh_documents = [
{
"doc": "index",
"target": "manual",
}
]

View file

@ -24,7 +24,7 @@ Jupyter però ha alcuni problemi: è complesso da installare e mantenere, e non
Obiettivo della tesi
====================
L'obiettivo di questa tesi è quello di descrivere lo sviluppo dell'applicativo "*Sophon*", realizzato con il fine di colmare le lacune di `Jupyter`, facilitandone l'utilizzo in ambiente universitario.
L'obiettivo di questa tesi è quello di descrivere lo sviluppo dell'applicativo "*Sophon*", realizzato con il fine di semplificare l'utilizzo di `Jupyter` in ambiente universitario.
In particolare, l'obiettivo di Sophon è quello di:

BIN
thesis/source/docs/3_presentazione/google_docs.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -7,7 +7,68 @@ Ricerca collaborativa
Nelle scienze, sia teoriche, sia sperimentali, si verifica spesso la necessità di dover prendere appunti e condividere appunti sulla ricerca effettuata.
Mentre in passato a tale scopo venivano utilizzati quaderni di carta (detti anche *"blocchi note laboratoriali"* :cite:`enwiki:993314047`), con la nascita dell'informatica si iniziarono ad utilizzare strumenti digitali, più comodi ed efficienti: inizialmente, semplici word processor come *Microsoft Word*, arrivando poi negli ultimi anni ai più avanzati e interattivi `notebook computazionali <Notebook computazionali>`.
Mentre in passato a tale scopo venivano utilizzati quaderni di carta (detti anche *"blocchi note laboratoriali"* :cite:`enwiki:993314047`), con la nascita dell'informatica si iniziarono ad utilizzare strumenti digitali, più comodi ed efficienti: inizialmente, semplici sistemi di composizione tipografica come *TeX*, poi editor :abbr:`WYSIWYG (What You See Is What You Get)` come *Microsoft Word*, arrivando infine negli ultimi anni ai più avanzati e interattivi `notebook computazionali <Notebook computazionali>`.
.. index::
single: composizione tipografica
single: sistemi di composizione tipografica
Sistemi di composizione tipografica
===================================
I primi sistemi utilizzati in ambito accademico per la creazione di documenti erano molto semplici: si limitavano a descrivere come dovevano apparire i contenuti sul foglio stampato attraverso istruzioni molto simili a quelle di un linguaggio di programmazione.
Sono esempi di sistemi di composizione tipografica `TeX <https://www.tug.org/begin.html>`_, usato ancora oggi in combinazione con il sistema `LaTeX <https://www.latex-project.org//>`_ per comporre documenti accademici come paper e tesi (inclusa questa), e `roff <https://en.wikipedia.org/wiki/Roff_(software)>`_, su cui si basa oggi lo strumento `groff <https://it.wikipedia.org/wiki/Groff_(software)>`_ per comporre le pagine di manuale dei sistemi operativi Unix-like.
Un esempio di documento LaTeX :cite:`overleaf:learn30mins` è il seguente:
.. code-block:: latex
\documentclass{article}
\begin{document}
First document.
This is a simple example, with no extra parameters or packages included.
\end{document}
.. index::
single: editor WYSIWYG
Editor WYSIWYG
==============
.. todo:: Non mi piace questa frase.
Con l'evolversi dei sistemi operativi, in particolare con la diffusione dei sistemi operativi a finestre, sono stati sviluppati software detti "editor di testo :abbr:`WYSIWYG (What You See Is What You Get)`", che permettono di scrivere documenti avendo un'anteprima istantanea del testo inserito.
Essendo molto più intuitivi da usare dei loro predecessori, ne hanno preso rapidamente il posto in tutto il mondo, di fatto limitando l'uso dei `sistemi di composizione tipografica <Sistemi di composizione tipografica>` ad ambiti in cui era necessaria una formattazione avanzata dei documenti.
Alcuni esempi moderni di editor :abbr:`WYSIWYG (What You See Is What You Get)` sono `Microsoft Word <https://www.microsoft.com/it-it/microsoft-365/word>`_ e `LibreOffice Writer <https://it.libreoffice.org/scopri/writer/>`_.
.. figure:: libreoffice.png
Modifica di un documento su LibreOffice 7.2.2.2.
.. index::
single: editor WYSIWYG; web-based
Web-based editor
================
Il paradigma web "2.0" ha portato miglioramenti significativi agli editor :abbr:`WYSIWYG (What You See Is What You Get)`, rendendoli utilizzabili online come software-as-a-service direttamente da un browser.
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.
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>`.
.. figure:: google_docs.png
Un esempio di collaborazione su un documento Google Docs.
.. index::
@ -17,15 +78,17 @@ Mentre in passato a tale scopo venivano utilizzati quaderni di carta (detti anch
Notebook computazionali
=======================
I *notebook computazionali* sono documenti interattivi frequentemente utilizzati nel mondo della ricerca, in quanto permettono di documentare l'analisi di dati con feedback grafico immediato.
In parallelo ai `web-based editor <Web-based editor>`, ha preso piede nel mondo della ricerca scientifica una nuova tipologia di documento: il notebook computazionali.
Tipicamente, sono composti da tante **celle** contenenti codice in un qualche linguaggio di programmazione, le quali sono eseguite e il cui output è mostrato all'utente sotto forma di testo, equazioni, immagini, grafici, o anche widget interattivi come slider o aree di input testo.
I *notebook computazionali* sono un tipo di documento interattivo che permette contemporaneamente di analizzare dati, elaborarli e documentare elaborazioni effettuate e risultati ottenuti.
Alcuni esempi di software per la scrittura di notebook computazionali sono `Jupyter`, `Wolfram Mathematica <https://www.wolfram.com/mathematica/>`_, `MATLAB Live Editor <https://it.mathworks.com/products/matlab/live-editor.html>`_...
Essi sono composti da tante **celle**, ciascuna contenente codice in un determinato linguaggio di programmazione o di marcatura, il quale è eseguito, mostrandone poi i risultati all'utente, sotto forma di testo, equazioni, immagini, grafici, o anche widget interattivi come slider o aree di input testo.
.. figure:: hist_example.png
Alcuni esempi di software per la scrittura di notebook computazionali sono `Jupyter <https://jupyter.org/>`_, `Wolfram Mathematica <https://www.wolfram.com/mathematica/>`_, `MATLAB Live Editor <https://it.mathworks.com/products/matlab/live-editor.html>`_...
Un esempio di notebook `Jupyter` con una cella di testo e una cella di Python che emette un grafico. :cite:`matplotlib:histograms`
.. figure:: wolfram_cloud.png
Un esempio di notebook Mathematica, scritto su Wolfram Cloud.
.. index::
@ -34,55 +97,86 @@ Alcuni esempi di software per la scrittura di notebook computazionali sono `Jupy
Jupyter
=======
*Jupyter* è un'applicazione che permette la scrittura e la visualizzazione di `notebook computazionali <Notebook computazionali>`.
*Jupyter* è un software open-source che permette la scrittura e la visualizzazione di `notebook computazionali <Notebook computazionali>`.
Come tutti i notebook computazionali è strutturato in celle, le quali possono contenere testo, dati oppure codice di programmazione con relativo output.
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 :cite:`jupyter:collaboration`.
.. figure:: hist_example.png
Un esempio di notebook Jupyter con una cella di testo e una cella di Python che emette un grafico.
.. index::
single: Jupyter; parti di
Parti di Jupyter
----------------
Jupyter è composto da 3 parti: un `kernel <Kernel Jupyter>`, un `server <server Jupyter>` e un `client <client Jupyter>`.
È composta da 3 (o più) parti:
.. index::
single: Jupyter; kernel
single: IPython
- | Un **kernel** per il linguaggio di programmazione che si desidera utilizzare nel notebook (o, se si desidera più linguaggi, un kernel per ciascun linguaggio).
| Il kernel si occupa di eseguire su richiesta le celle del notebook, e di rispondere alla richiesta con i risultati dell'esecuzione.
| Il kernel predefinito di Jupyter è `IPython <https://ipython.org/>`_, che permette di utilizzare il linguaggio di programmazione `Python <https://www.python.org/>`_.
Kernel Jupyter
^^^^^^^^^^^^^^
Il kernel è la parte di Jupyter che si occupa di eseguire le celle del notebook, restituendone i risultati al `server <server Jupyter>`.
Per ogni linguaggio di programmazione che si desidera utilizzare nel notebook è necessario il relativo **kernel**: il kernel predefinito di Jupyter è `IPython <https://ipython.org/>`_, che permette di utilizzare il linguaggio di programmazione `Python <https://www.python.org/>`_; sono però disponibili tanti altri kernel, tra cui uno per `Julia <https://julialang.org/>`_ e uno per `R <https://www.r-project.org/>`_ :cite:`jupyter:kernels`.
.. index::
single: Jupyter; server
- | Un **server** che gestisce le richieste dell'utente di interazione con il notebook, inoltrandole a un kernel se necessario.
| Il server ufficiale di Jupyter è `Jupyter Server <https://github.com/jupyter-server/jupyter_server>`_.
Server Jupyter
^^^^^^^^^^^^^^
Il **server** è la parte di Jupyter che gestisce le interazioni del `client <client Jupyter>` con il notebook, inoltrandole al `kernel <kernel Jupyter>` appropriato se necessario.
Il server ufficiale di Jupyter è `Jupyter Server <https://github.com/jupyter-server/jupyter_server>`_.
.. index::
single: Jupyter; client
single: Jupyter; Notebook
single: Jupyter; Lab
- | un **client** che mostra in un formato user-friendly il contenuto del notebook e gli permette di modificarlo con facilità, connettendosi al relativo server.
| Esistono due client ufficiali per Jupyter: il client di vecchia generazione `Jupyter Notebook <https://github.com/jupyter/notebook>`_ e il client di nuova generazione `JupyterLab <https://github.com/jupyterlab>`_.
Client Jupyter
^^^^^^^^^^^^^^
Il **client** è la parte di Jupyter che mostra in un formato user-friendly il contenuto del notebook e gli permette di interagirvi, comunicando le interazioni al `server <server Jupyter>`.
Esistono due client ufficiali per Jupyter: il client di vecchia generazione `Jupyter Notebook <https://github.com/jupyter/notebook>`_ e il client di nuova generazione `JupyterLab <https://github.com/jupyterlab>`_, entrambi web-based.
.. index::
single: Jupyter; hosting
Hosting di Jupyter
==================
------------------
È possibile utilizzare `Jupyter` in diversi modi, ciascuno con alcuni vantaggi e svantaggi.
Essendo `server <server Jupyter>` e `client <client Jupyter>` separati, è possibile eseguire il server su una macchina e il client su un'altra.
È possibile selezionare la macchina su cui eseguire il server in tre modi diversi, elencati nelle prossime sezioni, ciascuno con alcuni vantaggi e svantaggi.
.. index::
single: Jupyter; hosting locale
Hosting locale
--------------
^^^^^^^^^^^^^^
È possibile installare il server Jupyter sul proprio computer per visualizzare e modificare notebook semplici.
È possibile installare il server Jupyter **sul proprio computer** per visualizzare e modificare notebook semplici.
Così facendo, le celle verranno eseguite con le risorse del proprio computer, e il notebook sarà accessibile solo dal computer che sta eseguendo il server.
Così facendo, le celle saranno eseguite con le risorse del proprio computer, e il notebook sarà accessibile solo dal computer che sta eseguendo il server.
È un ottimo modo per lavorare su progetti personali, in quanto offre la massima personalizzazione dell'ambiente, e per lavorare offline, in quanto è in grado di funzionare senza alcuna connessione ad Internet.
È un ottimo modo per lavorare su progetti personali, in quanto offre la massima personalizzazione attraverso un sistema di plugin installabili, e per lavorare offline, in quanto è l'unico modo di usare il server senza connessione ad Internet.
In base al proprio sistema operativo, però, potrebbe risultare difficile da installare, e in base alla propria configurazione di rete, collaborare su un progetto potrebbe essere impossibile (senza appoggiarsi a strumenti esterni di scambio file, come email, o sistemi di controllo versione).
In base al proprio sistema operativo, però, potrebbe risultare difficile da installare, e in base alla propria configurazione di rete, la collaborazione realtime su un progetto potrebbe essere impossibile.
.. index::
@ -91,15 +185,15 @@ In base al proprio sistema operativo, però, potrebbe risultare difficile da ins
single: SageMaker Notebook
Come software-as-a-service
--------------------------
^^^^^^^^^^^^^^^^^^^^^^^^^^
È possibile utilizzare un server Jupyter gestito da un cloud provider ed utilizzare le risorse da esso fornite per eseguire le celle.
È possibile utilizzare un server Jupyter **gestito da un cloud provider** ed utilizzare le risorse da esso fornite per eseguire le celle.
Alcuni esempi di cloud provider che forniscono questo servizio sono Google, con `Google Colaboratory <https://colab.research.google.com/#>`_ e Amazon, con `SageMaker Notebook <https://docs.aws.amazon.com/sagemaker/latest/dg/nbi.html>`_.
Un esempio di cloud provider che fornisce questo servizio è Google, con `Google Colaboratory <https://colab.research.google.com/#>`_.
Generalmente, il modello 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 la collaborazione 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.
Purtroppo, però, offre poche opzioni per personalizzare l'ambiente, e, se si necessitano più risorse di quelle offerte gratuitamente dai provider, il costo cresce molto rapidamente.
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.
.. index::
@ -107,12 +201,12 @@ Purtroppo, però, offre poche opzioni per personalizzare l'ambiente, e, se si ne
single: Jupyter; Hub
Hosting on-premises
-------------------
^^^^^^^^^^^^^^^^^^^
È possibile configurare un server della propria istituzione in modo tale che esegua uno o più server Jupyter a cui si connetteranno gli utenti.
È possibile configurare un **server della propria istituzione** in modo tale che esegua uno o più `server Jupyter <Server Jupyter>` a cui si connetteranno i `client <client Jupyter>`.
A tale scopo, è disponibile il progetto `JupyterHub <https://jupyter.org/hub>`_, in grado di gestire migliaia di utenti simultanei :cite:`jupyter:ifaq`, ciascuno con il proprio notebook.
È performante ed efficace, e lascia completa libertà agli utenti di personalizzare il loro ambiente di lavoro.
È 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ò ancora molto essenziale, essendo un progetto piuttosto nuovo, e non supporta nativamente la collaborazione multiutente su un singolo notebook, preferendo il modello *"tanti server Jupyter da utente singolo"* :cite:`jupyter:hub`.
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"* :cite:`jupyter:hub`.

BIN
thesis/source/docs/3_presentazione/libreoffice.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
thesis/source/docs/3_presentazione/wolfram_cloud.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -22,11 +22,36 @@ jupyter:hub,
note = {Accessed: 2021-11-16},
}
@misc{
jupyter:kernels,
author = {Project Jupyter},
title = {Jupyter kernels},
howpublished = {https://web.archive.org/web/20211118154819/https://github.com/jupyter/jupyter/wiki/Jupyter-kernels},
note = {Accessed: 2021-11-18},
}
@misc{
jupyter:collaboration,
author = {Project Jupyter},
title = {Real Time Collaboration},
howpublished = {https://web.archive.org/web/20211118174617/https://jupyterlab.readthedocs.io/en/stable/user/rtc.html},
note = {Accessed: 2021-11-18},
}
@misc{
enwiki:993314047,
author = {Wikipedia},
title = {Electronic lab notebook --- {Wikipedia}{,} The Free Encyclopedia},
author = {English Wikipedia},
title = {Electronic lab notebook},
year = {2020},
howpublished = {https://en.wikipedia.org/w/index.php?title=Electronic_lab_notebook&oldid=993314047},
note = {Accessed 2021-11-15},
}
note = {Accessed: 2021-11-15},
}
@misc{
overleaf:learn30mins,
author = {Overleaf},
title = {Learn LaTeX in 30 minutes},
howpublished = {https://web.archive.org/web/20211116220924/https://www.overleaf.com/learn/latex/Learn_LaTeX_in_30_minutes},
note = {Accessed: 2021-11-16},
}