From cf2f99d747fcdd6c20c3ea0127427217d4f525dc Mon Sep 17 00:00:00 2001 From: julienmalard Date: Sun, 18 Feb 2024 15:59:28 +0000 Subject: [PATCH] deploy: e38f69c22526fc7c6f63655d3936233e8b485316 --- 404.html | 2 +- ...resLangages_n\305\223udLocal.md.ukCcxgx2.js" | 2 +- ...ngages_n\305\223udLocal.md.ukCcxgx2.lean.js" | 0 ...03\251_autresLangages_python.md.bD8E1TXJ.js" | 2 +- ...1_autresLangages_python.md.bD8E1TXJ.lean.js" | 0 assets/changerLangue.3HIXrmKV.png | Bin 0 -> 57780 bytes assets/changerLangue.3Qnx2sdc.png | Bin 0 -> 56621 bytes assets/changerLangue.3t_voIo4.png | Bin 49952 -> 0 bytes assets/changerLangue.P4t0iDsv.png | Bin 0 -> 58639 bytes assets/changerLangue.Z5pbAsoq.png | Bin 0 -> 50443 bytes assets/changerLangue.fYK0ztMT.png | Bin 57239 -> 0 bytes assets/changerLangue.vGXNkEGv.png | Bin 58137 -> 0 bytes assets/changerLangue.ywiea3K5.png | Bin 56140 -> 0 bytes ...emples_cr\303\251ationCompte.md.Vwk9cXoN.js" | 2 +- ...s_cr\303\251ationCompte.md.Vwk9cXoN.lean.js" | 2 +- ...=> exemples_scienceCitoyenne.md.coMracgi.js} | 4 ++-- ...emples_scienceCitoyenne.md.coMracgi.lean.js} | 0 ...emples_cr\303\251ationCompte.md.oOIwQ7IM.js" | 2 +- ...s_cr\303\251ationCompte.md.oOIwQ7IM.lean.js" | 2 +- ...emples_cr\303\251ationCompte.md.YIj7QVQX.js" | 2 +- ...s_cr\303\251ationCompte.md.YIj7QVQX.lean.js" | 2 +- ...emples_cr\303\251ationCompte.md.E__AtABz.js" | 2 +- ...s_cr\303\251ationCompte.md.E__AtABz.lean.js" | 2 +- "avanc\303\251/applications/internet.html" | 2 +- "avanc\303\251/applications/introduction.html" | 2 +- "avanc\303\251/applications/nu\303\251es.html" | 2 +- .../applications/\303\251lectron.html" | 2 +- .../autresLangages/introduction.html" | 2 +- "avanc\303\251/autresLangages/julia.html" | 2 +- .../autresLangages/nouveauxLangages.html" | 2 +- .../autresLangages/n\305\223udLocal.html" | 6 +++--- "avanc\303\251/autresLangages/python.html" | 6 +++--- "avanc\303\251/autresLangages/r.html" | 2 +- "cst/avanc\303\251/applications/internet.html" | 2 +- .../applications/introduction.html" | 2 +- .../applications/nu\303\251es.html" | 2 +- .../applications/\303\251lectron.html" | 2 +- .../autresLangages/introduction.html" | 2 +- "cst/avanc\303\251/autresLangages/julia.html" | 2 +- .../autresLangages/nouveauxLangages.html" | 2 +- .../autresLangages/n\305\223udLocal.html" | 2 +- "cst/avanc\303\251/autresLangages/python.html" | 2 +- "cst/avanc\303\251/autresLangages/r.html" | 2 +- "cst/exemples/cr\303\251ationCompte.html" | 6 +++--- cst/exemples/diffusion.html | 2 +- "cst/exemples/mesDonn\303\251es.html" | 2 +- cst/exemples/monCompte.html | 2 +- cst/exemples/scienceCitoyenne.html | 2 +- cst/guide/concepts.html | 2 +- cst/guide/installation.html | 2 +- cst/guide/introduction.html | 2 +- "cst/guide/pair\303\200Pair.html" | 2 +- cst/guide/questions.html | 2 +- cst/index.html | 2 +- cst/ipa/automatisations.html | 2 +- cst/ipa/bds.html | 2 +- cst/ipa/client.html | 2 +- cst/ipa/favoris.html | 2 +- cst/ipa/introduction.html | 2 +- cst/ipa/licences.html | 2 +- cst/ipa/motsClefs.html | 2 +- "cst/ipa/nu\303\251es.html" | 2 +- cst/ipa/profil.html | 2 +- cst/ipa/projets.html | 2 +- cst/ipa/recherche.html | 2 +- "cst/ipa/r\303\250gles.html" | 2 +- "cst/ipa/r\303\251seau.html" | 2 +- cst/ipa/tableaux.html | 2 +- cst/ipa/variables.html | 2 +- "exemples/cr\303\251ationCompte.html" | 2 +- exemples/diffusion.html | 2 +- "exemples/mesDonn\303\251es.html" | 2 +- exemples/monCompte.html | 2 +- exemples/scienceCitoyenne.html | 8 ++++---- guide/concepts.html | 2 +- guide/installation.html | 2 +- guide/introduction.html | 2 +- "guide/pair\303\200Pair.html" | 2 +- guide/questions.html | 2 +- hashmap.json | 2 +- index.html | 2 +- ipa/automatisations.html | 2 +- ipa/bds.html | 2 +- ipa/client.html | 2 +- ipa/favoris.html | 2 +- ipa/introduction.html | 2 +- ipa/licences.html | 2 +- ipa/motsClefs.html | 2 +- "ipa/nu\303\251es.html" | 2 +- ipa/profil.html | 2 +- ipa/projets.html | 2 +- ipa/recherche.html | 2 +- "ipa/r\303\250gles.html" | 2 +- "ipa/r\303\251seau.html" | 2 +- ipa/tableaux.html | 2 +- ipa/variables.html | 2 +- "kaq/avanc\303\251/applications/internet.html" | 2 +- .../applications/introduction.html" | 2 +- .../applications/nu\303\251es.html" | 2 +- .../applications/\303\251lectron.html" | 2 +- .../autresLangages/introduction.html" | 2 +- "kaq/avanc\303\251/autresLangages/julia.html" | 2 +- .../autresLangages/nouveauxLangages.html" | 2 +- .../autresLangages/n\305\223udLocal.html" | 2 +- "kaq/avanc\303\251/autresLangages/python.html" | 2 +- "kaq/avanc\303\251/autresLangages/r.html" | 2 +- "kaq/exemples/cr\303\251ationCompte.html" | 6 +++--- kaq/exemples/diffusion.html | 2 +- "kaq/exemples/mesDonn\303\251es.html" | 2 +- kaq/exemples/monCompte.html | 2 +- kaq/exemples/scienceCitoyenne.html | 2 +- kaq/guide/concepts.html | 2 +- kaq/guide/installation.html | 2 +- kaq/guide/introduction.html | 2 +- "kaq/guide/pair\303\200Pair.html" | 2 +- kaq/guide/questions.html | 2 +- kaq/index.html | 2 +- kaq/ipa/automatisations.html | 2 +- kaq/ipa/bds.html | 2 +- kaq/ipa/client.html | 2 +- kaq/ipa/favoris.html | 2 +- kaq/ipa/introduction.html | 2 +- kaq/ipa/licences.html | 2 +- kaq/ipa/motsClefs.html | 2 +- "kaq/ipa/nu\303\251es.html" | 2 +- kaq/ipa/profil.html | 2 +- kaq/ipa/projets.html | 2 +- kaq/ipa/recherche.html | 2 +- "kaq/ipa/r\303\250gles.html" | 2 +- "kaq/ipa/r\303\251seau.html" | 2 +- kaq/ipa/tableaux.html | 2 +- kaq/ipa/variables.html | 2 +- .../avanc\303\251/applications/internet.html" | 2 +- .../applications/introduction.html" | 2 +- .../applications/nu\303\251es.html" | 2 +- .../applications/\303\251lectron.html" | 2 +- .../autresLangages/introduction.html" | 2 +- .../avanc\303\251/autresLangages/julia.html" | 2 +- .../autresLangages/nouveauxLangages.html" | 2 +- .../autresLangages/n\305\223udLocal.html" | 2 +- .../avanc\303\251/autresLangages/python.html" | 2 +- .../avanc\303\251/autresLangages/r.html" | 2 +- .../exemples/cr\303\251ationCompte.html" | 2 +- "\331\201\330\247/exemples/diffusion.html" | 2 +- .../exemples/mesDonn\303\251es.html" | 2 +- "\331\201\330\247/exemples/monCompte.html" | 2 +- .../exemples/scienceCitoyenne.html" | 2 +- "\331\201\330\247/guide/concepts.html" | 2 +- "\331\201\330\247/guide/installation.html" | 2 +- "\331\201\330\247/guide/introduction.html" | 2 +- "\331\201\330\247/guide/pair\303\200Pair.html" | 2 +- "\331\201\330\247/guide/questions.html" | 2 +- "\331\201\330\247/index.html" | 2 +- "\331\201\330\247/ipa/automatisations.html" | 2 +- "\331\201\330\247/ipa/bds.html" | 2 +- "\331\201\330\247/ipa/client.html" | 2 +- "\331\201\330\247/ipa/favoris.html" | 2 +- "\331\201\330\247/ipa/introduction.html" | 2 +- "\331\201\330\247/ipa/licences.html" | 2 +- "\331\201\330\247/ipa/motsClefs.html" | 2 +- "\331\201\330\247/ipa/nu\303\251es.html" | 2 +- "\331\201\330\247/ipa/profil.html" | 2 +- "\331\201\330\247/ipa/projets.html" | 2 +- "\331\201\330\247/ipa/recherche.html" | 2 +- "\331\201\330\247/ipa/r\303\250gles.html" | 2 +- "\331\201\330\247/ipa/r\303\251seau.html" | 2 +- "\331\201\330\247/ipa/tableaux.html" | 2 +- "\331\201\330\247/ipa/variables.html" | 2 +- .../avanc\303\251/applications/internet.html" | 2 +- .../applications/introduction.html" | 2 +- .../applications/nu\303\251es.html" | 2 +- .../applications/\303\251lectron.html" | 2 +- .../autresLangages/introduction.html" | 2 +- .../avanc\303\251/autresLangages/julia.html" | 2 +- .../autresLangages/nouveauxLangages.html" | 2 +- .../autresLangages/n\305\223udLocal.html" | 2 +- .../avanc\303\251/autresLangages/python.html" | 2 +- .../avanc\303\251/autresLangages/r.html" | 2 +- .../exemples/cr\303\251ationCompte.html" | 6 +++--- .../exemples/diffusion.html" | 2 +- .../exemples/mesDonn\303\251es.html" | 2 +- .../exemples/monCompte.html" | 2 +- .../exemples/scienceCitoyenne.html" | 2 +- .../guide/concepts.html" | 2 +- .../guide/installation.html" | 2 +- .../guide/introduction.html" | 2 +- .../guide/pair\303\200Pair.html" | 2 +- .../guide/questions.html" | 2 +- .../index.html" | 2 +- .../ipa/automatisations.html" | 2 +- .../ipa/bds.html" | 2 +- .../ipa/client.html" | 2 +- .../ipa/favoris.html" | 2 +- .../ipa/introduction.html" | 2 +- .../ipa/licences.html" | 2 +- .../ipa/motsClefs.html" | 2 +- .../ipa/nu\303\251es.html" | 2 +- .../ipa/profil.html" | 2 +- .../ipa/projets.html" | 2 +- .../ipa/recherche.html" | 2 +- .../ipa/r\303\250gles.html" | 2 +- .../ipa/r\303\251seau.html" | 2 +- .../ipa/tableaux.html" | 2 +- .../ipa/variables.html" | 2 +- .../avanc\303\251/applications/internet.html" | 2 +- .../applications/introduction.html" | 2 +- .../applications/nu\303\251es.html" | 2 +- .../applications/\303\251lectron.html" | 2 +- .../autresLangages/introduction.html" | 2 +- .../avanc\303\251/autresLangages/julia.html" | 2 +- .../autresLangages/nouveauxLangages.html" | 2 +- .../autresLangages/n\305\223udLocal.html" | 2 +- .../avanc\303\251/autresLangages/python.html" | 2 +- .../avanc\303\251/autresLangages/r.html" | 2 +- .../exemples/cr\303\251ationCompte.html" | 2 +- .../exemples/diffusion.html" | 2 +- .../exemples/mesDonn\303\251es.html" | 2 +- .../exemples/monCompte.html" | 2 +- .../exemples/scienceCitoyenne.html" | 2 +- "\340\252\227\340\253\201/guide/concepts.html" | 2 +- .../guide/installation.html" | 2 +- .../guide/introduction.html" | 2 +- .../guide/pair\303\200Pair.html" | 2 +- "\340\252\227\340\253\201/guide/questions.html" | 2 +- "\340\252\227\340\253\201/index.html" | 2 +- .../ipa/automatisations.html" | 2 +- "\340\252\227\340\253\201/ipa/bds.html" | 2 +- "\340\252\227\340\253\201/ipa/client.html" | 2 +- "\340\252\227\340\253\201/ipa/favoris.html" | 2 +- .../ipa/introduction.html" | 2 +- "\340\252\227\340\253\201/ipa/licences.html" | 2 +- "\340\252\227\340\253\201/ipa/motsClefs.html" | 2 +- .../ipa/nu\303\251es.html" | 2 +- "\340\252\227\340\253\201/ipa/profil.html" | 2 +- "\340\252\227\340\253\201/ipa/projets.html" | 2 +- "\340\252\227\340\253\201/ipa/recherche.html" | 2 +- .../ipa/r\303\250gles.html" | 2 +- .../ipa/r\303\251seau.html" | 2 +- "\340\252\227\340\253\201/ipa/tableaux.html" | 2 +- "\340\252\227\340\253\201/ipa/variables.html" | 2 +- .../avanc\303\251/applications/internet.html" | 2 +- .../applications/introduction.html" | 2 +- .../applications/nu\303\251es.html" | 2 +- .../applications/\303\251lectron.html" | 2 +- .../autresLangages/introduction.html" | 2 +- .../avanc\303\251/autresLangages/julia.html" | 2 +- .../autresLangages/nouveauxLangages.html" | 2 +- .../autresLangages/n\305\223udLocal.html" | 2 +- .../avanc\303\251/autresLangages/python.html" | 2 +- .../avanc\303\251/autresLangages/r.html" | 2 +- .../exemples/cr\303\251ationCompte.html" | 6 +++--- "\340\256\244/exemples/diffusion.html" | 2 +- "\340\256\244/exemples/mesDonn\303\251es.html" | 2 +- "\340\256\244/exemples/monCompte.html" | 2 +- "\340\256\244/exemples/scienceCitoyenne.html" | 2 +- "\340\256\244/guide/concepts.html" | 2 +- "\340\256\244/guide/installation.html" | 2 +- "\340\256\244/guide/introduction.html" | 2 +- "\340\256\244/guide/pair\303\200Pair.html" | 2 +- "\340\256\244/guide/questions.html" | 2 +- "\340\256\244/index.html" | 2 +- "\340\256\244/ipa/automatisations.html" | 2 +- "\340\256\244/ipa/bds.html" | 2 +- "\340\256\244/ipa/client.html" | 2 +- "\340\256\244/ipa/favoris.html" | 2 +- "\340\256\244/ipa/introduction.html" | 2 +- "\340\256\244/ipa/licences.html" | 2 +- "\340\256\244/ipa/motsClefs.html" | 2 +- "\340\256\244/ipa/nu\303\251es.html" | 2 +- "\340\256\244/ipa/profil.html" | 2 +- "\340\256\244/ipa/projets.html" | 2 +- "\340\256\244/ipa/recherche.html" | 2 +- "\340\256\244/ipa/r\303\250gles.html" | 2 +- "\340\256\244/ipa/r\303\251seau.html" | 2 +- "\340\256\244/ipa/tableaux.html" | 2 +- "\340\256\244/ipa/variables.html" | 2 +- .../avanc\303\251/applications/internet.html" | 2 +- .../applications/introduction.html" | 2 +- .../applications/nu\303\251es.html" | 2 +- .../applications/\303\251lectron.html" | 2 +- .../autresLangages/introduction.html" | 2 +- .../avanc\303\251/autresLangages/julia.html" | 2 +- .../autresLangages/nouveauxLangages.html" | 2 +- .../autresLangages/n\305\223udLocal.html" | 2 +- .../avanc\303\251/autresLangages/python.html" | 2 +- .../avanc\303\251/autresLangages/r.html" | 2 +- .../exemples/cr\303\251ationCompte.html" | 2 +- .../exemples/diffusion.html" | 2 +- .../exemples/mesDonn\303\251es.html" | 2 +- .../exemples/monCompte.html" | 2 +- .../exemples/scienceCitoyenne.html" | 2 +- "\340\260\244\340\261\206/guide/concepts.html" | 2 +- .../guide/installation.html" | 2 +- .../guide/introduction.html" | 2 +- .../guide/pair\303\200Pair.html" | 2 +- "\340\260\244\340\261\206/guide/questions.html" | 2 +- "\340\260\244\340\261\206/index.html" | 2 +- .../ipa/automatisations.html" | 2 +- "\340\260\244\340\261\206/ipa/bds.html" | 2 +- "\340\260\244\340\261\206/ipa/client.html" | 2 +- "\340\260\244\340\261\206/ipa/favoris.html" | 2 +- .../ipa/introduction.html" | 2 +- "\340\260\244\340\261\206/ipa/licences.html" | 2 +- "\340\260\244\340\261\206/ipa/motsClefs.html" | 2 +- .../ipa/nu\303\251es.html" | 2 +- "\340\260\244\340\261\206/ipa/profil.html" | 2 +- "\340\260\244\340\261\206/ipa/projets.html" | 2 +- "\340\260\244\340\261\206/ipa/recherche.html" | 2 +- .../ipa/r\303\250gles.html" | 2 +- .../ipa/r\303\251seau.html" | 2 +- "\340\260\244\340\261\206/ipa/tableaux.html" | 2 +- "\340\260\244\340\261\206/ipa/variables.html" | 2 +- .../avanc\303\251/applications/internet.html" | 2 +- .../applications/introduction.html" | 2 +- .../applications/nu\303\251es.html" | 2 +- .../applications/\303\251lectron.html" | 2 +- .../autresLangages/introduction.html" | 2 +- .../avanc\303\251/autresLangages/julia.html" | 2 +- .../autresLangages/nouveauxLangages.html" | 2 +- .../autresLangages/n\305\223udLocal.html" | 2 +- .../avanc\303\251/autresLangages/python.html" | 2 +- .../avanc\303\251/autresLangages/r.html" | 2 +- .../exemples/cr\303\251ationCompte.html" | 2 +- "\340\262\225/exemples/diffusion.html" | 2 +- "\340\262\225/exemples/mesDonn\303\251es.html" | 2 +- "\340\262\225/exemples/monCompte.html" | 2 +- "\340\262\225/exemples/scienceCitoyenne.html" | 2 +- "\340\262\225/guide/concepts.html" | 2 +- "\340\262\225/guide/installation.html" | 2 +- "\340\262\225/guide/introduction.html" | 2 +- "\340\262\225/guide/pair\303\200Pair.html" | 2 +- "\340\262\225/guide/questions.html" | 2 +- "\340\262\225/index.html" | 2 +- "\340\262\225/ipa/automatisations.html" | 2 +- "\340\262\225/ipa/bds.html" | 2 +- "\340\262\225/ipa/client.html" | 2 +- "\340\262\225/ipa/favoris.html" | 2 +- "\340\262\225/ipa/introduction.html" | 2 +- "\340\262\225/ipa/licences.html" | 2 +- "\340\262\225/ipa/motsClefs.html" | 2 +- "\340\262\225/ipa/nu\303\251es.html" | 2 +- "\340\262\225/ipa/profil.html" | 2 +- "\340\262\225/ipa/projets.html" | 2 +- "\340\262\225/ipa/recherche.html" | 2 +- "\340\262\225/ipa/r\303\250gles.html" | 2 +- "\340\262\225/ipa/r\303\251seau.html" | 2 +- "\340\262\225/ipa/tableaux.html" | 2 +- "\340\262\225/ipa/variables.html" | 2 +- 348 files changed, 353 insertions(+), 353 deletions(-) rename "assets/avanc\303\251_autresLangages_n\305\223udLocal.md.2MY0RFow.js" => "assets/avanc\303\251_autresLangages_n\305\223udLocal.md.ukCcxgx2.js" (97%) rename "assets/avanc\303\251_autresLangages_n\305\223udLocal.md.2MY0RFow.lean.js" => "assets/avanc\303\251_autresLangages_n\305\223udLocal.md.ukCcxgx2.lean.js" (100%) rename "assets/avanc\303\251_autresLangages_python.md.NwQ4HAFA.js" => "assets/avanc\303\251_autresLangages_python.md.bD8E1TXJ.js" (99%) rename "assets/avanc\303\251_autresLangages_python.md.NwQ4HAFA.lean.js" => "assets/avanc\303\251_autresLangages_python.md.bD8E1TXJ.lean.js" (100%) create mode 100644 assets/changerLangue.3HIXrmKV.png create mode 100644 assets/changerLangue.3Qnx2sdc.png delete mode 100644 assets/changerLangue.3t_voIo4.png create mode 100644 assets/changerLangue.P4t0iDsv.png create mode 100644 assets/changerLangue.Z5pbAsoq.png delete mode 100644 assets/changerLangue.fYK0ztMT.png delete mode 100644 assets/changerLangue.vGXNkEGv.png delete mode 100644 assets/changerLangue.ywiea3K5.png rename "assets/cst_exemples_cr\303\251ationCompte.md.7fjrPyAV.js" => "assets/cst_exemples_cr\303\251ationCompte.md.Vwk9cXoN.js" (96%) rename "assets/cst_exemples_cr\303\251ationCompte.md.7fjrPyAV.lean.js" => "assets/cst_exemples_cr\303\251ationCompte.md.Vwk9cXoN.lean.js" (87%) rename assets/{exemples_scienceCitoyenne.md.lR5_rzTC.js => exemples_scienceCitoyenne.md.coMracgi.js} (98%) rename assets/{exemples_scienceCitoyenne.md.lR5_rzTC.lean.js => exemples_scienceCitoyenne.md.coMracgi.lean.js} (100%) rename "assets/kaq_exemples_cr\303\251ationCompte.md.bQYnCafk.js" => "assets/kaq_exemples_cr\303\251ationCompte.md.oOIwQ7IM.js" (96%) rename "assets/kaq_exemples_cr\303\251ationCompte.md.bQYnCafk.lean.js" => "assets/kaq_exemples_cr\303\251ationCompte.md.oOIwQ7IM.lean.js" (87%) rename "assets/\340\244\271\340\244\277\340\244\202_exemples_cr\303\251ationCompte.md.tu68wifg.js" => "assets/\340\244\271\340\244\277\340\244\202_exemples_cr\303\251ationCompte.md.YIj7QVQX.js" (91%) rename "assets/\340\244\271\340\244\277\340\244\202_exemples_cr\303\251ationCompte.md.tu68wifg.lean.js" => "assets/\340\244\271\340\244\277\340\244\202_exemples_cr\303\251ationCompte.md.YIj7QVQX.lean.js" (71%) rename "assets/\340\256\244_exemples_cr\303\251ationCompte.md.JORz7YGQ.js" => "assets/\340\256\244_exemples_cr\303\251ationCompte.md.E__AtABz.js" (96%) rename "assets/\340\256\244_exemples_cr\303\251ationCompte.md.JORz7YGQ.lean.js" => "assets/\340\256\244_exemples_cr\303\251ationCompte.md.E__AtABz.lean.js" (87%) diff --git a/404.html b/404.html index 9566cb74c8..aaa7fc111b 100644 --- a/404.html +++ b/404.html @@ -16,7 +16,7 @@
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/assets/avanc\303\251_autresLangages_n\305\223udLocal.md.2MY0RFow.js" "b/assets/avanc\303\251_autresLangages_n\305\223udLocal.md.ukCcxgx2.js" similarity index 97% rename from "assets/avanc\303\251_autresLangages_n\305\223udLocal.md.2MY0RFow.js" rename to "assets/avanc\303\251_autresLangages_n\305\223udLocal.md.ukCcxgx2.js" index 45d79b3609..374310c729 100644 --- "a/assets/avanc\303\251_autresLangages_n\305\223udLocal.md.2MY0RFow.js" +++ "b/assets/avanc\303\251_autresLangages_n\305\223udLocal.md.ukCcxgx2.js" @@ -1,4 +1,4 @@ -import{_ as s,o as i,c as a,R as e}from"./chunks/framework.Eeo-33mw.js";const g=JSON.parse('{"title":"Nœud local","description":"","frontmatter":{},"headers":[],"relativePath":"avancé/autresLangages/nœudLocal.md","filePath":"avancé/autresLangages/nœudLocal.md"}'),n={name:"avancé/autresLangages/nœudLocal.md"},t=e(`

Nœud local

Serveur WS

La librairie @constl/serveur vous permet de créer un nœud local Constellation et de le rendre accessible à d'autres logiciels sur votre machine par l'entremise d'un serveur WS local.

DANGER

⚠️ Ce serveur local n'est pas apte à être utilisé en tant que serveur publique ! Entre autres limitations, il n'y a aucun contrôle d'authentification et il donne accès illimité à un environnement Node.js. Il est donc configuré afin d'être uniquement disponible sur localhost. Ce serveur est dédié uniquement à la communication entre processus sur le même ordinateur, lorsque différents processus veulent accéder au même nœud Constellation local.

N'exposez jamais le serveur WS Constellation sur un port publique.

Utilisation

Si vous voulez tout simplement utiliser Constellation avec Python ou R, veuillez installer les librairies respectives constellation-py, Constellation.jl et constellation-R (en progrès). Celles-ci se chargeront automatiquement de lancer le serveur Constellation.

Installation globale

L'installation globale vous permet de lancer un nœud local Constellation de la ligne de commande. Si vous comptez simplement utiliser le serveur Constellation (y compris pour une analyse en Python, en R ou en Julia), installez-le comme suit :

bash
$ pnpm add -g @constl/serveur @constl/ipa

Ligne de commande

Vous pourrez ensuite lancer le nœud local en spécifiant (ou non) le port, l'identifiant de compte, et les dossiers à utiliser pour sauvegarder les données de votre compte :

$ constl lancer [-p <port>] [--compte <id-compte>] [--doss-orbite <dossierOrbite>] [--doss-sfip <dossierSFIP>]

Si vous ne comprennez pas ce que font les options de compte ou de dossier, laissez-les vides et inquiétez-vous pas ; ça fonctionnera pareil.

Pour obtenir le numéro de la version :

bash
$ constl version

Pour obtenir de l'aide :

bash
$ constl -a

Utilisation dans un autre projet

Si vous voulez incorporer le serveur Constellation dans une autre librairie JavaScript, vous pouvez l'installer ainsi :

bash
$ pnpm add @constl/serveur
bash
$ pnpm install @constl/serveur

Vous pourrez ensuite importer le serveur dans votre propre code et le lancer programmatiquement.

CONSEIL

Constellation elle-même (@constl/ipa) est spécifiée en tant que dépendance pair du serveur Constellation. Vous pouvez donc installer la version de Constellation qui vous convient.

Serveur

JavaScript
import { lancerServeur } from "@constl/serveur";
+import{_ as s,o as i,c as a,R as e}from"./chunks/framework.Eeo-33mw.js";const g=JSON.parse('{"title":"Nœud local","description":"","frontmatter":{},"headers":[],"relativePath":"avancé/autresLangages/nœudLocal.md","filePath":"avancé/autresLangages/nœudLocal.md"}'),n={name:"avancé/autresLangages/nœudLocal.md"},t=e(`

Nœud local

Serveur WS

La librairie @constl/serveur vous permet de créer un nœud local Constellation et de le rendre accessible à d'autres logiciels sur votre machine par l'entremise d'un serveur WS local.

DANGER

⚠️ Ce serveur local n'est pas apte à être utilisé en tant que serveur publique ! Entre autres limitations, il n'y a aucun contrôle d'authentification et il donne accès illimité à un environnement Node.js. Il est donc configuré afin d'être uniquement disponible sur localhost. Ce serveur est dédié uniquement à la communication entre processus sur le même ordinateur, lorsque différents processus veulent accéder au même nœud Constellation local.

N'exposez jamais le serveur WS Constellation sur un port publique.

Utilisation

Si vous voulez tout simplement utiliser Constellation avec Python ou R, veuillez installer les librairies respectives constellation-py, Constellation.jl et constellation-R (en progrès). Celles-ci se chargeront automatiquement de lancer le serveur Constellation.

Installation globale

L'installation globale vous permet de lancer un nœud local Constellation de la ligne de commande. Si vous comptez simplement utiliser le serveur Constellation (y compris pour une analyse en Python, en R ou en Julia), installez-le comme suit :

bash
$ pnpm add -g @constl/serveur @constl/ipa

Ligne de commande

Vous pourrez ensuite lancer le nœud local en spécifiant (ou non) le port, l'identifiant de compte, et les dossiers à utiliser pour sauvegarder les données de votre compte :

$ constl lancer [-p <port>] [--compte <id-compte>] [--doss-orbite <dossierOrbite>] [--doss-sfip <dossierSFIP>]

Si vous ne comprennez pas ce que font les options de compte ou de dossier, laissez-les vides et inquiétez-vous pas ; ça fonctionnera pareil.

Pour obtenir le numéro de la version :

bash
$ constl version

Pour obtenir de l'aide :

bash
$ constl -a

Utilisation dans un autre projet

Si vous voulez incorporer le serveur Constellation dans une autre librairie JavaScript, vous pouvez l'installer ainsi :

bash
$ pnpm add @constl/serveur
bash
$ pnpm install @constl/serveur

Vous pourrez ensuite importer le serveur dans votre propre code et le lancer programmatiquement.

CONSEIL

Constellation elle-même (@constl/ipa) est spécifiée en tant que dépendance pair du serveur Constellation. Vous pouvez donc installer la version de Constellation qui vous convient.

Serveur

JavaScript
import { lancerServeur } from "@constl/serveur";
 
 const { fermerServeur, port } = await lancerServeur();
 
diff --git "a/assets/avanc\303\251_autresLangages_n\305\223udLocal.md.2MY0RFow.lean.js" "b/assets/avanc\303\251_autresLangages_n\305\223udLocal.md.ukCcxgx2.lean.js"
similarity index 100%
rename from "assets/avanc\303\251_autresLangages_n\305\223udLocal.md.2MY0RFow.lean.js"
rename to "assets/avanc\303\251_autresLangages_n\305\223udLocal.md.ukCcxgx2.lean.js"
diff --git "a/assets/avanc\303\251_autresLangages_python.md.NwQ4HAFA.js" "b/assets/avanc\303\251_autresLangages_python.md.bD8E1TXJ.js"
similarity index 99%
rename from "assets/avanc\303\251_autresLangages_python.md.NwQ4HAFA.js"
rename to "assets/avanc\303\251_autresLangages_python.md.bD8E1TXJ.js"
index 097601272b..08ce96e40f 100644
--- "a/assets/avanc\303\251_autresLangages_python.md.NwQ4HAFA.js"
+++ "b/assets/avanc\303\251_autresLangages_python.md.bD8E1TXJ.js"
@@ -1,4 +1,4 @@
-import{_ as s,o as i,c as a,R as n}from"./chunks/framework.Eeo-33mw.js";const u=JSON.parse('{"title":"Python","description":"","frontmatter":{},"headers":[],"relativePath":"avancé/autresLangages/python.md","filePath":"avancé/autresLangages/python.md"}'),e={name:"avancé/autresLangages/python.md"},l=n(`

Python

Cette librarie offre un client Constellation pour Python. Elle fonctionne en lançant un serveur ws Constellation local, avec lequel elle gère ensuite la communication par websocket.

Paquet Python

codecov

Installation

Vous pouvez installer ConstellationPy ainsi :

sh
$ pdm add constellationPy
sh
$ poetry add constellationPy
sh
$ pip install constellationPy

CONSEIL

Si le serveur Constellation n'est pas déjà installé sur votre machine, ConstellationPy l'installera automatiquement pour vous. Pour ce faire, vous devrez au tout minimum avoir Node.js installé localement.

Utilisation

ConstellationPy est une libraries asynchrone basée sur trio. Étant donné que le serveur Constellation est fondamentalement asynchrone aussi, c'était la décision naturelle.

Cependant, nous comprenons bien que la grande majorité des utilisatrices et utilisateurs de Python n'ont aucune idée de ce qu'est la programmation asynchrone, ni aucun goût ou raison de l'apprendre. C'est pour cela que ConstellationPy vous offre également une IPA synchrone.

CONSEIL

Vous ne savez pas ce que « synchrone » ou « asynchrone » veulent dire ? Ne vous en faites pas et utilisez l'IPA synchrone. « Synchrone » est le terme technique pour le style de code « normal » Python que vous connaissez bien. Si vous voulez en savoir plus, voici une belle présentation de la différence entre les deux (en JavaScript).

IPA synchrone

En premier lieu, nous devons lancer le serveur Constellation. C'est absolument nécessaire, à moins que vous n'aviez déjà lancé un serveur Constellation manuellement, lorsque, par exemple, vous voulez exécuter plusieurs codes Python qui utilisent Constellation en parallèle sans dupliquer le serveur (oui, c'est bien possible) !

ATTENTION

Attention ! L'IPA synchrone fonctionne bien pour des petites tâches (p. ex., récupérer un ou deux jeux de données), mais l'IPA asynchrone est beaucoup plus efficace si vous traitez de grands nombres de données ou de requêtes à Constellation. Si vous avez besoin d'accéder beaucoup de différentes bases de données Constellation, peut-être que ça vaudrait la peine, après tout, d'apprendre comment utiliser ces drôles de async et await en Python.

Donc, on commence. La façon la plus sure, c'est d'utiliser un bloc with, car celui-ci fermera automatiquement le serveur une fois que vous aurez terminé avec. Cette syntaxe permettra aussi au client Constellation de détecter automatiquement le port auquel il devra se connecter.

python
from constellationPy import Serveur, ClientSync
+import{_ as s,o as i,c as a,R as n}from"./chunks/framework.Eeo-33mw.js";const u=JSON.parse('{"title":"Python","description":"","frontmatter":{},"headers":[],"relativePath":"avancé/autresLangages/python.md","filePath":"avancé/autresLangages/python.md"}'),e={name:"avancé/autresLangages/python.md"},l=n(`

Python

Cette librarie offre un client Constellation pour Python. Elle fonctionne en lançant un serveur ws Constellation local, avec lequel elle gère ensuite la communication par websocket.

Paquet Python

codecov

Installation

Vous pouvez installer ConstellationPy ainsi :

sh
$ pdm add constellationPy
sh
$ poetry add constellationPy
sh
$ pip install constellationPy

CONSEIL

Si le serveur Constellation n'est pas déjà installé sur votre machine, ConstellationPy l'installera automatiquement pour vous. Pour ce faire, vous devrez au tout minimum avoir Node.js installé localement.

Utilisation

ConstellationPy est une libraries asynchrone basée sur trio. Étant donné que le serveur Constellation est fondamentalement asynchrone aussi, c'était la décision naturelle.

Cependant, nous comprenons bien que la grande majorité des utilisatrices et utilisateurs de Python n'ont aucune idée de ce qu'est la programmation asynchrone, ni aucun goût ou raison de l'apprendre. C'est pour cela que ConstellationPy vous offre également une IPA synchrone.

CONSEIL

Vous ne savez pas ce que « synchrone » ou « asynchrone » veulent dire ? Ne vous en faites pas et utilisez l'IPA synchrone. « Synchrone » est le terme technique pour le style de code « normal » Python que vous connaissez bien. Si vous voulez en savoir plus, voici une belle présentation de la différence entre les deux (en JavaScript).

IPA synchrone

En premier lieu, nous devons lancer le serveur Constellation. C'est absolument nécessaire, à moins que vous n'aviez déjà lancé un serveur Constellation manuellement, lorsque, par exemple, vous voulez exécuter plusieurs codes Python qui utilisent Constellation en parallèle sans dupliquer le serveur (oui, c'est bien possible) !

ATTENTION

Attention ! L'IPA synchrone fonctionne bien pour des petites tâches (p. ex., récupérer un ou deux jeux de données), mais l'IPA asynchrone est beaucoup plus efficace si vous traitez de grands nombres de données ou de requêtes à Constellation. Si vous avez besoin d'accéder beaucoup de différentes bases de données Constellation, peut-être que ça vaudrait la peine, après tout, d'apprendre comment utiliser ces drôles de async et await en Python.

Donc, on commence. La façon la plus sure, c'est d'utiliser un bloc with, car celui-ci fermera automatiquement le serveur une fois que vous aurez terminé avec. Cette syntaxe permettra aussi au client Constellation de détecter automatiquement le port auquel il devra se connecter.

python
from constellationPy import Serveur, ClientSync
 
 with Serveur():
     client = ClientSync()
diff --git "a/assets/avanc\303\251_autresLangages_python.md.NwQ4HAFA.lean.js" "b/assets/avanc\303\251_autresLangages_python.md.bD8E1TXJ.lean.js"
similarity index 100%
rename from "assets/avanc\303\251_autresLangages_python.md.NwQ4HAFA.lean.js"
rename to "assets/avanc\303\251_autresLangages_python.md.bD8E1TXJ.lean.js"
diff --git a/assets/changerLangue.3HIXrmKV.png b/assets/changerLangue.3HIXrmKV.png
new file mode 100644
index 0000000000000000000000000000000000000000..220b5a9acda920acd323b45f21ce2965c2eadc4d
GIT binary patch
literal 57780
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
SYfo_v`rpsjy)<*xp8p0DlIj%z

literal 0
HcmV?d00001

diff --git a/assets/changerLangue.3Qnx2sdc.png b/assets/changerLangue.3Qnx2sdc.png
new file mode 100644
index 0000000000000000000000000000000000000000..a0d36864620a3f34b3014f3b5d4b0875384ed088
GIT binary patch
literal 56621
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 Ckt|&R diff --git a/assets/changerLangue.P4t0iDsv.png b/assets/changerLangue.P4t0iDsv.png new file mode 100644 index 0000000000000000000000000000000000000000..df8e35ceb99b2d4d04f62182bbcaa28d44d1bc97 GIT binary patch literal 58639 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

1Hia&S`ez6B)# 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 literal 0 HcmV?d00001 diff --git a/assets/changerLangue.Z5pbAsoq.png b/assets/changerLangue.Z5pbAsoq.png new file mode 100644 index 0000000000000000000000000000000000000000..5e86fa5f68c415c6be0dc549d1872c6b78b3425d GIT binary patch literal 50443 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

lhnuOacmc%LS+lm{l?>LD0^KY3|xys5LN=LQab z7b48P-t(_Zw(!A`!*~%(gz4V)L*JyH%D6W^ue?z&@$*nV%3q?4%tJ5%+LV=T7qztD zwgc+RFtg{5stf?l8+3EKiRMBYd0EF*1Ox;~PDV*tdFS3=9UVS!1stG1*7dfufzte7 zH3R5hC7rix^X8@Kdd8@xt`7AZY?&p~)CdRzB3-V{#}V*Mg~@!n&t)a1K^4Q>*$*~Lpsn3{ z&4dg8Yx=>pJIsYbk+l0J_E#2|Ne6K?ln$dP76~wIHI=AB?d(a0ztS*iD1R+Ug)# zrciuKO3n+oM?QcTB4W}**O=l@$&qvK7J#e)?Iy*$FKY`_GBHcc1FfCt2XS~%5Sy-3 z#OOy02%!jlLy0)DdoOh}8G&!(C*~wLn8C8&A=Q6?oo?l@&CERZ(Q0RdUHA*ZGa9;f zF7=&&wwo02rC9vbOvfceMQsV--e=*MedZWh75k22nu08N;|`FMnuSe7edQSS5RjqY z*)!wU+>MI);J1uOWDZByT0PTBM2_$op7=sT2+xfnm9;S{oQVzkIywx&%9@=aK`7Ni zFc_d;w*w`gD0$ax7SGxba_05x*UBzTdo;nXBJX@BdAY$afG-^0YbPtjO@3|*R*p*N z)&KA7vi@(A67wxkaK2J6a2qd$&n0L!s+<5nq~(DbI3Z_Anz&Jn{3XdBk)#=VW%(0n zHZ;^6*S*KX5aghDp4C`MGOEZ{Z<&>Icj4jD^qgE+kZ`crx$FJad;aoYLimnoWk1(i z6PTbQtfg;v-g)~?|+sI7OcsJqOoJwB;MdWqZ z*n*Bv+^aIrYUkbD{p8W{gFf#|JOAb+=XN~(Bh~G3%|x`c|Fv91^+GJ~Y{#;M#Ke73 z{d+LZi}bidS!*H)yj1lmmui{G9_Rt&y65RAVkcb-+Uyhs_Hy0j5$OpG3-eU%j8K&k zP*IqQRTtjqvVOi-<1JsOktzC|A@vwG0U8XgL6y;-OGsE)9gU_+M|KDc+sKPj_>bP5 zA40c`9vS53KEt|u79n-jhIGvDb}pS z_+$}ir}6BfITZqHotg|{fl;>#3m-$71Eb%;goFgOOP6wyOu#@WjGI{5i#puF-KSmi z!PWI%mz#|Qmo+Nuila`M6NV-O&4SQ?_ts&48R>GnY~fwI)X{3HX~rdsG;2xC0i8u{ zh1M-QDTO3Pe5EsD3o;k#NvJ1YYL`9pQu|RD#u9i*q;^X71 zc~m^W}}VX9oN%2PC?lFO?>9n|Y*45vH0au+(#ruR4Mp^PQ zTCX5FN(U`r{N!dkS#)2S-z2S*y8b+`?K$n|O=h&A<=QxWYVb(P`W$^x(tu4mO6m_Z zzX4@M!2O;xE$xjcWUVq$S-Gs*pN3NGS4M5UwGAT#K^)@(cXf9hJ9bPRHUm7k`|bfZ zz79cjo)Kl;wr$%q>_tlcP~I`{d>QljON7%IBW?T~94`M{OVQjD#MD7QPWo01$kMnqo`!TmA3DdrAjS%l*A6OT%3zlb z+^rRqzSCIQWH`*t=g4p%iv9enBh}9DyK?>W!Q?_ z4vhnuJ%vw!NrPnGd_R&NgBshe%{w6uBa<4jh14*y8sq9T(SlQ+?-|%{bSM=@E*K#e z2R19xTV-Ollwzr~0c%k~S|!YOb1T9$1PeEse_4y=g`HE17hl-@KTs zZ?W{b3HvYB9}|BcVWfA}vDjZDs?-Ul*pE*oXyy6-260nfk;Y2oVQjL*hx|#Q`1maj zlfjqkNcSx2Lx-J)Z}F@Dhkr0Ms%RfB(q1+(F;QJb#UI>dG^8`TWW%?U5hgGb!QtU; zHk0>W;IwXoGV&g&IN27H1==h$U& z=V0VL2ob|mZDBH+o13e$q7?i;gX&q!=*N~N=Q{EXGtH_dAUbG7py>XW8^=|Lm#lfQ z6o6GN=!4btK9}X?(bA4X&g=ELJ$fnQCB2S)kOMX#JaixA83f54kI1o-+LaF51Nr97 z=WN)oJ+F;Jh?E1*3X^r2UCcxSX$j=?fxMCeg4Nqw)9 zK3brQ>_h6f7<5&~wa5OgLoa~hUTQDdr%_Pw+28|8W4_PvwQaz*h&VV`$Dtfu6#--& z-V!rJGtA0Yl2)g`xZKeEg{&R04=#lCd){y@k~C?+y}&MNz#EK{_LBhhO?d5^n}8lXQ1V4B%Hsyf( zsFa14(Xa)Wx)h(3q#`Y$ctKhD79tQ+p5&G0OMLJn-CHFjG*PUMhKJ&G#ppw?sikEN z*1;klS&?3Z1$k%!A%S`p2+N_7#sEeo$##$QucEm9L;1rGvAP1>d+p`N$H%AZV`a}= zy9vPf+>=%vK>{U0`5AiKJ|iouFXoAz8iE6X zULe6H+`T+zii3j#ZmoH^gET&DbN2ZN3?2PYNAEW1$$Y)6AkPX7_2gY}h|mQRo+s7} z4N`xVp1}klSje4BQM_(n9jeG^)qB85$4_EL>f zvuAHUT9F!smFp~mnU5SU3MP$QL|r^A!Y1b;xp%lT#D)di$XHIHs)fv&3GP8 z92Q^;tnOCd%`y19J9nPyKJG19dHoRXfhJxCeT4|d5dcSlS5BFFf~i@te@;kxSAnY9 zjUXRe0Ehb!($Qg1o+TU;%@r^)a4PpeZGvz7QxBs?8t_A1QaR{s zGd0pFUXBf+31f-~7cD>^&6Hu~OTNI2H+=s592t6R{Ln8a7M}f~Vw9?iihFgv8Zd!X ztUoZ90CU}WSXxyCIQ$dPrW9xkbq0;dM(1N*Gp#+2F6^Z0zKraGgc^(VvygAmdC78P zIw6?(rzo13nJrAWtVY5-|I?EreD-dmoe?JNAKt(39s6?(<{PmtO02d-R9oH+N686{ zB*3v@#6-SeC=@#szN4sYNC003%18~h2cF!F2D^XwJT6&u_D*;-KYtzlR~j52~m8<05N8955THo3R#aXnHr zS*jl|rvo2{dSc|lucy~xhs4V=@G3_{eh&NCnLday?c!27dbGFp8+^H=C2pM?G~A?3 zJsF*Vy2`6iaMZ^e;L0BEFiIv#+UO8NjJC)mJ?7&u#Js; ze{X^a2^NjbM6{hmIuC0bUh?zqr@tZ3$5+(Oo4y0gaLe_O!4*D^Ft8sRt}J7t&H@Xv z!oi0iKOdw>O|OoZS0PcdgXQl<@3x1ncG|FG(3!LjN~~aH#7EC?=vF0do?)5DU}&UB z^Y>e#HZSM}Iw~0fBEXRm2QCV3*ul*kE#o`ae^S88i%2?+|8pW|hsN6*&;V9E&f2pY=zEN}DzCKu~y z{izMDU&+k1>Gp*=BebbE_#FQsW#8~?b;KaZ%|9f~fyqQ{r1$S3O>Ze%)fa~mhGh6O z`GgRCVruhQh=hJg5GN)BX|3C@N0z3)X5GKv6ePXk!QPVy3=rQ96oHw-vS-6@m!%;% z5_gbtc{}J_*+2g7YQbgsj;B016ZEw5I6eX>(YDAg`3AE~+}7VYFR8Fks)zK!KN5Mwx26~g59BUqKp zM$|b5Q&&4HIb9bqpFuj<{Atf51IAI7PI~%FSl4eo`Wby(*t8g(e-dwnS`@+?S)&5v zmO>O6-Hu`JMsJq*5Jfp^8C<@e+hg1I`ZO7RjcDLKU5eK_qs*rJeg@K6{w$Qby1M(# zMGkLSjj3EXhgFM$hi%{_MC-~@}Q*p(~^Zqw&AXHM22n{)^%#0MWO>MC~>y@X0|V@xYT zT3f?E7&jeQ`SVuqifKiUrN$=`7MkB`&oI9+Xe>nrI zB0cY@I+ufq<73cP_lFeCMw5Ap2JVBID7?6A_j>f5Xmwi4Aja2-dzKWl`YVWxKMP{S z&Bnw20LpysVJ7{jztToirRxbaBCAWH%D*49$FS(Tw|O2O22c}kv3zw;(W7O`hIz>n zAM#>K$CW)08k2!7;xoE>deuD~-ndQF@$LY=m{8Gh!h2fX^ZV+E8ZZO*zv+!#n=*Ng zNK8gnvT#sdk8+p^9YD#WI~}M9Qts%wc?9aj9?Rst1FxD=jaYj6YqeL*zM&kTId0+? zqSX%_a4!{OB8LaP&+d^S#)t^;@+0tKGG#7T=UI81NrP$3D;{)qaW}NFv58F$rOt1J zQN2l2-Z*IKb@L!cPPR`sX1h81lOY=9OLF-=@v-3q|6q&8l7{Ir;md}S^M}+tJqyAw z{n|igGo$x(BhonI<0;;AciLA^hnIH+*7e?b6i|!V;;34yWUU#VOoY3$h^Xrws9XBQ z?Zdjkvk#c5AD1;&M(c(`lz0lTG$@dhTVLRbFO0?F@Pu;%GdSVWv=0zx(IrrOi1(Ax z8&Dy7DhQV<6MOn9J^f7fu0PFx1=yJ|-}`l)S4vYNn5tZTQ9xRPFtI~1MkuWLS9iDI znU%%hZSg&+FjYJ;Jauu>Vwo6*LZ3>3e0hW^h-}Do>bZHlmb_Lw2xlt9?#TAH zf90brp}zdyZUB3Xcz;opf0?G3%7Hv`(3+m}0w5>tp@Uim_jLE{R%~oW- zq`t%dhlB6`L=Y@;cE$3i0E&?DOh`>VNhV$l4|QxOObP^CdGO^ALPDC_TM_57vl0S~ zqUz^OhQ}~VetU-Wvo5;i&9!cRN(!>#@CM{t>D98w2w%bXejU2K&9!1~tlfO-ePGxQ-(X@` zLcSk+?e5NjCTVPy&~o%&?pQ-BkAKCZxRm^B7~(ZoQyFf?Ah!6P_R5G*5rMN^ z^B%=;WXy$k0{W8eZTZSib|*Upu~XsSkLUZ4wb0zlH8c!b)xHFZr<1_y!*<3#R(5t; z;7rKjs79?Q=B!#HqG>1$TR|(2b*AY6g_cQ*`UsYw^J2i_YpuF@cq}u;bMQ_nkB&B= z3T$ue9EP2MVj%Np74EP{e*30>sh~}D5Yw(u3ppK^ZF!9tN@Gd|Cf7riwrGpALERbe z-m`~HN3wLX1FY1XS+|;Z9Xp^w3#UoW*Wapi(L20-y0J zyrYkR9?G=PW_9aPOlkd0tUxQu>+(>=Y1TaVJEW){_1&$#vsh&^k|ihu?MOX;?TQE# zNHQ$YU2ouc>Uax@6_E52?{=&Q48t5CRd{uEsI*GwRU>3uXIaQRD2UD-u?D?B0b07c z%~F~DJvK%&k5Pu?q0mH2F@8qIDv{T>&rf8N$zI+r%euF+GQeGw4^)2q7+m?Y@AuP* zrSb^rKYAiGw6(QGNY&dgAHI#c)B?~clBq*ro^8Qh_hE!XtuKpg97fHSQzPyy^oRpN zQ|md|8jD!r$;{xyf~3+W4*$oARpi4g%(X9YJERoN{@g+47F^7EPtX8{i%IO>ZH2;< zyn$Dh7&?M?fXheiJ3s6b;XlZX8bt2^g(t$)^Y4mc0@AKR%;2MI2=E%)MCec~`&{c< zfdjKwc!Bd;F)#3&T{gyFSIr{DOQvd2Iu07Ae;or$uM|}HJ2<6hSH#~tJePi~BIG>W zr~g^^N|EdyB#wtC+>msn^07!VNpUSquR=MhXESC6p)Mg`|B@Z#(U13EdPN9sRKH%O zc_x7JjH-d*Zn=d^AH()(Bhlv;EBM8-E?HQnfLvxRnaw2=TJ|?FDM`d)pM*qad3Q`q zj5FiEVHfo<7gX70_Y(?YFIOWxw7phSPH)T;us){0w&`YC2ZR590Y4<&DMbcuAUEq& z&h66E#k-ILEAY{}v~I(GSNni)x5*5Hox{s1#kpuJI(4?CzNyIu+t=FKx-ZK>Pwxrn zT(b$R>|c*UhatgfEsv!gk7kdvEp+Uh*QKMO;RB(;oAc|jjlfZedios)0u^~`1!YH< z{}~6T=VZML;jllX`>2t9sLIUi1+6C;2qMJczvXo|@DAZv$Wjuv8o~EC@X+RSE%o&; za3}kKZJGdO$Q&~RNJ+!Io(-PON9&z8uVZ%ruUdMZpin+(luLb;hTJm_tWKd_wI{^- z7-X#7dwCg84L120M5B&hClFkH1_9CmzGl__tAo&nMHAtE3!!5WtT{Ih67mgYRSx?kB`05|EXCwturHB7bB|j92d3Xi z7Dj?eKLOSxV7}XXUNEMhsb3Sn7#vv~I8A}qF(&M~2>mdmi5RiDAA)kVs1}HYP}hm0 zQ3}m>WhTCuA^mZ*sxZ6FO}KY>Z9!$P8>q3b%!zOYX(CWrN@1o_xy zB;1vQkdLVC{eq+D(kw+7Kf9ti=ee<1xrSpq3SO|tPRWzZ73dANmAg)Z)<}kCDsR;1U;qRD@2D(M!nNgB^%R-zp=oA~}=Ih9_DGJ4$RxzUK+*KEDai znF#u73uU%+ec?00FhJ0+n|1CHIcPE?#dL6Xuz^7W2A<;$7)PFh*cDACHb40o1EI?q z3k&5SBI}h+eS&In!lqPv4msqFzM}#%5@7($|8^@N=xnL|FlRZe3(dvf&h)E_45&falbA&SK9=ILJ@->%hu+91Inc!RJFL^_4y z6xhDHO#%D)kK$6pno+K!iFjwPl#FhXR{P}rSClxo?KEEsf21Q{nw80x&itd^=le5)5MwQi1mSAQ3^JR zH7;(tlf^p@f?HMFrX;;susrVu^1JTt!}>^P8sJ(B$D((0yMnODoJsS&te-I`&9YUn9KivnC4M4L%o3b|j{O1=(AMZT# zL8^5%#mAYXD3Y?9*y!W`WnN|1rak z)=uq1=xYEPm(UU7Gy8c0kSuwjUUmaa`IGv|+igEbU4fp~GSPqZM0AZ4Y;es79u3Ta z_zX76ex4I4lat36kINNg08p2?6TG4?xuPXr1etoHnUKcb%WFn}BANk~jqcAba+a)fMvI%gd$SfZ4} zucsFXPx7wny1-GR>CYi~OcZxFSi5HK{jMj;6hlXtIYJPEG(@G)Ybqwf`jCJJNk=CH z{Vwj@A(hb}RcydHh|fgTT7|GwekYz7x{0RsMN>zT^mEmk^c_?}7CxC8zxsL((TXNw z<=h=yD{(N@fPio!kb(n4fH`pLAj@E(_ZbL+V=DJPKOH1uoq0xu0ux*crI3c2+UNFG zdA89P@?GFU;L*zMSk!2Uq{-%l>MIWaJ9aj#$NV@_z$ z3-_U1MY*XG7E_)W&-p(QO#}paB4$>dx|b9Mt9I;!%=m*sWVKxw=~pjbLaUqS7>_6q zBvdqt4OCf5?Y*q5t#@AcjX<{IrRs{ePm}%+F`e{U^DPIL!k6K(cX$@{%K6wOq<|f< z8aOINz>PX^*>&;X_j9czgdp|&LJ%1?(G1E_8#!UbT5k30vE)QyK*oL%UT@fQ*xhoj zu%-wFS%@Arw6!fo=^dm&=L0o}JIJrxO(iZ)idY==h@sR-PAAfioIA|F>g(WyVg5Xv z_PEi)xRD#=I$+o94f9#tjP`OptnR+wK0KTihWSzG#==yl)HfGT;4!)S6$KmSj}l8g zhFlIyg;a;V1ydQ6{oxyQpf!LahiV}f5gc9KAFB7pYvhAi=T9GVU)mQ0af4O!avIi-ttXGenC5Qkap8=wUja6EC8prQyR%Uts1yVrptC`Tn-; z+v`yhIkWivD~pLvF;?gYWpn|19fg=)xDCt_5)~<%KGb;EBUozr&*7B-G7!Bey=p)o zpK**_d(>In9gi!(88pH~g_kJZp3W!fQ@Sf69R3P3`K$3Y@Z4-YkMLpi)zubYJGGZf z3n(8?d?CiJfhQkp4UFwfet)qKSn=&}GO=~r@GKMiVZRqobM|Wk&iTkzRvioaYqS5? zKZ{M-e&-*$gpw*oD^GsWe~p!>b9c!<{y*}Airy~dYVcsc0WNAS!;<>O#+ag_?lHNhy2Lp-Yi}HO9*%udpCu@lOkqTFEpV(~4gh5ufy_&y^#x{YB-)S{?R0Y~|6Qi( zE3^U`Mf>29@c49MFzp~(b6!GT&#%k`IVSQfGa=%Ef9VIrdp%Es)hnECNP)HKIqyBA zr$(0t(rBA{j1`(Jg1(I*BOyJz_qEqTt$p8_WvmEAUr1FxZO8=^4A^kAR}r&{G5iw_ z08eV_85z`jChV_T24O74cO3ndGWsvtW_u^*t=54LUc*E$0SV^|!&F2&3=#N{xwxNt=bkMfU;1Hq@=41z6Zo>&%A!N?c<_Fm_FukrJLd<7gt&b2j3i zJ;aWa{8-RpZ*RXekDvfy%ezn9#2Ey8_#6BaN9yz zG1sFg_Zf_xvqIAxf%K~dReKVR<`UqYGQ1bOpxfHJT;`oT21%|<4}1K$xyzxeWx{;C zqwpOe)bX%4Y)-cffVR5s=O|8&Hi?0e;7^3O%E22qF}vwwMMVt={jvYi-kHZ!o&S5B zgP0P(sibSmOwuA-wvw%qNT{)sEsdmXB^BYcV44geiprtPAZsOZgiv#8IF@YbB#e^n zbTXDWiu?MU)Svgi`?&XaAJ^mj(U{|Wm-G32zVG+z^?biSP<`!4K{(7%8I4Biyfp^J z!+rz)52t!71*znt`1s8Be2K%n(Z0c@r0h+CxhC1f6Y4(bdaaK-nwmkOY(s42NuHy~ zi~>ong??)~(R_V1P{PY)EJF==@(Vuf-3`nWL^15nd%XAuu4Xrac(PNuu2vk&x3udI zJP(JF+?JhskNZE4VB;DKH^2rsvO*5rL39^wLwlb*Yz~><*e%J8hLN~-*~U^9EW+}$ zL5z~o4k_<>x#`iVgMdD{*q1pMAc_NFs}OzrG_;)fWB3Mrp9;$7TobThjnn3)X(1?b z2?CN&_Twcp0GUgx5=TH_JJvNUc1$*sXgOgj)SVjzT21rf6m{%5;MW|4w?jB78`yCe zh3T;4(#D#YWG84?$1UVpgBry3@StJKHzEB?EUxr)zaY+rngyTDN}5tqQu3!@^o0Vg ze|`JlWZ2>`&Jx4Ba3(faTtjlo!r+bjy_0@C&FmX}Iv7N3u$eFOmM+SVtP5+z{z<6C z5YSvXoD_gr#VU{l@Y8d7(%}cNJ`a(A)btiX2Ez;gI9r{L7qAsD)i1hTg!c=ct3Iz} zj3^lr(_e3of)4^FV}TH#=wPkdDA`$ejBmN5B(NF;>VM&-Cc0Th3@>Qi6?D;Sa2)(N zgC~@N8J0-DQr7iboYO{MK`w=+N)ZMxT$$vNmE=#UuX#Kh`RBg{=e2@go}4S6snj)Q z@@4HuksCU@S5b_}ulSmBMLtoF9V_Vmfnr4do9~iMSER)GGe(UHW1(aVKHkr_%N)>> zRZ7a96=>Lfx6)9M%KM-4>*$M=L?~y{%qLG=m=9CN*Vh>K)UO^3{d%WDcGxGG1Ixsh zMhg)VJ%YlL{_^L|oeR#)e@f5w;}W}HuqUtf;azy0F-o_Z5x%a95jU;BH=1KPb7GyV z)wZn^Bi=y++LuI%ciGO~pL4RdZrQ0X*r19P^Sdey*@-uy9pCfI^WJ4jkCoUhTgq~S z%SXr&Ja^&kv=)X5ah(yCSz9Lp!Onvb63neEzS#YK-OhxWMZCXMamP6{d$)e703g-n zr}Iwh9*fHv0k z@K-Fl_LJp`sAgXw_nU{)#OAMW(;BvIglxobb771j!&)`aRP{qy-kLsg7ma`P5=s}D zb61z$Zp5>czDV{Uo9g+BK07e}s+x)nTH;cwBuM35Z+Zu2(y>kc3QI10$1fWj@ni|E zzuLV?bOFn4R74=qVAryS<1!1oU4>rUSyJRV)p3XYMJdN$n=LgIc4suHR4y#)(*r@& zCBs!R!{c2~wfQvl(X>LPPotXXU~Bix+Q=r(mr z|1ne$uPMouXN$!@`>vGRaC_EWeRPa3SZ3j?zybdmJ*sT(oUYjKRzb}7Ul+g3Uukoy z27ETr3$rKta7-D>E0tz7_ny-o>W?mp^RsHJVyoRw^JQz~%`WAa=Uu94vTF@YGY%lcxV{S9p5m+5J zHB_aMFIc=|TALS`QeB(Wk9xax*~`{c#M(v-scCL9xGhhoN+_f*+9SJM=tALw7;)ip zx@FvZi~0E*Vt!gA+j^@TV^>w$f(YXkn^qo|`1Hh|AwKb&+ox5{W%}<0_~m)0GvF&L zVE82R%&0G2S9lX`bt*$OygXMTqEUNFgR^!17I*anr3NggX)N)|0R2T40orF>+gMVj8`Lm$NjDMb56ZFO!;OiZSWP6|Nq*CE5o zvWDUNAfl1SJpu+I$`d%nGV7kzOiN4ShR!8nc1ULl$`0`h^59IKD#pSyp02^&2Z|F_ zG=Cf}C^JF6a>dd%4Q}IS8YuWIh`3MvtX>;MzI^Ef8Qub&Ujj=#2;_yc0KZC?bTLvfBA(BLQ~M<6!Ue zIai#>xI`bSc3ywv5{0U#=AU+F|3i2KktWJiSFhfIv>m0?tpLd1PK5k!eP*|#V+v|~ z(~*(FiN5MnjP}x?P7uZqqL7Gi)gTk$a|HRA`tR5g3EK{#1te{PKoj7kq{Ob-+Xm%W z@xZ|GR={{lKwIJ%o^~0y(~dZp4Q>h&rKFUUb=R1RH*VV~ty|ZOD!_UJU_#z=v!9U^ zb^y9T*Hd+(9;k`lFDc;>d@v4j3E^<_<~GO)%F0Z=5_IT7!+@({Kw9@At0J&2kR7n| z&-z9O;BcY?!ByNiMKe$hNUYl6fx$%}EWQC_%c*}diE!i+KK&M@3z=nx$h@Fy5SI@? ztxsA6y)iTFX?{1S10$4Fn~aZ-Tk<>MIA9@c?d`L`_l!xogn8-O=A1-BDGc0P+yKbg zu&CAJP&K+8=&cQ!zGbl|wFxkf!?$9ic@zSTRYJY^&M+6_orvw=xYaos_+xNY5F%2L zb9FK%J)^}}+ClUsz8qS9*7=oQizq}Kz+Doj&d+B=^I7Q>f-T*T>k{@0%nfi}^DIgx zA@1=lVEz#22-8dpPJu=M?(<#<_X_J!XM;?QppRte5F!|1ZU6Of16rf#MS_>&TA*@) z;6Zjp00PuP&|#o>M*SeUd^ys+XK#<9lUNv__+}7+fo4Db{4>$S36y;AGdekdOwI&~ zKx)ZwNeQ^*71m7hUHQIxuotHVvV53Q-GQlEjZ*f=?*!t=f#%yvRH*>$u|S>0p*7Fy#PGb#O$pe#>fmp~jw zGz^p~bUcOh1%Z2yywna98R2koa>PNgJ&wBS62hNB?*Lp$&W)tutFP>P{`R1v8H)T{ z?szhY^aQGee3>8yJ$GlnOadK7`~l2+5V=79n_vrSLG1WVPM==acsnCwD{dGWQPA}i z2#5Ug;i-FQe5F#WRvh}#4{vhE^k zq-a^l)-$c!ejWwiiD}AYqfsjc!Z2oX66P3Sc652jfPAClbu|DmD1dxLh+4Z6Tq8ao zm)(5S7;F%oJCu8zREq*ir^7|xzrGEb6>vlo=-g&ml$*vXl~em&f|_?EWWsIp0Y{8U z;9c`*LvtA^y@5MNidF8_6rfg1#>sil9(gmeexfPhO_T>bIq#aKaq@$E*pM}CqtZCK zrQ8BILPR{I5g2KN6M!gI2tqxxWg25`qiAhj>If;Vz+CAMwlYk_q-FV6xgZDc4R9dj zBANYYCuIv{jzG5s^r7`*jmOb#mQ;?RF#Gk}gC*Eo2R8j~G|(z17y;Wu_hBFk#zZ+=g?`>)kf7X(ah zIeYG}ne%!jRcoScviNVKK+5;q_E5I1jg+EPu0=Iyg)}!R!{~dJ4$W?>ZIrOAmRW~O z(PLYnfcmhUe3Qk(R9zo>x2r5$IEZP0;vXH>OY5A=7Q8`$bqa&;I zpe<%Nxws^?*Hqp>%UoP3>MWigDaQ^<5L57+^18Iv4BwvD)EYDRd{F*a$2Y)*^qMM7 zgw%Dl8;$>-`jsB`^785!4qhU<00v`y(b~_~p(QTnC`+Ti)yt;W!=opcU3>zZ=<=@L zvF^1sH)lWrj_F|Zjpns?vdk^uDAji!#W%Hj^=dB*4B0%pT(5%%k&7yrp^1q7&Yg_d zK9L3I0269D`{vu_qBN@jQ{ceHvf-&Zpi|fi5jTBZyy*ZMxDquMTdk%AhlnjWch_M9 zYLB$tpsIqgYI*$lan!LE{;c+J)w#?{+=ZDZq8Q=<*>J&%+wIC){Hhi$TC__su|GBV z&>-zfa^W0$0yGx{t2Dz1mFQYh zC3OR(5-iyx`f_o0_VyCLnJ~Er?$S~n^6l;^Vy2J&$&3l$Qdg>gg<-**s^Zhd@7wp^nw%#nD-AY91{<`+iC1=x87wk}}>F z(8Pn#BJtSLr0VLe7M7Mn2q{>uiD{!9FJ3%&>!973mYVt#{3cY8gFaU(W#u3Wr(tb617|zNw-w*PoQ@L}WvCgj1IPn%WF+sWoYp8$L_1vW1kmzQD2D+3&Q|wC z9mBBr`HsWgm*c(ZdEyWM9(@3XkICHdTsj#&K7BVGjM2VJ^L@7)^@Jv3-?#1UbnGUr4Ed^tEXs0KSSU4QqG2exd(wV?b+ z?HoPGoa>67Q-7(&EcUceSi;3~yhKADPtaK_K`H{GCbSB&i#Ih!%hFUDt)r&qtU<)= zk%rm2#zw-wdV1bcT(d??T|FZyNdiyAu<3txAV3Ixt*|}ekE|?-i%%x?UcZ0uhrF_PUH^7BVQxZ&EZEBxX8VR^Jt{D*hJ}6B8)Ut26@O zAh*`n$KXRJ`WWJ2pQiTq2AnhxpgU?x*PbC0_&|fGxxwL4Y~tgy3;NOZXIFB(u*5jIy4qP;#Q{PF!-dU*{EmKYXT*$$mN z`Ql-8n~yERu&AggY}}E74ngn*he3#wA#&nG=}$SAF>0}w(t!rPyxiPGj};-Ke@BMT z&61!3M3D>QbZ?CiT0h|gZKSWNA{-C9`L=xEf3+SDu*px61_zl}QqM$u9KBe)UV?DnTm zf58rG>3FP?vP%I00q$sDG$_D7oqYR)bm2}aqus$SYzmIWa=nU*U1(@|rzOzz4?1@; zgJ&c+;wcfaHr^Dc$)QKF{G@FTpz-3f-hcybDs;#7Nk3^yC3Osc?oFHmFT)u)h+ zDVpc1c6T^#NY*dhf}K>b_)mT+%g@Vuy8q6I?k$eI&s{ow{WWHZuSH32XZYbVR7v)Q zgt6Mzx14fvmLyc7|BkQH?;ExDuO{@-Z%O2(+OL={RpwjG^P6wZw0!iplIYFfjO(W! mWWJFfBe8FG^?%1lzNo4gwQwjpdMT6~%xs6HaltnCv;PSPQ|PMz literal 0 HcmV?d00001 diff --git a/assets/changerLangue.fYK0ztMT.png b/assets/changerLangue.fYK0ztMT.png deleted file mode 100644 index 66cf45c3f8fc54b24369bdb154bda1171583c9ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57239 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

}tcE&SrJ{c8Qh!}cLC8xE_IG7MP?$aOveJI> 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 diff --git a/assets/changerLangue.ywiea3K5.png b/assets/changerLangue.ywiea3K5.png deleted file mode 100644 index 632f776037687d692725b1e2bdac971b99bf589d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56140 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 NTwpXmW$xNN{|2xzjHmzr diff --git "a/assets/cst_exemples_cr\303\251ationCompte.md.7fjrPyAV.js" "b/assets/cst_exemples_cr\303\251ationCompte.md.Vwk9cXoN.js" similarity index 96% rename from "assets/cst_exemples_cr\303\251ationCompte.md.7fjrPyAV.js" rename to "assets/cst_exemples_cr\303\251ationCompte.md.Vwk9cXoN.js" index b26ba53231..2404100f02 100644 --- "a/assets/cst_exemples_cr\303\251ationCompte.md.7fjrPyAV.js" +++ "b/assets/cst_exemples_cr\303\251ationCompte.md.Vwk9cXoN.js" @@ -1 +1 @@ -import{_ as e,o as a,c as t,R as n}from"./chunks/framework.Eeo-33mw.js";const o="/assets/pageAccueil.6IkRyRKP.png",r="/assets/changerLangue.fYK0ztMT.png",f=JSON.parse('{"title":"Création de compte","description":"","frontmatter":{},"headers":[],"relativePath":"cst/exemples/créationCompte.md","filePath":"cst/exemples/créationCompte.md"}'),c={name:"cst/exemples/créationCompte.md"},i=n('

Création de compte

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

pageAccueil

Comment changer la langue

changerLangue

Créer un nouveau compte

Rejoindre un compte existant

',8),l=[i];function s(m,u,p,d,h,_){return a(),t("div",null,l)}const x=e(c,[["render",s]]);export{f as __pageData,x as default}; +import{_ as e,o as a,c as t,R as n}from"./chunks/framework.Eeo-33mw.js";const o="/assets/pageAccueil.6IkRyRKP.png",r="/assets/changerLangue.3HIXrmKV.png",f=JSON.parse('{"title":"Création de compte","description":"","frontmatter":{},"headers":[],"relativePath":"cst/exemples/créationCompte.md","filePath":"cst/exemples/créationCompte.md"}'),c={name:"cst/exemples/créationCompte.md"},i=n('

Création de compte

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

pageAccueil

Comment changer la langue

changerLangue

Créer un nouveau compte

Rejoindre un compte existant

',8),l=[i];function s(m,u,p,d,h,_){return a(),t("div",null,l)}const x=e(c,[["render",s]]);export{f as __pageData,x as default}; diff --git "a/assets/cst_exemples_cr\303\251ationCompte.md.7fjrPyAV.lean.js" "b/assets/cst_exemples_cr\303\251ationCompte.md.Vwk9cXoN.lean.js" similarity index 87% rename from "assets/cst_exemples_cr\303\251ationCompte.md.7fjrPyAV.lean.js" rename to "assets/cst_exemples_cr\303\251ationCompte.md.Vwk9cXoN.lean.js" index b7501f167f..5dc1e1514e 100644 --- "a/assets/cst_exemples_cr\303\251ationCompte.md.7fjrPyAV.lean.js" +++ "b/assets/cst_exemples_cr\303\251ationCompte.md.Vwk9cXoN.lean.js" @@ -1 +1 @@ -import{_ as e,o as a,c as t,R as n}from"./chunks/framework.Eeo-33mw.js";const o="/assets/pageAccueil.6IkRyRKP.png",r="/assets/changerLangue.fYK0ztMT.png",f=JSON.parse('{"title":"Création de compte","description":"","frontmatter":{},"headers":[],"relativePath":"cst/exemples/créationCompte.md","filePath":"cst/exemples/créationCompte.md"}'),c={name:"cst/exemples/créationCompte.md"},i=n("",8),l=[i];function s(m,u,p,d,h,_){return a(),t("div",null,l)}const x=e(c,[["render",s]]);export{f as __pageData,x as default}; +import{_ as e,o as a,c as t,R as n}from"./chunks/framework.Eeo-33mw.js";const o="/assets/pageAccueil.6IkRyRKP.png",r="/assets/changerLangue.3HIXrmKV.png",f=JSON.parse('{"title":"Création de compte","description":"","frontmatter":{},"headers":[],"relativePath":"cst/exemples/créationCompte.md","filePath":"cst/exemples/créationCompte.md"}'),c={name:"cst/exemples/créationCompte.md"},i=n("",8),l=[i];function s(m,u,p,d,h,_){return a(),t("div",null,l)}const x=e(c,[["render",s]]);export{f as __pageData,x as default}; diff --git a/assets/exemples_scienceCitoyenne.md.lR5_rzTC.js b/assets/exemples_scienceCitoyenne.md.coMracgi.js similarity index 98% rename from assets/exemples_scienceCitoyenne.md.lR5_rzTC.js rename to assets/exemples_scienceCitoyenne.md.coMracgi.js index 23539cab77..41f1691914 100644 --- a/assets/exemples_scienceCitoyenne.md.lR5_rzTC.js +++ b/assets/exemples_scienceCitoyenne.md.coMracgi.js @@ -72,8 +72,8 @@ import{_ as s,o as i,c as a,R as n}from"./chunks/framework.Eeo-33mw.js";const E= idNuée, clefTableau: "observations", f: console.log, // Ou quelque chose de plus intelligent -})

Sauvegardes automatisées

Nous voudrons également créer des sauvegardes automatisées des données qui nous parviennent de nos utilisatrices (on ne sait jamais...tasses à café et égouts ouverts peuvent être catastrophiques pour les données sur un téléphone).

[Image à inclure]

Accès programmatique

Mais ce n'est pas tout ! Vous pouvez également analyser vos données de science citoyenne dans un autre logiciel et faire des analyses en temps réel.

Tout d'abord, nous allons activer le nœud local Constellation sur l'interface et noter le numéro de port. Ceci nous permettra d'accéder Constellation à partir de notre code Python.

[Image à inclure]

Accès de Python

[Image à inclure]

Voici un exemple de code en Python qui vous permettra d'accéder à vos donneés de science citoyenne. Si vous n'êtes pas très très Python, vous pouvez aussi faire la même chose en R ou bien en Julia.

Pour installer Constellation :

sh
pdm add constellationPy trio
r
# install.packages("devtools")
-devtools::install_github("reseau-constellation/client-r")
r
pkg> add Constellation

Et pour accéder les données :

py
import trio
+})

Sauvegardes automatisées

Nous voudrons également créer des sauvegardes automatisées des données qui nous parviennent de nos utilisatrices (on ne sait jamais...tasses à café et égouts ouverts peuvent être catastrophiques pour les données sur un téléphone).

[Image à inclure]

Accès programmatique

Mais ce n'est pas tout ! Vous pouvez également analyser vos données de science citoyenne dans un autre logiciel et faire des analyses en temps réel.

Tout d'abord, nous allons activer le nœud local Constellation sur l'interface et noter le numéro de port. Ceci nous permettra d'accéder Constellation à partir de notre code Python.

[Image à inclure]

Accès de Python

[Image à inclure]

Voici un exemple de code en Python qui vous permettra d'accéder à vos donneés de science citoyenne. Si vous n'êtes pas très très Python, vous pouvez aussi faire la même chose en R ou bien en Julia.

Pour installer Constellation :

sh
pdm add constellationPy trio
r
# install.packages("devtools")
+devtools::install_github("reseau-constellation/client-r")
r
pkg> add Constellation

Et pour accéder les données :

py
import trio
 
 from constellationPy import Serveur, ouvrir_client
 
diff --git a/assets/exemples_scienceCitoyenne.md.lR5_rzTC.lean.js b/assets/exemples_scienceCitoyenne.md.coMracgi.lean.js
similarity index 100%
rename from assets/exemples_scienceCitoyenne.md.lR5_rzTC.lean.js
rename to assets/exemples_scienceCitoyenne.md.coMracgi.lean.js
diff --git "a/assets/kaq_exemples_cr\303\251ationCompte.md.bQYnCafk.js" "b/assets/kaq_exemples_cr\303\251ationCompte.md.oOIwQ7IM.js"
similarity index 96%
rename from "assets/kaq_exemples_cr\303\251ationCompte.md.bQYnCafk.js"
rename to "assets/kaq_exemples_cr\303\251ationCompte.md.oOIwQ7IM.js"
index b9531093b7..67144fa36a 100644
--- "a/assets/kaq_exemples_cr\303\251ationCompte.md.bQYnCafk.js"
+++ "b/assets/kaq_exemples_cr\303\251ationCompte.md.oOIwQ7IM.js"
@@ -1 +1 @@
-import{_ as e,o as a,c as t,R as n}from"./chunks/framework.Eeo-33mw.js";const o="/assets/pageAccueil.b3XCkFrx.png",r="/assets/changerLangue.3t_voIo4.png",f=JSON.parse('{"title":"Création de compte","description":"","frontmatter":{},"headers":[],"relativePath":"kaq/exemples/créationCompte.md","filePath":"kaq/exemples/créationCompte.md"}'),c={name:"kaq/exemples/créationCompte.md"},i=n('

Création de compte

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

pageAccueil

Comment changer la langue

changerLangue

Créer un nouveau compte

Rejoindre un compte existant

',8),l=[i];function s(m,u,p,d,h,_){return a(),t("div",null,l)}const x=e(c,[["render",s]]);export{f as __pageData,x as default}; +import{_ as e,o as a,c as t,R as n}from"./chunks/framework.Eeo-33mw.js";const o="/assets/pageAccueil.b3XCkFrx.png",r="/assets/changerLangue.Z5pbAsoq.png",f=JSON.parse('{"title":"Création de compte","description":"","frontmatter":{},"headers":[],"relativePath":"kaq/exemples/créationCompte.md","filePath":"kaq/exemples/créationCompte.md"}'),c={name:"kaq/exemples/créationCompte.md"},i=n('

Création de compte

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

pageAccueil

Comment changer la langue

changerLangue

Créer un nouveau compte

Rejoindre un compte existant

',8),l=[i];function s(m,u,p,d,h,_){return a(),t("div",null,l)}const x=e(c,[["render",s]]);export{f as __pageData,x as default}; diff --git "a/assets/kaq_exemples_cr\303\251ationCompte.md.bQYnCafk.lean.js" "b/assets/kaq_exemples_cr\303\251ationCompte.md.oOIwQ7IM.lean.js" similarity index 87% rename from "assets/kaq_exemples_cr\303\251ationCompte.md.bQYnCafk.lean.js" rename to "assets/kaq_exemples_cr\303\251ationCompte.md.oOIwQ7IM.lean.js" index de2370f464..674e6724d1 100644 --- "a/assets/kaq_exemples_cr\303\251ationCompte.md.bQYnCafk.lean.js" +++ "b/assets/kaq_exemples_cr\303\251ationCompte.md.oOIwQ7IM.lean.js" @@ -1 +1 @@ -import{_ as e,o as a,c as t,R as n}from"./chunks/framework.Eeo-33mw.js";const o="/assets/pageAccueil.b3XCkFrx.png",r="/assets/changerLangue.3t_voIo4.png",f=JSON.parse('{"title":"Création de compte","description":"","frontmatter":{},"headers":[],"relativePath":"kaq/exemples/créationCompte.md","filePath":"kaq/exemples/créationCompte.md"}'),c={name:"kaq/exemples/créationCompte.md"},i=n("",8),l=[i];function s(m,u,p,d,h,_){return a(),t("div",null,l)}const x=e(c,[["render",s]]);export{f as __pageData,x as default}; +import{_ as e,o as a,c as t,R as n}from"./chunks/framework.Eeo-33mw.js";const o="/assets/pageAccueil.b3XCkFrx.png",r="/assets/changerLangue.Z5pbAsoq.png",f=JSON.parse('{"title":"Création de compte","description":"","frontmatter":{},"headers":[],"relativePath":"kaq/exemples/créationCompte.md","filePath":"kaq/exemples/créationCompte.md"}'),c={name:"kaq/exemples/créationCompte.md"},i=n("",8),l=[i];function s(m,u,p,d,h,_){return a(),t("div",null,l)}const x=e(c,[["render",s]]);export{f as __pageData,x as default}; diff --git "a/assets/\340\244\271\340\244\277\340\244\202_exemples_cr\303\251ationCompte.md.tu68wifg.js" "b/assets/\340\244\271\340\244\277\340\244\202_exemples_cr\303\251ationCompte.md.YIj7QVQX.js" similarity index 91% rename from "assets/\340\244\271\340\244\277\340\244\202_exemples_cr\303\251ationCompte.md.tu68wifg.js" rename to "assets/\340\244\271\340\244\277\340\244\202_exemples_cr\303\251ationCompte.md.YIj7QVQX.js" index 772319c346..56131a42ce 100644 --- "a/assets/\340\244\271\340\244\277\340\244\202_exemples_cr\303\251ationCompte.md.tu68wifg.js" +++ "b/assets/\340\244\271\340\244\277\340\244\202_exemples_cr\303\251ationCompte.md.YIj7QVQX.js" @@ -1 +1 @@ -import{_ as e,o as a,c as t,R as n}from"./chunks/framework.Eeo-33mw.js";const o="/assets/pageAccueil.pcvwI3ps.png",r="/assets/changerLangue.vGXNkEGv.png",f=JSON.parse('{"title":"Création de compte","description":"","frontmatter":{},"headers":[],"relativePath":"हिं/exemples/créationCompte.md","filePath":"हिं/exemples/créationCompte.md"}'),c={name:"हिं/exemples/créationCompte.md"},i=n('

Création de compte

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

pageAccueil

Comment changer la langue

changerLangue

Créer un nouveau compte

Rejoindre un compte existant

',8),l=[i];function s(m,u,p,d,h,_){return a(),t("div",null,l)}const v=e(c,[["render",s]]);export{f as __pageData,v as default}; +import{_ as e,o as a,c as t,R as n}from"./chunks/framework.Eeo-33mw.js";const o="/assets/pageAccueil.pcvwI3ps.png",r="/assets/changerLangue.P4t0iDsv.png",f=JSON.parse('{"title":"Création de compte","description":"","frontmatter":{},"headers":[],"relativePath":"हिं/exemples/créationCompte.md","filePath":"हिं/exemples/créationCompte.md"}'),c={name:"हिं/exemples/créationCompte.md"},i=n('

Création de compte

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

pageAccueil

Comment changer la langue

changerLangue

Créer un nouveau compte

Rejoindre un compte existant

',8),l=[i];function s(m,u,p,d,h,_){return a(),t("div",null,l)}const x=e(c,[["render",s]]);export{f as __pageData,x as default}; diff --git "a/assets/\340\244\271\340\244\277\340\244\202_exemples_cr\303\251ationCompte.md.tu68wifg.lean.js" "b/assets/\340\244\271\340\244\277\340\244\202_exemples_cr\303\251ationCompte.md.YIj7QVQX.lean.js" similarity index 71% rename from "assets/\340\244\271\340\244\277\340\244\202_exemples_cr\303\251ationCompte.md.tu68wifg.lean.js" rename to "assets/\340\244\271\340\244\277\340\244\202_exemples_cr\303\251ationCompte.md.YIj7QVQX.lean.js" index 2d74bcf39e..ce76e11581 100644 --- "a/assets/\340\244\271\340\244\277\340\244\202_exemples_cr\303\251ationCompte.md.tu68wifg.lean.js" +++ "b/assets/\340\244\271\340\244\277\340\244\202_exemples_cr\303\251ationCompte.md.YIj7QVQX.lean.js" @@ -1 +1 @@ -import{_ as e,o as a,c as t,R as n}from"./chunks/framework.Eeo-33mw.js";const o="/assets/pageAccueil.pcvwI3ps.png",r="/assets/changerLangue.vGXNkEGv.png",f=JSON.parse('{"title":"Création de compte","description":"","frontmatter":{},"headers":[],"relativePath":"हिं/exemples/créationCompte.md","filePath":"हिं/exemples/créationCompte.md"}'),c={name:"हिं/exemples/créationCompte.md"},i=n("",8),l=[i];function s(m,u,p,d,h,_){return a(),t("div",null,l)}const v=e(c,[["render",s]]);export{f as __pageData,v as default}; +import{_ as e,o as a,c as t,R as n}from"./chunks/framework.Eeo-33mw.js";const o="/assets/pageAccueil.pcvwI3ps.png",r="/assets/changerLangue.P4t0iDsv.png",f=JSON.parse('{"title":"Création de compte","description":"","frontmatter":{},"headers":[],"relativePath":"हिं/exemples/créationCompte.md","filePath":"हिं/exemples/créationCompte.md"}'),c={name:"हिं/exemples/créationCompte.md"},i=n("",8),l=[i];function s(m,u,p,d,h,_){return a(),t("div",null,l)}const x=e(c,[["render",s]]);export{f as __pageData,x as default}; diff --git "a/assets/\340\256\244_exemples_cr\303\251ationCompte.md.JORz7YGQ.js" "b/assets/\340\256\244_exemples_cr\303\251ationCompte.md.E__AtABz.js" similarity index 96% rename from "assets/\340\256\244_exemples_cr\303\251ationCompte.md.JORz7YGQ.js" rename to "assets/\340\256\244_exemples_cr\303\251ationCompte.md.E__AtABz.js" index f0d524ebab..c414c096ce 100644 --- "a/assets/\340\256\244_exemples_cr\303\251ationCompte.md.JORz7YGQ.js" +++ "b/assets/\340\256\244_exemples_cr\303\251ationCompte.md.E__AtABz.js" @@ -1 +1 @@ -import{_ as e,o as a,c as t,R as n}from"./chunks/framework.Eeo-33mw.js";const o="/assets/pageAccueil.uQk-5zFY.png",r="/assets/changerLangue.ywiea3K5.png",f=JSON.parse('{"title":"Création de compte","description":"","frontmatter":{},"headers":[],"relativePath":"த/exemples/créationCompte.md","filePath":"த/exemples/créationCompte.md"}'),c={name:"த/exemples/créationCompte.md"},i=n('

Création de compte

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

pageAccueil

Comment changer la langue

changerLangue

Créer un nouveau compte

Rejoindre un compte existant

',8),l=[i];function s(m,u,p,d,h,_){return a(),t("div",null,l)}const x=e(c,[["render",s]]);export{f as __pageData,x as default}; +import{_ as e,o as a,c as t,R as n}from"./chunks/framework.Eeo-33mw.js";const o="/assets/pageAccueil.uQk-5zFY.png",r="/assets/changerLangue.3Qnx2sdc.png",f=JSON.parse('{"title":"Création de compte","description":"","frontmatter":{},"headers":[],"relativePath":"த/exemples/créationCompte.md","filePath":"த/exemples/créationCompte.md"}'),c={name:"த/exemples/créationCompte.md"},i=n('

Création de compte

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

pageAccueil

Comment changer la langue

changerLangue

Créer un nouveau compte

Rejoindre un compte existant

',8),l=[i];function s(m,u,p,d,h,_){return a(),t("div",null,l)}const x=e(c,[["render",s]]);export{f as __pageData,x as default}; diff --git "a/assets/\340\256\244_exemples_cr\303\251ationCompte.md.JORz7YGQ.lean.js" "b/assets/\340\256\244_exemples_cr\303\251ationCompte.md.E__AtABz.lean.js" similarity index 87% rename from "assets/\340\256\244_exemples_cr\303\251ationCompte.md.JORz7YGQ.lean.js" rename to "assets/\340\256\244_exemples_cr\303\251ationCompte.md.E__AtABz.lean.js" index a098bed534..d640a09614 100644 --- "a/assets/\340\256\244_exemples_cr\303\251ationCompte.md.JORz7YGQ.lean.js" +++ "b/assets/\340\256\244_exemples_cr\303\251ationCompte.md.E__AtABz.lean.js" @@ -1 +1 @@ -import{_ as e,o as a,c as t,R as n}from"./chunks/framework.Eeo-33mw.js";const o="/assets/pageAccueil.uQk-5zFY.png",r="/assets/changerLangue.ywiea3K5.png",f=JSON.parse('{"title":"Création de compte","description":"","frontmatter":{},"headers":[],"relativePath":"த/exemples/créationCompte.md","filePath":"த/exemples/créationCompte.md"}'),c={name:"த/exemples/créationCompte.md"},i=n("",8),l=[i];function s(m,u,p,d,h,_){return a(),t("div",null,l)}const x=e(c,[["render",s]]);export{f as __pageData,x as default}; +import{_ as e,o as a,c as t,R as n}from"./chunks/framework.Eeo-33mw.js";const o="/assets/pageAccueil.uQk-5zFY.png",r="/assets/changerLangue.3Qnx2sdc.png",f=JSON.parse('{"title":"Création de compte","description":"","frontmatter":{},"headers":[],"relativePath":"த/exemples/créationCompte.md","filePath":"த/exemples/créationCompte.md"}'),c={name:"த/exemples/créationCompte.md"},i=n("",8),l=[i];function s(m,u,p,d,h,_){return a(),t("div",null,l)}const x=e(c,[["render",s]]);export{f as __pageData,x as default}; diff --git "a/avanc\303\251/applications/internet.html" "b/avanc\303\251/applications/internet.html" index 5f00658b7b..11789186c6 100644 --- "a/avanc\303\251/applications/internet.html" +++ "b/avanc\303\251/applications/internet.html" @@ -61,7 +61,7 @@ <template> <h1>Mon compte : {{ idCompte }}</h1> </template>
- + \ No newline at end of file diff --git "a/avanc\303\251/applications/introduction.html" "b/avanc\303\251/applications/introduction.html" index e82d47bf84..5fc767bbb1 100644 --- "a/avanc\303\251/applications/introduction.html" +++ "b/avanc\303\251/applications/introduction.html" @@ -19,7 +19,7 @@
Skip to content

Développement d'applis

Vous pouvez utiliser l'IPA TypeScript de Constellation afin de développer vos propres applis de science citoyenne ou autre sur le réseau Constellation.

Vous pouvez ainsi développer des applications en tant que sites web statiques, de même que des applications Électron.

CONSEIL

Si vous cherchez à créer un appli de science citoyenne, Constellation peut la générer automatiquement pour vous ! Il suffit d'ouvrir la nuée dans l'interface de Constellation et choisir l'option de génération de code. Voir la section collecte de données pour plus d'informations.

Projets utilisant Constellation

Si vous développez un projet utilisant Constellation, contactez-nous (ou, encore mieux, ajoutez-le vous-même) et nous vous donnerons un peu de publicité ici.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/avanc\303\251/applications/nu\303\251es.html" "b/avanc\303\251/applications/nu\303\251es.html" index 61679c29de..a4a4a254ea 100644 --- "a/avanc\303\251/applications/nu\303\251es.html" +++ "b/avanc\303\251/applications/nu\303\251es.html" @@ -19,7 +19,7 @@
Skip to content

Nuées de données

L'application la plus fréquente de Constellation dans une application tièrce est sans toute la collection de données distribuées d'un plublique participant à un projet de science citoyenne ou autre. Dans ce cas, les nuées seront indispensables.

Cette section offre des instructions détaillées sur l'utilisation de nuées Constellation dans vos propres projets.

Création de la nuée

Vous devrez, avant tout, créer l'identifiant de la nuée qui regroupera toutes les données de votre projet.

ATTENTION

Prenez soin de créer la nuée sur le compte Constellation que vous entendez utiliser pour gérer votre projet. Celui-ci aura ainsi l'autorisation de modifier la nuée par la suite.

Génération du code

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/avanc\303\251/applications/\303\251lectron.html" "b/avanc\303\251/applications/\303\251lectron.html" index 50d1914f5d..55329f5dda 100644 --- "a/avanc\303\251/applications/\303\251lectron.html" +++ "b/avanc\303\251/applications/\303\251lectron.html" @@ -116,7 +116,7 @@ port.value = undefined } </script>

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/avanc\303\251/autresLangages/introduction.html" "b/avanc\303\251/autresLangages/introduction.html" index f727163d25..04395e2c9d 100644 --- "a/avanc\303\251/autresLangages/introduction.html" +++ "b/avanc\303\251/autresLangages/introduction.html" @@ -19,7 +19,7 @@
Skip to content

Autres langages

Constellation a beau être un projet JavaScript, il est possible d'accéder au réseau distribué à partir de clients dans d'autres langages informatiques. Des clients sont disposibles dans les langages suivants :

  • Python : Fonctionnel
  • Julia : Fonctionnel
  • R : Fonctionnel
  • Autres langages : Si vous développez un client Constellation dans un autre langage, contactez-nous et nous l'annoncerons ici.

Tous ces clients fonctionnent en ouvrant un serveur WS Constellation local sur votre machine. Le client Python, Julia ou autre communiquera ensuite avec ce serveur local par messages WS et vous permettent d'utiliser Constellation dans le langage de votre choix.

Vous devrez donc toujours installer Constellation sur votre machine avant de pouvoir utiliser ces clients. La manière la plus facile est d'installer l'interface graphique et puis d'activer le serveur WS sur la page de configuration. Alternativement, vous pouvez installer le serveur WS de Constellation sans interface graphique. Vous aurez besoin de Node.js et de pnpm.

Si nécessaire, installer pnpm :

sh
$ npm add -g pnpm

Et puis installer Constellation :

sh
$ pnpm global add -g @constl/ipa @constl/serveur

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/avanc\303\251/autresLangages/julia.html" "b/avanc\303\251/autresLangages/julia.html" index 0afc5c743d..ffdb463cb1 100644 --- "a/avanc\303\251/autresLangages/julia.html" +++ "b/avanc\303\251/autresLangages/julia.html" @@ -168,7 +168,7 @@ donnéesRéseau = Constellation.obtDonnéesTableauNuée(client, idNuée, clefTableau, ["fr"]) end end
- + \ No newline at end of file diff --git "a/avanc\303\251/autresLangages/nouveauxLangages.html" "b/avanc\303\251/autresLangages/nouveauxLangages.html" index 8e39daf405..a5ba0438cf 100644 --- "a/avanc\303\251/autresLangages/nouveauxLangages.html" +++ "b/avanc\303\251/autresLangages/nouveauxLangages.html" @@ -111,7 +111,7 @@ "id": "1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed", "erreur": "Message d'erreur tel que rencontré par le serveur." }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/avanc\303\251/autresLangages/n\305\223udLocal.html" "b/avanc\303\251/autresLangages/n\305\223udLocal.html" index bfd38eafc3..114b477067 100644 --- "a/avanc\303\251/autresLangages/n\305\223udLocal.html" +++ "b/avanc\303\251/autresLangages/n\305\223udLocal.html" @@ -12,13 +12,13 @@ - + -
Skip to content

Nœud local

Serveur WS

La librairie @constl/serveur vous permet de créer un nœud local Constellation et de le rendre accessible à d'autres logiciels sur votre machine par l'entremise d'un serveur WS local.

DANGER

⚠️ Ce serveur local n'est pas apte à être utilisé en tant que serveur publique ! Entre autres limitations, il n'y a aucun contrôle d'authentification et il donne accès illimité à un environnement Node.js. Il est donc configuré afin d'être uniquement disponible sur localhost. Ce serveur est dédié uniquement à la communication entre processus sur le même ordinateur, lorsque différents processus veulent accéder au même nœud Constellation local.

N'exposez jamais le serveur WS Constellation sur un port publique.

Utilisation

Si vous voulez tout simplement utiliser Constellation avec Python ou R, veuillez installer les librairies respectives constellation-py, Constellation.jl et constellation-R (en progrès). Celles-ci se chargeront automatiquement de lancer le serveur Constellation.

Installation globale

L'installation globale vous permet de lancer un nœud local Constellation de la ligne de commande. Si vous comptez simplement utiliser le serveur Constellation (y compris pour une analyse en Python, en R ou en Julia), installez-le comme suit :

bash
$ pnpm add -g @constl/serveur @constl/ipa

Ligne de commande

Vous pourrez ensuite lancer le nœud local en spécifiant (ou non) le port, l'identifiant de compte, et les dossiers à utiliser pour sauvegarder les données de votre compte :

$ constl lancer [-p <port>] [--compte <id-compte>] [--doss-orbite <dossierOrbite>] [--doss-sfip <dossierSFIP>]

Si vous ne comprennez pas ce que font les options de compte ou de dossier, laissez-les vides et inquiétez-vous pas ; ça fonctionnera pareil.

Pour obtenir le numéro de la version :

bash
$ constl version

Pour obtenir de l'aide :

bash
$ constl -a

Utilisation dans un autre projet

Si vous voulez incorporer le serveur Constellation dans une autre librairie JavaScript, vous pouvez l'installer ainsi :

bash
$ pnpm add @constl/serveur
bash
$ pnpm install @constl/serveur

Vous pourrez ensuite importer le serveur dans votre propre code et le lancer programmatiquement.

CONSEIL

Constellation elle-même (@constl/ipa) est spécifiée en tant que dépendance pair du serveur Constellation. Vous pouvez donc installer la version de Constellation qui vous convient.

Serveur

JavaScript
import { lancerServeur } from "@constl/serveur";
+    
Skip to content

Nœud local

Serveur WS

La librairie @constl/serveur vous permet de créer un nœud local Constellation et de le rendre accessible à d'autres logiciels sur votre machine par l'entremise d'un serveur WS local.

DANGER

⚠️ Ce serveur local n'est pas apte à être utilisé en tant que serveur publique ! Entre autres limitations, il n'y a aucun contrôle d'authentification et il donne accès illimité à un environnement Node.js. Il est donc configuré afin d'être uniquement disponible sur localhost. Ce serveur est dédié uniquement à la communication entre processus sur le même ordinateur, lorsque différents processus veulent accéder au même nœud Constellation local.

N'exposez jamais le serveur WS Constellation sur un port publique.

Utilisation

Si vous voulez tout simplement utiliser Constellation avec Python ou R, veuillez installer les librairies respectives constellation-py, Constellation.jl et constellation-R (en progrès). Celles-ci se chargeront automatiquement de lancer le serveur Constellation.

Installation globale

L'installation globale vous permet de lancer un nœud local Constellation de la ligne de commande. Si vous comptez simplement utiliser le serveur Constellation (y compris pour une analyse en Python, en R ou en Julia), installez-le comme suit :

bash
$ pnpm add -g @constl/serveur @constl/ipa

Ligne de commande

Vous pourrez ensuite lancer le nœud local en spécifiant (ou non) le port, l'identifiant de compte, et les dossiers à utiliser pour sauvegarder les données de votre compte :

$ constl lancer [-p <port>] [--compte <id-compte>] [--doss-orbite <dossierOrbite>] [--doss-sfip <dossierSFIP>]

Si vous ne comprennez pas ce que font les options de compte ou de dossier, laissez-les vides et inquiétez-vous pas ; ça fonctionnera pareil.

Pour obtenir le numéro de la version :

bash
$ constl version

Pour obtenir de l'aide :

bash
$ constl -a

Utilisation dans un autre projet

Si vous voulez incorporer le serveur Constellation dans une autre librairie JavaScript, vous pouvez l'installer ainsi :

bash
$ pnpm add @constl/serveur
bash
$ pnpm install @constl/serveur

Vous pourrez ensuite importer le serveur dans votre propre code et le lancer programmatiquement.

CONSEIL

Constellation elle-même (@constl/ipa) est spécifiée en tant que dépendance pair du serveur Constellation. Vous pouvez donc installer la version de Constellation qui vous convient.

Serveur

JavaScript
import { lancerServeur } from "@constl/serveur";
 
 const { fermerServeur, port } = await lancerServeur();
 
@@ -52,7 +52,7 @@
 
 // Lorsqu'on a fini :
 fermerClient();

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/avanc\303\251/autresLangages/python.html" "b/avanc\303\251/autresLangages/python.html" index f08916ee89..5d44ee622a 100644 --- "a/avanc\303\251/autresLangages/python.html" +++ "b/avanc\303\251/autresLangages/python.html" @@ -12,13 +12,13 @@ - + -
Skip to content

Python

Cette librarie offre un client Constellation pour Python. Elle fonctionne en lançant un serveur ws Constellation local, avec lequel elle gère ensuite la communication par websocket.

Paquet Python

codecov

Installation

Vous pouvez installer ConstellationPy ainsi :

sh
$ pdm add constellationPy
sh
$ poetry add constellationPy
sh
$ pip install constellationPy

CONSEIL

Si le serveur Constellation n'est pas déjà installé sur votre machine, ConstellationPy l'installera automatiquement pour vous. Pour ce faire, vous devrez au tout minimum avoir Node.js installé localement.

Utilisation

ConstellationPy est une libraries asynchrone basée sur trio. Étant donné que le serveur Constellation est fondamentalement asynchrone aussi, c'était la décision naturelle.

Cependant, nous comprenons bien que la grande majorité des utilisatrices et utilisateurs de Python n'ont aucune idée de ce qu'est la programmation asynchrone, ni aucun goût ou raison de l'apprendre. C'est pour cela que ConstellationPy vous offre également une IPA synchrone.

CONSEIL

Vous ne savez pas ce que « synchrone » ou « asynchrone » veulent dire ? Ne vous en faites pas et utilisez l'IPA synchrone. « Synchrone » est le terme technique pour le style de code « normal » Python que vous connaissez bien. Si vous voulez en savoir plus, voici une belle présentation de la différence entre les deux (en JavaScript).

IPA synchrone

En premier lieu, nous devons lancer le serveur Constellation. C'est absolument nécessaire, à moins que vous n'aviez déjà lancé un serveur Constellation manuellement, lorsque, par exemple, vous voulez exécuter plusieurs codes Python qui utilisent Constellation en parallèle sans dupliquer le serveur (oui, c'est bien possible) !

ATTENTION

Attention ! L'IPA synchrone fonctionne bien pour des petites tâches (p. ex., récupérer un ou deux jeux de données), mais l'IPA asynchrone est beaucoup plus efficace si vous traitez de grands nombres de données ou de requêtes à Constellation. Si vous avez besoin d'accéder beaucoup de différentes bases de données Constellation, peut-être que ça vaudrait la peine, après tout, d'apprendre comment utiliser ces drôles de async et await en Python.

Donc, on commence. La façon la plus sure, c'est d'utiliser un bloc with, car celui-ci fermera automatiquement le serveur une fois que vous aurez terminé avec. Cette syntaxe permettra aussi au client Constellation de détecter automatiquement le port auquel il devra se connecter.

python
from constellationPy import Serveur, ClientSync
+    
Skip to content

Python

Cette librarie offre un client Constellation pour Python. Elle fonctionne en lançant un serveur ws Constellation local, avec lequel elle gère ensuite la communication par websocket.

Paquet Python

codecov

Installation

Vous pouvez installer ConstellationPy ainsi :

sh
$ pdm add constellationPy
sh
$ poetry add constellationPy
sh
$ pip install constellationPy

CONSEIL

Si le serveur Constellation n'est pas déjà installé sur votre machine, ConstellationPy l'installera automatiquement pour vous. Pour ce faire, vous devrez au tout minimum avoir Node.js installé localement.

Utilisation

ConstellationPy est une libraries asynchrone basée sur trio. Étant donné que le serveur Constellation est fondamentalement asynchrone aussi, c'était la décision naturelle.

Cependant, nous comprenons bien que la grande majorité des utilisatrices et utilisateurs de Python n'ont aucune idée de ce qu'est la programmation asynchrone, ni aucun goût ou raison de l'apprendre. C'est pour cela que ConstellationPy vous offre également une IPA synchrone.

CONSEIL

Vous ne savez pas ce que « synchrone » ou « asynchrone » veulent dire ? Ne vous en faites pas et utilisez l'IPA synchrone. « Synchrone » est le terme technique pour le style de code « normal » Python que vous connaissez bien. Si vous voulez en savoir plus, voici une belle présentation de la différence entre les deux (en JavaScript).

IPA synchrone

En premier lieu, nous devons lancer le serveur Constellation. C'est absolument nécessaire, à moins que vous n'aviez déjà lancé un serveur Constellation manuellement, lorsque, par exemple, vous voulez exécuter plusieurs codes Python qui utilisent Constellation en parallèle sans dupliquer le serveur (oui, c'est bien possible) !

ATTENTION

Attention ! L'IPA synchrone fonctionne bien pour des petites tâches (p. ex., récupérer un ou deux jeux de données), mais l'IPA asynchrone est beaucoup plus efficace si vous traitez de grands nombres de données ou de requêtes à Constellation. Si vous avez besoin d'accéder beaucoup de différentes bases de données Constellation, peut-être que ça vaudrait la peine, après tout, d'apprendre comment utiliser ces drôles de async et await en Python.

Donc, on commence. La façon la plus sure, c'est d'utiliser un bloc with, car celui-ci fermera automatiquement le serveur une fois que vous aurez terminé avec. Cette syntaxe permettra aussi au client Constellation de détecter automatiquement le port auquel il devra se connecter.

python
from constellationPy import Serveur, ClientSync
 
 with Serveur():
     client = ClientSync()
@@ -225,7 +225,7 @@
 
 
 trio.run(principale)

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/avanc\303\251/autresLangages/r.html" "b/avanc\303\251/autresLangages/r.html" index 5adc3a0cd9..bf93d5aa1f 100644 --- "a/avanc\303\251/autresLangages/r.html" +++ "b/avanc\303\251/autresLangages/r.html" @@ -143,7 +143,7 @@ }, port = port )

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/cst/avanc\303\251/applications/internet.html" "b/cst/avanc\303\251/applications/internet.html" index 91f2a24da9..0e7e60c2e6 100644 --- "a/cst/avanc\303\251/applications/internet.html" +++ "b/cst/avanc\303\251/applications/internet.html" @@ -61,7 +61,7 @@ <template> <h1>Mon compte : {{ idCompte }}</h1> </template>

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/cst/avanc\303\251/applications/introduction.html" "b/cst/avanc\303\251/applications/introduction.html" index c988592237..e0fb865f77 100644 --- "a/cst/avanc\303\251/applications/introduction.html" +++ "b/cst/avanc\303\251/applications/introduction.html" @@ -19,7 +19,7 @@
Skip to content

Développement d'applis

Vous pouvez utiliser l'IPA TypeScript de Constellation afin de développer vos propres applis de science citoyenne ou autre sur le réseau Constellation.

Vous pouvez ainsi développer des applications en tant que sites web statiques, de même que des applications Électron.

CONSEIL

Si vous cherchez à créer un appli de science citoyenne, Constellation peut la générer automatiquement pour vous ! Il suffit d'ouvrir la nuée dans l'interface de Constellation et choisir l'option de génération de code. Voir la section collecte de données pour plus d'informations.

Projets utilisant Constellation

Si vous développez un projet utilisant Constellation, contactez-nous (ou, encore mieux, ajoutez-le vous-même) et nous vous donnerons un peu de publicité ici.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/cst/avanc\303\251/applications/nu\303\251es.html" "b/cst/avanc\303\251/applications/nu\303\251es.html" index 7547ef453e..12179357d0 100644 --- "a/cst/avanc\303\251/applications/nu\303\251es.html" +++ "b/cst/avanc\303\251/applications/nu\303\251es.html" @@ -19,7 +19,7 @@
Skip to content

Nuées de données

L'application la plus fréquente de Constellation dans une application tièrce est sans toute la collection de données distribuées d'un plublique participant à un projet de science citoyenne ou autre. Dans ce cas, les nuées seront indispensables.

Cette section offre des instructions détaillées sur l'utilisation de nuées Constellation dans vos propres projets.

Création de la nuée

Vous devrez, avant tout, créer l'identifiant de la nuée qui regroupera toutes les données de votre projet.

ATTENTION

Prenez soin de créer la nuée sur le compte Constellation que vous entendez utiliser pour gérer votre projet. Celui-ci aura ainsi l'autorisation de modifier la nuée par la suite.

Génération du code

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/cst/avanc\303\251/applications/\303\251lectron.html" "b/cst/avanc\303\251/applications/\303\251lectron.html" index 231481c321..e001b8adf6 100644 --- "a/cst/avanc\303\251/applications/\303\251lectron.html" +++ "b/cst/avanc\303\251/applications/\303\251lectron.html" @@ -116,7 +116,7 @@ port.value = undefined } </script>

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/cst/avanc\303\251/autresLangages/introduction.html" "b/cst/avanc\303\251/autresLangages/introduction.html" index 7c4ce3d8b2..6cd237eeb7 100644 --- "a/cst/avanc\303\251/autresLangages/introduction.html" +++ "b/cst/avanc\303\251/autresLangages/introduction.html" @@ -19,7 +19,7 @@
Skip to content

Autres langages

Constellation a beau être un projet JavaScript, il est possible d'accéder au réseau distribué à partir de clients dans d'autres langages informatiques. Des clients sont disposibles dans les langages suivants :

  • Python : Fonctionnel
  • Julia : Fonctionnel
  • R : Fonctionnel
  • Autres langages : Si vous développez un client Constellation dans un autre langage, contactez-nous et nous l'annoncerons ici.

Tous ces clients fonctionnent en ouvrant un serveur WS Constellation local sur votre machine. Le client Python, Julia ou autre communiquera ensuite avec ce serveur local par messages WS et vous permettent d'utiliser Constellation dans le langage de votre choix.

Vous devrez donc toujours installer Constellation sur votre machine avant de pouvoir utiliser ces clients. La manière la plus facile est d'installer l'interface graphique et puis d'activer le serveur WS sur la page de configuration. Alternativement, vous pouvez installer le serveur WS de Constellation sans interface graphique. Vous aurez besoin de Node.js et de pnpm.

Si nécessaire, installer pnpm :

sh
$ npm add -g pnpm

Et puis installer Constellation :

sh
$ pnpm global add -g @constl/ipa @constl/serveur

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/cst/avanc\303\251/autresLangages/julia.html" "b/cst/avanc\303\251/autresLangages/julia.html" index e884252905..f275865510 100644 --- "a/cst/avanc\303\251/autresLangages/julia.html" +++ "b/cst/avanc\303\251/autresLangages/julia.html" @@ -168,7 +168,7 @@ donnéesRéseau = Constellation.obtDonnéesTableauNuée(client, idNuée, clefTableau, ["fr"]) end end

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/cst/avanc\303\251/autresLangages/nouveauxLangages.html" "b/cst/avanc\303\251/autresLangages/nouveauxLangages.html" index 3305016608..ecabed0b41 100644 --- "a/cst/avanc\303\251/autresLangages/nouveauxLangages.html" +++ "b/cst/avanc\303\251/autresLangages/nouveauxLangages.html" @@ -116,7 +116,7 @@ "id": "1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed", "erreur": "Message d'erreur tel que rencontré par le serveur." }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/cst/avanc\303\251/autresLangages/n\305\223udLocal.html" "b/cst/avanc\303\251/autresLangages/n\305\223udLocal.html" index d11e110219..a4b50b64ae 100644 --- "a/cst/avanc\303\251/autresLangages/n\305\223udLocal.html" +++ "b/cst/avanc\303\251/autresLangages/n\305\223udLocal.html" @@ -68,7 +68,7 @@ // Lorsqu'on a fini : fermerClient();

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/cst/avanc\303\251/autresLangages/python.html" "b/cst/avanc\303\251/autresLangages/python.html" index 8d6f62738d..35239fded4 100644 --- "a/cst/avanc\303\251/autresLangages/python.html" +++ "b/cst/avanc\303\251/autresLangages/python.html" @@ -234,7 +234,7 @@ trio.run(principale)

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/cst/avanc\303\251/autresLangages/r.html" "b/cst/avanc\303\251/autresLangages/r.html" index 11dfacb936..1712d05ba3 100644 --- "a/cst/avanc\303\251/autresLangages/r.html" +++ "b/cst/avanc\303\251/autresLangages/r.html" @@ -143,7 +143,7 @@ }, port = port )

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/cst/exemples/cr\303\251ationCompte.html" "b/cst/exemples/cr\303\251ationCompte.html" index 7ebb97c86f..9d2fcb2a57 100644 --- "a/cst/exemples/cr\303\251ationCompte.html" +++ "b/cst/exemples/cr\303\251ationCompte.html" @@ -12,14 +12,14 @@ - + - - + + \ No newline at end of file diff --git a/cst/exemples/diffusion.html b/cst/exemples/diffusion.html index 4de04a8fb2..09669542be 100644 --- a/cst/exemples/diffusion.html +++ b/cst/exemples/diffusion.html @@ -19,7 +19,7 @@
Skip to content

Diffusion de données

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

Admettons-le, nous avons tous été coupables du « je-le-partagerai-plus-tardisme ». On a récolté une jolie base de données, et on va la partager dans un dépôt de données comme Zenodo, mais plus tard, quand elle sera bien propre et netoyée...et puis ensuite on publie, on répond aux réviseurs, et on oublie notre base de données qu'on a toujours pas partagée.

Constellation peut être utilisée afin de partager vos données existantes en temps réel, comme ça vous n'avez plus aucune excuse de ne pas les partager, même s'ils ne sont pas « finales ». Si les dépôts de données sont des versions fossilisées de vos données, Constellation est un dépôt pour les données vivantes.

Vous pouvez connecter Constellation à vos logiciels d'entrée de données favoris, et tout se mettra à jour automatiquement. En même temps, les personnes qui s'intéressent à vos données peuvent y accéder et les utiliser en temps réel.

[Schéma diffusion données à inclure]

Importation

Nous pouvons importer nos données à partir d'un fichier Excel, LibreOffice, csv ou autre. Il suffit de créer une base de données et puis de choisir « importer ».

[Image à inclure]

Automatisation

Bon c'était bien chouette, non ? Mais si vous faites des modifications à vos données, c'est un peu ennuyant de toujours devoir les ré-importer. C'est pour ça que nous avons des automatisations.

CONSEIL

Vous pouvez configurer les automatisations pour quelles s'exécutent soit (1) lorsque les données sont modifiées, (2) selon un calendrier fixe, ou (3) uniquement lorsque vous cliquez sur le bouton « actualiser » sur l'interface Constellation.

Nous allons configurer l'importation pour qu'elle actualise les données chaque fois que le document LibreOffice est modifié. Tant que Constellation est ouverte sur votre ordinateur, vos données seront automatiquement mises à jour sur le réseau !

[Image à inclure]

Partage

Vous pouvez maintenant partager les données. Il suffit de copier l'identifiant unique de la base de données de l'interface Constellation et puis de la partager avec tous vos admirateurs.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/cst/exemples/mesDonn\303\251es.html" "b/cst/exemples/mesDonn\303\251es.html" index af2af3b1d4..998068dab7 100644 --- "a/cst/exemples/mesDonn\303\251es.html" +++ "b/cst/exemples/mesDonn\303\251es.html" @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git a/cst/exemples/monCompte.html b/cst/exemples/monCompte.html index 0c8b521fa3..4e80c17380 100644 --- a/cst/exemples/monCompte.html +++ b/cst/exemples/monCompte.html @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git a/cst/exemples/scienceCitoyenne.html b/cst/exemples/scienceCitoyenne.html index 9e5bdba35d..6f88a80767 100644 --- a/cst/exemples/scienceCitoyenne.html +++ b/cst/exemples/scienceCitoyenne.html @@ -137,7 +137,7 @@ client, idNuée, clefTableau, ["fr", "de"] ) end

:::

Pour plus d'information, voir la section sur les autres langages.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/cst/guide/concepts.html b/cst/guide/concepts.html index c0d82d8c37..7cf8a7d28e 100644 --- a/cst/guide/concepts.html +++ b/cst/guide/concepts.html @@ -19,7 +19,7 @@
Skip to content

Terminologie Constellation

Constellation ressemble beaucoup à un tableau LibreOffice ou Excel, mais avec quelques fonctionnalités en plus.

Client

Le client est le point central de Constellation. Chaque compte correspond à un client Constellation.

Profil

Le profil de Constellation organise les information du compte d'utilisateur.

Mots-clefs

Les mots-clefs servent à indexer les bases de données.

Tableaux

Un tableaux est comme une feuille d'un document Excel, LibreOffice ou Google Sheets.

tableaux :---: Exemple d'un tableau Constellation. Chaque tableau a différentes colonnes, chacune associée à une variable.

Variables

Chaque colonne d'un tableau est associée à une variable. Les variables peuvent être de différents types (texte, numérique, dates, photos, audios...).

Bases de données

L'unité centrale de Constellation est la base de données, qui regroupe un ou plusieurs tableaux.

bds :---: Une base de données Constellation. Conceptuellement identiques à un document Excel, LibreOffice ou Google Sheets, les bases de données Constellation incluent un ou plusieurs tableaux.

Projet

Un projet regroupe plusieurs bases de données traitant du même sujet.

projet :---: Exemple d'un projet Constellation. Les projets permettent de retrouver rapidement des données connexes (par exemple, hydrologie de l'Amérique latine, météorologie du Guatemala, pédologie de l'Afrique, ...). Une base de données peut être ajoutée à de multiples projets !

Réseau

Le réseau vous permet d'accéder aux informations des autres membres connectés.

réseau :---: Le réseau Constellation. Constellation forme un réseau de personnes qui se connaissent et se font confiance (ou pas !) avec un modèle de confiance transitive.

Recherche

Vous pouvez également rechercher les données qui vous intéressent.

recherche :---: Une recherche Constellation. Le logiciel commencera avec vos contacts immédiats et recherchera de plus en plus loin si nécessaire.

Nuée

Les nuées vous permettent de créer des projets de science citoyenne et de regrouper toutes les contributions de vos participants à la même place. Elles permettent de combiner des données de différents utilisateurs, un peu comme le ferait une base de données commune dans un système centralisé.

bdCentraliséé :---: Exemple d'une base de données centralisée. Un serveur central contrôle l'accès à une seule base de données dans laquelle les données de toutes les utilisatrices sont écrites. bdDistribuée :---: Exemple d'une nuée Constellation. Les données de chaque utilisatrice sont écrites sur leur propre base de données. Constellation se charge de toutes les retrouver et de les combiner au moment de la visualisation.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/cst/guide/installation.html b/cst/guide/installation.html index 3caa320314..799ccdcccb 100644 --- a/cst/guide/installation.html +++ b/cst/guide/installation.html @@ -19,7 +19,7 @@
Skip to content

Installation

Constellation peut être utilisé soit

Il y a plusieurs avantages à installer Constellation sur votre ordinateur plutôt que d'utiliser l'appli en ligne. Premièrement, vous aurez accès à plus de mémoire, l'appli en ligne étant limitée par la mémoire de votre navigateur. En plus, la version installée offre plus de fonctionnalités, tel le partage automatique de vos données à base d'un fichier local et la sauvegarde automatique des données Constellation sur votre ordinateur.

FonctionnalitéConstellation navigateurConstellation installée
Exportation manuelle
Exportation automatisée
Importation manuelle (URL ou fichier)
Importation automatisée (URL)
Importation automatisée (fichier)
Limite de mémoireNavigateurSystème
Connectivité TCP
Connectivité WebRTC
Connectivité WebTransport

Autres langages

Si vous préférez travailler avec du code, qu'il s'agisse de JavaScript, Python, Julia ou R, il vous est possible d'utiliser Constellation dans ces langages. Voir notre guide avancé pour démarrer.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/cst/guide/introduction.html b/cst/guide/introduction.html index 6cab638eef..25f06b3050 100644 --- a/cst/guide/introduction.html +++ b/cst/guide/introduction.html @@ -19,7 +19,7 @@
Skip to content

Introduction

Constellation est un logiciel de bases de données scientifiques distribuées. Il vous permet de collecter et de diffuser vos données scientifiques sans serveur ou dépôt centralisé.

Qu'est-ce qu'un système distribué ?

Dans une système distribué, il n'y a pas de serveur qui contrôle les interactions entres utilisateurs. Les personnes participant au réseau communiquent donc directement entre elles. C'est plus résilient et plus amusant !

systèmeCentralisé

Pourquoi un logiciel local ?

Constellation est un logiciel local qui garde toutes vos données sur votre propre dispositif (comme Excel ou LibreOffice). Vous n'êtes donc pas à la mercie du Wifi ou de Google pour pouvoir accéder à vos propres données. Cependant, Constellation vous permet aussi de collaborer en ligne et de partager (et syncroniser) vos données en temps réel (comme les documents Google). C'est le meilleur des deux mondes !

AvantagesApplis intallées (p.ex., Excel)Applis nuage (p.ex., Google)Applis locales
Rapidité
Sans dépendance Internet
Sans enfermerment propriétaire
Collaboration
Autorisations d'équipe
Sauvegarde en ligne
Mises à jour en directe
Note : Tableau adapté de local-first-web de Herb Caudill.

Philosophie générale

La philosophie de Constellation se résume en quelques grandes lignes :

Accès libre : Les données scientifiques devraient être ouvertes et accessibles. Toutes les données partagées sur Constellation sont publiques. (Si vous travaillez en recherche clinique, ce n'est peut-être pas le logiciel pour vous.)

Source ouverte : Tous les logiciels de l'univers Constellation sont distribués sous licence libre.

Indépendance : Constellation est un logiciel ouvert, et les données sont sauvegardées sur les dispositifs des utilisatrices et utilisateurs. Les communautés gardent donc le contrôle sur leurs propres données en tout temps.

Accessible et multilingue : Le monde est une place multilingue ; le monde de la recherche, lui, ne l'est malheureusement pas autant. Beaucoup de données sont collectées dans des régions du monde et ensuite publiées dans des langues que les personnes qui les ont fournies ne parlent pas. Cependant, la structure des logiciels que nous utilisons façonne notre pensée, pour le mieux ou pour le pire. Beaucoup de logiciels de bases de données (Excel, MongoDB, etc.) ne permettent qu'un seul nom par colonne ou champ ; nous sommes ainsi entraînés à entrer des données monolingues. Nous avons donc conceptualisé Constellation afin qu'elle guide ses utilisateurs et utilisatrices vers une meilleure inclusion. Chaque objet en Constellation, soit-ce votre profil, une variable ou une base de données, peut être nommé en autant de langues que vous voulez. Vos données apparaîtront donc dans la langue préférée de chacune de vos utilisatrices finales.

Comment ça se compare à ... ?

FonctionnalitéConstellationExcelLibreOfficeDocs GoogleBD sur serveur (MongoDB, SQL)
Collaboration simultanée
Fonctionne hors ligne
Photos, vidéos
Contrôle local des donnéesSi le serveur vous appartient
Intégration avec vos applis
Source ouverteC'est compliqué

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/cst/guide/pair\303\200Pair.html" "b/cst/guide/pair\303\200Pair.html" index 94bc1344a2..843385bf5c 100644 --- "a/cst/guide/pair\303\200Pair.html" +++ "b/cst/guide/pair\303\200Pair.html" @@ -19,7 +19,7 @@
Skip to content

Systèmes pair à pair

Afin de bien comprendre Constellation, c'est peut-être util de comprendre ce qu'est un système distribué ou pair à pair. Premièrement, ils ne sont pas exactement la même chose. Un système pair à pair, c'est un système qui, contrairement à votre courriel ou à Google, ne nécessite pas de serveur central pour fonctionner. Chouette, n'est-ce pas ?

Les systèmes pair à pair peuvent être décentralisés ou bien distribués. Dans un système décentralisé, le logiciel est trop gros ou compliqué pour fonctionner sur la majorité des téléphones ou ordinateurs des participants au réseau. Donc, certains participants au réseau qui ont les gros ordinateurs nécessaires servent de point contact et de service pour la majorité des autres participants. À la fin, c'est beaucoup comme un système centralisé.

distribuéVsDécentralisé

Au contraire, dans un système distribué, tout les participants sont égaux les un aux autres. Certains peuvent être connectés avec des machines plus puissantes ou avec plus de mémoire, bien sûr, mais tous intéragissent d'égal à égal dans le réseau.

INFO

Constellation n'est pas une chaîne de bloques !

Les systèmes pair à pair ont malheureusement une mauvaise réputation, peut-être parce que la majorité des premiers logiciels populaires étaient des platformes de partage de médias piratées. Ensuite sont arrivé les cryptomonnaies basées sur les chaînes de bloques, qui ont fréquemment bien mérité leur réputation en tant que pyramides de Ponzi et trous noirs énergétiques notoirement inefficaces pour toute application utile.

Donc nous répétons : Constellation est un système distribué de pair en pair, mais pas une chaîne de bloques !

Mais pourquoi pas une chaîne de bloques ?

Premièrement, parce que c'est ben trop cher. Chaque transaction sur une chaîne de bloques comme Éthereum coûte de la fausse argent (cryptomonnaies), que vous devez malheureusement achetter avec de la vraie argent. Et les fluctuations des prix sont bien entendu complètement hors de notre contrôle. Pourquoi créer un système de données distribuées pour améliorer la souveraineté des données pour ensuite devoir payer des personnes anonymes une somme d'argent variable pour le privilège d'écrire à nos propres bases de données ?

Et deuxièmement, c'est complètement inutil. Les chaînes de bloques sont nécessaires pour les cryptomonnaies et leurs transactions financières. Mais nous, on veut partager des données scientifiques. Nous n'avons rien à faire avec de l'argent ou des transactions financières.

Donc oublions tout ça. Constellation fonctionne de manière complètement distribuée, entièrement sur les dispositifs de ses utilisatrices et utilisateurs.

Comment ça fonctionne

Lorsque vous sauvegardez des données sur Constellation, celles-ci sont sauvegardées sur votre appareil local, et y resteront toujours disponibles.

CONSEIL

Si vous sauvegardez vos données sur un système sur le « nuage » comme les documents Google, vous aurez peut-être remarqué que vos données n'apparaissent plus lorsque vous (ou Google !) est hors ligne. L'avantage d'un système local comme Constellation est que vous êtes toujours garanti d'avoir accès à vos données, parce qu'elles demeurent toujours sur votre dispositif.

Le logiciel Constellation recherche également d'autres utilisatrices et utilisateurs du réseau et vous permet d'accéder et de visualiser leurs données. La magie d'un système distribué est qu'il permet aux tièrces personnes de partager, mais pas de modifier, les données des autres. Si vous vivez au Québec et vous partagez vos données scientifiques et avant fermez votre téléphone pour aller dormir, vos données ne seront plus disponible sur le réseau jusqu'à votre réveil, heure de l'est. Mais, si quelqu'un d'autre, disons au Botswana, les a déjà accédées, elles seront automatiquement repartagées et disponibles sur le réseau à partir du nouveau dispositif, toute prêtes pour le réveil de vos collègues de l'Inde au Japon ! Donc, contrairement à un système centralisé, sur Constellation, le plus populaires vos données, le plus disponibles elles seront.

Mais comment empêchons-nous les autres personnes de modifier vos données avant de les partager ? Chaque changement que vous apportez à vos données est accompagné d'une signature que uniquement votre compte peut générer. Si quelqu'un d'autre essaie de modifier vos données, la signature deviendra invalide et les changements frauduleux seront automatiquement rejetés par le réseau.

Au niveau technique

Pour ceux et celles qui ça amuse, Constellation est construit sur bd-orbite, un logiciel de bases de données distribuées, lui-même construit sur libp2p et le Système de fichiers interplanétaire SFIP. Toutes les bases de données sur Constellation sont composées de multiples bases de données orbite, tandis que les fichiers (images, vidéos) sont sauvegardés directement sur SFIP.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/cst/guide/questions.html b/cst/guide/questions.html index d3ed5d4169..fd24250974 100644 --- a/cst/guide/questions.html +++ b/cst/guide/questions.html @@ -19,7 +19,7 @@
Skip to content

Questions et problèmes

Erreurs fréquentes Constellation

Nous répertorions ici les erreurs fréquentes que l'on a rencontrés en utilisant Constellation. Apprenons des maux de tête des autres !

SyntaxError: Unexpected identifier

Assurez-vous d'être sur la plus récente version de Node.js. Si vous utilisez nvm, nvm use stable devrait régler le problème.

LockExistsError: Lock already being held for file: constl/sfip/repo.lock

Vous avez probablement lancé plus d'une instance de Constellation en même temps.

Error: Listener is not ready yet

Vous avez probablement lancé plus d'une instance de Constellation en même temps.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/cst/index.html b/cst/index.html index 5241143aa0..210c4e79ac 100644 --- a/cst/index.html +++ b/cst/index.html @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git a/cst/ipa/automatisations.html b/cst/ipa/automatisations.html index f6cfb3e264..ac75550bc0 100644 --- a/cst/ipa/automatisations.html +++ b/cst/ipa/automatisations.html @@ -216,7 +216,7 @@ type: "programmée"; à: number; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/cst/ipa/bds.html b/cst/ipa/bds.html index 0e67441458..bf3feb5317 100644 --- a/cst/ipa/bds.html +++ b/cst/ipa/bds.html @@ -587,7 +587,7 @@ nomBd: string; tableaux: donnéesTableauExportation[]; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/cst/ipa/client.html b/cst/ipa/client.html index 82a6cd7fc6..3971bebf0f 100644 --- a/cst/ipa/client.html +++ b/cst/ipa/client.html @@ -163,7 +163,7 @@ }

Types dispositifs

ts
type structureNomsDispositifs = {
   [idDispositif: string]: { nom?: string; type?: string };
 };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/cst/ipa/favoris.html b/cst/ipa/favoris.html index 43eb9b57ca..ca9605a22c 100644 --- a/cst/ipa/favoris.html +++ b/cst/ipa/favoris.html @@ -69,7 +69,7 @@ }; type ÉlémentFavorisAvecObjet = ÉlémentFavoris & { idObjet: string };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/cst/ipa/introduction.html b/cst/ipa/introduction.html index 4b392d9baa..808375209a 100644 --- a/cst/ipa/introduction.html +++ b/cst/ipa/introduction.html @@ -71,7 +71,7 @@ }) </script>

Langues

Constellation est un logiciel multilingue, et tout peut être traduit, y compris vos données, les noms des variables, et aussi votre profil d'utilisatrice. Constellation utilise les codes de langue nuchab'äl pour identifier les langues.

Chiffres

Constellation utilise les systèmes de numération du paquet எண்ணிக்கை pour lire et présenter les numéros en différentes langues.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/cst/ipa/licences.html b/cst/ipa/licences.html index 8126186eec..a6ed7d30c3 100644 --- a/cst/ipa/licences.html +++ b/cst/ipa/licences.html @@ -79,7 +79,7 @@ type droit = "partager" | "adapter" | "usageComercial" | "usagePrivé" | "usageBrevets"; type limitation = "aucuneResponsabilité" | "aucuneGarantie" | "marqueCommerce" | "brevetExclu" | "sousLicence"; type catégorie = "basesDeDonnées" | "artistique" | "codeInformatique" | "autre";

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/cst/ipa/motsClefs.html b/cst/ipa/motsClefs.html index af39c5d656..844a14dbcb 100644 --- a/cst/ipa/motsClefs.html +++ b/cst/ipa/motsClefs.html @@ -133,7 +133,7 @@ langue: "fr", description: "Données hydrologiques" });

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/cst/ipa/nu\303\251es.html" "b/cst/ipa/nu\303\251es.html" index 9aceb93604..4b8c03f3e9 100644 --- "a/cst/ipa/nu\303\251es.html" +++ "b/cst/ipa/nu\303\251es.html" @@ -498,7 +498,7 @@ nuée: string; différences: différenceBds[]; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/cst/ipa/profil.html b/cst/ipa/profil.html index 3acefcba78..e9bff0bee7 100644 --- a/cst/ipa/profil.html +++ b/cst/ipa/profil.html @@ -83,7 +83,7 @@ f: x => courriel.value = x }); await fOublierCourriel();

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/cst/ipa/projets.html b/cst/ipa/projets.html index 94f592e84f..b8a4df41f3 100644 --- a/cst/ipa/projets.html +++ b/cst/ipa/projets.html @@ -354,7 +354,7 @@ nomProjet: string; bds: donnéesBdExportation[]; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/cst/ipa/recherche.html b/cst/ipa/recherche.html index 52bdd12b52..8aecfcb86e 100644 --- a/cst/ipa/recherche.html +++ b/cst/ipa/recherche.html @@ -1181,7 +1181,7 @@ clef?: string; info: T; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/cst/ipa/r\303\250gles.html" "b/cst/ipa/r\303\250gles.html" index b5794c7180..3a25a29e8c 100644 --- "a/cst/ipa/r\303\250gles.html" +++ "b/cst/ipa/r\303\250gles.html" @@ -179,7 +179,7 @@ règle: règleColonne<règleBornes<détailsRègleBornesDynamiqueVariable>>; détails: "variableBornesNonPrésente"; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/cst/ipa/r\303\251seau.html" "b/cst/ipa/r\303\251seau.html" index d0e51c422f..95d7356153 100644 --- "a/cst/ipa/r\303\251seau.html" +++ "b/cst/ipa/r\303\251seau.html" @@ -266,7 +266,7 @@ vuÀ?: number; })[]; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/cst/ipa/tableaux.html b/cst/ipa/tableaux.html index affb1754be..c2524b9d03 100644 --- a/cst/ipa/tableaux.html +++ b/cst/ipa/tableaux.html @@ -355,7 +355,7 @@ données: élémentBdListeDonnées[]; fichiersSFIP: Set<string>; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/cst/ipa/variables.html b/cst/ipa/variables.html index ddcb06360b..e6b11beb2e 100644 --- a/cst/ipa/variables.html +++ b/cst/ipa/variables.html @@ -301,7 +301,7 @@ | "audio" | "image" | "fichier";

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/exemples/cr\303\251ationCompte.html" "b/exemples/cr\303\251ationCompte.html" index 72ad786d9b..b8a1557d9d 100644 --- "a/exemples/cr\303\251ationCompte.html" +++ "b/exemples/cr\303\251ationCompte.html" @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git a/exemples/diffusion.html b/exemples/diffusion.html index e0ac886191..7c1473da28 100644 --- a/exemples/diffusion.html +++ b/exemples/diffusion.html @@ -19,7 +19,7 @@
Skip to content

Diffusion de données

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

Admettons-le, nous avons tous été coupables du « je-le-partagerai-plus-tardisme ». On a récolté une jolie base de données, et on va la partager dans un dépôt de données comme Zenodo, mais plus tard, quand elle sera bien propre et netoyée...et puis ensuite on publie, on répond aux réviseurs, et on oublie notre base de données qu'on a toujours pas partagée.

Constellation peut être utilisée afin de partager vos données existantes en temps réel, comme ça vous n'avez plus aucune excuse de ne pas les partager, même s'ils ne sont pas « finales ». Si les dépôts de données sont des versions fossilisées de vos données, Constellation est un dépôt pour les données vivantes.

Vous pouvez connecter Constellation à vos logiciels d'entrée de données favoris, et tout se mettra à jour automatiquement. En même temps, les personnes qui s'intéressent à vos données peuvent y accéder et les utiliser en temps réel.

[Schéma diffusion données à inclure]

Importation

Nous pouvons importer nos données à partir d'un fichier Excel, LibreOffice, csv ou autre. Il suffit de créer une base de données et puis de choisir « importer ».

[Image à inclure]

Automatisation

Bon c'était bien chouette, non ? Mais si vous faites des modifications à vos données, c'est un peu ennuyant de toujours devoir les ré-importer. C'est pour ça que nous avons des automatisations.

CONSEIL

Vous pouvez configurer les automatisations pour quelles s'exécutent soit (1) lorsque les données sont modifiées, (2) selon un calendrier fixe, ou (3) uniquement lorsque vous cliquez sur le bouton « actualiser » sur l'interface Constellation.

Nous allons configurer l'importation pour qu'elle actualise les données chaque fois que le document LibreOffice est modifié. Tant que Constellation est ouverte sur votre ordinateur, vos données seront automatiquement mises à jour sur le réseau !

[Image à inclure]

Partage

Vous pouvez maintenant partager les données. Il suffit de copier l'identifiant unique de la base de données de l'interface Constellation et puis de la partager avec tous vos admirateurs.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/exemples/mesDonn\303\251es.html" "b/exemples/mesDonn\303\251es.html" index 9e52d7bd7d..07549a2509 100644 --- "a/exemples/mesDonn\303\251es.html" +++ "b/exemples/mesDonn\303\251es.html" @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git a/exemples/monCompte.html b/exemples/monCompte.html index c1ca9dba66..a580208ce1 100644 --- a/exemples/monCompte.html +++ b/exemples/monCompte.html @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git a/exemples/scienceCitoyenne.html b/exemples/scienceCitoyenne.html index 474642844a..d84c660d89 100644 --- a/exemples/scienceCitoyenne.html +++ b/exemples/scienceCitoyenne.html @@ -12,7 +12,7 @@ - + @@ -92,8 +92,8 @@ idNuée, clefTableau: "observations", f: console.log, // Ou quelque chose de plus intelligent -})

Sauvegardes automatisées

Nous voudrons également créer des sauvegardes automatisées des données qui nous parviennent de nos utilisatrices (on ne sait jamais...tasses à café et égouts ouverts peuvent être catastrophiques pour les données sur un téléphone).

[Image à inclure]

Accès programmatique

Mais ce n'est pas tout ! Vous pouvez également analyser vos données de science citoyenne dans un autre logiciel et faire des analyses en temps réel.

Tout d'abord, nous allons activer le nœud local Constellation sur l'interface et noter le numéro de port. Ceci nous permettra d'accéder Constellation à partir de notre code Python.

[Image à inclure]

Accès de Python

[Image à inclure]

Voici un exemple de code en Python qui vous permettra d'accéder à vos donneés de science citoyenne. Si vous n'êtes pas très très Python, vous pouvez aussi faire la même chose en R ou bien en Julia.

Pour installer Constellation :

sh
pdm add constellationPy trio
r
# install.packages("devtools")
-devtools::install_github("reseau-constellation/client-r")
r
pkg> add Constellation

Et pour accéder les données :

py
import trio
+})

Sauvegardes automatisées

Nous voudrons également créer des sauvegardes automatisées des données qui nous parviennent de nos utilisatrices (on ne sait jamais...tasses à café et égouts ouverts peuvent être catastrophiques pour les données sur un téléphone).

[Image à inclure]

Accès programmatique

Mais ce n'est pas tout ! Vous pouvez également analyser vos données de science citoyenne dans un autre logiciel et faire des analyses en temps réel.

Tout d'abord, nous allons activer le nœud local Constellation sur l'interface et noter le numéro de port. Ceci nous permettra d'accéder Constellation à partir de notre code Python.

[Image à inclure]

Accès de Python

[Image à inclure]

Voici un exemple de code en Python qui vous permettra d'accéder à vos donneés de science citoyenne. Si vous n'êtes pas très très Python, vous pouvez aussi faire la même chose en R ou bien en Julia.

Pour installer Constellation :

sh
pdm add constellationPy trio
r
# install.packages("devtools")
+devtools::install_github("reseau-constellation/client-r")
r
pkg> add Constellation

Et pour accéder les données :

py
import trio
 
 from constellationPy import Serveur, ouvrir_client
 
@@ -158,7 +158,7 @@
         client, idNuée, clefTableau, ["fr", "de"]
     )
 end

Pour plus d'information, voir la section sur les autres langages.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/guide/concepts.html b/guide/concepts.html index 36cd514343..264bf519d9 100644 --- a/guide/concepts.html +++ b/guide/concepts.html @@ -19,7 +19,7 @@
Skip to content

Terminologie Constellation

Constellation ressemble beaucoup à un tableau LibreOffice ou Excel, mais avec quelques fonctionnalités en plus.

Client

Le client est le point central de Constellation. Chaque compte correspond à un client Constellation.

Profil

Le profil de Constellation organise les information du compte d'utilisateur.

Mots-clefs

Les mots-clefs servent à indexer les bases de données.

Tableaux

Un tableaux est comme une feuille d'un document Excel, LibreOffice ou Google Sheets.

tableaux
Exemple d'un tableau Constellation. Chaque tableau a différentes colonnes, chacune associée à une variable.

Variables

Chaque colonne d'un tableau est associée à une variable. Les variables peuvent être de différents types (texte, numérique, dates, photos, audios...).

Bases de données

L'unité centrale de Constellation est la base de données, qui regroupe un ou plusieurs tableaux.

bds
Une base de données Constellation. Conceptuellement identiques à un document Excel, LibreOffice ou Google Sheets, les bases de données Constellation incluent un ou plusieurs tableaux.

Projet

Un projet regroupe plusieurs bases de données traitant du même sujet.

projet
Exemple d'un projet Constellation. Les projets permettent de retrouver rapidement des données connexes (par exemple, hydrologie de l'Amérique latine, météorologie du Guatemala, pédologie de l'Afrique, ...). Une base de données peut être ajoutée à de multiples projets !

Réseau

Le réseau vous permet d'accéder aux informations des autres membres connectés.

réseau
Le réseau Constellation. Constellation forme un réseau de personnes qui se connaissent et se font confiance (ou pas !) avec un modèle de confiance transitive.

Recherche

Vous pouvez également rechercher les données qui vous intéressent.

recherche
Une recherche Constellation. Le logiciel commencera avec vos contacts immédiats et recherchera de plus en plus loin si nécessaire.

Nuée

Les nuées vous permettent de créer des projets de science citoyenne et de regrouper toutes les contributions de vos participants à la même place. Elles permettent de combiner des données de différents utilisateurs, un peu comme le ferait une base de données commune dans un système centralisé.

bdCentraliséé
Exemple d'une base de données centralisée. Un serveur central contrôle l'accès à une seule base de données dans laquelle les données de toutes les utilisatrices sont écrites.
bdDistribuée
Exemple d'une nuée Constellation. Les données de chaque utilisatrice sont écrites sur leur propre base de données. Constellation se charge de toutes les retrouver et de les combiner au moment de la visualisation.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/guide/installation.html b/guide/installation.html index b9eaca3924..e996f79657 100644 --- a/guide/installation.html +++ b/guide/installation.html @@ -19,7 +19,7 @@
Skip to content

Installation

Constellation peut être utilisé soit

Il y a plusieurs avantages à installer Constellation sur votre ordinateur plutôt que d'utiliser l'appli en ligne. Premièrement, vous aurez accès à plus de mémoire, l'appli en ligne étant limitée par la mémoire de votre navigateur. En plus, la version installée offre plus de fonctionnalités, tel le partage automatique de vos données à base d'un fichier local et la sauvegarde automatique des données Constellation sur votre ordinateur.

FonctionnalitéConstellation navigateurConstellation installée
Exportation manuelle
Exportation automatisée
Importation manuelle (URL ou fichier)
Importation automatisée (URL)
Importation automatisée (fichier)
Limite de mémoireNavigateurSystème
Connectivité TCP
Connectivité WebRTC
Connectivité WebTransport

Autres langages

Si vous préférez travailler avec du code, qu'il s'agisse de JavaScript, Python, Julia ou R, il vous est possible d'utiliser Constellation dans ces langages. Voir notre guide avancé pour démarrer.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/guide/introduction.html b/guide/introduction.html index 2eeed39514..3c1610a90b 100644 --- a/guide/introduction.html +++ b/guide/introduction.html @@ -19,7 +19,7 @@
Skip to content

Introduction

Constellation est un logiciel de bases de données scientifiques distribuées. Il vous permet de collecter et de diffuser vos données scientifiques sans serveur ou dépôt centralisé.

Qu'est-ce qu'un système distribué ?

Dans une système distribué, il n'y a pas de serveur qui contrôle les interactions entres utilisateurs. Les personnes participant au réseau communiquent donc directement entre elles. C'est plus résilient et plus amusant !

systèmeCentralisé

Pourquoi un logiciel local ?

Constellation est un logiciel local qui garde toutes vos données sur votre propre dispositif (comme Excel ou LibreOffice). Vous n'êtes donc pas à la mercie du Wifi ou de Google pour pouvoir accéder à vos propres données. Cependant, Constellation vous permet aussi de collaborer en ligne et de partager (et syncroniser) vos données en temps réel (comme les documents Google). C'est le meilleur des deux mondes !

AvantagesApplis intallées (p.ex., Excel)Applis nuage (p.ex., Google)Applis locales
Rapidité
Sans dépendance Internet
Sans enfermerment propriétaire
Collaboration
Autorisations d'équipe
Sauvegarde en ligne
Mises à jour en directe

Note : Tableau adapté de local-first-web de Herb Caudill.

Philosophie générale

La philosophie de Constellation se résume en quelques grandes lignes :

Accès libre : Les données scientifiques devraient être ouvertes et accessibles. Toutes les données partagées sur Constellation sont publiques. (Si vous travaillez en recherche clinique, ce n'est peut-être pas le logiciel pour vous.)

Source ouverte : Tous les logiciels de l'univers Constellation sont distribués sous licence libre.

Indépendance : Constellation est un logiciel ouvert, et les données sont sauvegardées sur les dispositifs des utilisatrices et utilisateurs. Les communautés gardent donc le contrôle sur leurs propres données en tout temps.

Accessible et multilingue : Le monde est une place multilingue ; le monde de la recherche, lui, ne l'est malheureusement pas autant. Beaucoup de données sont collectées dans des régions du monde et ensuite publiées dans des langues que les personnes qui les ont fournies ne parlent pas. Cependant, la structure des logiciels que nous utilisons façonne notre pensée, pour le mieux ou pour le pire. Beaucoup de logiciels de bases de données (Excel, MongoDB, etc.) ne permettent qu'un seul nom par colonne ou champ ; nous sommes ainsi entraînés à entrer des données monolingues. Nous avons donc conceptualisé Constellation afin qu'elle guide ses utilisateurs et utilisatrices vers une meilleure inclusion. Chaque objet en Constellation, soit-ce votre profil, une variable ou une base de données, peut être nommé en autant de langues que vous voulez. Vos données apparaîtront donc dans la langue préférée de chacune de vos utilisatrices finales.

Comment ça se compare à ... ?

FonctionnalitéConstellationExcelLibreOfficeDocs GoogleBD sur serveur (MongoDB, SQL)
Collaboration simultanée
Fonctionne hors ligne
Photos, vidéos
Contrôle local des donnéesSi le serveur vous appartient
Intégration avec vos applis
Source ouverteC'est compliqué

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/guide/pair\303\200Pair.html" "b/guide/pair\303\200Pair.html" index e936e34e69..2b649c73b9 100644 --- "a/guide/pair\303\200Pair.html" +++ "b/guide/pair\303\200Pair.html" @@ -19,7 +19,7 @@
Skip to content

Systèmes pair à pair

Afin de bien comprendre Constellation, c'est peut-être util de comprendre ce qu'est un système distribué ou pair à pair. Premièrement, ils ne sont pas exactement la même chose. Un système pair à pair, c'est un système qui, contrairement à votre courriel ou à Google, ne nécessite pas de serveur central pour fonctionner. Chouette, n'est-ce pas ?

Les systèmes pair à pair peuvent être décentralisés ou bien distribués. Dans un système décentralisé, le logiciel est trop gros ou compliqué pour fonctionner sur la majorité des téléphones ou ordinateurs des participants au réseau. Donc, certains participants au réseau qui ont les gros ordinateurs nécessaires servent de point contact et de service pour la majorité des autres participants. À la fin, c'est beaucoup comme un système centralisé.

distribuéVsDécentralisé

Au contraire, dans un système distribué, tout les participants sont égaux les un aux autres. Certains peuvent être connectés avec des machines plus puissantes ou avec plus de mémoire, bien sûr, mais tous intéragissent d'égal à égal dans le réseau.

INFO

Constellation n'est pas une chaîne de bloques !

Les systèmes pair à pair ont malheureusement une mauvaise réputation, peut-être parce que la majorité des premiers logiciels populaires étaient des platformes de partage de médias piratées. Ensuite sont arrivé les cryptomonnaies basées sur les chaînes de bloques, qui ont fréquemment bien mérité leur réputation en tant que pyramides de Ponzi et trous noirs énergétiques notoirement inefficaces pour toute application utile.

Donc nous répétons : Constellation est un système distribué de pair en pair, mais pas une chaîne de bloques !

Mais pourquoi pas une chaîne de bloques ?

Premièrement, parce que c'est ben trop cher. Chaque transaction sur une chaîne de bloques comme Éthereum coûte de la fausse argent (cryptomonnaies), que vous devez malheureusement achetter avec de la vraie argent. Et les fluctuations des prix sont bien entendu complètement hors de notre contrôle. Pourquoi créer un système de données distribuées pour améliorer la souveraineté des données pour ensuite devoir payer des personnes anonymes une somme d'argent variable pour le privilège d'écrire à nos propres bases de données ?

Et deuxièmement, c'est complètement inutil. Les chaînes de bloques sont nécessaires pour les cryptomonnaies et leurs transactions financières. Mais nous, on veut partager des données scientifiques. Nous n'avons rien à faire avec de l'argent ou des transactions financières.

Donc oublions tout ça. Constellation fonctionne de manière complètement distribuée, entièrement sur les dispositifs de ses utilisatrices et utilisateurs.

Comment ça fonctionne

Lorsque vous sauvegardez des données sur Constellation, celles-ci sont sauvegardées sur votre appareil local, et y resteront toujours disponibles.

CONSEIL

Si vous sauvegardez vos données sur un système sur le « nuage » comme les documents Google, vous aurez peut-être remarqué que vos données n'apparaissent plus lorsque vous (ou Google !) est hors ligne. L'avantage d'un système local comme Constellation est que vous êtes toujours garanti d'avoir accès à vos données, parce qu'elles demeurent toujours sur votre dispositif.

Le logiciel Constellation recherche également d'autres utilisatrices et utilisateurs du réseau et vous permet d'accéder et de visualiser leurs données. La magie d'un système distribué est qu'il permet aux tièrces personnes de partager, mais pas de modifier, les données des autres. Si vous vivez au Québec et vous partagez vos données scientifiques et avant fermez votre téléphone pour aller dormir, vos données ne seront plus disponible sur le réseau jusqu'à votre réveil, heure de l'est. Mais, si quelqu'un d'autre, disons au Botswana, les a déjà accédées, elles seront automatiquement repartagées et disponibles sur le réseau à partir du nouveau dispositif, toute prêtes pour le réveil de vos collègues de l'Inde au Japon ! Donc, contrairement à un système centralisé, sur Constellation, le plus populaires vos données, le plus disponibles elles seront.

Mais comment empêchons-nous les autres personnes de modifier vos données avant de les partager ? Chaque changement que vous apportez à vos données est accompagné d'une signature que uniquement votre compte peut générer. Si quelqu'un d'autre essaie de modifier vos données, la signature deviendra invalide et les changements frauduleux seront automatiquement rejetés par le réseau.

Au niveau technique

Pour ceux et celles qui ça amuse, Constellation est construit sur bd-orbite, un logiciel de bases de données distribuées, lui-même construit sur libp2p et le Système de fichiers interplanétaire SFIP. Toutes les bases de données sur Constellation sont composées de multiples bases de données orbite, tandis que les fichiers (images, vidéos) sont sauvegardés directement sur SFIP.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/guide/questions.html b/guide/questions.html index 5b8b509daa..4dabc69009 100644 --- a/guide/questions.html +++ b/guide/questions.html @@ -19,7 +19,7 @@
Skip to content

Questions et problèmes

Erreurs fréquentes Constellation

Nous répertorions ici les erreurs fréquentes que l'on a rencontrés en utilisant Constellation. Apprenons des maux de tête des autres !

SyntaxError: Unexpected identifier

Assurez-vous d'être sur la plus récente version de Node.js. Si vous utilisez nvm, nvm use stable devrait régler le problème.

LockExistsError: Lock already being held for file: constl/sfip/repo.lock

Vous avez probablement lancé plus d'une instance de Constellation en même temps.

Error: Listener is not ready yet

Vous avez probablement lancé plus d'une instance de Constellation en même temps.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/hashmap.json b/hashmap.json index 9bffb39f5c..09640d8a75 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"avancé_applications_internet.md":"nmoo3Di-","avancé_autreslangages_introduction.md":"tXfojNKg","avancé_applications_nuées.md":"-S8V-Kfc","avancé_applications_introduction.md":"fo6hmc1_","avancé_autreslangages_julia.md":"XPZ5BR4p","avancé_applications_électron.md":"BIdHHePK","avancé_autreslangages_nœudlocal.md":"2MY0RFow","avancé_autreslangages_python.md":"NwQ4HAFA","avancé_autreslangages_nouveauxlangages.md":"_Ha_D__d","cst_avancé_applications_nuées.md":"bhjTalgy","cst_avancé_applications_introduction.md":"rr2g4vqb","cst_avancé_applications_internet.md":"bG-TAGKs","cst_avancé_autreslangages_introduction.md":"Ayez5mvD","cst_avancé_applications_électron.md":"G7-opn1U","avancé_autreslangages_r.md":"OCRcla6h","cst_avancé_autreslangages_nouveauxlangages.md":"_-MpVGJa","cst_avancé_autreslangages_nœudlocal.md":"JOyFyqxq","cst_avancé_autreslangages_julia.md":"SkPIkydT","cst_exemples_moncompte.md":"Ow4xvsoY","cst_exemples_mesdonnées.md":"ntSvvY_6","cst_avancé_autreslangages_python.md":"nRsyMHBQ","cst_exemples_créationcompte.md":"7fjrPyAV","cst_avancé_autreslangages_r.md":"HBqw4RjI","cst_exemples_diffusion.md":"XmmblXFZ","cst_guide_installation.md":"m6VUso3n","cst_exemples_sciencecitoyenne.md":"z3PY2BrO","cst_guide_concepts.md":"XkXg-MPc","cst_guide_introduction.md":"qONowxJx","cst_guide_pairàpair.md":"8nVBsj3H","cst_index.md":"j8w98ZfW","cst_guide_questions.md":"kLXEdcEO","cst_ipa_automatisations.md":"sFL9bDir","cst_ipa_client.md":"f_m-jh2i","cst_ipa_introduction.md":"JMG3vRDN","cst_ipa_favoris.md":"s56LapOC","cst_ipa_bds.md":"l-dYOQBy","cst_ipa_licences.md":"3-Qp7NTL","cst_ipa_motsclefs.md":"cOJ5V4uE","cst_ipa_profil.md":"sgdoWxmc","cst_ipa_nuées.md":"G0AwO2R6","cst_ipa_projets.md":"6OY6JYwq","cst_ipa_règles.md":"cCwADRS3","cst_ipa_réseau.md":"neN8gwID","exemples_moncompte.md":"LNTuahe6","exemples_sciencecitoyenne.md":"lR5_rzTC","exemples_créationcompte.md":"aEVrx2wl","exemples_mesdonnées.md":"GtJ3uLBz","guide_concepts.md":"Y28G6Gb7","guide_pairàpair.md":"Tf1PBr9b","index.md":"Bxt_KkJb","guide_installation.md":"xc5phwCb","exemples_diffusion.md":"uJM2-21U","cst_ipa_variables.md":"Fi-Go3V-","guide_introduction.md":"fJqrRd0J","guide_questions.md":"istsHQut","cst_ipa_tableaux.md":"dcf_8jjc","ipa_automatisations.md":"dCpf5WrP","cst_ipa_recherche.md":"YoE7jgVB","ipa_favoris.md":"duyoup_7","ipa_introduction.md":"sd1swkLI","ipa_client.md":"AEfkRg_2","ipa_licences.md":"1OayDA6x","ipa_motsclefs.md":"3mpXr5ka","ipa_bds.md":"qD2USlK6","ipa_profil.md":"bZctUO8t","ipa_nuées.md":"jR_o_W0P","ipa_projets.md":"TaxkB68B","ipa_règles.md":"QUl94yjO","kaq_avancé_applications_électron.md":"Foy-NND3","kaq_avancé_applications_nuées.md":"8f2JX2lq","kaq_avancé_applications_introduction.md":"y17EBPX1","kaq_avancé_applications_internet.md":"G2iDjX5m","kaq_avancé_autreslangages_introduction.md":"OIK9WjU3","ipa_réseau.md":"RSSdUC6u","ipa_variables.md":"pvQNQRC8","ipa_tableaux.md":"BdZu6DE3","kaq_avancé_autreslangages_julia.md":"uG8rS6UU","kaq_avancé_autreslangages_nouveauxlangages.md":"TEXX6Udy","ipa_recherche.md":"5hg42l13","kaq_avancé_autreslangages_nœudlocal.md":"Ctgf1Vj-","kaq_avancé_autreslangages_python.md":"53qAl5ab","kaq_avancé_autreslangages_r.md":"eONjKZbZ","kaq_exemples_créationcompte.md":"bQYnCafk","kaq_exemples_diffusion.md":"_Jz_Z3fy","kaq_exemples_mesdonnées.md":"JR9M3K0_","kaq_exemples_moncompte.md":"Or2VdffB","kaq_exemples_sciencecitoyenne.md":"92FxPYrh","kaq_guide_concepts.md":"BJdWFVaI","kaq_guide_installation.md":"92mm3iAo","kaq_index.md":"cfSHhTuS","kaq_guide_questions.md":"lUbM834M","kaq_guide_pairàpair.md":"CmF72Tqc","kaq_guide_introduction.md":"_dF10sO3","kaq_ipa_automatisations.md":"E6oY1xOh","kaq_ipa_bds.md":"tMlFjDsw","kaq_ipa_favoris.md":"IwP0o_lG","kaq_ipa_client.md":"jazUz5tm","kaq_ipa_introduction.md":"h2gGPiiW","kaq_ipa_licences.md":"G3C0vOCC","kaq_ipa_motsclefs.md":"JlLzep0P","kaq_ipa_profil.md":"kScbSw5M","kaq_ipa_nuées.md":"Bx9Rlhsq","kaq_ipa_projets.md":"_sYIOE0S","kaq_ipa_règles.md":"ruqhTKIT","kaq_ipa_réseau.md":"yV3XzyJU","kaq_ipa_recherche.md":"LkSNQFsU","kaq_ipa_tableaux.md":"000cIh1q","فا_avancé_applications_internet.md":"GTPRp49y","فا_avancé_applications_introduction.md":"tjnbSOMp","فا_avancé_applications_nuées.md":"kRI34l9f","kaq_ipa_variables.md":"E5Iflc6k","فا_avancé_applications_électron.md":"YjWiw-Rn","فا_avancé_autreslangages_introduction.md":"tBmqgS7x","فا_avancé_autreslangages_julia.md":"h5qH9GBM","فا_avancé_autreslangages_nœudlocal.md":"xJE9iuwH","فا_avancé_autreslangages_nouveauxlangages.md":"3x37JFH6","فا_avancé_autreslangages_r.md":"4ow9QFUq","فا_avancé_autreslangages_python.md":"9rwa927H","فا_exemples_créationcompte.md":"-UQUo_JE","فا_exemples_diffusion.md":"BNzuGt97","فا_exemples_mesdonnées.md":"uunsQiQR","فا_exemples_moncompte.md":"u9QDTo9S","فا_guide_installation.md":"Kjnelcus","فا_guide_concepts.md":"o95S9eKo","فا_guide_pairàpair.md":"pRR-_Qrd","فا_guide_questions.md":"axWHpH5j","فا_guide_introduction.md":"hBCU4KiT","فا_index.md":"5vqsx8Sh","فا_exemples_sciencecitoyenne.md":"yNtek_ya","فا_ipa_automatisations.md":"tRzfj2Hl","فا_ipa_client.md":"NnZiHvao","فا_ipa_bds.md":"hgDQOPqS","فا_ipa_favoris.md":"66ZxVP9R","فا_ipa_introduction.md":"AOPXH7m1","فا_ipa_licences.md":"nXe2tCyK","فا_ipa_motsclefs.md":"rE_6A7Mn","فا_ipa_profil.md":"aB6CGsFr","فا_ipa_nuées.md":"DX0b6Q3b","فا_ipa_projets.md":"GO81kOdw","فا_ipa_règles.md":"o143IJVc","فا_ipa_réseau.md":"CrD2KBNm","हिं_avancé_applications_nuées.md":"jLkj4ajA","فا_ipa_tableaux.md":"jgYQ_pl9","فا_ipa_recherche.md":"24G7gLCB","हिं_avancé_applications_électron.md":"wv0aSfF-","हिं_avancé_autreslangages_introduction.md":"Ew0G2lLR","हिं_avancé_applications_introduction.md":"7tzgTS1R","हिं_avancé_applications_internet.md":"Z3gfTF-A","فا_ipa_variables.md":"PfpKaIpK","हिं_avancé_autreslangages_julia.md":"dxJsYC4w","हिं_avancé_autreslangages_nœudlocal.md":"lJ6BCwi-","हिं_avancé_autreslangages_nouveauxlangages.md":"n2JBQPtT","हिं_avancé_autreslangages_r.md":"OzNe5FZ6","हिं_exemples_moncompte.md":"YYm9NgLH","हिं_exemples_créationcompte.md":"tu68wifg","हिं_exemples_mesdonnées.md":"Re1UbjMi","हिं_exemples_diffusion.md":"wGPJ6DDd","हिं_avancé_autreslangages_python.md":"B1KWZ3d5","हिं_guide_installation.md":"_4g7M4qb","हिं_index.md":"VFFLtgZm","हिं_guide_questions.md":"xB48cOjS","हिं_exemples_sciencecitoyenne.md":"BNTGlPjq","हिं_guide_pairàpair.md":"-wwiiLxY","हिं_guide_introduction.md":"wOxMqTvT","हिं_guide_concepts.md":"iKxdpEUY","हिं_ipa_automatisations.md":"UY_yEXwK","हिं_ipa_favoris.md":"WGwHKTwK","हिं_ipa_licences.md":"n_U0afQ9","हिं_ipa_introduction.md":"UjwQ7Z9P","हिं_ipa_client.md":"C3yH7lmZ","हिं_ipa_motsclefs.md":"Xx2D8nhb","हिं_ipa_bds.md":"VlDb9IJy","हिं_ipa_profil.md":"eZGflc3O","हिं_ipa_nuées.md":"odRB54fK","हिं_ipa_projets.md":"ghzMeed4","हिं_ipa_règles.md":"dJOio6Nb","हिं_ipa_réseau.md":"DdTouUG-","हिं_ipa_tableaux.md":"A990cM8p","ગુ_avancé_applications_nuées.md":"yLe2T0lB","ગુ_avancé_applications_introduction.md":"cJgBSAm5","ગુ_avancé_applications_internet.md":"cPQdU-wW","हिं_ipa_variables.md":"BnV2w3AZ","ગુ_avancé_applications_électron.md":"jCLCFnuk","ગુ_avancé_autreslangages_nouveauxlangages.md":"yjjFkvQj","ગુ_avancé_autreslangages_introduction.md":"nGzPYP9o","ગુ_avancé_autreslangages_nœudlocal.md":"0ftmVaFJ","ગુ_avancé_autreslangages_julia.md":"_uH6bm_L","ગુ_avancé_autreslangages_python.md":"SG8fNo2e","हिं_ipa_recherche.md":"Pzbn6XUI","ગુ_guide_installation.md":"MTISC0AB","ગુ_exemples_créationcompte.md":"4ydVoXj_","ગુ_avancé_autreslangages_r.md":"6nH2hamt","ગુ_exemples_diffusion.md":"SbRgz21Y","ગુ_guide_introduction.md":"QqQKDJpP","ગુ_exemples_mesdonnées.md":"hGAcajtY","ગુ_index.md":"yyD0vwqL","ગુ_guide_pairàpair.md":"qTYL7e_U","ગુ_guide_questions.md":"40ugErE2","ગુ_guide_concepts.md":"-yjLQWZS","ગુ_exemples_moncompte.md":"7YEXq_v6","ગુ_ipa_automatisations.md":"1kc0S_TN","ગુ_exemples_sciencecitoyenne.md":"uz3B40Ff","ગુ_ipa_favoris.md":"-CeCbr8F","ગુ_ipa_client.md":"XXEzZQqF","ગુ_ipa_licences.md":"66ihrBrq","ગુ_ipa_introduction.md":"9EvVD3Y9","ગુ_ipa_motsclefs.md":"uioMBD5Y","ગુ_ipa_profil.md":"RHgF1HnI","ગુ_ipa_bds.md":"HWONeU-m","ગુ_ipa_projets.md":"SgSSnWDS","ગુ_ipa_nuées.md":"D1wPnxsA","ગુ_ipa_règles.md":"VoLxgmqs","ગુ_ipa_réseau.md":"IZL6JZ-L","ગુ_ipa_recherche.md":"MzfglHaJ","ગુ_ipa_tableaux.md":"jrcOzz1M","த_avancé_autreslangages_nœudlocal.md":"3ATv3SA0","த_avancé_autreslangages_introduction.md":"I1pA5Wnm","த_avancé_applications_électron.md":"UOn8Cn5W","த_avancé_applications_introduction.md":"q4Hg3bdU","த_avancé_applications_nuées.md":"pmnBpYzb","த_avancé_autreslangages_nouveauxlangages.md":"kQfTj1aL","த_avancé_applications_internet.md":"q-2vOeSi","த_avancé_autreslangages_julia.md":"a-XBSmlm","ગુ_ipa_variables.md":"acpjLaQa","த_guide_concepts.md":"tsXcyd7y","த_index.md":"n-UZbct-","த_exemples_créationcompte.md":"JORz7YGQ","த_exemples_mesdonnées.md":"fwHb2H1F","த_exemples_diffusion.md":"RV_aT7l_","த_exemples_moncompte.md":"iv28m0Ra","த_guide_installation.md":"fn_vA81w","த_exemples_sciencecitoyenne.md":"EWixXDTg","த_guide_pairàpair.md":"TKezMT_w","த_guide_introduction.md":"yGzU7_O4","த_avancé_autreslangages_python.md":"9PryyPyh","த_guide_questions.md":"rYuI9xtc","த_avancé_autreslangages_r.md":"s36upK3n","த_ipa_automatisations.md":"mnFXvt_P","த_ipa_introduction.md":"VGz5r7iS","த_ipa_favoris.md":"VcGxyKJn","த_ipa_client.md":"QCiGeFvS","த_ipa_licences.md":"6X6BSs2w","த_ipa_motsclefs.md":"U-JaQP1l","த_ipa_profil.md":"ephJ-y7_","த_ipa_bds.md":"IdVSTdhf","த_ipa_nuées.md":"OEKO85pb","த_ipa_projets.md":"uMGsPj8-","த_ipa_règles.md":"dxI8DmUO","த_ipa_réseau.md":"zRcTz7sQ","తె_avancé_autreslangages_nœudlocal.md":"Sicxmoto","த_ipa_tableaux.md":"rSAVMpTq","తె_avancé_applications_internet.md":"3hD335QV","த_ipa_variables.md":"pksw22RZ","తె_exemples_diffusion.md":"HXk7Mi6Y","తె_exemples_créationcompte.md":"Am8KJqXq","తె_avancé_autreslangages_nouveauxlangages.md":"zng2TmxR","తె_avancé_autreslangages_r.md":"zp_bBZEk","తె_avancé_autreslangages_python.md":"yGbUGtb-","తె_guide_pairàpair.md":"s8CyaEet","తె_avancé_applications_introduction.md":"nHsf2zEG","తె_avancé_applications_nuées.md":"3DwRhP2v","తె_exemples_moncompte.md":"J-o9RUO4","తె_index.md":"UdglaxsL","తె_exemples_mesdonnées.md":"Ta7JfROZ","తె_guide_concepts.md":"Mzsziit7","తె_guide_installation.md":"O4KpY6ZP","తె_avancé_autreslangages_julia.md":"tsOpAyr8","తె_guide_introduction.md":"AY9C3Hhk","తె_avancé_applications_électron.md":"B0bBbDvV","తె_exemples_sciencecitoyenne.md":"27hkAnPt","த_ipa_recherche.md":"KULmXyQP","తె_guide_questions.md":"vVZ2gavv","తె_avancé_autreslangages_introduction.md":"j8Y6y465","తె_ipa_automatisations.md":"AmqycbUo","తె_ipa_favoris.md":"H_OlU9ot","తె_ipa_client.md":"V-ZkeAFs","తె_ipa_introduction.md":"E4O_Fdh9","తె_ipa_licences.md":"W8_C1dIm","తె_ipa_motsclefs.md":"aUoVcVaB","తె_ipa_profil.md":"-IQxsvOt","తె_ipa_bds.md":"7i8vemCJ","తె_ipa_nuées.md":"I8NLwg1r","తె_ipa_projets.md":"fSVdbQQz","తె_ipa_règles.md":"081RrbJm","తె_ipa_réseau.md":"aLpZhDOI","తె_ipa_tableaux.md":"wtr68L67","తె_ipa_variables.md":"3qtKc4fu","తె_ipa_recherche.md":"4PknnJAn","ಕ_avancé_applications_électron.md":"3CvXZ4Kh","ಕ_avancé_applications_internet.md":"y0LAyL5A","ಕ_avancé_applications_introduction.md":"2KteVUf2","ಕ_avancé_applications_nuées.md":"N0Fsyf8r","ಕ_exemples_créationcompte.md":"yC-tiRiX","ಕ_avancé_autreslangages_r.md":"KHS06Izt","ಕ_guide_installation.md":"dZHJQCnD","ಕ_exemples_mesdonnées.md":"nESAj1Mt","ಕ_avancé_autreslangages_nouveauxlangages.md":"x26A3_k5","ಕ_avancé_autreslangages_python.md":"Ae6o2XEc","ಕ_exemples_diffusion.md":"CcVrRNue","ಕ_avancé_autreslangages_introduction.md":"tD38ezsJ","ಕ_avancé_autreslangages_julia.md":"pWCGePq_","ಕ_exemples_moncompte.md":"ZIhnKyTz","ಕ_guide_concepts.md":"fBiNZqn3","ಕ_guide_questions.md":"2n-QoXTZ","ಕ_guide_introduction.md":"jwHFNBR1","ಕ_guide_pairàpair.md":"gFBUE_CD","ಕ_ipa_automatisations.md":"P7SwJI8S","ಕ_index.md":"DMjYyeAv","ಕ_avancé_autreslangages_nœudlocal.md":"9pSiXbyT","ಕ_exemples_sciencecitoyenne.md":"2C7FMtjx","ಕ_ipa_client.md":"t6Ipoql0","ಕ_ipa_favoris.md":"eTrb7bo1","ಕ_ipa_introduction.md":"hypibJ-A","ಕ_ipa_licences.md":"eaAq3OrK","ಕ_ipa_motsclefs.md":"aKLUtYAp","ಕ_ipa_bds.md":"FA_e8IxM","ಕ_ipa_profil.md":"RG8Dof5F","ಕ_ipa_nuées.md":"dT4IogoE","ಕ_ipa_projets.md":"vAJSjTJg","ಕ_ipa_règles.md":"aBBrYn7t","ಕ_ipa_réseau.md":"1k3u7GzA","ಕ_ipa_tableaux.md":"BO-YkNOi","ಕ_ipa_recherche.md":"cZi-dZNv","ಕ_ipa_variables.md":"Jwn1Q8cn"} +{"avancé_autreslangages_julia.md":"XPZ5BR4p","cst_avancé_autreslangages_introduction.md":"Ayez5mvD","cst_avancé_applications_électron.md":"G7-opn1U","avancé_autreslangages_introduction.md":"tXfojNKg","avancé_applications_internet.md":"nmoo3Di-","cst_avancé_applications_introduction.md":"rr2g4vqb","avancé_autreslangages_python.md":"bD8E1TXJ","avancé_applications_électron.md":"BIdHHePK","cst_avancé_applications_nuées.md":"bhjTalgy","cst_avancé_autreslangages_nœudlocal.md":"JOyFyqxq","avancé_autreslangages_nœudlocal.md":"ukCcxgx2","cst_avancé_applications_internet.md":"bG-TAGKs","cst_avancé_autreslangages_julia.md":"SkPIkydT","cst_avancé_autreslangages_nouveauxlangages.md":"_-MpVGJa","avancé_autreslangages_r.md":"OCRcla6h","avancé_applications_introduction.md":"fo6hmc1_","avancé_applications_nuées.md":"-S8V-Kfc","avancé_autreslangages_nouveauxlangages.md":"_Ha_D__d","cst_avancé_autreslangages_python.md":"nRsyMHBQ","cst_exemples_diffusion.md":"XmmblXFZ","cst_avancé_autreslangages_r.md":"HBqw4RjI","cst_exemples_créationcompte.md":"Vwk9cXoN","cst_exemples_mesdonnées.md":"ntSvvY_6","cst_exemples_moncompte.md":"Ow4xvsoY","cst_guide_installation.md":"m6VUso3n","cst_guide_concepts.md":"XkXg-MPc","cst_guide_introduction.md":"qONowxJx","cst_exemples_sciencecitoyenne.md":"z3PY2BrO","cst_guide_questions.md":"kLXEdcEO","cst_guide_pairàpair.md":"8nVBsj3H","cst_index.md":"j8w98ZfW","cst_ipa_automatisations.md":"sFL9bDir","cst_ipa_favoris.md":"s56LapOC","cst_ipa_client.md":"f_m-jh2i","cst_ipa_introduction.md":"JMG3vRDN","cst_ipa_bds.md":"l-dYOQBy","cst_ipa_licences.md":"3-Qp7NTL","cst_ipa_motsclefs.md":"cOJ5V4uE","cst_ipa_profil.md":"sgdoWxmc","cst_ipa_nuées.md":"G0AwO2R6","cst_ipa_projets.md":"6OY6JYwq","cst_ipa_règles.md":"cCwADRS3","cst_ipa_réseau.md":"neN8gwID","cst_ipa_tableaux.md":"dcf_8jjc","cst_ipa_variables.md":"Fi-Go3V-","cst_ipa_recherche.md":"YoE7jgVB","guide_concepts.md":"Y28G6Gb7","exemples_moncompte.md":"LNTuahe6","guide_pairàpair.md":"Tf1PBr9b","exemples_mesdonnées.md":"GtJ3uLBz","exemples_diffusion.md":"uJM2-21U","guide_questions.md":"istsHQut","guide_installation.md":"xc5phwCb","guide_introduction.md":"fJqrRd0J","exemples_créationcompte.md":"aEVrx2wl","index.md":"Bxt_KkJb","exemples_sciencecitoyenne.md":"coMracgi","ipa_automatisations.md":"dCpf5WrP","ipa_introduction.md":"sd1swkLI","ipa_favoris.md":"duyoup_7","ipa_licences.md":"1OayDA6x","ipa_client.md":"AEfkRg_2","ipa_motsclefs.md":"3mpXr5ka","ipa_bds.md":"qD2USlK6","ipa_profil.md":"bZctUO8t","ipa_nuées.md":"jR_o_W0P","ipa_projets.md":"TaxkB68B","ipa_règles.md":"QUl94yjO","ipa_réseau.md":"RSSdUC6u","kaq_avancé_applications_introduction.md":"y17EBPX1","kaq_avancé_applications_nuées.md":"8f2JX2lq","kaq_avancé_autreslangages_introduction.md":"OIK9WjU3","ipa_variables.md":"pvQNQRC8","kaq_avancé_applications_électron.md":"Foy-NND3","ipa_tableaux.md":"BdZu6DE3","kaq_avancé_autreslangages_julia.md":"uG8rS6UU","kaq_avancé_autreslangages_nouveauxlangages.md":"TEXX6Udy","kaq_avancé_applications_internet.md":"G2iDjX5m","ipa_recherche.md":"5hg42l13","kaq_exemples_moncompte.md":"Or2VdffB","kaq_avancé_autreslangages_r.md":"eONjKZbZ","kaq_avancé_autreslangages_nœudlocal.md":"Ctgf1Vj-","kaq_exemples_diffusion.md":"_Jz_Z3fy","kaq_exemples_créationcompte.md":"oOIwQ7IM","kaq_avancé_autreslangages_python.md":"53qAl5ab","kaq_exemples_mesdonnées.md":"JR9M3K0_","kaq_guide_installation.md":"92mm3iAo","kaq_guide_concepts.md":"BJdWFVaI","kaq_exemples_sciencecitoyenne.md":"92FxPYrh","kaq_guide_pairàpair.md":"CmF72Tqc","kaq_guide_introduction.md":"_dF10sO3","kaq_guide_questions.md":"lUbM834M","kaq_index.md":"cfSHhTuS","kaq_ipa_automatisations.md":"E6oY1xOh","kaq_ipa_bds.md":"tMlFjDsw","kaq_ipa_client.md":"jazUz5tm","kaq_ipa_introduction.md":"h2gGPiiW","kaq_ipa_favoris.md":"IwP0o_lG","kaq_ipa_licences.md":"G3C0vOCC","kaq_ipa_motsclefs.md":"JlLzep0P","kaq_ipa_profil.md":"kScbSw5M","kaq_ipa_nuées.md":"Bx9Rlhsq","kaq_ipa_projets.md":"_sYIOE0S","kaq_ipa_règles.md":"ruqhTKIT","kaq_ipa_réseau.md":"yV3XzyJU","kaq_ipa_recherche.md":"LkSNQFsU","kaq_ipa_tableaux.md":"000cIh1q","فا_avancé_applications_internet.md":"GTPRp49y","فا_avancé_applications_introduction.md":"tjnbSOMp","kaq_ipa_variables.md":"E5Iflc6k","فا_avancé_applications_nuées.md":"kRI34l9f","فا_avancé_autreslangages_introduction.md":"tBmqgS7x","فا_avancé_applications_électron.md":"YjWiw-Rn","فا_avancé_autreslangages_julia.md":"h5qH9GBM","فا_avancé_autreslangages_nouveauxlangages.md":"3x37JFH6","فا_avancé_autreslangages_nœudlocal.md":"xJE9iuwH","فا_avancé_autreslangages_python.md":"9rwa927H","فا_exemples_créationcompte.md":"-UQUo_JE","فا_exemples_diffusion.md":"BNzuGt97","فا_exemples_moncompte.md":"u9QDTo9S","فا_avancé_autreslangages_r.md":"4ow9QFUq","فا_exemples_mesdonnées.md":"uunsQiQR","فا_guide_installation.md":"Kjnelcus","فا_guide_concepts.md":"o95S9eKo","فا_exemples_sciencecitoyenne.md":"yNtek_ya","فا_guide_introduction.md":"hBCU4KiT","فا_guide_questions.md":"axWHpH5j","فا_index.md":"5vqsx8Sh","فا_guide_pairàpair.md":"pRR-_Qrd","فا_ipa_automatisations.md":"tRzfj2Hl","فا_ipa_client.md":"NnZiHvao","فا_ipa_introduction.md":"AOPXH7m1","فا_ipa_favoris.md":"66ZxVP9R","فا_ipa_bds.md":"hgDQOPqS","فا_ipa_profil.md":"aB6CGsFr","فا_ipa_nuées.md":"DX0b6Q3b","فا_ipa_motsclefs.md":"rE_6A7Mn","فا_ipa_projets.md":"GO81kOdw","فا_ipa_licences.md":"nXe2tCyK","فا_ipa_règles.md":"o143IJVc","فا_ipa_réseau.md":"CrD2KBNm","فا_ipa_tableaux.md":"jgYQ_pl9","हिं_avancé_applications_introduction.md":"7tzgTS1R","हिं_avancé_applications_internet.md":"Z3gfTF-A","हिं_index.md":"VFFLtgZm","فا_ipa_variables.md":"PfpKaIpK","हिं_guide_pairàpair.md":"-wwiiLxY","हिं_avancé_applications_électron.md":"wv0aSfF-","हिं_ipa_automatisations.md":"UY_yEXwK","हिं_avancé_applications_nuées.md":"jLkj4ajA","हिं_guide_questions.md":"xB48cOjS","فا_ipa_recherche.md":"24G7gLCB","हिं_avancé_autreslangages_introduction.md":"Ew0G2lLR","हिं_avancé_autreslangages_python.md":"B1KWZ3d5","हिं_avancé_autreslangages_nouveauxlangages.md":"n2JBQPtT","हिं_avancé_autreslangages_nœudlocal.md":"lJ6BCwi-","हिं_avancé_autreslangages_julia.md":"dxJsYC4w","हिं_exemples_diffusion.md":"wGPJ6DDd","हिं_exemples_moncompte.md":"YYm9NgLH","हिं_guide_concepts.md":"iKxdpEUY","हिं_guide_introduction.md":"wOxMqTvT","हिं_ipa_motsclefs.md":"Xx2D8nhb","हिं_guide_installation.md":"_4g7M4qb","हिं_avancé_autreslangages_r.md":"OzNe5FZ6","हिं_exemples_mesdonnées.md":"Re1UbjMi","हिं_ipa_favoris.md":"WGwHKTwK","हिं_ipa_introduction.md":"UjwQ7Z9P","हिं_ipa_profil.md":"eZGflc3O","हिं_exemples_créationcompte.md":"YIj7QVQX","हिं_ipa_client.md":"C3yH7lmZ","हिं_exemples_sciencecitoyenne.md":"BNTGlPjq","हिं_ipa_licences.md":"n_U0afQ9","हिं_ipa_bds.md":"VlDb9IJy","हिं_ipa_nuées.md":"odRB54fK","हिं_ipa_projets.md":"ghzMeed4","हिं_ipa_règles.md":"dJOio6Nb","हिं_ipa_réseau.md":"DdTouUG-","ગુ_avancé_applications_nuées.md":"yLe2T0lB","ગુ_avancé_applications_internet.md":"cPQdU-wW","ગુ_avancé_applications_introduction.md":"cJgBSAm5","हिं_ipa_variables.md":"BnV2w3AZ","हिं_ipa_tableaux.md":"A990cM8p","ગુ_avancé_applications_électron.md":"jCLCFnuk","ગુ_avancé_autreslangages_nouveauxlangages.md":"yjjFkvQj","ગુ_avancé_autreslangages_julia.md":"_uH6bm_L","ગુ_avancé_autreslangages_introduction.md":"nGzPYP9o","हिं_ipa_recherche.md":"Pzbn6XUI","ગુ_avancé_autreslangages_nœudlocal.md":"0ftmVaFJ","ગુ_exemples_mesdonnées.md":"hGAcajtY","ગુ_exemples_diffusion.md":"SbRgz21Y","ગુ_avancé_autreslangages_r.md":"6nH2hamt","ગુ_exemples_créationcompte.md":"4ydVoXj_","ગુ_guide_introduction.md":"QqQKDJpP","ગુ_avancé_autreslangages_python.md":"SG8fNo2e","ગુ_guide_pairàpair.md":"qTYL7e_U","ગુ_guide_questions.md":"40ugErE2","ગુ_guide_concepts.md":"-yjLQWZS","ગુ_ipa_client.md":"XXEzZQqF","ગુ_ipa_licences.md":"66ihrBrq","ગુ_exemples_sciencecitoyenne.md":"uz3B40Ff","ગુ_guide_installation.md":"MTISC0AB","ગુ_ipa_introduction.md":"9EvVD3Y9","ગુ_ipa_favoris.md":"-CeCbr8F","ગુ_index.md":"yyD0vwqL","ગુ_ipa_automatisations.md":"1kc0S_TN","ગુ_ipa_motsclefs.md":"uioMBD5Y","ગુ_exemples_moncompte.md":"7YEXq_v6","ગુ_ipa_bds.md":"HWONeU-m","ગુ_ipa_nuées.md":"D1wPnxsA","ગુ_ipa_profil.md":"RHgF1HnI","ગુ_ipa_projets.md":"SgSSnWDS","ગુ_ipa_règles.md":"VoLxgmqs","ગુ_ipa_réseau.md":"IZL6JZ-L","ગુ_ipa_tableaux.md":"jrcOzz1M","ગુ_ipa_recherche.md":"MzfglHaJ","த_avancé_applications_internet.md":"q-2vOeSi","த_avancé_applications_introduction.md":"q4Hg3bdU","த_avancé_applications_nuées.md":"pmnBpYzb","த_avancé_applications_électron.md":"UOn8Cn5W","ગુ_ipa_variables.md":"acpjLaQa","த_avancé_autreslangages_introduction.md":"I1pA5Wnm","த_avancé_autreslangages_julia.md":"a-XBSmlm","த_avancé_autreslangages_nouveauxlangages.md":"kQfTj1aL","த_avancé_autreslangages_nœudlocal.md":"3ATv3SA0","த_avancé_autreslangages_python.md":"9PryyPyh","த_exemples_créationcompte.md":"E__AtABz","த_avancé_autreslangages_r.md":"s36upK3n","த_exemples_diffusion.md":"RV_aT7l_","த_exemples_mesdonnées.md":"fwHb2H1F","த_exemples_moncompte.md":"iv28m0Ra","த_exemples_sciencecitoyenne.md":"EWixXDTg","த_guide_concepts.md":"tsXcyd7y","த_guide_introduction.md":"yGzU7_O4","த_guide_installation.md":"fn_vA81w","த_guide_pairàpair.md":"TKezMT_w","த_guide_questions.md":"rYuI9xtc","த_index.md":"n-UZbct-","த_ipa_automatisations.md":"mnFXvt_P","த_ipa_client.md":"QCiGeFvS","த_ipa_introduction.md":"VGz5r7iS","த_ipa_bds.md":"IdVSTdhf","த_ipa_favoris.md":"VcGxyKJn","த_ipa_licences.md":"6X6BSs2w","த_ipa_motsclefs.md":"U-JaQP1l","த_ipa_profil.md":"ephJ-y7_","த_ipa_nuées.md":"OEKO85pb","த_ipa_projets.md":"uMGsPj8-","த_ipa_règles.md":"dxI8DmUO","த_ipa_réseau.md":"zRcTz7sQ","த_ipa_tableaux.md":"rSAVMpTq","తె_avancé_autreslangages_julia.md":"tsOpAyr8","తె_avancé_applications_nuées.md":"3DwRhP2v","తె_avancé_applications_introduction.md":"nHsf2zEG","த_ipa_recherche.md":"KULmXyQP","తె_avancé_applications_électron.md":"B0bBbDvV","த_ipa_variables.md":"pksw22RZ","తె_avancé_autreslangages_introduction.md":"j8Y6y465","తె_avancé_applications_internet.md":"3hD335QV","తె_avancé_autreslangages_nœudlocal.md":"Sicxmoto","తె_avancé_autreslangages_python.md":"yGbUGtb-","తె_avancé_autreslangages_nouveauxlangages.md":"zng2TmxR","తె_guide_introduction.md":"AY9C3Hhk","తె_exemples_mesdonnées.md":"Ta7JfROZ","తె_guide_questions.md":"vVZ2gavv","తె_guide_pairàpair.md":"s8CyaEet","తె_index.md":"UdglaxsL","తె_ipa_automatisations.md":"AmqycbUo","తె_exemples_créationcompte.md":"Am8KJqXq","తె_avancé_autreslangages_r.md":"zp_bBZEk","తె_ipa_favoris.md":"H_OlU9ot","తె_guide_installation.md":"O4KpY6ZP","తె_ipa_client.md":"V-ZkeAFs","తె_exemples_sciencecitoyenne.md":"27hkAnPt","తె_exemples_moncompte.md":"J-o9RUO4","తె_ipa_introduction.md":"E4O_Fdh9","తె_ipa_licences.md":"W8_C1dIm","తె_ipa_bds.md":"7i8vemCJ","తె_guide_concepts.md":"Mzsziit7","తె_ipa_motsclefs.md":"aUoVcVaB","తె_exemples_diffusion.md":"HXk7Mi6Y","తె_ipa_profil.md":"-IQxsvOt","తె_ipa_nuées.md":"I8NLwg1r","తె_ipa_projets.md":"fSVdbQQz","తె_ipa_règles.md":"081RrbJm","తె_ipa_recherche.md":"4PknnJAn","తె_ipa_réseau.md":"aLpZhDOI","తె_ipa_tableaux.md":"wtr68L67","ಕ_avancé_applications_internet.md":"y0LAyL5A","ಕ_avancé_applications_introduction.md":"2KteVUf2","తె_ipa_variables.md":"3qtKc4fu","ಕ_avancé_applications_nuées.md":"N0Fsyf8r","ಕ_avancé_autreslangages_introduction.md":"tD38ezsJ","ಕ_avancé_applications_électron.md":"3CvXZ4Kh","ಕ_avancé_autreslangages_julia.md":"pWCGePq_","ಕ_avancé_autreslangages_nouveauxlangages.md":"x26A3_k5","ಕ_avancé_autreslangages_nœudlocal.md":"9pSiXbyT","ಕ_avancé_autreslangages_r.md":"KHS06Izt","ಕ_avancé_autreslangages_python.md":"Ae6o2XEc","ಕ_exemples_créationcompte.md":"yC-tiRiX","ಕ_exemples_mesdonnées.md":"nESAj1Mt","ಕ_exemples_diffusion.md":"CcVrRNue","ಕ_exemples_moncompte.md":"ZIhnKyTz","ಕ_guide_installation.md":"dZHJQCnD","ಕ_guide_concepts.md":"fBiNZqn3","ಕ_exemples_sciencecitoyenne.md":"2C7FMtjx","ಕ_guide_introduction.md":"jwHFNBR1","ಕ_guide_pairàpair.md":"gFBUE_CD","ಕ_guide_questions.md":"2n-QoXTZ","ಕ_index.md":"DMjYyeAv","ಕ_ipa_automatisations.md":"P7SwJI8S","ಕ_ipa_client.md":"t6Ipoql0","ಕ_ipa_favoris.md":"eTrb7bo1","ಕ_ipa_bds.md":"FA_e8IxM","ಕ_ipa_introduction.md":"hypibJ-A","ಕ_ipa_licences.md":"eaAq3OrK","ಕ_ipa_motsclefs.md":"aKLUtYAp","ಕ_ipa_profil.md":"RG8Dof5F","ಕ_ipa_nuées.md":"dT4IogoE","ಕ_ipa_projets.md":"vAJSjTJg","ಕ_ipa_règles.md":"aBBrYn7t","ಕ_ipa_réseau.md":"1k3u7GzA","ಕ_ipa_variables.md":"Jwn1Q8cn","ಕ_ipa_tableaux.md":"BO-YkNOi","ಕ_ipa_recherche.md":"cZi-dZNv"} diff --git a/index.html b/index.html index 080fcf13f5..324add1ef3 100644 --- a/index.html +++ b/index.html @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git a/ipa/automatisations.html b/ipa/automatisations.html index 4150ffa01d..dee833bb3c 100644 --- a/ipa/automatisations.html +++ b/ipa/automatisations.html @@ -216,7 +216,7 @@ type: "programmée"; à: number; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/ipa/bds.html b/ipa/bds.html index f145b4574e..5c3da8e4e3 100644 --- a/ipa/bds.html +++ b/ipa/bds.html @@ -587,7 +587,7 @@ nomBd: string; tableaux: donnéesTableauExportation[]; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/ipa/client.html b/ipa/client.html index 25997a8d7b..004dd3c70a 100644 --- a/ipa/client.html +++ b/ipa/client.html @@ -163,7 +163,7 @@ }

Types dispositifs

ts
type structureNomsDispositifs = {
   [idDispositif: string]: { nom?: string; type?: string };
 };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/ipa/favoris.html b/ipa/favoris.html index b7abbedf52..5793bb54d7 100644 --- a/ipa/favoris.html +++ b/ipa/favoris.html @@ -69,7 +69,7 @@ }; type ÉlémentFavorisAvecObjet = ÉlémentFavoris & { idObjet: string };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/ipa/introduction.html b/ipa/introduction.html index 663bbe381a..d251ee37c1 100644 --- a/ipa/introduction.html +++ b/ipa/introduction.html @@ -71,7 +71,7 @@ }) </script>

Langues

Constellation est un logiciel multilingue, et tout peut être traduit, y compris vos données, les noms des variables, et aussi votre profil d'utilisatrice. Constellation utilise les codes de langue nuchab'äl pour identifier les langues.

Chiffres

Constellation utilise les systèmes de numération du paquet எண்ணிக்கை pour lire et présenter les numéros en différentes langues.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/ipa/licences.html b/ipa/licences.html index 617586ec8f..bf4d16446c 100644 --- a/ipa/licences.html +++ b/ipa/licences.html @@ -79,7 +79,7 @@ type droit = "partager" | "adapter" | "usageComercial" | "usagePrivé" | "usageBrevets"; type limitation = "aucuneResponsabilité" | "aucuneGarantie" | "marqueCommerce" | "brevetExclu" | "sousLicence"; type catégorie = "basesDeDonnées" | "artistique" | "codeInformatique" | "autre";

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/ipa/motsClefs.html b/ipa/motsClefs.html index db72d08cc0..49727ea298 100644 --- a/ipa/motsClefs.html +++ b/ipa/motsClefs.html @@ -133,7 +133,7 @@ langue: "fr", description: "Données hydrologiques" });

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/ipa/nu\303\251es.html" "b/ipa/nu\303\251es.html" index b1488be84e..40d19e35d9 100644 --- "a/ipa/nu\303\251es.html" +++ "b/ipa/nu\303\251es.html" @@ -498,7 +498,7 @@ nuée: string; différences: différenceBds[]; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/ipa/profil.html b/ipa/profil.html index ba3e688b28..5a59ea512b 100644 --- a/ipa/profil.html +++ b/ipa/profil.html @@ -83,7 +83,7 @@ f: x => courriel.value = x }); await fOublierCourriel();

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/ipa/projets.html b/ipa/projets.html index 6334750009..ff0454aebc 100644 --- a/ipa/projets.html +++ b/ipa/projets.html @@ -354,7 +354,7 @@ nomProjet: string; bds: donnéesBdExportation[]; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/ipa/recherche.html b/ipa/recherche.html index 89777dd5e4..299aa9a6b0 100644 --- a/ipa/recherche.html +++ b/ipa/recherche.html @@ -1181,7 +1181,7 @@ clef?: string; info: T; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/ipa/r\303\250gles.html" "b/ipa/r\303\250gles.html" index 3f94d83822..ba079a4d80 100644 --- "a/ipa/r\303\250gles.html" +++ "b/ipa/r\303\250gles.html" @@ -225,7 +225,7 @@ règle: règleColonne<règleBornes<détailsRègleBornesDynamiqueVariable>>; détails: "variableBornesNonPrésente"; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/ipa/r\303\251seau.html" "b/ipa/r\303\251seau.html" index 1657b961d4..008815956a 100644 --- "a/ipa/r\303\251seau.html" +++ "b/ipa/r\303\251seau.html" @@ -266,7 +266,7 @@ vuÀ?: number; })[]; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/ipa/tableaux.html b/ipa/tableaux.html index bdf47bfb31..3160019984 100644 --- a/ipa/tableaux.html +++ b/ipa/tableaux.html @@ -355,7 +355,7 @@ données: élémentBdListeDonnées[]; fichiersSFIP: Set<string>; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/ipa/variables.html b/ipa/variables.html index 81f536f3bf..235086ec17 100644 --- a/ipa/variables.html +++ b/ipa/variables.html @@ -301,7 +301,7 @@ | "audio" | "image" | "fichier";

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/kaq/avanc\303\251/applications/internet.html" "b/kaq/avanc\303\251/applications/internet.html" index 3556afbb9a..ba0672c2d4 100644 --- "a/kaq/avanc\303\251/applications/internet.html" +++ "b/kaq/avanc\303\251/applications/internet.html" @@ -61,7 +61,7 @@ <template> <h1>Mon compte : {{ idCompte }}</h1> </template>

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/kaq/avanc\303\251/applications/introduction.html" "b/kaq/avanc\303\251/applications/introduction.html" index abc96f6c7d..5ad0690a2f 100644 --- "a/kaq/avanc\303\251/applications/introduction.html" +++ "b/kaq/avanc\303\251/applications/introduction.html" @@ -19,7 +19,7 @@
Skip to content

Développement d'applis

Vous pouvez utiliser l'IPA TypeScript de Constellation afin de développer vos propres applis de science citoyenne ou autre sur le réseau Constellation.

Vous pouvez ainsi développer des applications en tant que sites web statiques, de même que des applications Électron.

CONSEIL

Si vous cherchez à créer un appli de science citoyenne, Constellation peut la générer automatiquement pour vous ! Il suffit d'ouvrir la nuée dans l'interface de Constellation et choisir l'option de génération de code. Voir la section collecte de données pour plus d'informations.

Projets utilisant Constellation

Si vous développez un projet utilisant Constellation, contactez-nous (ou, encore mieux, ajoutez-le vous-même) et nous vous donnerons un peu de publicité ici.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/kaq/avanc\303\251/applications/nu\303\251es.html" "b/kaq/avanc\303\251/applications/nu\303\251es.html" index e692cc3542..e577ebc850 100644 --- "a/kaq/avanc\303\251/applications/nu\303\251es.html" +++ "b/kaq/avanc\303\251/applications/nu\303\251es.html" @@ -19,7 +19,7 @@
Skip to content

Nuées de données

L'application la plus fréquente de Constellation dans une application tièrce est sans toute la collection de données distribuées d'un plublique participant à un projet de science citoyenne ou autre. Dans ce cas, les nuées seront indispensables.

Cette section offre des instructions détaillées sur l'utilisation de nuées Constellation dans vos propres projets.

Création de la nuée

Vous devrez, avant tout, créer l'identifiant de la nuée qui regroupera toutes les données de votre projet.

ATTENTION

Prenez soin de créer la nuée sur le compte Constellation que vous entendez utiliser pour gérer votre projet. Celui-ci aura ainsi l'autorisation de modifier la nuée par la suite.

Génération du code

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/kaq/avanc\303\251/applications/\303\251lectron.html" "b/kaq/avanc\303\251/applications/\303\251lectron.html" index f8f70f9c72..cd0e0740ca 100644 --- "a/kaq/avanc\303\251/applications/\303\251lectron.html" +++ "b/kaq/avanc\303\251/applications/\303\251lectron.html" @@ -116,7 +116,7 @@ port.value = undefined } </script>

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/kaq/avanc\303\251/autresLangages/introduction.html" "b/kaq/avanc\303\251/autresLangages/introduction.html" index 14da3812ff..22deaa03ba 100644 --- "a/kaq/avanc\303\251/autresLangages/introduction.html" +++ "b/kaq/avanc\303\251/autresLangages/introduction.html" @@ -19,7 +19,7 @@
Skip to content

Autres langages

Constellation a beau être un projet JavaScript, il est possible d'accéder au réseau distribué à partir de clients dans d'autres langages informatiques. Des clients sont disposibles dans les langages suivants :

  • Python : Fonctionnel
  • Julia : Fonctionnel
  • R : Fonctionnel
  • Autres langages : Si vous développez un client Constellation dans un autre langage, contactez-nous et nous l'annoncerons ici.

Tous ces clients fonctionnent en ouvrant un serveur WS Constellation local sur votre machine. Le client Python, Julia ou autre communiquera ensuite avec ce serveur local par messages WS et vous permettent d'utiliser Constellation dans le langage de votre choix.

Vous devrez donc toujours installer Constellation sur votre machine avant de pouvoir utiliser ces clients. La manière la plus facile est d'installer l'interface graphique et puis d'activer le serveur WS sur la page de configuration. Alternativement, vous pouvez installer le serveur WS de Constellation sans interface graphique. Vous aurez besoin de Node.js et de pnpm.

Si nécessaire, installer pnpm :

sh
$ npm add -g pnpm

Et puis installer Constellation :

sh
$ pnpm global add -g @constl/ipa @constl/serveur

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/kaq/avanc\303\251/autresLangages/julia.html" "b/kaq/avanc\303\251/autresLangages/julia.html" index 3b1cace7f2..bb314079d8 100644 --- "a/kaq/avanc\303\251/autresLangages/julia.html" +++ "b/kaq/avanc\303\251/autresLangages/julia.html" @@ -168,7 +168,7 @@ donnéesRéseau = Constellation.obtDonnéesTableauNuée(client, idNuée, clefTableau, ["fr"]) end end

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/kaq/avanc\303\251/autresLangages/nouveauxLangages.html" "b/kaq/avanc\303\251/autresLangages/nouveauxLangages.html" index a9c7c01c3c..028b566b9b 100644 --- "a/kaq/avanc\303\251/autresLangages/nouveauxLangages.html" +++ "b/kaq/avanc\303\251/autresLangages/nouveauxLangages.html" @@ -116,7 +116,7 @@ "id": "1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed", "erreur": "Message d'erreur tel que rencontré par le serveur." }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/kaq/avanc\303\251/autresLangages/n\305\223udLocal.html" "b/kaq/avanc\303\251/autresLangages/n\305\223udLocal.html" index 76d231c672..095ee5109c 100644 --- "a/kaq/avanc\303\251/autresLangages/n\305\223udLocal.html" +++ "b/kaq/avanc\303\251/autresLangages/n\305\223udLocal.html" @@ -68,7 +68,7 @@ // Lorsqu'on a fini : fermerClient();

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/kaq/avanc\303\251/autresLangages/python.html" "b/kaq/avanc\303\251/autresLangages/python.html" index ecf56da6b8..0315fdc6c5 100644 --- "a/kaq/avanc\303\251/autresLangages/python.html" +++ "b/kaq/avanc\303\251/autresLangages/python.html" @@ -234,7 +234,7 @@ trio.run(principale)

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/kaq/avanc\303\251/autresLangages/r.html" "b/kaq/avanc\303\251/autresLangages/r.html" index 6e2ebcc7df..8ed4632a95 100644 --- "a/kaq/avanc\303\251/autresLangages/r.html" +++ "b/kaq/avanc\303\251/autresLangages/r.html" @@ -143,7 +143,7 @@ }, port = port )

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/kaq/exemples/cr\303\251ationCompte.html" "b/kaq/exemples/cr\303\251ationCompte.html" index 5cd31e966c..c530e6ef8f 100644 --- "a/kaq/exemples/cr\303\251ationCompte.html" +++ "b/kaq/exemples/cr\303\251ationCompte.html" @@ -12,14 +12,14 @@ - + - - + + \ No newline at end of file diff --git a/kaq/exemples/diffusion.html b/kaq/exemples/diffusion.html index e10088a4c6..1933fd1620 100644 --- a/kaq/exemples/diffusion.html +++ b/kaq/exemples/diffusion.html @@ -19,7 +19,7 @@
Skip to content

Diffusion de données

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

Admettons-le, nous avons tous été coupables du « je-le-partagerai-plus-tardisme ». On a récolté une jolie base de données, et on va la partager dans un dépôt de données comme Zenodo, mais plus tard, quand elle sera bien propre et netoyée...et puis ensuite on publie, on répond aux réviseurs, et on oublie notre base de données qu'on a toujours pas partagée.

Constellation peut être utilisée afin de partager vos données existantes en temps réel, comme ça vous n'avez plus aucune excuse de ne pas les partager, même s'ils ne sont pas « finales ». Si les dépôts de données sont des versions fossilisées de vos données, Constellation est un dépôt pour les données vivantes.

Vous pouvez connecter Constellation à vos logiciels d'entrée de données favoris, et tout se mettra à jour automatiquement. En même temps, les personnes qui s'intéressent à vos données peuvent y accéder et les utiliser en temps réel.

[Schéma diffusion données à inclure]

Importation

Nous pouvons importer nos données à partir d'un fichier Excel, LibreOffice, csv ou autre. Il suffit de créer une base de données et puis de choisir « importer ».

[Image à inclure]

Automatisation

Bon c'était bien chouette, non ? Mais si vous faites des modifications à vos données, c'est un peu ennuyant de toujours devoir les ré-importer. C'est pour ça que nous avons des automatisations.

CONSEIL

Vous pouvez configurer les automatisations pour quelles s'exécutent soit (1) lorsque les données sont modifiées, (2) selon un calendrier fixe, ou (3) uniquement lorsque vous cliquez sur le bouton « actualiser » sur l'interface Constellation.

Nous allons configurer l'importation pour qu'elle actualise les données chaque fois que le document LibreOffice est modifié. Tant que Constellation est ouverte sur votre ordinateur, vos données seront automatiquement mises à jour sur le réseau !

[Image à inclure]

Partage

Vous pouvez maintenant partager les données. Il suffit de copier l'identifiant unique de la base de données de l'interface Constellation et puis de la partager avec tous vos admirateurs.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/kaq/exemples/mesDonn\303\251es.html" "b/kaq/exemples/mesDonn\303\251es.html" index 40178257e8..31dc4cc088 100644 --- "a/kaq/exemples/mesDonn\303\251es.html" +++ "b/kaq/exemples/mesDonn\303\251es.html" @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git a/kaq/exemples/monCompte.html b/kaq/exemples/monCompte.html index df9c4527f0..a0e90a05bc 100644 --- a/kaq/exemples/monCompte.html +++ b/kaq/exemples/monCompte.html @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git a/kaq/exemples/scienceCitoyenne.html b/kaq/exemples/scienceCitoyenne.html index eb5100b340..f447af2e8d 100644 --- a/kaq/exemples/scienceCitoyenne.html +++ b/kaq/exemples/scienceCitoyenne.html @@ -137,7 +137,7 @@ client, idNuée, clefTableau, ["fr", "de"] ) end

:::

Pour plus d'information, voir la section sur les autres langages.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/kaq/guide/concepts.html b/kaq/guide/concepts.html index 75bdd75341..673f3ae8e8 100644 --- a/kaq/guide/concepts.html +++ b/kaq/guide/concepts.html @@ -19,7 +19,7 @@
Skip to content

Terminologie Constellation

Constellation ressemble beaucoup à un tableau LibreOffice ou Excel, mais avec quelques fonctionnalités en plus.

Client

Le client est le point central de Constellation. Chaque compte correspond à un client Constellation.

Profil

Le profil de Constellation organise les information du compte d'utilisateur.

Mots-clefs

Les mots-clefs servent à indexer les bases de données.

Tableaux

Un tableaux est comme une feuille d'un document Excel, LibreOffice ou Google Sheets.

tableaux :---: Exemple d'un tableau Constellation. Chaque tableau a différentes colonnes, chacune associée à une variable.

Variables

Chaque colonne d'un tableau est associée à une variable. Les variables peuvent être de différents types (texte, numérique, dates, photos, audios...).

Bases de données

L'unité centrale de Constellation est la base de données, qui regroupe un ou plusieurs tableaux.

bds :---: Une base de données Constellation. Conceptuellement identiques à un document Excel, LibreOffice ou Google Sheets, les bases de données Constellation incluent un ou plusieurs tableaux.

Projet

Un projet regroupe plusieurs bases de données traitant du même sujet.

projet :---: Exemple d'un projet Constellation. Les projets permettent de retrouver rapidement des données connexes (par exemple, hydrologie de l'Amérique latine, météorologie du Guatemala, pédologie de l'Afrique, ...). Une base de données peut être ajoutée à de multiples projets !

Réseau

Le réseau vous permet d'accéder aux informations des autres membres connectés.

réseau :---: Le réseau Constellation. Constellation forme un réseau de personnes qui se connaissent et se font confiance (ou pas !) avec un modèle de confiance transitive.

Recherche

Vous pouvez également rechercher les données qui vous intéressent.

recherche :---: Une recherche Constellation. Le logiciel commencera avec vos contacts immédiats et recherchera de plus en plus loin si nécessaire.

Nuée

Les nuées vous permettent de créer des projets de science citoyenne et de regrouper toutes les contributions de vos participants à la même place. Elles permettent de combiner des données de différents utilisateurs, un peu comme le ferait une base de données commune dans un système centralisé.

bdCentraliséé :---: Exemple d'une base de données centralisée. Un serveur central contrôle l'accès à une seule base de données dans laquelle les données de toutes les utilisatrices sont écrites. bdDistribuée :---: Exemple d'une nuée Constellation. Les données de chaque utilisatrice sont écrites sur leur propre base de données. Constellation se charge de toutes les retrouver et de les combiner au moment de la visualisation.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/kaq/guide/installation.html b/kaq/guide/installation.html index d872c261ce..240113810e 100644 --- a/kaq/guide/installation.html +++ b/kaq/guide/installation.html @@ -19,7 +19,7 @@
Skip to content

Installation

Constellation peut être utilisé soit

Il y a plusieurs avantages à installer Constellation sur votre ordinateur plutôt que d'utiliser l'appli en ligne. Premièrement, vous aurez accès à plus de mémoire, l'appli en ligne étant limitée par la mémoire de votre navigateur. En plus, la version installée offre plus de fonctionnalités, tel le partage automatique de vos données à base d'un fichier local et la sauvegarde automatique des données Constellation sur votre ordinateur.

FonctionnalitéConstellation navigateurConstellation installée
Exportation manuelle
Exportation automatisée
Importation manuelle (URL ou fichier)
Importation automatisée (URL)
Importation automatisée (fichier)
Limite de mémoireNavigateurSystème
Connectivité TCP
Connectivité WebRTC
Connectivité WebTransport

Autres langages

Si vous préférez travailler avec du code, qu'il s'agisse de JavaScript, Python, Julia ou R, il vous est possible d'utiliser Constellation dans ces langages. Voir notre guide avancé pour démarrer.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/kaq/guide/introduction.html b/kaq/guide/introduction.html index b00efd8740..e7ac8e60f3 100644 --- a/kaq/guide/introduction.html +++ b/kaq/guide/introduction.html @@ -19,7 +19,7 @@
Skip to content

Introduction

Constellation est un logiciel de bases de données scientifiques distribuées. Il vous permet de collecter et de diffuser vos données scientifiques sans serveur ou dépôt centralisé.

Qu'est-ce qu'un système distribué ?

Dans une système distribué, il n'y a pas de serveur qui contrôle les interactions entres utilisateurs. Les personnes participant au réseau communiquent donc directement entre elles. C'est plus résilient et plus amusant !

systèmeCentralisé

Pourquoi un logiciel local ?

Constellation est un logiciel local qui garde toutes vos données sur votre propre dispositif (comme Excel ou LibreOffice). Vous n'êtes donc pas à la mercie du Wifi ou de Google pour pouvoir accéder à vos propres données. Cependant, Constellation vous permet aussi de collaborer en ligne et de partager (et syncroniser) vos données en temps réel (comme les documents Google). C'est le meilleur des deux mondes !

AvantagesApplis intallées (p.ex., Excel)Applis nuage (p.ex., Google)Applis locales
Rapidité
Sans dépendance Internet
Sans enfermerment propriétaire
Collaboration
Autorisations d'équipe
Sauvegarde en ligne
Mises à jour en directe
Note : Tableau adapté de local-first-web de Herb Caudill.

Philosophie générale

La philosophie de Constellation se résume en quelques grandes lignes :

Accès libre : Les données scientifiques devraient être ouvertes et accessibles. Toutes les données partagées sur Constellation sont publiques. (Si vous travaillez en recherche clinique, ce n'est peut-être pas le logiciel pour vous.)

Source ouverte : Tous les logiciels de l'univers Constellation sont distribués sous licence libre.

Indépendance : Constellation est un logiciel ouvert, et les données sont sauvegardées sur les dispositifs des utilisatrices et utilisateurs. Les communautés gardent donc le contrôle sur leurs propres données en tout temps.

Accessible et multilingue : Le monde est une place multilingue ; le monde de la recherche, lui, ne l'est malheureusement pas autant. Beaucoup de données sont collectées dans des régions du monde et ensuite publiées dans des langues que les personnes qui les ont fournies ne parlent pas. Cependant, la structure des logiciels que nous utilisons façonne notre pensée, pour le mieux ou pour le pire. Beaucoup de logiciels de bases de données (Excel, MongoDB, etc.) ne permettent qu'un seul nom par colonne ou champ ; nous sommes ainsi entraînés à entrer des données monolingues. Nous avons donc conceptualisé Constellation afin qu'elle guide ses utilisateurs et utilisatrices vers une meilleure inclusion. Chaque objet en Constellation, soit-ce votre profil, une variable ou une base de données, peut être nommé en autant de langues que vous voulez. Vos données apparaîtront donc dans la langue préférée de chacune de vos utilisatrices finales.

Comment ça se compare à ... ?

FonctionnalitéConstellationExcelLibreOfficeDocs GoogleBD sur serveur (MongoDB, SQL)
Collaboration simultanée
Fonctionne hors ligne
Photos, vidéos
Contrôle local des donnéesSi le serveur vous appartient
Intégration avec vos applis
Source ouverteC'est compliqué

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/kaq/guide/pair\303\200Pair.html" "b/kaq/guide/pair\303\200Pair.html" index 777f2d6ce3..5b511cce6c 100644 --- "a/kaq/guide/pair\303\200Pair.html" +++ "b/kaq/guide/pair\303\200Pair.html" @@ -19,7 +19,7 @@
Skip to content

Systèmes pair à pair

Afin de bien comprendre Constellation, c'est peut-être util de comprendre ce qu'est un système distribué ou pair à pair. Premièrement, ils ne sont pas exactement la même chose. Un système pair à pair, c'est un système qui, contrairement à votre courriel ou à Google, ne nécessite pas de serveur central pour fonctionner. Chouette, n'est-ce pas ?

Les systèmes pair à pair peuvent être décentralisés ou bien distribués. Dans un système décentralisé, le logiciel est trop gros ou compliqué pour fonctionner sur la majorité des téléphones ou ordinateurs des participants au réseau. Donc, certains participants au réseau qui ont les gros ordinateurs nécessaires servent de point contact et de service pour la majorité des autres participants. À la fin, c'est beaucoup comme un système centralisé.

distribuéVsDécentralisé

Au contraire, dans un système distribué, tout les participants sont égaux les un aux autres. Certains peuvent être connectés avec des machines plus puissantes ou avec plus de mémoire, bien sûr, mais tous intéragissent d'égal à égal dans le réseau.

INFO

Constellation n'est pas une chaîne de bloques !

Les systèmes pair à pair ont malheureusement une mauvaise réputation, peut-être parce que la majorité des premiers logiciels populaires étaient des platformes de partage de médias piratées. Ensuite sont arrivé les cryptomonnaies basées sur les chaînes de bloques, qui ont fréquemment bien mérité leur réputation en tant que pyramides de Ponzi et trous noirs énergétiques notoirement inefficaces pour toute application utile.

Donc nous répétons : Constellation est un système distribué de pair en pair, mais pas une chaîne de bloques !

Mais pourquoi pas une chaîne de bloques ?

Premièrement, parce que c'est ben trop cher. Chaque transaction sur une chaîne de bloques comme Éthereum coûte de la fausse argent (cryptomonnaies), que vous devez malheureusement achetter avec de la vraie argent. Et les fluctuations des prix sont bien entendu complètement hors de notre contrôle. Pourquoi créer un système de données distribuées pour améliorer la souveraineté des données pour ensuite devoir payer des personnes anonymes une somme d'argent variable pour le privilège d'écrire à nos propres bases de données ?

Et deuxièmement, c'est complètement inutil. Les chaînes de bloques sont nécessaires pour les cryptomonnaies et leurs transactions financières. Mais nous, on veut partager des données scientifiques. Nous n'avons rien à faire avec de l'argent ou des transactions financières.

Donc oublions tout ça. Constellation fonctionne de manière complètement distribuée, entièrement sur les dispositifs de ses utilisatrices et utilisateurs.

Comment ça fonctionne

Lorsque vous sauvegardez des données sur Constellation, celles-ci sont sauvegardées sur votre appareil local, et y resteront toujours disponibles.

CONSEIL

Si vous sauvegardez vos données sur un système sur le « nuage » comme les documents Google, vous aurez peut-être remarqué que vos données n'apparaissent plus lorsque vous (ou Google !) est hors ligne. L'avantage d'un système local comme Constellation est que vous êtes toujours garanti d'avoir accès à vos données, parce qu'elles demeurent toujours sur votre dispositif.

Le logiciel Constellation recherche également d'autres utilisatrices et utilisateurs du réseau et vous permet d'accéder et de visualiser leurs données. La magie d'un système distribué est qu'il permet aux tièrces personnes de partager, mais pas de modifier, les données des autres. Si vous vivez au Québec et vous partagez vos données scientifiques et avant fermez votre téléphone pour aller dormir, vos données ne seront plus disponible sur le réseau jusqu'à votre réveil, heure de l'est. Mais, si quelqu'un d'autre, disons au Botswana, les a déjà accédées, elles seront automatiquement repartagées et disponibles sur le réseau à partir du nouveau dispositif, toute prêtes pour le réveil de vos collègues de l'Inde au Japon ! Donc, contrairement à un système centralisé, sur Constellation, le plus populaires vos données, le plus disponibles elles seront.

Mais comment empêchons-nous les autres personnes de modifier vos données avant de les partager ? Chaque changement que vous apportez à vos données est accompagné d'une signature que uniquement votre compte peut générer. Si quelqu'un d'autre essaie de modifier vos données, la signature deviendra invalide et les changements frauduleux seront automatiquement rejetés par le réseau.

Au niveau technique

Pour ceux et celles qui ça amuse, Constellation est construit sur bd-orbite, un logiciel de bases de données distribuées, lui-même construit sur libp2p et le Système de fichiers interplanétaire SFIP. Toutes les bases de données sur Constellation sont composées de multiples bases de données orbite, tandis que les fichiers (images, vidéos) sont sauvegardés directement sur SFIP.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/kaq/guide/questions.html b/kaq/guide/questions.html index 9e861458cc..0c23cbd87e 100644 --- a/kaq/guide/questions.html +++ b/kaq/guide/questions.html @@ -19,7 +19,7 @@
Skip to content

Questions et problèmes

Erreurs fréquentes Constellation

Nous répertorions ici les erreurs fréquentes que l'on a rencontrés en utilisant Constellation. Apprenons des maux de tête des autres !

SyntaxError: Unexpected identifier

Assurez-vous d'être sur la plus récente version de Node.js. Si vous utilisez nvm, nvm use stable devrait régler le problème.

LockExistsError: Lock already being held for file: constl/sfip/repo.lock

Vous avez probablement lancé plus d'une instance de Constellation en même temps.

Error: Listener is not ready yet

Vous avez probablement lancé plus d'une instance de Constellation en même temps.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/kaq/index.html b/kaq/index.html index ca24c55b76..81911499e9 100644 --- a/kaq/index.html +++ b/kaq/index.html @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git a/kaq/ipa/automatisations.html b/kaq/ipa/automatisations.html index 8095ba19f6..2a9fdfb220 100644 --- a/kaq/ipa/automatisations.html +++ b/kaq/ipa/automatisations.html @@ -216,7 +216,7 @@ type: "programmée"; à: number; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/kaq/ipa/bds.html b/kaq/ipa/bds.html index 94150c7190..e6882f975f 100644 --- a/kaq/ipa/bds.html +++ b/kaq/ipa/bds.html @@ -587,7 +587,7 @@ nomBd: string; tableaux: donnéesTableauExportation[]; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/kaq/ipa/client.html b/kaq/ipa/client.html index fc278031c6..86d4b5939f 100644 --- a/kaq/ipa/client.html +++ b/kaq/ipa/client.html @@ -163,7 +163,7 @@ }

Types dispositifs

ts
type structureNomsDispositifs = {
   [idDispositif: string]: { nom?: string; type?: string };
 };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/kaq/ipa/favoris.html b/kaq/ipa/favoris.html index f8576674b4..50f0d3c363 100644 --- a/kaq/ipa/favoris.html +++ b/kaq/ipa/favoris.html @@ -69,7 +69,7 @@ }; type ÉlémentFavorisAvecObjet = ÉlémentFavoris & { idObjet: string };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/kaq/ipa/introduction.html b/kaq/ipa/introduction.html index cb5c076b17..5e6a823bf5 100644 --- a/kaq/ipa/introduction.html +++ b/kaq/ipa/introduction.html @@ -71,7 +71,7 @@ }) </script>

Langues

Constellation est un logiciel multilingue, et tout peut être traduit, y compris vos données, les noms des variables, et aussi votre profil d'utilisatrice. Constellation utilise les codes de langue nuchab'äl pour identifier les langues.

Chiffres

Constellation utilise les systèmes de numération du paquet எண்ணிக்கை pour lire et présenter les numéros en différentes langues.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/kaq/ipa/licences.html b/kaq/ipa/licences.html index 4700bc67b7..8340190d2a 100644 --- a/kaq/ipa/licences.html +++ b/kaq/ipa/licences.html @@ -79,7 +79,7 @@ type droit = "partager" | "adapter" | "usageComercial" | "usagePrivé" | "usageBrevets"; type limitation = "aucuneResponsabilité" | "aucuneGarantie" | "marqueCommerce" | "brevetExclu" | "sousLicence"; type catégorie = "basesDeDonnées" | "artistique" | "codeInformatique" | "autre";

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/kaq/ipa/motsClefs.html b/kaq/ipa/motsClefs.html index bf7927bd45..e3f9542774 100644 --- a/kaq/ipa/motsClefs.html +++ b/kaq/ipa/motsClefs.html @@ -133,7 +133,7 @@ langue: "fr", description: "Données hydrologiques" });

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/kaq/ipa/nu\303\251es.html" "b/kaq/ipa/nu\303\251es.html" index 7deb0fbee4..1ceb2a9a26 100644 --- "a/kaq/ipa/nu\303\251es.html" +++ "b/kaq/ipa/nu\303\251es.html" @@ -498,7 +498,7 @@ nuée: string; différences: différenceBds[]; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/kaq/ipa/profil.html b/kaq/ipa/profil.html index 61c618ca3f..e4b5235d17 100644 --- a/kaq/ipa/profil.html +++ b/kaq/ipa/profil.html @@ -83,7 +83,7 @@ f: x => courriel.value = x }); await fOublierCourriel();

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/kaq/ipa/projets.html b/kaq/ipa/projets.html index bb456fc187..85e6618332 100644 --- a/kaq/ipa/projets.html +++ b/kaq/ipa/projets.html @@ -354,7 +354,7 @@ nomProjet: string; bds: donnéesBdExportation[]; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/kaq/ipa/recherche.html b/kaq/ipa/recherche.html index a3822771d0..b73a87a52c 100644 --- a/kaq/ipa/recherche.html +++ b/kaq/ipa/recherche.html @@ -1181,7 +1181,7 @@ clef?: string; info: T; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/kaq/ipa/r\303\250gles.html" "b/kaq/ipa/r\303\250gles.html" index c443d07f4d..aec91f8a5d 100644 --- "a/kaq/ipa/r\303\250gles.html" +++ "b/kaq/ipa/r\303\250gles.html" @@ -179,7 +179,7 @@ règle: règleColonne<règleBornes<détailsRègleBornesDynamiqueVariable>>; détails: "variableBornesNonPrésente"; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/kaq/ipa/r\303\251seau.html" "b/kaq/ipa/r\303\251seau.html" index 2dc82ba784..6e1eb67b5f 100644 --- "a/kaq/ipa/r\303\251seau.html" +++ "b/kaq/ipa/r\303\251seau.html" @@ -266,7 +266,7 @@ vuÀ?: number; })[]; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/kaq/ipa/tableaux.html b/kaq/ipa/tableaux.html index beea573e74..301aaa4c8c 100644 --- a/kaq/ipa/tableaux.html +++ b/kaq/ipa/tableaux.html @@ -355,7 +355,7 @@ données: élémentBdListeDonnées[]; fichiersSFIP: Set<string>; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git a/kaq/ipa/variables.html b/kaq/ipa/variables.html index 6931511663..3c6d5becdf 100644 --- a/kaq/ipa/variables.html +++ b/kaq/ipa/variables.html @@ -301,7 +301,7 @@ | "audio" | "image" | "fichier";

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/avanc\303\251/applications/internet.html" "b/\331\201\330\247/avanc\303\251/applications/internet.html" index 73434eb162..0fddfe24d8 100644 --- "a/\331\201\330\247/avanc\303\251/applications/internet.html" +++ "b/\331\201\330\247/avanc\303\251/applications/internet.html" @@ -61,7 +61,7 @@ <template> <h1>Mon compte : {{ idCompte }}</h1> </template>

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/avanc\303\251/applications/introduction.html" "b/\331\201\330\247/avanc\303\251/applications/introduction.html" index a18f38b148..3703e0bd61 100644 --- "a/\331\201\330\247/avanc\303\251/applications/introduction.html" +++ "b/\331\201\330\247/avanc\303\251/applications/introduction.html" @@ -19,7 +19,7 @@
Skip to content

Développement d'applis

Vous pouvez utiliser l'IPA TypeScript de Constellation afin de développer vos propres applis de science citoyenne ou autre sur le réseau Constellation.

Vous pouvez ainsi développer des applications en tant que sites web statiques, de même que des applications Électron.

CONSEIL

Si vous cherchez à créer un appli de science citoyenne, Constellation peut la générer automatiquement pour vous ! Il suffit d'ouvrir la nuée dans l'interface de Constellation et choisir l'option de génération de code. Voir la section collecte de données pour plus d'informations.

Projets utilisant Constellation

Si vous développez un projet utilisant Constellation, contactez-nous (ou, encore mieux, ajoutez-le vous-même) et nous vous donnerons un peu de publicité ici.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/avanc\303\251/applications/nu\303\251es.html" "b/\331\201\330\247/avanc\303\251/applications/nu\303\251es.html" index 70073d95d7..277d44f074 100644 --- "a/\331\201\330\247/avanc\303\251/applications/nu\303\251es.html" +++ "b/\331\201\330\247/avanc\303\251/applications/nu\303\251es.html" @@ -19,7 +19,7 @@
Skip to content

Nuées de données

L'application la plus fréquente de Constellation dans une application tièrce est sans toute la collection de données distribuées d'un plublique participant à un projet de science citoyenne ou autre. Dans ce cas, les nuées seront indispensables.

Cette section offre des instructions détaillées sur l'utilisation de nuées Constellation dans vos propres projets.

Création de la nuée

Vous devrez, avant tout, créer l'identifiant de la nuée qui regroupera toutes les données de votre projet.

ATTENTION

Prenez soin de créer la nuée sur le compte Constellation que vous entendez utiliser pour gérer votre projet. Celui-ci aura ainsi l'autorisation de modifier la nuée par la suite.

Génération du code

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/avanc\303\251/applications/\303\251lectron.html" "b/\331\201\330\247/avanc\303\251/applications/\303\251lectron.html" index e3b6890d78..cc203c135b 100644 --- "a/\331\201\330\247/avanc\303\251/applications/\303\251lectron.html" +++ "b/\331\201\330\247/avanc\303\251/applications/\303\251lectron.html" @@ -116,7 +116,7 @@ port.value = undefined } </script>

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/avanc\303\251/autresLangages/introduction.html" "b/\331\201\330\247/avanc\303\251/autresLangages/introduction.html" index 56fbb9c682..6e15a5e184 100644 --- "a/\331\201\330\247/avanc\303\251/autresLangages/introduction.html" +++ "b/\331\201\330\247/avanc\303\251/autresLangages/introduction.html" @@ -19,7 +19,7 @@
Skip to content

Autres langages

Constellation a beau être un projet JavaScript, il est possible d'accéder au réseau distribué à partir de clients dans d'autres langages informatiques. Des clients sont disposibles dans les langages suivants :

  • Python : Fonctionnel
  • Julia : Fonctionnel
  • R : Fonctionnel
  • Autres langages : Si vous développez un client Constellation dans un autre langage, contactez-nous et nous l'annoncerons ici.

Tous ces clients fonctionnent en ouvrant un serveur WS Constellation local sur votre machine. Le client Python, Julia ou autre communiquera ensuite avec ce serveur local par messages WS et vous permettent d'utiliser Constellation dans le langage de votre choix.

Vous devrez donc toujours installer Constellation sur votre machine avant de pouvoir utiliser ces clients. La manière la plus facile est d'installer l'interface graphique et puis d'activer le serveur WS sur la page de configuration. Alternativement, vous pouvez installer le serveur WS de Constellation sans interface graphique. Vous aurez besoin de Node.js et de pnpm.

Si nécessaire, installer pnpm :

sh
$ npm add -g pnpm

Et puis installer Constellation :

sh
$ pnpm global add -g @constl/ipa @constl/serveur

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/avanc\303\251/autresLangages/julia.html" "b/\331\201\330\247/avanc\303\251/autresLangages/julia.html" index 33ec556b70..b16f5b402e 100644 --- "a/\331\201\330\247/avanc\303\251/autresLangages/julia.html" +++ "b/\331\201\330\247/avanc\303\251/autresLangages/julia.html" @@ -168,7 +168,7 @@ donnéesRéseau = Constellation.obtDonnéesTableauNuée(client, idNuée, clefTableau, ["fr"]) end end

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/avanc\303\251/autresLangages/nouveauxLangages.html" "b/\331\201\330\247/avanc\303\251/autresLangages/nouveauxLangages.html" index 4502e8f2a2..f1db74fb34 100644 --- "a/\331\201\330\247/avanc\303\251/autresLangages/nouveauxLangages.html" +++ "b/\331\201\330\247/avanc\303\251/autresLangages/nouveauxLangages.html" @@ -116,7 +116,7 @@ "id": "1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed", "erreur": "Message d'erreur tel que rencontré par le serveur." }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/avanc\303\251/autresLangages/n\305\223udLocal.html" "b/\331\201\330\247/avanc\303\251/autresLangages/n\305\223udLocal.html" index 396cb1bbca..8da3e930d1 100644 --- "a/\331\201\330\247/avanc\303\251/autresLangages/n\305\223udLocal.html" +++ "b/\331\201\330\247/avanc\303\251/autresLangages/n\305\223udLocal.html" @@ -68,7 +68,7 @@ // Lorsqu'on a fini : fermerClient();

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/avanc\303\251/autresLangages/python.html" "b/\331\201\330\247/avanc\303\251/autresLangages/python.html" index e38c710d41..38e493577f 100644 --- "a/\331\201\330\247/avanc\303\251/autresLangages/python.html" +++ "b/\331\201\330\247/avanc\303\251/autresLangages/python.html" @@ -234,7 +234,7 @@ trio.run(principale)

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/avanc\303\251/autresLangages/r.html" "b/\331\201\330\247/avanc\303\251/autresLangages/r.html" index e3767efb9a..4bab74990e 100644 --- "a/\331\201\330\247/avanc\303\251/autresLangages/r.html" +++ "b/\331\201\330\247/avanc\303\251/autresLangages/r.html" @@ -143,7 +143,7 @@ }, port = port )

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/exemples/cr\303\251ationCompte.html" "b/\331\201\330\247/exemples/cr\303\251ationCompte.html" index 81465d384c..0498d4167f 100644 --- "a/\331\201\330\247/exemples/cr\303\251ationCompte.html" +++ "b/\331\201\330\247/exemples/cr\303\251ationCompte.html" @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git "a/\331\201\330\247/exemples/diffusion.html" "b/\331\201\330\247/exemples/diffusion.html" index 436c1659e4..e924b81e29 100644 --- "a/\331\201\330\247/exemples/diffusion.html" +++ "b/\331\201\330\247/exemples/diffusion.html" @@ -19,7 +19,7 @@
Skip to content

Diffusion de données

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

Admettons-le, nous avons tous été coupables du « je-le-partagerai-plus-tardisme ». On a récolté une jolie base de données, et on va la partager dans un dépôt de données comme Zenodo, mais plus tard, quand elle sera bien propre et netoyée...et puis ensuite on publie, on répond aux réviseurs, et on oublie notre base de données qu'on a toujours pas partagée.

Constellation peut être utilisée afin de partager vos données existantes en temps réel, comme ça vous n'avez plus aucune excuse de ne pas les partager, même s'ils ne sont pas « finales ». Si les dépôts de données sont des versions fossilisées de vos données, Constellation est un dépôt pour les données vivantes.

Vous pouvez connecter Constellation à vos logiciels d'entrée de données favoris, et tout se mettra à jour automatiquement. En même temps, les personnes qui s'intéressent à vos données peuvent y accéder et les utiliser en temps réel.

[Schéma diffusion données à inclure]

Importation

Nous pouvons importer nos données à partir d'un fichier Excel, LibreOffice, csv ou autre. Il suffit de créer une base de données et puis de choisir « importer ».

[Image à inclure]

Automatisation

Bon c'était bien chouette, non ? Mais si vous faites des modifications à vos données, c'est un peu ennuyant de toujours devoir les ré-importer. C'est pour ça que nous avons des automatisations.

CONSEIL

Vous pouvez configurer les automatisations pour quelles s'exécutent soit (1) lorsque les données sont modifiées, (2) selon un calendrier fixe, ou (3) uniquement lorsque vous cliquez sur le bouton « actualiser » sur l'interface Constellation.

Nous allons configurer l'importation pour qu'elle actualise les données chaque fois que le document LibreOffice est modifié. Tant que Constellation est ouverte sur votre ordinateur, vos données seront automatiquement mises à jour sur le réseau !

[Image à inclure]

Partage

Vous pouvez maintenant partager les données. Il suffit de copier l'identifiant unique de la base de données de l'interface Constellation et puis de la partager avec tous vos admirateurs.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/exemples/mesDonn\303\251es.html" "b/\331\201\330\247/exemples/mesDonn\303\251es.html" index 574d6e25d8..037542818e 100644 --- "a/\331\201\330\247/exemples/mesDonn\303\251es.html" +++ "b/\331\201\330\247/exemples/mesDonn\303\251es.html" @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git "a/\331\201\330\247/exemples/monCompte.html" "b/\331\201\330\247/exemples/monCompte.html" index f90b291eaf..cf5ff2de6a 100644 --- "a/\331\201\330\247/exemples/monCompte.html" +++ "b/\331\201\330\247/exemples/monCompte.html" @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git "a/\331\201\330\247/exemples/scienceCitoyenne.html" "b/\331\201\330\247/exemples/scienceCitoyenne.html" index 673cd8d416..a7c24acf26 100644 --- "a/\331\201\330\247/exemples/scienceCitoyenne.html" +++ "b/\331\201\330\247/exemples/scienceCitoyenne.html" @@ -137,7 +137,7 @@ client, idNuée, clefTableau, ["fr", "de"] ) end

:::

Pour plus d'information, voir la section sur les autres langages.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/guide/concepts.html" "b/\331\201\330\247/guide/concepts.html" index cac659b9e6..96122eb478 100644 --- "a/\331\201\330\247/guide/concepts.html" +++ "b/\331\201\330\247/guide/concepts.html" @@ -19,7 +19,7 @@
Skip to content

Terminologie Constellation

Constellation ressemble beaucoup à un tableau LibreOffice ou Excel, mais avec quelques fonctionnalités en plus.

Client

Le client est le point central de Constellation. Chaque compte correspond à un client Constellation.

Profil

Le profil de Constellation organise les information du compte d'utilisateur.

Mots-clefs

Les mots-clefs servent à indexer les bases de données.

Tableaux

Un tableaux est comme une feuille d'un document Excel, LibreOffice ou Google Sheets.

tableaux :---: Exemple d'un tableau Constellation. Chaque tableau a différentes colonnes, chacune associée à une variable.

Variables

Chaque colonne d'un tableau est associée à une variable. Les variables peuvent être de différents types (texte, numérique, dates, photos, audios...).

Bases de données

L'unité centrale de Constellation est la base de données, qui regroupe un ou plusieurs tableaux.

bds :---: Une base de données Constellation. Conceptuellement identiques à un document Excel, LibreOffice ou Google Sheets, les bases de données Constellation incluent un ou plusieurs tableaux.

Projet

Un projet regroupe plusieurs bases de données traitant du même sujet.

projet :---: Exemple d'un projet Constellation. Les projets permettent de retrouver rapidement des données connexes (par exemple, hydrologie de l'Amérique latine, météorologie du Guatemala, pédologie de l'Afrique, ...). Une base de données peut être ajoutée à de multiples projets !

Réseau

Le réseau vous permet d'accéder aux informations des autres membres connectés.

réseau :---: Le réseau Constellation. Constellation forme un réseau de personnes qui se connaissent et se font confiance (ou pas !) avec un modèle de confiance transitive.

Recherche

Vous pouvez également rechercher les données qui vous intéressent.

recherche :---: Une recherche Constellation. Le logiciel commencera avec vos contacts immédiats et recherchera de plus en plus loin si nécessaire.

Nuée

Les nuées vous permettent de créer des projets de science citoyenne et de regrouper toutes les contributions de vos participants à la même place. Elles permettent de combiner des données de différents utilisateurs, un peu comme le ferait une base de données commune dans un système centralisé.

bdCentraliséé :---: Exemple d'une base de données centralisée. Un serveur central contrôle l'accès à une seule base de données dans laquelle les données de toutes les utilisatrices sont écrites. bdDistribuée :---: Exemple d'une nuée Constellation. Les données de chaque utilisatrice sont écrites sur leur propre base de données. Constellation se charge de toutes les retrouver et de les combiner au moment de la visualisation.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/guide/installation.html" "b/\331\201\330\247/guide/installation.html" index fbc6cf5472..8b988392af 100644 --- "a/\331\201\330\247/guide/installation.html" +++ "b/\331\201\330\247/guide/installation.html" @@ -19,7 +19,7 @@
Skip to content

Installation

Constellation peut être utilisé soit

Il y a plusieurs avantages à installer Constellation sur votre ordinateur plutôt que d'utiliser l'appli en ligne. Premièrement, vous aurez accès à plus de mémoire, l'appli en ligne étant limitée par la mémoire de votre navigateur. En plus, la version installée offre plus de fonctionnalités, tel le partage automatique de vos données à base d'un fichier local et la sauvegarde automatique des données Constellation sur votre ordinateur.

FonctionnalitéConstellation navigateurConstellation installée
Exportation manuelle
Exportation automatisée
Importation manuelle (URL ou fichier)
Importation automatisée (URL)
Importation automatisée (fichier)
Limite de mémoireNavigateurSystème
Connectivité TCP
Connectivité WebRTC
Connectivité WebTransport

Autres langages

Si vous préférez travailler avec du code, qu'il s'agisse de JavaScript, Python, Julia ou R, il vous est possible d'utiliser Constellation dans ces langages. Voir notre guide avancé pour démarrer.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/guide/introduction.html" "b/\331\201\330\247/guide/introduction.html" index 6deecd7b43..a3797c1316 100644 --- "a/\331\201\330\247/guide/introduction.html" +++ "b/\331\201\330\247/guide/introduction.html" @@ -19,7 +19,7 @@
Skip to content

معرفی

Constellation est un logiciel de bases de données scientifiques distribuées. Il vous permet de collecter et de diffuser vos données scientifiques sans serveur ou dépôt centralisé.

Qu'est-ce qu'un système distribué ?

Dans une système distribué, il n'y a pas de serveur qui contrôle les interactions entres utilisateurs. Les personnes participant au réseau communiquent donc directement entre elles. C'est plus résilient et plus amusant !

systèmeCentralisé

Pourquoi un logiciel local ?

Constellation est un logiciel local qui garde toutes vos données sur votre propre dispositif (comme Excel ou LibreOffice). Vous n'êtes donc pas à la mercie du Wifi ou de Google pour pouvoir accéder à vos propres données. Cependant, Constellation vous permet aussi de collaborer en ligne et de partager (et syncroniser) vos données en temps réel (comme les documents Google). C'est le meilleur des deux mondes !

AvantagesApplis intallées (p.ex., Excel)Applis nuage (p.ex., Google)Applis locales
Rapidité
Sans dépendance Internet
Sans enfermerment propriétaire
Collaboration
Autorisations d'équipe
Sauvegarde en ligne
Mises à jour en directe
Note : Tableau adapté de local-first-web de Herb Caudill.

Philosophie générale

La philosophie de Constellation se résume en quelques grandes lignes :

Accès libre : Les données scientifiques devraient être ouvertes et accessibles. Toutes les données partagées sur Constellation sont publiques. (Si vous travaillez en recherche clinique, ce n'est peut-être pas le logiciel pour vous.)

Source ouverte : Tous les logiciels de l'univers Constellation sont distribués sous licence libre.

Indépendance : Constellation est un logiciel ouvert, et les données sont sauvegardées sur les dispositifs des utilisatrices et utilisateurs. Les communautés gardent donc le contrôle sur leurs propres données en tout temps.

Accessible et multilingue : Le monde est une place multilingue ; le monde de la recherche, lui, ne l'est malheureusement pas autant. Beaucoup de données sont collectées dans des régions du monde et ensuite publiées dans des langues que les personnes qui les ont fournies ne parlent pas. Cependant, la structure des logiciels que nous utilisons façonne notre pensée, pour le mieux ou pour le pire. Beaucoup de logiciels de bases de données (Excel, MongoDB, etc.) ne permettent qu'un seul nom par colonne ou champ ; nous sommes ainsi entraînés à entrer des données monolingues. Nous avons donc conceptualisé Constellation afin qu'elle guide ses utilisateurs et utilisatrices vers une meilleure inclusion. Chaque objet en Constellation, soit-ce votre profil, une variable ou une base de données, peut être nommé en autant de langues que vous voulez. Vos données apparaîtront donc dans la langue préférée de chacune de vos utilisatrices finales.

Comment ça se compare à ... ?

FonctionnalitéConstellationExcelLibreOfficeDocs GoogleBD sur serveur (MongoDB, SQL)
Collaboration simultanée
Fonctionne hors ligne
Photos, vidéos
Contrôle local des donnéesSi le serveur vous appartient
Intégration avec vos applis
Source ouverteC'est compliqué

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/guide/pair\303\200Pair.html" "b/\331\201\330\247/guide/pair\303\200Pair.html" index e3cb438d40..1ca29c211e 100644 --- "a/\331\201\330\247/guide/pair\303\200Pair.html" +++ "b/\331\201\330\247/guide/pair\303\200Pair.html" @@ -19,7 +19,7 @@
Skip to content

Systèmes pair à pair

Afin de bien comprendre Constellation, c'est peut-être util de comprendre ce qu'est un système distribué ou pair à pair. Premièrement, ils ne sont pas exactement la même chose. Un système pair à pair, c'est un système qui, contrairement à votre courriel ou à Google, ne nécessite pas de serveur central pour fonctionner. Chouette, n'est-ce pas ?

Les systèmes pair à pair peuvent être décentralisés ou bien distribués. Dans un système décentralisé, le logiciel est trop gros ou compliqué pour fonctionner sur la majorité des téléphones ou ordinateurs des participants au réseau. Donc, certains participants au réseau qui ont les gros ordinateurs nécessaires servent de point contact et de service pour la majorité des autres participants. À la fin, c'est beaucoup comme un système centralisé.

distribuéVsDécentralisé

Au contraire, dans un système distribué, tout les participants sont égaux les un aux autres. Certains peuvent être connectés avec des machines plus puissantes ou avec plus de mémoire, bien sûr, mais tous intéragissent d'égal à égal dans le réseau.

INFO

Constellation n'est pas une chaîne de bloques !

Les systèmes pair à pair ont malheureusement une mauvaise réputation, peut-être parce que la majorité des premiers logiciels populaires étaient des platformes de partage de médias piratées. Ensuite sont arrivé les cryptomonnaies basées sur les chaînes de bloques, qui ont fréquemment bien mérité leur réputation en tant que pyramides de Ponzi et trous noirs énergétiques notoirement inefficaces pour toute application utile.

Donc nous répétons : Constellation est un système distribué de pair en pair, mais pas une chaîne de bloques !

Mais pourquoi pas une chaîne de bloques ?

Premièrement, parce que c'est ben trop cher. Chaque transaction sur une chaîne de bloques comme Éthereum coûte de la fausse argent (cryptomonnaies), que vous devez malheureusement achetter avec de la vraie argent. Et les fluctuations des prix sont bien entendu complètement hors de notre contrôle. Pourquoi créer un système de données distribuées pour améliorer la souveraineté des données pour ensuite devoir payer des personnes anonymes une somme d'argent variable pour le privilège d'écrire à nos propres bases de données ?

Et deuxièmement, c'est complètement inutil. Les chaînes de bloques sont nécessaires pour les cryptomonnaies et leurs transactions financières. Mais nous, on veut partager des données scientifiques. Nous n'avons rien à faire avec de l'argent ou des transactions financières.

Donc oublions tout ça. Constellation fonctionne de manière complètement distribuée, entièrement sur les dispositifs de ses utilisatrices et utilisateurs.

Comment ça fonctionne

Lorsque vous sauvegardez des données sur Constellation, celles-ci sont sauvegardées sur votre appareil local, et y resteront toujours disponibles.

CONSEIL

Si vous sauvegardez vos données sur un système sur le « nuage » comme les documents Google, vous aurez peut-être remarqué que vos données n'apparaissent plus lorsque vous (ou Google !) est hors ligne. L'avantage d'un système local comme Constellation est que vous êtes toujours garanti d'avoir accès à vos données, parce qu'elles demeurent toujours sur votre dispositif.

Le logiciel Constellation recherche également d'autres utilisatrices et utilisateurs du réseau et vous permet d'accéder et de visualiser leurs données. La magie d'un système distribué est qu'il permet aux tièrces personnes de partager, mais pas de modifier, les données des autres. Si vous vivez au Québec et vous partagez vos données scientifiques et avant fermez votre téléphone pour aller dormir, vos données ne seront plus disponible sur le réseau jusqu'à votre réveil, heure de l'est. Mais, si quelqu'un d'autre, disons au Botswana, les a déjà accédées, elles seront automatiquement repartagées et disponibles sur le réseau à partir du nouveau dispositif, toute prêtes pour le réveil de vos collègues de l'Inde au Japon ! Donc, contrairement à un système centralisé, sur Constellation, le plus populaires vos données, le plus disponibles elles seront.

Mais comment empêchons-nous les autres personnes de modifier vos données avant de les partager ? Chaque changement que vous apportez à vos données est accompagné d'une signature que uniquement votre compte peut générer. Si quelqu'un d'autre essaie de modifier vos données, la signature deviendra invalide et les changements frauduleux seront automatiquement rejetés par le réseau.

Au niveau technique

Pour ceux et celles qui ça amuse, Constellation est construit sur bd-orbite, un logiciel de bases de données distribuées, lui-même construit sur libp2p et le Système de fichiers interplanétaire SFIP. Toutes les bases de données sur Constellation sont composées de multiples bases de données orbite, tandis que les fichiers (images, vidéos) sont sauvegardés directement sur SFIP.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/guide/questions.html" "b/\331\201\330\247/guide/questions.html" index 1c83b75ba2..36174825c7 100644 --- "a/\331\201\330\247/guide/questions.html" +++ "b/\331\201\330\247/guide/questions.html" @@ -19,7 +19,7 @@
Skip to content

Questions et problèmes

Erreurs fréquentes Constellation

Nous répertorions ici les erreurs fréquentes que l'on a rencontrés en utilisant Constellation. Apprenons des maux de tête des autres !

SyntaxError: Unexpected identifier

Assurez-vous d'être sur la plus récente version de Node.js. Si vous utilisez nvm, nvm use stable devrait régler le problème.

LockExistsError: Lock already being held for file: constl/sfip/repo.lock

Vous avez probablement lancé plus d'une instance de Constellation en même temps.

Error: Listener is not ready yet

Vous avez probablement lancé plus d'une instance de Constellation en même temps.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/index.html" "b/\331\201\330\247/index.html" index d699add8f5..ae1a61103d 100644 --- "a/\331\201\330\247/index.html" +++ "b/\331\201\330\247/index.html" @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git "a/\331\201\330\247/ipa/automatisations.html" "b/\331\201\330\247/ipa/automatisations.html" index 95a77ec332..75ecdbbad5 100644 --- "a/\331\201\330\247/ipa/automatisations.html" +++ "b/\331\201\330\247/ipa/automatisations.html" @@ -216,7 +216,7 @@ type: "programmée"; à: number; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/ipa/bds.html" "b/\331\201\330\247/ipa/bds.html" index cab36bb540..d635df4a10 100644 --- "a/\331\201\330\247/ipa/bds.html" +++ "b/\331\201\330\247/ipa/bds.html" @@ -587,7 +587,7 @@ nomBd: string; tableaux: donnéesTableauExportation[]; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/ipa/client.html" "b/\331\201\330\247/ipa/client.html" index dcf9457e96..4f669abd1d 100644 --- "a/\331\201\330\247/ipa/client.html" +++ "b/\331\201\330\247/ipa/client.html" @@ -163,7 +163,7 @@ }

Types dispositifs

ts
type structureNomsDispositifs = {
   [idDispositif: string]: { nom?: string; type?: string };
 };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/ipa/favoris.html" "b/\331\201\330\247/ipa/favoris.html" index b99239ffc9..1a276ec70f 100644 --- "a/\331\201\330\247/ipa/favoris.html" +++ "b/\331\201\330\247/ipa/favoris.html" @@ -69,7 +69,7 @@ }; type ÉlémentFavorisAvecObjet = ÉlémentFavoris & { idObjet: string };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/ipa/introduction.html" "b/\331\201\330\247/ipa/introduction.html" index 1b7f36b91d..d43918b31b 100644 --- "a/\331\201\330\247/ipa/introduction.html" +++ "b/\331\201\330\247/ipa/introduction.html" @@ -71,7 +71,7 @@ }) </script>

Langues

Constellation est un logiciel multilingue, et tout peut être traduit, y compris vos données, les noms des variables, et aussi votre profil d'utilisatrice. Constellation utilise les codes de langue nuchab'äl pour identifier les langues.

Chiffres

Constellation utilise les systèmes de numération du paquet எண்ணிக்கை pour lire et présenter les numéros en différentes langues.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/ipa/licences.html" "b/\331\201\330\247/ipa/licences.html" index a926cdef29..94e0a1adb8 100644 --- "a/\331\201\330\247/ipa/licences.html" +++ "b/\331\201\330\247/ipa/licences.html" @@ -79,7 +79,7 @@ type droit = "partager" | "adapter" | "usageComercial" | "usagePrivé" | "usageBrevets"; type limitation = "aucuneResponsabilité" | "aucuneGarantie" | "marqueCommerce" | "brevetExclu" | "sousLicence"; type catégorie = "basesDeDonnées" | "artistique" | "codeInformatique" | "autre";

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/ipa/motsClefs.html" "b/\331\201\330\247/ipa/motsClefs.html" index 57c7eafb38..b7c81eb0e3 100644 --- "a/\331\201\330\247/ipa/motsClefs.html" +++ "b/\331\201\330\247/ipa/motsClefs.html" @@ -133,7 +133,7 @@ langue: "fr", description: "Données hydrologiques" });

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/ipa/nu\303\251es.html" "b/\331\201\330\247/ipa/nu\303\251es.html" index 36838e9115..2de14f7fcf 100644 --- "a/\331\201\330\247/ipa/nu\303\251es.html" +++ "b/\331\201\330\247/ipa/nu\303\251es.html" @@ -498,7 +498,7 @@ nuée: string; différences: différenceBds[]; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/ipa/profil.html" "b/\331\201\330\247/ipa/profil.html" index 250d45b789..dd8102c574 100644 --- "a/\331\201\330\247/ipa/profil.html" +++ "b/\331\201\330\247/ipa/profil.html" @@ -83,7 +83,7 @@ f: x => courriel.value = x }); await fOublierCourriel();

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/ipa/projets.html" "b/\331\201\330\247/ipa/projets.html" index 09c0d346ba..5096729e3d 100644 --- "a/\331\201\330\247/ipa/projets.html" +++ "b/\331\201\330\247/ipa/projets.html" @@ -354,7 +354,7 @@ nomProjet: string; bds: donnéesBdExportation[]; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/ipa/recherche.html" "b/\331\201\330\247/ipa/recherche.html" index b38aaeab69..13af1d4eb3 100644 --- "a/\331\201\330\247/ipa/recherche.html" +++ "b/\331\201\330\247/ipa/recherche.html" @@ -1181,7 +1181,7 @@ clef?: string; info: T; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/ipa/r\303\250gles.html" "b/\331\201\330\247/ipa/r\303\250gles.html" index dda2625c23..f8aa8b77b9 100644 --- "a/\331\201\330\247/ipa/r\303\250gles.html" +++ "b/\331\201\330\247/ipa/r\303\250gles.html" @@ -179,7 +179,7 @@ règle: règleColonne<règleBornes<détailsRègleBornesDynamiqueVariable>>; détails: "variableBornesNonPrésente"; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/ipa/r\303\251seau.html" "b/\331\201\330\247/ipa/r\303\251seau.html" index 38dd23e7d9..dd8a43834a 100644 --- "a/\331\201\330\247/ipa/r\303\251seau.html" +++ "b/\331\201\330\247/ipa/r\303\251seau.html" @@ -266,7 +266,7 @@ vuÀ?: number; })[]; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/ipa/tableaux.html" "b/\331\201\330\247/ipa/tableaux.html" index 417fbddcc7..8a603560ae 100644 --- "a/\331\201\330\247/ipa/tableaux.html" +++ "b/\331\201\330\247/ipa/tableaux.html" @@ -355,7 +355,7 @@ données: élémentBdListeDonnées[]; fichiersSFIP: Set<string>; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\331\201\330\247/ipa/variables.html" "b/\331\201\330\247/ipa/variables.html" index c98bd6611a..1d782436e9 100644 --- "a/\331\201\330\247/ipa/variables.html" +++ "b/\331\201\330\247/ipa/variables.html" @@ -301,7 +301,7 @@ | "audio" | "image" | "fichier";

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/avanc\303\251/applications/internet.html" "b/\340\244\271\340\244\277\340\244\202/avanc\303\251/applications/internet.html" index 506f016642..e47bfa014b 100644 --- "a/\340\244\271\340\244\277\340\244\202/avanc\303\251/applications/internet.html" +++ "b/\340\244\271\340\244\277\340\244\202/avanc\303\251/applications/internet.html" @@ -61,7 +61,7 @@ <template> <h1>Mon compte : {{ idCompte }}</h1> </template>

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/avanc\303\251/applications/introduction.html" "b/\340\244\271\340\244\277\340\244\202/avanc\303\251/applications/introduction.html" index 1b4b423897..ee9ebcd7fd 100644 --- "a/\340\244\271\340\244\277\340\244\202/avanc\303\251/applications/introduction.html" +++ "b/\340\244\271\340\244\277\340\244\202/avanc\303\251/applications/introduction.html" @@ -19,7 +19,7 @@
Skip to content

Développement d'applis

Vous pouvez utiliser l'IPA TypeScript de Constellation afin de développer vos propres applis de science citoyenne ou autre sur le réseau Constellation.

Vous pouvez ainsi développer des applications en tant que sites web statiques, de même que des applications Électron.

CONSEIL

Si vous cherchez à créer un appli de science citoyenne, Constellation peut la générer automatiquement pour vous ! Il suffit d'ouvrir la nuée dans l'interface de Constellation et choisir l'option de génération de code. Voir la section collecte de données pour plus d'informations.

Projets utilisant Constellation

Si vous développez un projet utilisant Constellation, contactez-nous (ou, encore mieux, ajoutez-le vous-même) et nous vous donnerons un peu de publicité ici.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/avanc\303\251/applications/nu\303\251es.html" "b/\340\244\271\340\244\277\340\244\202/avanc\303\251/applications/nu\303\251es.html" index 8fab0a246d..eb08d9b9bd 100644 --- "a/\340\244\271\340\244\277\340\244\202/avanc\303\251/applications/nu\303\251es.html" +++ "b/\340\244\271\340\244\277\340\244\202/avanc\303\251/applications/nu\303\251es.html" @@ -19,7 +19,7 @@
Skip to content

Nuées de données

L'application la plus fréquente de Constellation dans une application tièrce est sans toute la collection de données distribuées d'un plublique participant à un projet de science citoyenne ou autre. Dans ce cas, les nuées seront indispensables.

Cette section offre des instructions détaillées sur l'utilisation de nuées Constellation dans vos propres projets.

Création de la nuée

Vous devrez, avant tout, créer l'identifiant de la nuée qui regroupera toutes les données de votre projet.

ATTENTION

Prenez soin de créer la nuée sur le compte Constellation que vous entendez utiliser pour gérer votre projet. Celui-ci aura ainsi l'autorisation de modifier la nuée par la suite.

Génération du code

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/avanc\303\251/applications/\303\251lectron.html" "b/\340\244\271\340\244\277\340\244\202/avanc\303\251/applications/\303\251lectron.html" index a9e3c911cd..0c0405e6e3 100644 --- "a/\340\244\271\340\244\277\340\244\202/avanc\303\251/applications/\303\251lectron.html" +++ "b/\340\244\271\340\244\277\340\244\202/avanc\303\251/applications/\303\251lectron.html" @@ -116,7 +116,7 @@ port.value = undefined } </script>

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/avanc\303\251/autresLangages/introduction.html" "b/\340\244\271\340\244\277\340\244\202/avanc\303\251/autresLangages/introduction.html" index 8a315d155c..f689ee693b 100644 --- "a/\340\244\271\340\244\277\340\244\202/avanc\303\251/autresLangages/introduction.html" +++ "b/\340\244\271\340\244\277\340\244\202/avanc\303\251/autresLangages/introduction.html" @@ -19,7 +19,7 @@
Skip to content

Autres langages

Constellation a beau être un projet JavaScript, il est possible d'accéder au réseau distribué à partir de clients dans d'autres langages informatiques. Des clients sont disposibles dans les langages suivants :

  • Python : Fonctionnel
  • Julia : Fonctionnel
  • R : Fonctionnel
  • Autres langages : Si vous développez un client Constellation dans un autre langage, contactez-nous et nous l'annoncerons ici.

Tous ces clients fonctionnent en ouvrant un serveur WS Constellation local sur votre machine. Le client Python, Julia ou autre communiquera ensuite avec ce serveur local par messages WS et vous permettent d'utiliser Constellation dans le langage de votre choix.

Vous devrez donc toujours installer Constellation sur votre machine avant de pouvoir utiliser ces clients. La manière la plus facile est d'installer l'interface graphique et puis d'activer le serveur WS sur la page de configuration. Alternativement, vous pouvez installer le serveur WS de Constellation sans interface graphique. Vous aurez besoin de Node.js et de pnpm.

Si nécessaire, installer pnpm :

sh
$ npm add -g pnpm

Et puis installer Constellation :

sh
$ pnpm global add -g @constl/ipa @constl/serveur

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/avanc\303\251/autresLangages/julia.html" "b/\340\244\271\340\244\277\340\244\202/avanc\303\251/autresLangages/julia.html" index f8400b44b4..2f9ce2ac70 100644 --- "a/\340\244\271\340\244\277\340\244\202/avanc\303\251/autresLangages/julia.html" +++ "b/\340\244\271\340\244\277\340\244\202/avanc\303\251/autresLangages/julia.html" @@ -168,7 +168,7 @@ donnéesRéseau = Constellation.obtDonnéesTableauNuée(client, idNuée, clefTableau, ["fr"]) end end

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/avanc\303\251/autresLangages/nouveauxLangages.html" "b/\340\244\271\340\244\277\340\244\202/avanc\303\251/autresLangages/nouveauxLangages.html" index 24c5e1f5da..94670f2873 100644 --- "a/\340\244\271\340\244\277\340\244\202/avanc\303\251/autresLangages/nouveauxLangages.html" +++ "b/\340\244\271\340\244\277\340\244\202/avanc\303\251/autresLangages/nouveauxLangages.html" @@ -116,7 +116,7 @@ "id": "1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed", "erreur": "Message d'erreur tel que rencontré par le serveur." }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/avanc\303\251/autresLangages/n\305\223udLocal.html" "b/\340\244\271\340\244\277\340\244\202/avanc\303\251/autresLangages/n\305\223udLocal.html" index af32b2c326..761ec52053 100644 --- "a/\340\244\271\340\244\277\340\244\202/avanc\303\251/autresLangages/n\305\223udLocal.html" +++ "b/\340\244\271\340\244\277\340\244\202/avanc\303\251/autresLangages/n\305\223udLocal.html" @@ -68,7 +68,7 @@ // Lorsqu'on a fini : fermerClient();

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/avanc\303\251/autresLangages/python.html" "b/\340\244\271\340\244\277\340\244\202/avanc\303\251/autresLangages/python.html" index 477567bd17..7923e00d3b 100644 --- "a/\340\244\271\340\244\277\340\244\202/avanc\303\251/autresLangages/python.html" +++ "b/\340\244\271\340\244\277\340\244\202/avanc\303\251/autresLangages/python.html" @@ -234,7 +234,7 @@ trio.run(principale)

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/avanc\303\251/autresLangages/r.html" "b/\340\244\271\340\244\277\340\244\202/avanc\303\251/autresLangages/r.html" index 04766914dd..d69fa07667 100644 --- "a/\340\244\271\340\244\277\340\244\202/avanc\303\251/autresLangages/r.html" +++ "b/\340\244\271\340\244\277\340\244\202/avanc\303\251/autresLangages/r.html" @@ -143,7 +143,7 @@ }, port = port )

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/exemples/cr\303\251ationCompte.html" "b/\340\244\271\340\244\277\340\244\202/exemples/cr\303\251ationCompte.html" index bb104618be..91cfe76a26 100644 --- "a/\340\244\271\340\244\277\340\244\202/exemples/cr\303\251ationCompte.html" +++ "b/\340\244\271\340\244\277\340\244\202/exemples/cr\303\251ationCompte.html" @@ -12,14 +12,14 @@ - + - - + + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/exemples/diffusion.html" "b/\340\244\271\340\244\277\340\244\202/exemples/diffusion.html" index c35476765a..8474bd1c34 100644 --- "a/\340\244\271\340\244\277\340\244\202/exemples/diffusion.html" +++ "b/\340\244\271\340\244\277\340\244\202/exemples/diffusion.html" @@ -19,7 +19,7 @@
Skip to content

Diffusion de données

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

Admettons-le, nous avons tous été coupables du « je-le-partagerai-plus-tardisme ». On a récolté une jolie base de données, et on va la partager dans un dépôt de données comme Zenodo, mais plus tard, quand elle sera bien propre et netoyée...et puis ensuite on publie, on répond aux réviseurs, et on oublie notre base de données qu'on a toujours pas partagée.

Constellation peut être utilisée afin de partager vos données existantes en temps réel, comme ça vous n'avez plus aucune excuse de ne pas les partager, même s'ils ne sont pas « finales ». Si les dépôts de données sont des versions fossilisées de vos données, Constellation est un dépôt pour les données vivantes.

Vous pouvez connecter Constellation à vos logiciels d'entrée de données favoris, et tout se mettra à jour automatiquement. En même temps, les personnes qui s'intéressent à vos données peuvent y accéder et les utiliser en temps réel.

[Schéma diffusion données à inclure]

Importation

Nous pouvons importer nos données à partir d'un fichier Excel, LibreOffice, csv ou autre. Il suffit de créer une base de données et puis de choisir « importer ».

[Image à inclure]

Automatisation

Bon c'était bien chouette, non ? Mais si vous faites des modifications à vos données, c'est un peu ennuyant de toujours devoir les ré-importer. C'est pour ça que nous avons des automatisations.

CONSEIL

Vous pouvez configurer les automatisations pour quelles s'exécutent soit (1) lorsque les données sont modifiées, (2) selon un calendrier fixe, ou (3) uniquement lorsque vous cliquez sur le bouton « actualiser » sur l'interface Constellation.

Nous allons configurer l'importation pour qu'elle actualise les données chaque fois que le document LibreOffice est modifié. Tant que Constellation est ouverte sur votre ordinateur, vos données seront automatiquement mises à jour sur le réseau !

[Image à inclure]

Partage

Vous pouvez maintenant partager les données. Il suffit de copier l'identifiant unique de la base de données de l'interface Constellation et puis de la partager avec tous vos admirateurs.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/exemples/mesDonn\303\251es.html" "b/\340\244\271\340\244\277\340\244\202/exemples/mesDonn\303\251es.html" index 32d4c944ba..ad6992a6dc 100644 --- "a/\340\244\271\340\244\277\340\244\202/exemples/mesDonn\303\251es.html" +++ "b/\340\244\271\340\244\277\340\244\202/exemples/mesDonn\303\251es.html" @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/exemples/monCompte.html" "b/\340\244\271\340\244\277\340\244\202/exemples/monCompte.html" index e061b7de28..74166ec5eb 100644 --- "a/\340\244\271\340\244\277\340\244\202/exemples/monCompte.html" +++ "b/\340\244\271\340\244\277\340\244\202/exemples/monCompte.html" @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/exemples/scienceCitoyenne.html" "b/\340\244\271\340\244\277\340\244\202/exemples/scienceCitoyenne.html" index ebf8102de4..e156368fa7 100644 --- "a/\340\244\271\340\244\277\340\244\202/exemples/scienceCitoyenne.html" +++ "b/\340\244\271\340\244\277\340\244\202/exemples/scienceCitoyenne.html" @@ -137,7 +137,7 @@ client, idNuée, clefTableau, ["fr", "de"] ) end

:::

Pour plus d'information, voir la section sur les autres langages.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/guide/concepts.html" "b/\340\244\271\340\244\277\340\244\202/guide/concepts.html" index 88bb581cb9..8edfb56950 100644 --- "a/\340\244\271\340\244\277\340\244\202/guide/concepts.html" +++ "b/\340\244\271\340\244\277\340\244\202/guide/concepts.html" @@ -19,7 +19,7 @@
Skip to content

Terminologie Constellation

Constellation ressemble beaucoup à un tableau LibreOffice ou Excel, mais avec quelques fonctionnalités en plus.

Client

Le client est le point central de Constellation. Chaque compte correspond à un client Constellation.

Profil

Le profil de Constellation organise les information du compte d'utilisateur.

Mots-clefs

Les mots-clefs servent à indexer les bases de données.

Tableaux

Un tableaux est comme une feuille d'un document Excel, LibreOffice ou Google Sheets.

tableaux :---: Exemple d'un tableau Constellation. Chaque tableau a différentes colonnes, chacune associée à une variable.

Variables

Chaque colonne d'un tableau est associée à une variable. Les variables peuvent être de différents types (texte, numérique, dates, photos, audios...).

Bases de données

L'unité centrale de Constellation est la base de données, qui regroupe un ou plusieurs tableaux.

bds :---: Une base de données Constellation. Conceptuellement identiques à un document Excel, LibreOffice ou Google Sheets, les bases de données Constellation incluent un ou plusieurs tableaux.

Projet

Un projet regroupe plusieurs bases de données traitant du même sujet.

projet :---: Exemple d'un projet Constellation. Les projets permettent de retrouver rapidement des données connexes (par exemple, hydrologie de l'Amérique latine, météorologie du Guatemala, pédologie de l'Afrique, ...). Une base de données peut être ajoutée à de multiples projets !

Réseau

Le réseau vous permet d'accéder aux informations des autres membres connectés.

réseau :---: Le réseau Constellation. Constellation forme un réseau de personnes qui se connaissent et se font confiance (ou pas !) avec un modèle de confiance transitive.

Recherche

Vous pouvez également rechercher les données qui vous intéressent.

recherche :---: Une recherche Constellation. Le logiciel commencera avec vos contacts immédiats et recherchera de plus en plus loin si nécessaire.

Nuée

Les nuées vous permettent de créer des projets de science citoyenne et de regrouper toutes les contributions de vos participants à la même place. Elles permettent de combiner des données de différents utilisateurs, un peu comme le ferait une base de données commune dans un système centralisé.

bdCentraliséé :---: Exemple d'une base de données centralisée. Un serveur central contrôle l'accès à une seule base de données dans laquelle les données de toutes les utilisatrices sont écrites. bdDistribuée :---: Exemple d'une nuée Constellation. Les données de chaque utilisatrice sont écrites sur leur propre base de données. Constellation se charge de toutes les retrouver et de les combiner au moment de la visualisation.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/guide/installation.html" "b/\340\244\271\340\244\277\340\244\202/guide/installation.html" index 68363440ae..f773a64ecd 100644 --- "a/\340\244\271\340\244\277\340\244\202/guide/installation.html" +++ "b/\340\244\271\340\244\277\340\244\202/guide/installation.html" @@ -19,7 +19,7 @@
Skip to content

Installation

Constellation peut être utilisé soit

Il y a plusieurs avantages à installer Constellation sur votre ordinateur plutôt que d'utiliser l'appli en ligne. Premièrement, vous aurez accès à plus de mémoire, l'appli en ligne étant limitée par la mémoire de votre navigateur. En plus, la version installée offre plus de fonctionnalités, tel le partage automatique de vos données à base d'un fichier local et la sauvegarde automatique des données Constellation sur votre ordinateur.

FonctionnalitéConstellation navigateurConstellation installée
Exportation manuelle
Exportation automatisée
Importation manuelle (URL ou fichier)
Importation automatisée (URL)
Importation automatisée (fichier)
Limite de mémoireNavigateurSystème
Connectivité TCP
Connectivité WebRTC
Connectivité WebTransport

Autres langages

Si vous préférez travailler avec du code, qu'il s'agisse de JavaScript, Python, Julia ou R, il vous est possible d'utiliser Constellation dans ces langages. Voir notre guide avancé pour démarrer.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/guide/introduction.html" "b/\340\244\271\340\244\277\340\244\202/guide/introduction.html" index 573a0acd54..280fde9485 100644 --- "a/\340\244\271\340\244\277\340\244\202/guide/introduction.html" +++ "b/\340\244\271\340\244\277\340\244\202/guide/introduction.html" @@ -19,7 +19,7 @@
Skip to content

Introduction

Constellation est un logiciel de bases de données scientifiques distribuées. Il vous permet de collecter et de diffuser vos données scientifiques sans serveur ou dépôt centralisé.

Qu'est-ce qu'un système distribué ?

Dans une système distribué, il n'y a pas de serveur qui contrôle les interactions entres utilisateurs. Les personnes participant au réseau communiquent donc directement entre elles. C'est plus résilient et plus amusant !

systèmeCentralisé

Pourquoi un logiciel local ?

Constellation est un logiciel local qui garde toutes vos données sur votre propre dispositif (comme Excel ou LibreOffice). Vous n'êtes donc pas à la mercie du Wifi ou de Google pour pouvoir accéder à vos propres données. Cependant, Constellation vous permet aussi de collaborer en ligne et de partager (et syncroniser) vos données en temps réel (comme les documents Google). C'est le meilleur des deux mondes !

AvantagesApplis intallées (p.ex., Excel)Applis nuage (p.ex., Google)Applis locales
Rapidité
Sans dépendance Internet
Sans enfermerment propriétaire
Collaboration
Autorisations d'équipe
Sauvegarde en ligne
Mises à jour en directe
Note : Tableau adapté de local-first-web de Herb Caudill.

Philosophie générale

La philosophie de Constellation se résume en quelques grandes lignes :

Accès libre : Les données scientifiques devraient être ouvertes et accessibles. Toutes les données partagées sur Constellation sont publiques. (Si vous travaillez en recherche clinique, ce n'est peut-être pas le logiciel pour vous.)

Source ouverte : Tous les logiciels de l'univers Constellation sont distribués sous licence libre.

Indépendance : Constellation est un logiciel ouvert, et les données sont sauvegardées sur les dispositifs des utilisatrices et utilisateurs. Les communautés gardent donc le contrôle sur leurs propres données en tout temps.

Accessible et multilingue : Le monde est une place multilingue ; le monde de la recherche, lui, ne l'est malheureusement pas autant. Beaucoup de données sont collectées dans des régions du monde et ensuite publiées dans des langues que les personnes qui les ont fournies ne parlent pas. Cependant, la structure des logiciels que nous utilisons façonne notre pensée, pour le mieux ou pour le pire. Beaucoup de logiciels de bases de données (Excel, MongoDB, etc.) ne permettent qu'un seul nom par colonne ou champ ; nous sommes ainsi entraînés à entrer des données monolingues. Nous avons donc conceptualisé Constellation afin qu'elle guide ses utilisateurs et utilisatrices vers une meilleure inclusion. Chaque objet en Constellation, soit-ce votre profil, une variable ou une base de données, peut être nommé en autant de langues que vous voulez. Vos données apparaîtront donc dans la langue préférée de chacune de vos utilisatrices finales.

Comment ça se compare à ... ?

FonctionnalitéConstellationExcelLibreOfficeDocs GoogleBD sur serveur (MongoDB, SQL)
Collaboration simultanée
Fonctionne hors ligne
Photos, vidéos
Contrôle local des donnéesSi le serveur vous appartient
Intégration avec vos applis
Source ouverteC'est compliqué

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/guide/pair\303\200Pair.html" "b/\340\244\271\340\244\277\340\244\202/guide/pair\303\200Pair.html" index cb847468d6..6b4be74900 100644 --- "a/\340\244\271\340\244\277\340\244\202/guide/pair\303\200Pair.html" +++ "b/\340\244\271\340\244\277\340\244\202/guide/pair\303\200Pair.html" @@ -19,7 +19,7 @@
Skip to content

Systèmes pair à pair

Afin de bien comprendre Constellation, c'est peut-être util de comprendre ce qu'est un système distribué ou pair à pair. Premièrement, ils ne sont pas exactement la même chose. Un système pair à pair, c'est un système qui, contrairement à votre courriel ou à Google, ne nécessite pas de serveur central pour fonctionner. Chouette, n'est-ce pas ?

Les systèmes pair à pair peuvent être décentralisés ou bien distribués. Dans un système décentralisé, le logiciel est trop gros ou compliqué pour fonctionner sur la majorité des téléphones ou ordinateurs des participants au réseau. Donc, certains participants au réseau qui ont les gros ordinateurs nécessaires servent de point contact et de service pour la majorité des autres participants. À la fin, c'est beaucoup comme un système centralisé.

distribuéVsDécentralisé

Au contraire, dans un système distribué, tout les participants sont égaux les un aux autres. Certains peuvent être connectés avec des machines plus puissantes ou avec plus de mémoire, bien sûr, mais tous intéragissent d'égal à égal dans le réseau.

INFO

Constellation n'est pas une chaîne de bloques !

Les systèmes pair à pair ont malheureusement une mauvaise réputation, peut-être parce que la majorité des premiers logiciels populaires étaient des platformes de partage de médias piratées. Ensuite sont arrivé les cryptomonnaies basées sur les chaînes de bloques, qui ont fréquemment bien mérité leur réputation en tant que pyramides de Ponzi et trous noirs énergétiques notoirement inefficaces pour toute application utile.

Donc nous répétons : Constellation est un système distribué de pair en pair, mais pas une chaîne de bloques !

Mais pourquoi pas une chaîne de bloques ?

Premièrement, parce que c'est ben trop cher. Chaque transaction sur une chaîne de bloques comme Éthereum coûte de la fausse argent (cryptomonnaies), que vous devez malheureusement achetter avec de la vraie argent. Et les fluctuations des prix sont bien entendu complètement hors de notre contrôle. Pourquoi créer un système de données distribuées pour améliorer la souveraineté des données pour ensuite devoir payer des personnes anonymes une somme d'argent variable pour le privilège d'écrire à nos propres bases de données ?

Et deuxièmement, c'est complètement inutil. Les chaînes de bloques sont nécessaires pour les cryptomonnaies et leurs transactions financières. Mais nous, on veut partager des données scientifiques. Nous n'avons rien à faire avec de l'argent ou des transactions financières.

Donc oublions tout ça. Constellation fonctionne de manière complètement distribuée, entièrement sur les dispositifs de ses utilisatrices et utilisateurs.

Comment ça fonctionne

Lorsque vous sauvegardez des données sur Constellation, celles-ci sont sauvegardées sur votre appareil local, et y resteront toujours disponibles.

CONSEIL

Si vous sauvegardez vos données sur un système sur le « nuage » comme les documents Google, vous aurez peut-être remarqué que vos données n'apparaissent plus lorsque vous (ou Google !) est hors ligne. L'avantage d'un système local comme Constellation est que vous êtes toujours garanti d'avoir accès à vos données, parce qu'elles demeurent toujours sur votre dispositif.

Le logiciel Constellation recherche également d'autres utilisatrices et utilisateurs du réseau et vous permet d'accéder et de visualiser leurs données. La magie d'un système distribué est qu'il permet aux tièrces personnes de partager, mais pas de modifier, les données des autres. Si vous vivez au Québec et vous partagez vos données scientifiques et avant fermez votre téléphone pour aller dormir, vos données ne seront plus disponible sur le réseau jusqu'à votre réveil, heure de l'est. Mais, si quelqu'un d'autre, disons au Botswana, les a déjà accédées, elles seront automatiquement repartagées et disponibles sur le réseau à partir du nouveau dispositif, toute prêtes pour le réveil de vos collègues de l'Inde au Japon ! Donc, contrairement à un système centralisé, sur Constellation, le plus populaires vos données, le plus disponibles elles seront.

Mais comment empêchons-nous les autres personnes de modifier vos données avant de les partager ? Chaque changement que vous apportez à vos données est accompagné d'une signature que uniquement votre compte peut générer. Si quelqu'un d'autre essaie de modifier vos données, la signature deviendra invalide et les changements frauduleux seront automatiquement rejetés par le réseau.

Au niveau technique

Pour ceux et celles qui ça amuse, Constellation est construit sur bd-orbite, un logiciel de bases de données distribuées, lui-même construit sur libp2p et le Système de fichiers interplanétaire SFIP. Toutes les bases de données sur Constellation sont composées de multiples bases de données orbite, tandis que les fichiers (images, vidéos) sont sauvegardés directement sur SFIP.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/guide/questions.html" "b/\340\244\271\340\244\277\340\244\202/guide/questions.html" index 65417037d2..05d3050dc2 100644 --- "a/\340\244\271\340\244\277\340\244\202/guide/questions.html" +++ "b/\340\244\271\340\244\277\340\244\202/guide/questions.html" @@ -19,7 +19,7 @@
Skip to content

Questions et problèmes

Erreurs fréquentes Constellation

Nous répertorions ici les erreurs fréquentes que l'on a rencontrés en utilisant Constellation. Apprenons des maux de tête des autres !

SyntaxError: Unexpected identifier

Assurez-vous d'être sur la plus récente version de Node.js. Si vous utilisez nvm, nvm use stable devrait régler le problème.

LockExistsError: Lock already being held for file: constl/sfip/repo.lock

Vous avez probablement lancé plus d'une instance de Constellation en même temps.

Error: Listener is not ready yet

Vous avez probablement lancé plus d'une instance de Constellation en même temps.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/index.html" "b/\340\244\271\340\244\277\340\244\202/index.html" index 758c94a113..ff0b1d77f0 100644 --- "a/\340\244\271\340\244\277\340\244\202/index.html" +++ "b/\340\244\271\340\244\277\340\244\202/index.html" @@ -19,7 +19,7 @@
Skip to content

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/ipa/automatisations.html" "b/\340\244\271\340\244\277\340\244\202/ipa/automatisations.html" index 530d228b62..992c16b015 100644 --- "a/\340\244\271\340\244\277\340\244\202/ipa/automatisations.html" +++ "b/\340\244\271\340\244\277\340\244\202/ipa/automatisations.html" @@ -216,7 +216,7 @@ type: "programmée"; à: number; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/ipa/bds.html" "b/\340\244\271\340\244\277\340\244\202/ipa/bds.html" index f2617f8350..440f24fdef 100644 --- "a/\340\244\271\340\244\277\340\244\202/ipa/bds.html" +++ "b/\340\244\271\340\244\277\340\244\202/ipa/bds.html" @@ -587,7 +587,7 @@ nomBd: string; tableaux: donnéesTableauExportation[]; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/ipa/client.html" "b/\340\244\271\340\244\277\340\244\202/ipa/client.html" index 71cc9f9e19..6e225fa470 100644 --- "a/\340\244\271\340\244\277\340\244\202/ipa/client.html" +++ "b/\340\244\271\340\244\277\340\244\202/ipa/client.html" @@ -163,7 +163,7 @@ }

Types dispositifs

ts
type structureNomsDispositifs = {
   [idDispositif: string]: { nom?: string; type?: string };
 };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/ipa/favoris.html" "b/\340\244\271\340\244\277\340\244\202/ipa/favoris.html" index 1b1f904343..e157d5c70d 100644 --- "a/\340\244\271\340\244\277\340\244\202/ipa/favoris.html" +++ "b/\340\244\271\340\244\277\340\244\202/ipa/favoris.html" @@ -69,7 +69,7 @@ }; type ÉlémentFavorisAvecObjet = ÉlémentFavoris & { idObjet: string };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/ipa/introduction.html" "b/\340\244\271\340\244\277\340\244\202/ipa/introduction.html" index 06fcd70205..86ffd8d385 100644 --- "a/\340\244\271\340\244\277\340\244\202/ipa/introduction.html" +++ "b/\340\244\271\340\244\277\340\244\202/ipa/introduction.html" @@ -71,7 +71,7 @@ }) </script>

Langues

Constellation est un logiciel multilingue, et tout peut être traduit, y compris vos données, les noms des variables, et aussi votre profil d'utilisatrice. Constellation utilise les codes de langue nuchab'äl pour identifier les langues.

Chiffres

Constellation utilise les systèmes de numération du paquet எண்ணிக்கை pour lire et présenter les numéros en différentes langues.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/ipa/licences.html" "b/\340\244\271\340\244\277\340\244\202/ipa/licences.html" index 402f9a9b71..f3af11fe8a 100644 --- "a/\340\244\271\340\244\277\340\244\202/ipa/licences.html" +++ "b/\340\244\271\340\244\277\340\244\202/ipa/licences.html" @@ -79,7 +79,7 @@ type droit = "partager" | "adapter" | "usageComercial" | "usagePrivé" | "usageBrevets"; type limitation = "aucuneResponsabilité" | "aucuneGarantie" | "marqueCommerce" | "brevetExclu" | "sousLicence"; type catégorie = "basesDeDonnées" | "artistique" | "codeInformatique" | "autre";

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/ipa/motsClefs.html" "b/\340\244\271\340\244\277\340\244\202/ipa/motsClefs.html" index 7aee43cea2..957ad947e9 100644 --- "a/\340\244\271\340\244\277\340\244\202/ipa/motsClefs.html" +++ "b/\340\244\271\340\244\277\340\244\202/ipa/motsClefs.html" @@ -133,7 +133,7 @@ langue: "fr", description: "Données hydrologiques" });

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/ipa/nu\303\251es.html" "b/\340\244\271\340\244\277\340\244\202/ipa/nu\303\251es.html" index 273fd1d265..3e629fe742 100644 --- "a/\340\244\271\340\244\277\340\244\202/ipa/nu\303\251es.html" +++ "b/\340\244\271\340\244\277\340\244\202/ipa/nu\303\251es.html" @@ -498,7 +498,7 @@ nuée: string; différences: différenceBds[]; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/ipa/profil.html" "b/\340\244\271\340\244\277\340\244\202/ipa/profil.html" index 9d4f382303..25beb7cf3d 100644 --- "a/\340\244\271\340\244\277\340\244\202/ipa/profil.html" +++ "b/\340\244\271\340\244\277\340\244\202/ipa/profil.html" @@ -83,7 +83,7 @@ f: x => courriel.value = x }); await fOublierCourriel();

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/ipa/projets.html" "b/\340\244\271\340\244\277\340\244\202/ipa/projets.html" index 73a7d42ccc..b0d7e14865 100644 --- "a/\340\244\271\340\244\277\340\244\202/ipa/projets.html" +++ "b/\340\244\271\340\244\277\340\244\202/ipa/projets.html" @@ -354,7 +354,7 @@ nomProjet: string; bds: donnéesBdExportation[]; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/ipa/recherche.html" "b/\340\244\271\340\244\277\340\244\202/ipa/recherche.html" index 5d81127871..c1b25cf0fc 100644 --- "a/\340\244\271\340\244\277\340\244\202/ipa/recherche.html" +++ "b/\340\244\271\340\244\277\340\244\202/ipa/recherche.html" @@ -1181,7 +1181,7 @@ clef?: string; info: T; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/ipa/r\303\250gles.html" "b/\340\244\271\340\244\277\340\244\202/ipa/r\303\250gles.html" index ffc349895f..42704c0ce3 100644 --- "a/\340\244\271\340\244\277\340\244\202/ipa/r\303\250gles.html" +++ "b/\340\244\271\340\244\277\340\244\202/ipa/r\303\250gles.html" @@ -179,7 +179,7 @@ règle: règleColonne<règleBornes<détailsRègleBornesDynamiqueVariable>>; détails: "variableBornesNonPrésente"; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/ipa/r\303\251seau.html" "b/\340\244\271\340\244\277\340\244\202/ipa/r\303\251seau.html" index 85ba1ee49a..78278bfcbd 100644 --- "a/\340\244\271\340\244\277\340\244\202/ipa/r\303\251seau.html" +++ "b/\340\244\271\340\244\277\340\244\202/ipa/r\303\251seau.html" @@ -266,7 +266,7 @@ vuÀ?: number; })[]; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/ipa/tableaux.html" "b/\340\244\271\340\244\277\340\244\202/ipa/tableaux.html" index 4748c0cd19..2e2917cb24 100644 --- "a/\340\244\271\340\244\277\340\244\202/ipa/tableaux.html" +++ "b/\340\244\271\340\244\277\340\244\202/ipa/tableaux.html" @@ -355,7 +355,7 @@ données: élémentBdListeDonnées[]; fichiersSFIP: Set<string>; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\244\271\340\244\277\340\244\202/ipa/variables.html" "b/\340\244\271\340\244\277\340\244\202/ipa/variables.html" index 6375b33e24..9b981ce6e5 100644 --- "a/\340\244\271\340\244\277\340\244\202/ipa/variables.html" +++ "b/\340\244\271\340\244\277\340\244\202/ipa/variables.html" @@ -301,7 +301,7 @@ | "audio" | "image" | "fichier";

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/avanc\303\251/applications/internet.html" "b/\340\252\227\340\253\201/avanc\303\251/applications/internet.html" index 1b85fb9260..4026e968a1 100644 --- "a/\340\252\227\340\253\201/avanc\303\251/applications/internet.html" +++ "b/\340\252\227\340\253\201/avanc\303\251/applications/internet.html" @@ -61,7 +61,7 @@ <template> <h1>Mon compte : {{ idCompte }}</h1> </template>

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/avanc\303\251/applications/introduction.html" "b/\340\252\227\340\253\201/avanc\303\251/applications/introduction.html" index 75cc4f94d7..079d52a823 100644 --- "a/\340\252\227\340\253\201/avanc\303\251/applications/introduction.html" +++ "b/\340\252\227\340\253\201/avanc\303\251/applications/introduction.html" @@ -19,7 +19,7 @@
Skip to content

Développement d'applis

Vous pouvez utiliser l'IPA TypeScript de Constellation afin de développer vos propres applis de science citoyenne ou autre sur le réseau Constellation.

Vous pouvez ainsi développer des applications en tant que sites web statiques, de même que des applications Électron.

CONSEIL

Si vous cherchez à créer un appli de science citoyenne, Constellation peut la générer automatiquement pour vous ! Il suffit d'ouvrir la nuée dans l'interface de Constellation et choisir l'option de génération de code. Voir la section collecte de données pour plus d'informations.

Projets utilisant Constellation

Si vous développez un projet utilisant Constellation, contactez-nous (ou, encore mieux, ajoutez-le vous-même) et nous vous donnerons un peu de publicité ici.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/avanc\303\251/applications/nu\303\251es.html" "b/\340\252\227\340\253\201/avanc\303\251/applications/nu\303\251es.html" index b81d1307f8..58b5b3ed96 100644 --- "a/\340\252\227\340\253\201/avanc\303\251/applications/nu\303\251es.html" +++ "b/\340\252\227\340\253\201/avanc\303\251/applications/nu\303\251es.html" @@ -19,7 +19,7 @@
Skip to content

Nuées de données

L'application la plus fréquente de Constellation dans une application tièrce est sans toute la collection de données distribuées d'un plublique participant à un projet de science citoyenne ou autre. Dans ce cas, les nuées seront indispensables.

Cette section offre des instructions détaillées sur l'utilisation de nuées Constellation dans vos propres projets.

Création de la nuée

Vous devrez, avant tout, créer l'identifiant de la nuée qui regroupera toutes les données de votre projet.

ATTENTION

Prenez soin de créer la nuée sur le compte Constellation que vous entendez utiliser pour gérer votre projet. Celui-ci aura ainsi l'autorisation de modifier la nuée par la suite.

Génération du code

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/avanc\303\251/applications/\303\251lectron.html" "b/\340\252\227\340\253\201/avanc\303\251/applications/\303\251lectron.html" index 54827637f1..077fc9eaa5 100644 --- "a/\340\252\227\340\253\201/avanc\303\251/applications/\303\251lectron.html" +++ "b/\340\252\227\340\253\201/avanc\303\251/applications/\303\251lectron.html" @@ -116,7 +116,7 @@ port.value = undefined } </script>

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/avanc\303\251/autresLangages/introduction.html" "b/\340\252\227\340\253\201/avanc\303\251/autresLangages/introduction.html" index d1e92267f2..9bd2abe3ae 100644 --- "a/\340\252\227\340\253\201/avanc\303\251/autresLangages/introduction.html" +++ "b/\340\252\227\340\253\201/avanc\303\251/autresLangages/introduction.html" @@ -19,7 +19,7 @@
Skip to content

Autres langages

Constellation a beau être un projet JavaScript, il est possible d'accéder au réseau distribué à partir de clients dans d'autres langages informatiques. Des clients sont disposibles dans les langages suivants :

  • Python : Fonctionnel
  • Julia : Fonctionnel
  • R : Fonctionnel
  • Autres langages : Si vous développez un client Constellation dans un autre langage, contactez-nous et nous l'annoncerons ici.

Tous ces clients fonctionnent en ouvrant un serveur WS Constellation local sur votre machine. Le client Python, Julia ou autre communiquera ensuite avec ce serveur local par messages WS et vous permettent d'utiliser Constellation dans le langage de votre choix.

Vous devrez donc toujours installer Constellation sur votre machine avant de pouvoir utiliser ces clients. La manière la plus facile est d'installer l'interface graphique et puis d'activer le serveur WS sur la page de configuration. Alternativement, vous pouvez installer le serveur WS de Constellation sans interface graphique. Vous aurez besoin de Node.js et de pnpm.

Si nécessaire, installer pnpm :

sh
$ npm add -g pnpm

Et puis installer Constellation :

sh
$ pnpm global add -g @constl/ipa @constl/serveur

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/avanc\303\251/autresLangages/julia.html" "b/\340\252\227\340\253\201/avanc\303\251/autresLangages/julia.html" index c430e004f9..547bfc6423 100644 --- "a/\340\252\227\340\253\201/avanc\303\251/autresLangages/julia.html" +++ "b/\340\252\227\340\253\201/avanc\303\251/autresLangages/julia.html" @@ -168,7 +168,7 @@ donnéesRéseau = Constellation.obtDonnéesTableauNuée(client, idNuée, clefTableau, ["fr"]) end end

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/avanc\303\251/autresLangages/nouveauxLangages.html" "b/\340\252\227\340\253\201/avanc\303\251/autresLangages/nouveauxLangages.html" index 03d93ee3ee..46b72a8ce7 100644 --- "a/\340\252\227\340\253\201/avanc\303\251/autresLangages/nouveauxLangages.html" +++ "b/\340\252\227\340\253\201/avanc\303\251/autresLangages/nouveauxLangages.html" @@ -116,7 +116,7 @@ "id": "1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed", "erreur": "Message d'erreur tel que rencontré par le serveur." }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/avanc\303\251/autresLangages/n\305\223udLocal.html" "b/\340\252\227\340\253\201/avanc\303\251/autresLangages/n\305\223udLocal.html" index 47c9b1adba..97deccadb2 100644 --- "a/\340\252\227\340\253\201/avanc\303\251/autresLangages/n\305\223udLocal.html" +++ "b/\340\252\227\340\253\201/avanc\303\251/autresLangages/n\305\223udLocal.html" @@ -68,7 +68,7 @@ // Lorsqu'on a fini : fermerClient();

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/avanc\303\251/autresLangages/python.html" "b/\340\252\227\340\253\201/avanc\303\251/autresLangages/python.html" index 90166df932..bf1fe3e31e 100644 --- "a/\340\252\227\340\253\201/avanc\303\251/autresLangages/python.html" +++ "b/\340\252\227\340\253\201/avanc\303\251/autresLangages/python.html" @@ -234,7 +234,7 @@ trio.run(principale)

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/avanc\303\251/autresLangages/r.html" "b/\340\252\227\340\253\201/avanc\303\251/autresLangages/r.html" index 2c6257bb19..87ec611ae7 100644 --- "a/\340\252\227\340\253\201/avanc\303\251/autresLangages/r.html" +++ "b/\340\252\227\340\253\201/avanc\303\251/autresLangages/r.html" @@ -143,7 +143,7 @@ }, port = port )

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/exemples/cr\303\251ationCompte.html" "b/\340\252\227\340\253\201/exemples/cr\303\251ationCompte.html" index 8311c2ac16..0f97ba0c0f 100644 --- "a/\340\252\227\340\253\201/exemples/cr\303\251ationCompte.html" +++ "b/\340\252\227\340\253\201/exemples/cr\303\251ationCompte.html" @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/exemples/diffusion.html" "b/\340\252\227\340\253\201/exemples/diffusion.html" index ff130ace9d..c4a48a2d7d 100644 --- "a/\340\252\227\340\253\201/exemples/diffusion.html" +++ "b/\340\252\227\340\253\201/exemples/diffusion.html" @@ -19,7 +19,7 @@
Skip to content

Diffusion de données

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

Admettons-le, nous avons tous été coupables du « je-le-partagerai-plus-tardisme ». On a récolté une jolie base de données, et on va la partager dans un dépôt de données comme Zenodo, mais plus tard, quand elle sera bien propre et netoyée...et puis ensuite on publie, on répond aux réviseurs, et on oublie notre base de données qu'on a toujours pas partagée.

Constellation peut être utilisée afin de partager vos données existantes en temps réel, comme ça vous n'avez plus aucune excuse de ne pas les partager, même s'ils ne sont pas « finales ». Si les dépôts de données sont des versions fossilisées de vos données, Constellation est un dépôt pour les données vivantes.

Vous pouvez connecter Constellation à vos logiciels d'entrée de données favoris, et tout se mettra à jour automatiquement. En même temps, les personnes qui s'intéressent à vos données peuvent y accéder et les utiliser en temps réel.

[Schéma diffusion données à inclure]

Importation

Nous pouvons importer nos données à partir d'un fichier Excel, LibreOffice, csv ou autre. Il suffit de créer une base de données et puis de choisir « importer ».

[Image à inclure]

Automatisation

Bon c'était bien chouette, non ? Mais si vous faites des modifications à vos données, c'est un peu ennuyant de toujours devoir les ré-importer. C'est pour ça que nous avons des automatisations.

CONSEIL

Vous pouvez configurer les automatisations pour quelles s'exécutent soit (1) lorsque les données sont modifiées, (2) selon un calendrier fixe, ou (3) uniquement lorsque vous cliquez sur le bouton « actualiser » sur l'interface Constellation.

Nous allons configurer l'importation pour qu'elle actualise les données chaque fois que le document LibreOffice est modifié. Tant que Constellation est ouverte sur votre ordinateur, vos données seront automatiquement mises à jour sur le réseau !

[Image à inclure]

Partage

Vous pouvez maintenant partager les données. Il suffit de copier l'identifiant unique de la base de données de l'interface Constellation et puis de la partager avec tous vos admirateurs.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/exemples/mesDonn\303\251es.html" "b/\340\252\227\340\253\201/exemples/mesDonn\303\251es.html" index bd26beaaea..7865245287 100644 --- "a/\340\252\227\340\253\201/exemples/mesDonn\303\251es.html" +++ "b/\340\252\227\340\253\201/exemples/mesDonn\303\251es.html" @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/exemples/monCompte.html" "b/\340\252\227\340\253\201/exemples/monCompte.html" index 5b94af1d8d..bdac6d58a9 100644 --- "a/\340\252\227\340\253\201/exemples/monCompte.html" +++ "b/\340\252\227\340\253\201/exemples/monCompte.html" @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/exemples/scienceCitoyenne.html" "b/\340\252\227\340\253\201/exemples/scienceCitoyenne.html" index 97f5e8138d..6cf1b2a130 100644 --- "a/\340\252\227\340\253\201/exemples/scienceCitoyenne.html" +++ "b/\340\252\227\340\253\201/exemples/scienceCitoyenne.html" @@ -137,7 +137,7 @@ client, idNuée, clefTableau, ["fr", "de"] ) end

:::

Pour plus d'information, voir la section sur les autres langages.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/guide/concepts.html" "b/\340\252\227\340\253\201/guide/concepts.html" index 40e928ceb9..90c8bc40d8 100644 --- "a/\340\252\227\340\253\201/guide/concepts.html" +++ "b/\340\252\227\340\253\201/guide/concepts.html" @@ -19,7 +19,7 @@
Skip to content

Terminologie Constellation

Constellation ressemble beaucoup à un tableau LibreOffice ou Excel, mais avec quelques fonctionnalités en plus.

Client

Le client est le point central de Constellation. Chaque compte correspond à un client Constellation.

Profil

Le profil de Constellation organise les information du compte d'utilisateur.

Mots-clefs

Les mots-clefs servent à indexer les bases de données.

Tableaux

Un tableaux est comme une feuille d'un document Excel, LibreOffice ou Google Sheets.

tableaux :---: Exemple d'un tableau Constellation. Chaque tableau a différentes colonnes, chacune associée à une variable.

Variables

Chaque colonne d'un tableau est associée à une variable. Les variables peuvent être de différents types (texte, numérique, dates, photos, audios...).

Bases de données

L'unité centrale de Constellation est la base de données, qui regroupe un ou plusieurs tableaux.

bds :---: Une base de données Constellation. Conceptuellement identiques à un document Excel, LibreOffice ou Google Sheets, les bases de données Constellation incluent un ou plusieurs tableaux.

Projet

Un projet regroupe plusieurs bases de données traitant du même sujet.

projet :---: Exemple d'un projet Constellation. Les projets permettent de retrouver rapidement des données connexes (par exemple, hydrologie de l'Amérique latine, météorologie du Guatemala, pédologie de l'Afrique, ...). Une base de données peut être ajoutée à de multiples projets !

Réseau

Le réseau vous permet d'accéder aux informations des autres membres connectés.

réseau :---: Le réseau Constellation. Constellation forme un réseau de personnes qui se connaissent et se font confiance (ou pas !) avec un modèle de confiance transitive.

Recherche

Vous pouvez également rechercher les données qui vous intéressent.

recherche :---: Une recherche Constellation. Le logiciel commencera avec vos contacts immédiats et recherchera de plus en plus loin si nécessaire.

Nuée

Les nuées vous permettent de créer des projets de science citoyenne et de regrouper toutes les contributions de vos participants à la même place. Elles permettent de combiner des données de différents utilisateurs, un peu comme le ferait une base de données commune dans un système centralisé.

bdCentraliséé :---: Exemple d'une base de données centralisée. Un serveur central contrôle l'accès à une seule base de données dans laquelle les données de toutes les utilisatrices sont écrites. bdDistribuée :---: Exemple d'une nuée Constellation. Les données de chaque utilisatrice sont écrites sur leur propre base de données. Constellation se charge de toutes les retrouver et de les combiner au moment de la visualisation.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/guide/installation.html" "b/\340\252\227\340\253\201/guide/installation.html" index cb34ef4007..3410233277 100644 --- "a/\340\252\227\340\253\201/guide/installation.html" +++ "b/\340\252\227\340\253\201/guide/installation.html" @@ -19,7 +19,7 @@
Skip to content

Installation

Constellation peut être utilisé soit

Il y a plusieurs avantages à installer Constellation sur votre ordinateur plutôt que d'utiliser l'appli en ligne. Premièrement, vous aurez accès à plus de mémoire, l'appli en ligne étant limitée par la mémoire de votre navigateur. En plus, la version installée offre plus de fonctionnalités, tel le partage automatique de vos données à base d'un fichier local et la sauvegarde automatique des données Constellation sur votre ordinateur.

FonctionnalitéConstellation navigateurConstellation installée
Exportation manuelle
Exportation automatisée
Importation manuelle (URL ou fichier)
Importation automatisée (URL)
Importation automatisée (fichier)
Limite de mémoireNavigateurSystème
Connectivité TCP
Connectivité WebRTC
Connectivité WebTransport

Autres langages

Si vous préférez travailler avec du code, qu'il s'agisse de JavaScript, Python, Julia ou R, il vous est possible d'utiliser Constellation dans ces langages. Voir notre guide avancé pour démarrer.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/guide/introduction.html" "b/\340\252\227\340\253\201/guide/introduction.html" index 3360836cfa..1caec97832 100644 --- "a/\340\252\227\340\253\201/guide/introduction.html" +++ "b/\340\252\227\340\253\201/guide/introduction.html" @@ -19,7 +19,7 @@
Skip to content

Introduction

Constellation est un logiciel de bases de données scientifiques distribuées. Il vous permet de collecter et de diffuser vos données scientifiques sans serveur ou dépôt centralisé.

Qu'est-ce qu'un système distribué ?

Dans une système distribué, il n'y a pas de serveur qui contrôle les interactions entres utilisateurs. Les personnes participant au réseau communiquent donc directement entre elles. C'est plus résilient et plus amusant !

systèmeCentralisé

Pourquoi un logiciel local ?

Constellation est un logiciel local qui garde toutes vos données sur votre propre dispositif (comme Excel ou LibreOffice). Vous n'êtes donc pas à la mercie du Wifi ou de Google pour pouvoir accéder à vos propres données. Cependant, Constellation vous permet aussi de collaborer en ligne et de partager (et syncroniser) vos données en temps réel (comme les documents Google). C'est le meilleur des deux mondes !

AvantagesApplis intallées (p.ex., Excel)Applis nuage (p.ex., Google)Applis locales
Rapidité
Sans dépendance Internet
Sans enfermerment propriétaire
Collaboration
Autorisations d'équipe
Sauvegarde en ligne
Mises à jour en directe
Note : Tableau adapté de local-first-web de Herb Caudill.

Philosophie générale

La philosophie de Constellation se résume en quelques grandes lignes :

Accès libre : Les données scientifiques devraient être ouvertes et accessibles. Toutes les données partagées sur Constellation sont publiques. (Si vous travaillez en recherche clinique, ce n'est peut-être pas le logiciel pour vous.)

Source ouverte : Tous les logiciels de l'univers Constellation sont distribués sous licence libre.

Indépendance : Constellation est un logiciel ouvert, et les données sont sauvegardées sur les dispositifs des utilisatrices et utilisateurs. Les communautés gardent donc le contrôle sur leurs propres données en tout temps.

Accessible et multilingue : Le monde est une place multilingue ; le monde de la recherche, lui, ne l'est malheureusement pas autant. Beaucoup de données sont collectées dans des régions du monde et ensuite publiées dans des langues que les personnes qui les ont fournies ne parlent pas. Cependant, la structure des logiciels que nous utilisons façonne notre pensée, pour le mieux ou pour le pire. Beaucoup de logiciels de bases de données (Excel, MongoDB, etc.) ne permettent qu'un seul nom par colonne ou champ ; nous sommes ainsi entraînés à entrer des données monolingues. Nous avons donc conceptualisé Constellation afin qu'elle guide ses utilisateurs et utilisatrices vers une meilleure inclusion. Chaque objet en Constellation, soit-ce votre profil, une variable ou une base de données, peut être nommé en autant de langues que vous voulez. Vos données apparaîtront donc dans la langue préférée de chacune de vos utilisatrices finales.

Comment ça se compare à ... ?

FonctionnalitéConstellationExcelLibreOfficeDocs GoogleBD sur serveur (MongoDB, SQL)
Collaboration simultanée
Fonctionne hors ligne
Photos, vidéos
Contrôle local des donnéesSi le serveur vous appartient
Intégration avec vos applis
Source ouverteC'est compliqué

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/guide/pair\303\200Pair.html" "b/\340\252\227\340\253\201/guide/pair\303\200Pair.html" index 6a44405a10..8b7673ad95 100644 --- "a/\340\252\227\340\253\201/guide/pair\303\200Pair.html" +++ "b/\340\252\227\340\253\201/guide/pair\303\200Pair.html" @@ -19,7 +19,7 @@
Skip to content

Systèmes pair à pair

Afin de bien comprendre Constellation, c'est peut-être util de comprendre ce qu'est un système distribué ou pair à pair. Premièrement, ils ne sont pas exactement la même chose. Un système pair à pair, c'est un système qui, contrairement à votre courriel ou à Google, ne nécessite pas de serveur central pour fonctionner. Chouette, n'est-ce pas ?

Les systèmes pair à pair peuvent être décentralisés ou bien distribués. Dans un système décentralisé, le logiciel est trop gros ou compliqué pour fonctionner sur la majorité des téléphones ou ordinateurs des participants au réseau. Donc, certains participants au réseau qui ont les gros ordinateurs nécessaires servent de point contact et de service pour la majorité des autres participants. À la fin, c'est beaucoup comme un système centralisé.

distribuéVsDécentralisé

Au contraire, dans un système distribué, tout les participants sont égaux les un aux autres. Certains peuvent être connectés avec des machines plus puissantes ou avec plus de mémoire, bien sûr, mais tous intéragissent d'égal à égal dans le réseau.

INFO

Constellation n'est pas une chaîne de bloques !

Les systèmes pair à pair ont malheureusement une mauvaise réputation, peut-être parce que la majorité des premiers logiciels populaires étaient des platformes de partage de médias piratées. Ensuite sont arrivé les cryptomonnaies basées sur les chaînes de bloques, qui ont fréquemment bien mérité leur réputation en tant que pyramides de Ponzi et trous noirs énergétiques notoirement inefficaces pour toute application utile.

Donc nous répétons : Constellation est un système distribué de pair en pair, mais pas une chaîne de bloques !

Mais pourquoi pas une chaîne de bloques ?

Premièrement, parce que c'est ben trop cher. Chaque transaction sur une chaîne de bloques comme Éthereum coûte de la fausse argent (cryptomonnaies), que vous devez malheureusement achetter avec de la vraie argent. Et les fluctuations des prix sont bien entendu complètement hors de notre contrôle. Pourquoi créer un système de données distribuées pour améliorer la souveraineté des données pour ensuite devoir payer des personnes anonymes une somme d'argent variable pour le privilège d'écrire à nos propres bases de données ?

Et deuxièmement, c'est complètement inutil. Les chaînes de bloques sont nécessaires pour les cryptomonnaies et leurs transactions financières. Mais nous, on veut partager des données scientifiques. Nous n'avons rien à faire avec de l'argent ou des transactions financières.

Donc oublions tout ça. Constellation fonctionne de manière complètement distribuée, entièrement sur les dispositifs de ses utilisatrices et utilisateurs.

Comment ça fonctionne

Lorsque vous sauvegardez des données sur Constellation, celles-ci sont sauvegardées sur votre appareil local, et y resteront toujours disponibles.

CONSEIL

Si vous sauvegardez vos données sur un système sur le « nuage » comme les documents Google, vous aurez peut-être remarqué que vos données n'apparaissent plus lorsque vous (ou Google !) est hors ligne. L'avantage d'un système local comme Constellation est que vous êtes toujours garanti d'avoir accès à vos données, parce qu'elles demeurent toujours sur votre dispositif.

Le logiciel Constellation recherche également d'autres utilisatrices et utilisateurs du réseau et vous permet d'accéder et de visualiser leurs données. La magie d'un système distribué est qu'il permet aux tièrces personnes de partager, mais pas de modifier, les données des autres. Si vous vivez au Québec et vous partagez vos données scientifiques et avant fermez votre téléphone pour aller dormir, vos données ne seront plus disponible sur le réseau jusqu'à votre réveil, heure de l'est. Mais, si quelqu'un d'autre, disons au Botswana, les a déjà accédées, elles seront automatiquement repartagées et disponibles sur le réseau à partir du nouveau dispositif, toute prêtes pour le réveil de vos collègues de l'Inde au Japon ! Donc, contrairement à un système centralisé, sur Constellation, le plus populaires vos données, le plus disponibles elles seront.

Mais comment empêchons-nous les autres personnes de modifier vos données avant de les partager ? Chaque changement que vous apportez à vos données est accompagné d'une signature que uniquement votre compte peut générer. Si quelqu'un d'autre essaie de modifier vos données, la signature deviendra invalide et les changements frauduleux seront automatiquement rejetés par le réseau.

Au niveau technique

Pour ceux et celles qui ça amuse, Constellation est construit sur bd-orbite, un logiciel de bases de données distribuées, lui-même construit sur libp2p et le Système de fichiers interplanétaire SFIP. Toutes les bases de données sur Constellation sont composées de multiples bases de données orbite, tandis que les fichiers (images, vidéos) sont sauvegardés directement sur SFIP.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/guide/questions.html" "b/\340\252\227\340\253\201/guide/questions.html" index acae6340db..5f17b9a485 100644 --- "a/\340\252\227\340\253\201/guide/questions.html" +++ "b/\340\252\227\340\253\201/guide/questions.html" @@ -19,7 +19,7 @@
Skip to content

Questions et problèmes

Erreurs fréquentes Constellation

Nous répertorions ici les erreurs fréquentes que l'on a rencontrés en utilisant Constellation. Apprenons des maux de tête des autres !

SyntaxError: Unexpected identifier

Assurez-vous d'être sur la plus récente version de Node.js. Si vous utilisez nvm, nvm use stable devrait régler le problème.

LockExistsError: Lock already being held for file: constl/sfip/repo.lock

Vous avez probablement lancé plus d'une instance de Constellation en même temps.

Error: Listener is not ready yet

Vous avez probablement lancé plus d'une instance de Constellation en même temps.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/index.html" "b/\340\252\227\340\253\201/index.html" index 0daad04c62..c2b657415b 100644 --- "a/\340\252\227\340\253\201/index.html" +++ "b/\340\252\227\340\253\201/index.html" @@ -19,7 +19,7 @@
Skip to content

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/ipa/automatisations.html" "b/\340\252\227\340\253\201/ipa/automatisations.html" index b38484edc3..e1a79f542f 100644 --- "a/\340\252\227\340\253\201/ipa/automatisations.html" +++ "b/\340\252\227\340\253\201/ipa/automatisations.html" @@ -216,7 +216,7 @@ type: "programmée"; à: number; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/ipa/bds.html" "b/\340\252\227\340\253\201/ipa/bds.html" index 935782c170..9cc3a1aa81 100644 --- "a/\340\252\227\340\253\201/ipa/bds.html" +++ "b/\340\252\227\340\253\201/ipa/bds.html" @@ -587,7 +587,7 @@ nomBd: string; tableaux: donnéesTableauExportation[]; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/ipa/client.html" "b/\340\252\227\340\253\201/ipa/client.html" index 8bafb34711..5b997ed366 100644 --- "a/\340\252\227\340\253\201/ipa/client.html" +++ "b/\340\252\227\340\253\201/ipa/client.html" @@ -163,7 +163,7 @@ }

Types dispositifs

ts
type structureNomsDispositifs = {
   [idDispositif: string]: { nom?: string; type?: string };
 };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/ipa/favoris.html" "b/\340\252\227\340\253\201/ipa/favoris.html" index 5cb2d588d3..fcc61535c3 100644 --- "a/\340\252\227\340\253\201/ipa/favoris.html" +++ "b/\340\252\227\340\253\201/ipa/favoris.html" @@ -69,7 +69,7 @@ }; type ÉlémentFavorisAvecObjet = ÉlémentFavoris & { idObjet: string };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/ipa/introduction.html" "b/\340\252\227\340\253\201/ipa/introduction.html" index d586f995e1..1c9500f604 100644 --- "a/\340\252\227\340\253\201/ipa/introduction.html" +++ "b/\340\252\227\340\253\201/ipa/introduction.html" @@ -71,7 +71,7 @@ }) </script>

Langues

Constellation est un logiciel multilingue, et tout peut être traduit, y compris vos données, les noms des variables, et aussi votre profil d'utilisatrice. Constellation utilise les codes de langue nuchab'äl pour identifier les langues.

Chiffres

Constellation utilise les systèmes de numération du paquet எண்ணிக்கை pour lire et présenter les numéros en différentes langues.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/ipa/licences.html" "b/\340\252\227\340\253\201/ipa/licences.html" index 659d2757db..4d4d995bb3 100644 --- "a/\340\252\227\340\253\201/ipa/licences.html" +++ "b/\340\252\227\340\253\201/ipa/licences.html" @@ -79,7 +79,7 @@ type droit = "partager" | "adapter" | "usageComercial" | "usagePrivé" | "usageBrevets"; type limitation = "aucuneResponsabilité" | "aucuneGarantie" | "marqueCommerce" | "brevetExclu" | "sousLicence"; type catégorie = "basesDeDonnées" | "artistique" | "codeInformatique" | "autre";

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/ipa/motsClefs.html" "b/\340\252\227\340\253\201/ipa/motsClefs.html" index 8132e9dfb6..a4959b071a 100644 --- "a/\340\252\227\340\253\201/ipa/motsClefs.html" +++ "b/\340\252\227\340\253\201/ipa/motsClefs.html" @@ -133,7 +133,7 @@ langue: "fr", description: "Données hydrologiques" });

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/ipa/nu\303\251es.html" "b/\340\252\227\340\253\201/ipa/nu\303\251es.html" index 8d1beb766e..b059909959 100644 --- "a/\340\252\227\340\253\201/ipa/nu\303\251es.html" +++ "b/\340\252\227\340\253\201/ipa/nu\303\251es.html" @@ -498,7 +498,7 @@ nuée: string; différences: différenceBds[]; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/ipa/profil.html" "b/\340\252\227\340\253\201/ipa/profil.html" index d42e4f1bc4..95984b446c 100644 --- "a/\340\252\227\340\253\201/ipa/profil.html" +++ "b/\340\252\227\340\253\201/ipa/profil.html" @@ -83,7 +83,7 @@ f: x => courriel.value = x }); await fOublierCourriel();

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/ipa/projets.html" "b/\340\252\227\340\253\201/ipa/projets.html" index 6ae543c1ff..598f06c34f 100644 --- "a/\340\252\227\340\253\201/ipa/projets.html" +++ "b/\340\252\227\340\253\201/ipa/projets.html" @@ -354,7 +354,7 @@ nomProjet: string; bds: donnéesBdExportation[]; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/ipa/recherche.html" "b/\340\252\227\340\253\201/ipa/recherche.html" index 11d60413d9..050cd66572 100644 --- "a/\340\252\227\340\253\201/ipa/recherche.html" +++ "b/\340\252\227\340\253\201/ipa/recherche.html" @@ -1181,7 +1181,7 @@ clef?: string; info: T; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/ipa/r\303\250gles.html" "b/\340\252\227\340\253\201/ipa/r\303\250gles.html" index 000061d1a9..100b4b9d6b 100644 --- "a/\340\252\227\340\253\201/ipa/r\303\250gles.html" +++ "b/\340\252\227\340\253\201/ipa/r\303\250gles.html" @@ -179,7 +179,7 @@ règle: règleColonne<règleBornes<détailsRègleBornesDynamiqueVariable>>; détails: "variableBornesNonPrésente"; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/ipa/r\303\251seau.html" "b/\340\252\227\340\253\201/ipa/r\303\251seau.html" index b7605634ea..cd46944abf 100644 --- "a/\340\252\227\340\253\201/ipa/r\303\251seau.html" +++ "b/\340\252\227\340\253\201/ipa/r\303\251seau.html" @@ -266,7 +266,7 @@ vuÀ?: number; })[]; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/ipa/tableaux.html" "b/\340\252\227\340\253\201/ipa/tableaux.html" index b23b5c93d5..fb42594f70 100644 --- "a/\340\252\227\340\253\201/ipa/tableaux.html" +++ "b/\340\252\227\340\253\201/ipa/tableaux.html" @@ -355,7 +355,7 @@ données: élémentBdListeDonnées[]; fichiersSFIP: Set<string>; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\252\227\340\253\201/ipa/variables.html" "b/\340\252\227\340\253\201/ipa/variables.html" index 6ab4eb0a72..643fce2bd4 100644 --- "a/\340\252\227\340\253\201/ipa/variables.html" +++ "b/\340\252\227\340\253\201/ipa/variables.html" @@ -301,7 +301,7 @@ | "audio" | "image" | "fichier";

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\256\244/avanc\303\251/applications/internet.html" "b/\340\256\244/avanc\303\251/applications/internet.html" index f3e864386c..47765581e7 100644 --- "a/\340\256\244/avanc\303\251/applications/internet.html" +++ "b/\340\256\244/avanc\303\251/applications/internet.html" @@ -61,7 +61,7 @@ <template> <h1>Mon compte : {{ idCompte }}</h1> </template>

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/avanc\303\251/applications/introduction.html" "b/\340\256\244/avanc\303\251/applications/introduction.html" index 3195a90292..0503fa2106 100644 --- "a/\340\256\244/avanc\303\251/applications/introduction.html" +++ "b/\340\256\244/avanc\303\251/applications/introduction.html" @@ -19,7 +19,7 @@
Skip to content

Développement d'applis

Vous pouvez utiliser l'IPA TypeScript de Constellation afin de développer vos propres applis de science citoyenne ou autre sur le réseau Constellation.

Vous pouvez ainsi développer des applications en tant que sites web statiques, de même que des applications Électron.

CONSEIL

Si vous cherchez à créer un appli de science citoyenne, Constellation peut la générer automatiquement pour vous ! Il suffit d'ouvrir la nuée dans l'interface de Constellation et choisir l'option de génération de code. Voir la section collecte de données pour plus d'informations.

Projets utilisant Constellation

Si vous développez un projet utilisant Constellation, contactez-nous (ou, encore mieux, ajoutez-le vous-même) et nous vous donnerons un peu de publicité ici.

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/avanc\303\251/applications/nu\303\251es.html" "b/\340\256\244/avanc\303\251/applications/nu\303\251es.html" index a276fe84ce..1332bb496c 100644 --- "a/\340\256\244/avanc\303\251/applications/nu\303\251es.html" +++ "b/\340\256\244/avanc\303\251/applications/nu\303\251es.html" @@ -19,7 +19,7 @@
Skip to content

Nuées de données

L'application la plus fréquente de Constellation dans une application tièrce est sans toute la collection de données distribuées d'un plublique participant à un projet de science citoyenne ou autre. Dans ce cas, les nuées seront indispensables.

Cette section offre des instructions détaillées sur l'utilisation de nuées Constellation dans vos propres projets.

Création de la nuée

Vous devrez, avant tout, créer l'identifiant de la nuée qui regroupera toutes les données de votre projet.

ATTENTION

Prenez soin de créer la nuée sur le compte Constellation que vous entendez utiliser pour gérer votre projet. Celui-ci aura ainsi l'autorisation de modifier la nuée par la suite.

Génération du code

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/avanc\303\251/applications/\303\251lectron.html" "b/\340\256\244/avanc\303\251/applications/\303\251lectron.html" index 1dca59fc0a..f45ceefc92 100644 --- "a/\340\256\244/avanc\303\251/applications/\303\251lectron.html" +++ "b/\340\256\244/avanc\303\251/applications/\303\251lectron.html" @@ -116,7 +116,7 @@ port.value = undefined } </script>

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/avanc\303\251/autresLangages/introduction.html" "b/\340\256\244/avanc\303\251/autresLangages/introduction.html" index 7820a3432c..183a3b5db9 100644 --- "a/\340\256\244/avanc\303\251/autresLangages/introduction.html" +++ "b/\340\256\244/avanc\303\251/autresLangages/introduction.html" @@ -19,7 +19,7 @@
Skip to content

Autres langages

Constellation a beau être un projet JavaScript, il est possible d'accéder au réseau distribué à partir de clients dans d'autres langages informatiques. Des clients sont disposibles dans les langages suivants :

  • Python : Fonctionnel
  • Julia : Fonctionnel
  • R : Fonctionnel
  • Autres langages : Si vous développez un client Constellation dans un autre langage, contactez-nous et nous l'annoncerons ici.

Tous ces clients fonctionnent en ouvrant un serveur WS Constellation local sur votre machine. Le client Python, Julia ou autre communiquera ensuite avec ce serveur local par messages WS et vous permettent d'utiliser Constellation dans le langage de votre choix.

Vous devrez donc toujours installer Constellation sur votre machine avant de pouvoir utiliser ces clients. La manière la plus facile est d'installer l'interface graphique et puis d'activer le serveur WS sur la page de configuration. Alternativement, vous pouvez installer le serveur WS de Constellation sans interface graphique. Vous aurez besoin de Node.js et de pnpm.

Si nécessaire, installer pnpm :

sh
$ npm add -g pnpm

Et puis installer Constellation :

sh
$ pnpm global add -g @constl/ipa @constl/serveur

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/avanc\303\251/autresLangages/julia.html" "b/\340\256\244/avanc\303\251/autresLangages/julia.html" index ab084dff76..867dc06a29 100644 --- "a/\340\256\244/avanc\303\251/autresLangages/julia.html" +++ "b/\340\256\244/avanc\303\251/autresLangages/julia.html" @@ -168,7 +168,7 @@ donnéesRéseau = Constellation.obtDonnéesTableauNuée(client, idNuée, clefTableau, ["fr"]) end end

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/avanc\303\251/autresLangages/nouveauxLangages.html" "b/\340\256\244/avanc\303\251/autresLangages/nouveauxLangages.html" index 663a2c41e3..636a91aa65 100644 --- "a/\340\256\244/avanc\303\251/autresLangages/nouveauxLangages.html" +++ "b/\340\256\244/avanc\303\251/autresLangages/nouveauxLangages.html" @@ -116,7 +116,7 @@ "id": "1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed", "erreur": "Message d'erreur tel que rencontré par le serveur." }

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/avanc\303\251/autresLangages/n\305\223udLocal.html" "b/\340\256\244/avanc\303\251/autresLangages/n\305\223udLocal.html" index 4567c618ae..e53f07324f 100644 --- "a/\340\256\244/avanc\303\251/autresLangages/n\305\223udLocal.html" +++ "b/\340\256\244/avanc\303\251/autresLangages/n\305\223udLocal.html" @@ -68,7 +68,7 @@ // Lorsqu'on a fini : fermerClient();

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/avanc\303\251/autresLangages/python.html" "b/\340\256\244/avanc\303\251/autresLangages/python.html" index 69b5633959..9df3719f82 100644 --- "a/\340\256\244/avanc\303\251/autresLangages/python.html" +++ "b/\340\256\244/avanc\303\251/autresLangages/python.html" @@ -234,7 +234,7 @@ trio.run(principale)

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/avanc\303\251/autresLangages/r.html" "b/\340\256\244/avanc\303\251/autresLangages/r.html" index 9b49a2bc09..9de0e94585 100644 --- "a/\340\256\244/avanc\303\251/autresLangages/r.html" +++ "b/\340\256\244/avanc\303\251/autresLangages/r.html" @@ -143,7 +143,7 @@ }, port = port )

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/exemples/cr\303\251ationCompte.html" "b/\340\256\244/exemples/cr\303\251ationCompte.html" index f8be872297..906bb04e2d 100644 --- "a/\340\256\244/exemples/cr\303\251ationCompte.html" +++ "b/\340\256\244/exemples/cr\303\251ationCompte.html" @@ -12,14 +12,14 @@ - + -
Skip to content

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- +
Skip to content

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

+ \ No newline at end of file diff --git "a/\340\256\244/exemples/diffusion.html" "b/\340\256\244/exemples/diffusion.html" index 3acabf8b75..7e3f8783f5 100644 --- "a/\340\256\244/exemples/diffusion.html" +++ "b/\340\256\244/exemples/diffusion.html" @@ -19,7 +19,7 @@
Skip to content

Diffusion de données

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

Admettons-le, nous avons tous été coupables du « je-le-partagerai-plus-tardisme ». On a récolté une jolie base de données, et on va la partager dans un dépôt de données comme Zenodo, mais plus tard, quand elle sera bien propre et netoyée...et puis ensuite on publie, on répond aux réviseurs, et on oublie notre base de données qu'on a toujours pas partagée.

Constellation peut être utilisée afin de partager vos données existantes en temps réel, comme ça vous n'avez plus aucune excuse de ne pas les partager, même s'ils ne sont pas « finales ». Si les dépôts de données sont des versions fossilisées de vos données, Constellation est un dépôt pour les données vivantes.

Vous pouvez connecter Constellation à vos logiciels d'entrée de données favoris, et tout se mettra à jour automatiquement. En même temps, les personnes qui s'intéressent à vos données peuvent y accéder et les utiliser en temps réel.

[Schéma diffusion données à inclure]

Importation

Nous pouvons importer nos données à partir d'un fichier Excel, LibreOffice, csv ou autre. Il suffit de créer une base de données et puis de choisir « importer ».

[Image à inclure]

Automatisation

Bon c'était bien chouette, non ? Mais si vous faites des modifications à vos données, c'est un peu ennuyant de toujours devoir les ré-importer. C'est pour ça que nous avons des automatisations.

CONSEIL

Vous pouvez configurer les automatisations pour quelles s'exécutent soit (1) lorsque les données sont modifiées, (2) selon un calendrier fixe, ou (3) uniquement lorsque vous cliquez sur le bouton « actualiser » sur l'interface Constellation.

Nous allons configurer l'importation pour qu'elle actualise les données chaque fois que le document LibreOffice est modifié. Tant que Constellation est ouverte sur votre ordinateur, vos données seront automatiquement mises à jour sur le réseau !

[Image à inclure]

Partage

Vous pouvez maintenant partager les données. Il suffit de copier l'identifiant unique de la base de données de l'interface Constellation et puis de la partager avec tous vos admirateurs.

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/exemples/mesDonn\303\251es.html" "b/\340\256\244/exemples/mesDonn\303\251es.html" index 0efe846726..5d41b4c4ce 100644 --- "a/\340\256\244/exemples/mesDonn\303\251es.html" +++ "b/\340\256\244/exemples/mesDonn\303\251es.html" @@ -19,7 +19,7 @@
Skip to content

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/exemples/monCompte.html" "b/\340\256\244/exemples/monCompte.html" index a1ca526603..00efb17686 100644 --- "a/\340\256\244/exemples/monCompte.html" +++ "b/\340\256\244/exemples/monCompte.html" @@ -19,7 +19,7 @@
Skip to content

Gestion de compte

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

Modification de vos informations

Gestion des dispositifs

Ajouter un dispositif

Effacer un dispositif

Supprimer son compte

Vérification connexion

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/exemples/scienceCitoyenne.html" "b/\340\256\244/exemples/scienceCitoyenne.html" index f18d6539bc..3188107dce 100644 --- "a/\340\256\244/exemples/scienceCitoyenne.html" +++ "b/\340\256\244/exemples/scienceCitoyenne.html" @@ -137,7 +137,7 @@ client, idNuée, clefTableau, ["fr", "de"] ) end

:::

Pour plus d'information, voir la section sur les autres langages.

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/guide/concepts.html" "b/\340\256\244/guide/concepts.html" index ac945b81b1..1013ef6534 100644 --- "a/\340\256\244/guide/concepts.html" +++ "b/\340\256\244/guide/concepts.html" @@ -19,7 +19,7 @@
Skip to content

Terminologie Constellation

Constellation ressemble beaucoup à un tableau LibreOffice ou Excel, mais avec quelques fonctionnalités en plus.

Client

Le client est le point central de Constellation. Chaque compte correspond à un client Constellation.

Profil

Le profil de Constellation organise les information du compte d'utilisateur.

Mots-clefs

Les mots-clefs servent à indexer les bases de données.

Tableaux

Un tableaux est comme une feuille d'un document Excel, LibreOffice ou Google Sheets.

tableaux :---: Exemple d'un tableau Constellation. Chaque tableau a différentes colonnes, chacune associée à une variable.

Variables

Chaque colonne d'un tableau est associée à une variable. Les variables peuvent être de différents types (texte, numérique, dates, photos, audios...).

Bases de données

L'unité centrale de Constellation est la base de données, qui regroupe un ou plusieurs tableaux.

bds :---: Une base de données Constellation. Conceptuellement identiques à un document Excel, LibreOffice ou Google Sheets, les bases de données Constellation incluent un ou plusieurs tableaux.

Projet

Un projet regroupe plusieurs bases de données traitant du même sujet.

projet :---: Exemple d'un projet Constellation. Les projets permettent de retrouver rapidement des données connexes (par exemple, hydrologie de l'Amérique latine, météorologie du Guatemala, pédologie de l'Afrique, ...). Une base de données peut être ajoutée à de multiples projets !

Réseau

Le réseau vous permet d'accéder aux informations des autres membres connectés.

réseau :---: Le réseau Constellation. Constellation forme un réseau de personnes qui se connaissent et se font confiance (ou pas !) avec un modèle de confiance transitive.

Recherche

Vous pouvez également rechercher les données qui vous intéressent.

recherche :---: Une recherche Constellation. Le logiciel commencera avec vos contacts immédiats et recherchera de plus en plus loin si nécessaire.

Nuée

Les nuées vous permettent de créer des projets de science citoyenne et de regrouper toutes les contributions de vos participants à la même place. Elles permettent de combiner des données de différents utilisateurs, un peu comme le ferait une base de données commune dans un système centralisé.

bdCentraliséé :---: Exemple d'une base de données centralisée. Un serveur central contrôle l'accès à une seule base de données dans laquelle les données de toutes les utilisatrices sont écrites. bdDistribuée :---: Exemple d'une nuée Constellation. Les données de chaque utilisatrice sont écrites sur leur propre base de données. Constellation se charge de toutes les retrouver et de les combiner au moment de la visualisation.

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/guide/installation.html" "b/\340\256\244/guide/installation.html" index 6fe92b2624..6c6bb38a69 100644 --- "a/\340\256\244/guide/installation.html" +++ "b/\340\256\244/guide/installation.html" @@ -19,7 +19,7 @@
Skip to content

Installation

Constellation peut être utilisé soit

Il y a plusieurs avantages à installer Constellation sur votre ordinateur plutôt que d'utiliser l'appli en ligne. Premièrement, vous aurez accès à plus de mémoire, l'appli en ligne étant limitée par la mémoire de votre navigateur. En plus, la version installée offre plus de fonctionnalités, tel le partage automatique de vos données à base d'un fichier local et la sauvegarde automatique des données Constellation sur votre ordinateur.

FonctionnalitéConstellation navigateurConstellation installée
Exportation manuelle
Exportation automatisée
Importation manuelle (URL ou fichier)
Importation automatisée (URL)
Importation automatisée (fichier)
Limite de mémoireNavigateurSystème
Connectivité TCP
Connectivité WebRTC
Connectivité WebTransport

Autres langages

Si vous préférez travailler avec du code, qu'il s'agisse de JavaScript, Python, Julia ou R, il vous est possible d'utiliser Constellation dans ces langages. Voir notre guide avancé pour démarrer.

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/guide/introduction.html" "b/\340\256\244/guide/introduction.html" index c2119f42bb..bb979076d9 100644 --- "a/\340\256\244/guide/introduction.html" +++ "b/\340\256\244/guide/introduction.html" @@ -19,7 +19,7 @@
Skip to content

அறிமுகம்

விண்மீன் விநியோகிக்கப்பட்ட தரவுத்தளங்களுக்காக ஒரு மென்பொருள் ஆகும். மையக்கப்பட்ட வழங்கி இல்லாமல் உங்கள் அறிவியல் தரவுகளை சேர்ந்து விநியோகியுங்கள்.

Qu'est-ce qu'un système distribué ?

Dans une système distribué, il n'y a pas de serveur qui contrôle les interactions entres utilisateurs. Les personnes participant au réseau communiquent donc directement entre elles. C'est plus résilient et plus amusant !

systèmeCentralisé

Pourquoi un logiciel local ?

Constellation est un logiciel local qui garde toutes vos données sur votre propre dispositif (comme Excel ou LibreOffice). Vous n'êtes donc pas à la mercie du Wifi ou de Google pour pouvoir accéder à vos propres données. Cependant, Constellation vous permet aussi de collaborer en ligne et de partager (et syncroniser) vos données en temps réel (comme les documents Google). C'est le meilleur des deux mondes !

AvantagesApplis intallées (p.ex., Excel)Applis nuage (p.ex., Google)Applis locales
Rapidité
Sans dépendance Internet
Sans enfermerment propriétaire
Collaboration
Autorisations d'équipe
Sauvegarde en ligne
Mises à jour en directe
Note : Tableau adapté de local-first-web de Herb Caudill.

Philosophie générale

La philosophie de Constellation se résume en quelques grandes lignes :

Accès libre : Les données scientifiques devraient être ouvertes et accessibles. Toutes les données partagées sur Constellation sont publiques. (Si vous travaillez en recherche clinique, ce n'est peut-être pas le logiciel pour vous.)

Source ouverte : Tous les logiciels de l'univers Constellation sont distribués sous licence libre.

Indépendance : Constellation est un logiciel ouvert, et les données sont sauvegardées sur les dispositifs des utilisatrices et utilisateurs. Les communautés gardent donc le contrôle sur leurs propres données en tout temps.

Accessible et multilingue : Le monde est une place multilingue ; le monde de la recherche, lui, ne l'est malheureusement pas autant. Beaucoup de données sont collectées dans des régions du monde et ensuite publiées dans des langues que les personnes qui les ont fournies ne parlent pas. Cependant, la structure des logiciels que nous utilisons façonne notre pensée, pour le mieux ou pour le pire. Beaucoup de logiciels de bases de données (Excel, MongoDB, etc.) ne permettent qu'un seul nom par colonne ou champ ; nous sommes ainsi entraînés à entrer des données monolingues. Nous avons donc conceptualisé Constellation afin qu'elle guide ses utilisateurs et utilisatrices vers une meilleure inclusion. Chaque objet en Constellation, soit-ce votre profil, une variable ou une base de données, peut être nommé en autant de langues que vous voulez. Vos données apparaîtront donc dans la langue préférée de chacune de vos utilisatrices finales.

Comment ça se compare à ... ?

FonctionnalitéConstellationExcelLibreOfficeDocs GoogleBD sur serveur (MongoDB, SQL)
Collaboration simultanée
Fonctionne hors ligne
Photos, vidéos
Contrôle local des donnéesSi le serveur vous appartient
Intégration avec vos applis
Source ouverteC'est compliqué

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/guide/pair\303\200Pair.html" "b/\340\256\244/guide/pair\303\200Pair.html" index e4f132bf8f..ad34f358e1 100644 --- "a/\340\256\244/guide/pair\303\200Pair.html" +++ "b/\340\256\244/guide/pair\303\200Pair.html" @@ -19,7 +19,7 @@
Skip to content

Systèmes pair à pair

Afin de bien comprendre Constellation, c'est peut-être util de comprendre ce qu'est un système distribué ou pair à pair. Premièrement, ils ne sont pas exactement la même chose. Un système pair à pair, c'est un système qui, contrairement à votre courriel ou à Google, ne nécessite pas de serveur central pour fonctionner. Chouette, n'est-ce pas ?

Les systèmes pair à pair peuvent être décentralisés ou bien distribués. Dans un système décentralisé, le logiciel est trop gros ou compliqué pour fonctionner sur la majorité des téléphones ou ordinateurs des participants au réseau. Donc, certains participants au réseau qui ont les gros ordinateurs nécessaires servent de point contact et de service pour la majorité des autres participants. À la fin, c'est beaucoup comme un système centralisé.

distribuéVsDécentralisé

Au contraire, dans un système distribué, tout les participants sont égaux les un aux autres. Certains peuvent être connectés avec des machines plus puissantes ou avec plus de mémoire, bien sûr, mais tous intéragissent d'égal à égal dans le réseau.

INFO

Constellation n'est pas une chaîne de bloques !

Les systèmes pair à pair ont malheureusement une mauvaise réputation, peut-être parce que la majorité des premiers logiciels populaires étaient des platformes de partage de médias piratées. Ensuite sont arrivé les cryptomonnaies basées sur les chaînes de bloques, qui ont fréquemment bien mérité leur réputation en tant que pyramides de Ponzi et trous noirs énergétiques notoirement inefficaces pour toute application utile.

Donc nous répétons : Constellation est un système distribué de pair en pair, mais pas une chaîne de bloques !

Mais pourquoi pas une chaîne de bloques ?

Premièrement, parce que c'est ben trop cher. Chaque transaction sur une chaîne de bloques comme Éthereum coûte de la fausse argent (cryptomonnaies), que vous devez malheureusement achetter avec de la vraie argent. Et les fluctuations des prix sont bien entendu complètement hors de notre contrôle. Pourquoi créer un système de données distribuées pour améliorer la souveraineté des données pour ensuite devoir payer des personnes anonymes une somme d'argent variable pour le privilège d'écrire à nos propres bases de données ?

Et deuxièmement, c'est complètement inutil. Les chaînes de bloques sont nécessaires pour les cryptomonnaies et leurs transactions financières. Mais nous, on veut partager des données scientifiques. Nous n'avons rien à faire avec de l'argent ou des transactions financières.

Donc oublions tout ça. Constellation fonctionne de manière complètement distribuée, entièrement sur les dispositifs de ses utilisatrices et utilisateurs.

Comment ça fonctionne

Lorsque vous sauvegardez des données sur Constellation, celles-ci sont sauvegardées sur votre appareil local, et y resteront toujours disponibles.

CONSEIL

Si vous sauvegardez vos données sur un système sur le « nuage » comme les documents Google, vous aurez peut-être remarqué que vos données n'apparaissent plus lorsque vous (ou Google !) est hors ligne. L'avantage d'un système local comme Constellation est que vous êtes toujours garanti d'avoir accès à vos données, parce qu'elles demeurent toujours sur votre dispositif.

Le logiciel Constellation recherche également d'autres utilisatrices et utilisateurs du réseau et vous permet d'accéder et de visualiser leurs données. La magie d'un système distribué est qu'il permet aux tièrces personnes de partager, mais pas de modifier, les données des autres. Si vous vivez au Québec et vous partagez vos données scientifiques et avant fermez votre téléphone pour aller dormir, vos données ne seront plus disponible sur le réseau jusqu'à votre réveil, heure de l'est. Mais, si quelqu'un d'autre, disons au Botswana, les a déjà accédées, elles seront automatiquement repartagées et disponibles sur le réseau à partir du nouveau dispositif, toute prêtes pour le réveil de vos collègues de l'Inde au Japon ! Donc, contrairement à un système centralisé, sur Constellation, le plus populaires vos données, le plus disponibles elles seront.

Mais comment empêchons-nous les autres personnes de modifier vos données avant de les partager ? Chaque changement que vous apportez à vos données est accompagné d'une signature que uniquement votre compte peut générer. Si quelqu'un d'autre essaie de modifier vos données, la signature deviendra invalide et les changements frauduleux seront automatiquement rejetés par le réseau.

Au niveau technique

Pour ceux et celles qui ça amuse, Constellation est construit sur bd-orbite, un logiciel de bases de données distribuées, lui-même construit sur libp2p et le Système de fichiers interplanétaire SFIP. Toutes les bases de données sur Constellation sont composées de multiples bases de données orbite, tandis que les fichiers (images, vidéos) sont sauvegardés directement sur SFIP.

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/guide/questions.html" "b/\340\256\244/guide/questions.html" index e7677c9eb9..084f48986e 100644 --- "a/\340\256\244/guide/questions.html" +++ "b/\340\256\244/guide/questions.html" @@ -19,7 +19,7 @@
Skip to content

Questions et problèmes

Erreurs fréquentes Constellation

Nous répertorions ici les erreurs fréquentes que l'on a rencontrés en utilisant Constellation. Apprenons des maux de tête des autres !

SyntaxError: Unexpected identifier

Assurez-vous d'être sur la plus récente version de Node.js. Si vous utilisez nvm, nvm use stable devrait régler le problème.

LockExistsError: Lock already being held for file: constl/sfip/repo.lock

Vous avez probablement lancé plus d'une instance de Constellation en même temps.

Error: Listener is not ready yet

Vous avez probablement lancé plus d'une instance de Constellation en même temps.

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/index.html" "b/\340\256\244/index.html" index 660185463e..d95669eb13 100644 --- "a/\340\256\244/index.html" +++ "b/\340\256\244/index.html" @@ -19,7 +19,7 @@
Skip to content

விண்மீன்

அறிவியல் தரவுகளுக்காக விநியோகிக்கப்பட்ட தரவுத்தள அமைப்பு

உங்கள் ஆறிவியல் தரவுகளை திறந்த சவமுரிமை பிணையத்தில் சுலபமாக சேருங்கள் மற்றும் பகிருங்கள். விண்மீன் மூலமாக அறிவியல் புலத்தில் வெளிப்படைத்தன்மையையும் தரவு இறையாண்மையையும் மேம்படுத்துங்கள்.

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/ipa/automatisations.html" "b/\340\256\244/ipa/automatisations.html" index 8278354ce9..7dd23081dd 100644 --- "a/\340\256\244/ipa/automatisations.html" +++ "b/\340\256\244/ipa/automatisations.html" @@ -216,7 +216,7 @@ type: "programmée"; à: number; }

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/ipa/bds.html" "b/\340\256\244/ipa/bds.html" index 0a024377d2..a5bb34a641 100644 --- "a/\340\256\244/ipa/bds.html" +++ "b/\340\256\244/ipa/bds.html" @@ -587,7 +587,7 @@ nomBd: string; tableaux: donnéesTableauExportation[]; };

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/ipa/client.html" "b/\340\256\244/ipa/client.html" index 39011b0c0f..66eb68c1be 100644 --- "a/\340\256\244/ipa/client.html" +++ "b/\340\256\244/ipa/client.html" @@ -163,7 +163,7 @@ }

Types dispositifs

ts
type structureNomsDispositifs = {
   [idDispositif: string]: { nom?: string; type?: string };
 };

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/ipa/favoris.html" "b/\340\256\244/ipa/favoris.html" index 675f3120e7..d5a27df9f6 100644 --- "a/\340\256\244/ipa/favoris.html" +++ "b/\340\256\244/ipa/favoris.html" @@ -69,7 +69,7 @@ }; type ÉlémentFavorisAvecObjet = ÉlémentFavoris & { idObjet: string };

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/ipa/introduction.html" "b/\340\256\244/ipa/introduction.html" index 89b3a60364..c5eca19276 100644 --- "a/\340\256\244/ipa/introduction.html" +++ "b/\340\256\244/ipa/introduction.html" @@ -71,7 +71,7 @@ }) </script>

Langues

Constellation est un logiciel multilingue, et tout peut être traduit, y compris vos données, les noms des variables, et aussi votre profil d'utilisatrice. Constellation utilise les codes de langue nuchab'äl pour identifier les langues.

Chiffres

Constellation utilise les systèmes de numération du paquet எண்ணிக்கை pour lire et présenter les numéros en différentes langues.

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/ipa/licences.html" "b/\340\256\244/ipa/licences.html" index 9ba6cfec92..e7883c9758 100644 --- "a/\340\256\244/ipa/licences.html" +++ "b/\340\256\244/ipa/licences.html" @@ -79,7 +79,7 @@ type droit = "partager" | "adapter" | "usageComercial" | "usagePrivé" | "usageBrevets"; type limitation = "aucuneResponsabilité" | "aucuneGarantie" | "marqueCommerce" | "brevetExclu" | "sousLicence"; type catégorie = "basesDeDonnées" | "artistique" | "codeInformatique" | "autre";

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/ipa/motsClefs.html" "b/\340\256\244/ipa/motsClefs.html" index 12ed39a3db..0da2bc0b80 100644 --- "a/\340\256\244/ipa/motsClefs.html" +++ "b/\340\256\244/ipa/motsClefs.html" @@ -133,7 +133,7 @@ langue: "fr", description: "Données hydrologiques" });

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/ipa/nu\303\251es.html" "b/\340\256\244/ipa/nu\303\251es.html" index aa7d033b28..745e20b2ed 100644 --- "a/\340\256\244/ipa/nu\303\251es.html" +++ "b/\340\256\244/ipa/nu\303\251es.html" @@ -498,7 +498,7 @@ nuée: string; différences: différenceBds[]; };

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/ipa/profil.html" "b/\340\256\244/ipa/profil.html" index 5ab975f5a3..0ae0e2da4e 100644 --- "a/\340\256\244/ipa/profil.html" +++ "b/\340\256\244/ipa/profil.html" @@ -83,7 +83,7 @@ f: x => courriel.value = x }); await fOublierCourriel();

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/ipa/projets.html" "b/\340\256\244/ipa/projets.html" index 6d21ae6929..4a5c906456 100644 --- "a/\340\256\244/ipa/projets.html" +++ "b/\340\256\244/ipa/projets.html" @@ -354,7 +354,7 @@ nomProjet: string; bds: donnéesBdExportation[]; }

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/ipa/recherche.html" "b/\340\256\244/ipa/recherche.html" index 8b20909583..188a03eaa9 100644 --- "a/\340\256\244/ipa/recherche.html" +++ "b/\340\256\244/ipa/recherche.html" @@ -1181,7 +1181,7 @@ clef?: string; info: T; }

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/ipa/r\303\250gles.html" "b/\340\256\244/ipa/r\303\250gles.html" index 7e7d264609..19d03f6e3e 100644 --- "a/\340\256\244/ipa/r\303\250gles.html" +++ "b/\340\256\244/ipa/r\303\250gles.html" @@ -179,7 +179,7 @@ règle: règleColonne<règleBornes<détailsRègleBornesDynamiqueVariable>>; détails: "variableBornesNonPrésente"; };

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/ipa/r\303\251seau.html" "b/\340\256\244/ipa/r\303\251seau.html" index 76649e2915..0febb2b3ee 100644 --- "a/\340\256\244/ipa/r\303\251seau.html" +++ "b/\340\256\244/ipa/r\303\251seau.html" @@ -266,7 +266,7 @@ vuÀ?: number; })[]; }

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/ipa/tableaux.html" "b/\340\256\244/ipa/tableaux.html" index 878c1a3042..77e0685739 100644 --- "a/\340\256\244/ipa/tableaux.html" +++ "b/\340\256\244/ipa/tableaux.html" @@ -355,7 +355,7 @@ données: élémentBdListeDonnées[]; fichiersSFIP: Set<string>; };

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\256\244/ipa/variables.html" "b/\340\256\244/ipa/variables.html" index 4933ac17e5..d86e613990 100644 --- "a/\340\256\244/ipa/variables.html" +++ "b/\340\256\244/ipa/variables.html" @@ -301,7 +301,7 @@ | "audio" | "image" | "fichier";

விண்மீன் பொது ஜிஎன்யூ அஃபெரோ ௩.௦ என்று உரிமத்தில் கிடைக்கும்

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/avanc\303\251/applications/internet.html" "b/\340\260\244\340\261\206/avanc\303\251/applications/internet.html" index f9116278b7..b569bbe197 100644 --- "a/\340\260\244\340\261\206/avanc\303\251/applications/internet.html" +++ "b/\340\260\244\340\261\206/avanc\303\251/applications/internet.html" @@ -61,7 +61,7 @@ <template> <h1>Mon compte : {{ idCompte }}</h1> </template>

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/avanc\303\251/applications/introduction.html" "b/\340\260\244\340\261\206/avanc\303\251/applications/introduction.html" index f955e6f108..e54745b5bc 100644 --- "a/\340\260\244\340\261\206/avanc\303\251/applications/introduction.html" +++ "b/\340\260\244\340\261\206/avanc\303\251/applications/introduction.html" @@ -19,7 +19,7 @@
Skip to content

Développement d'applis

Vous pouvez utiliser l'IPA TypeScript de Constellation afin de développer vos propres applis de science citoyenne ou autre sur le réseau Constellation.

Vous pouvez ainsi développer des applications en tant que sites web statiques, de même que des applications Électron.

CONSEIL

Si vous cherchez à créer un appli de science citoyenne, Constellation peut la générer automatiquement pour vous ! Il suffit d'ouvrir la nuée dans l'interface de Constellation et choisir l'option de génération de code. Voir la section collecte de données pour plus d'informations.

Projets utilisant Constellation

Si vous développez un projet utilisant Constellation, contactez-nous (ou, encore mieux, ajoutez-le vous-même) et nous vous donnerons un peu de publicité ici.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/avanc\303\251/applications/nu\303\251es.html" "b/\340\260\244\340\261\206/avanc\303\251/applications/nu\303\251es.html" index 80991fb781..8afe3204de 100644 --- "a/\340\260\244\340\261\206/avanc\303\251/applications/nu\303\251es.html" +++ "b/\340\260\244\340\261\206/avanc\303\251/applications/nu\303\251es.html" @@ -19,7 +19,7 @@
Skip to content

Nuées de données

L'application la plus fréquente de Constellation dans une application tièrce est sans toute la collection de données distribuées d'un plublique participant à un projet de science citoyenne ou autre. Dans ce cas, les nuées seront indispensables.

Cette section offre des instructions détaillées sur l'utilisation de nuées Constellation dans vos propres projets.

Création de la nuée

Vous devrez, avant tout, créer l'identifiant de la nuée qui regroupera toutes les données de votre projet.

ATTENTION

Prenez soin de créer la nuée sur le compte Constellation que vous entendez utiliser pour gérer votre projet. Celui-ci aura ainsi l'autorisation de modifier la nuée par la suite.

Génération du code

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/avanc\303\251/applications/\303\251lectron.html" "b/\340\260\244\340\261\206/avanc\303\251/applications/\303\251lectron.html" index 3fb0f60a4e..c5a63a0b7c 100644 --- "a/\340\260\244\340\261\206/avanc\303\251/applications/\303\251lectron.html" +++ "b/\340\260\244\340\261\206/avanc\303\251/applications/\303\251lectron.html" @@ -116,7 +116,7 @@ port.value = undefined } </script>

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/avanc\303\251/autresLangages/introduction.html" "b/\340\260\244\340\261\206/avanc\303\251/autresLangages/introduction.html" index f936941cbf..beb74e0380 100644 --- "a/\340\260\244\340\261\206/avanc\303\251/autresLangages/introduction.html" +++ "b/\340\260\244\340\261\206/avanc\303\251/autresLangages/introduction.html" @@ -19,7 +19,7 @@
Skip to content

Autres langages

Constellation a beau être un projet JavaScript, il est possible d'accéder au réseau distribué à partir de clients dans d'autres langages informatiques. Des clients sont disposibles dans les langages suivants :

  • Python : Fonctionnel
  • Julia : Fonctionnel
  • R : Fonctionnel
  • Autres langages : Si vous développez un client Constellation dans un autre langage, contactez-nous et nous l'annoncerons ici.

Tous ces clients fonctionnent en ouvrant un serveur WS Constellation local sur votre machine. Le client Python, Julia ou autre communiquera ensuite avec ce serveur local par messages WS et vous permettent d'utiliser Constellation dans le langage de votre choix.

Vous devrez donc toujours installer Constellation sur votre machine avant de pouvoir utiliser ces clients. La manière la plus facile est d'installer l'interface graphique et puis d'activer le serveur WS sur la page de configuration. Alternativement, vous pouvez installer le serveur WS de Constellation sans interface graphique. Vous aurez besoin de Node.js et de pnpm.

Si nécessaire, installer pnpm :

sh
$ npm add -g pnpm

Et puis installer Constellation :

sh
$ pnpm global add -g @constl/ipa @constl/serveur

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/avanc\303\251/autresLangages/julia.html" "b/\340\260\244\340\261\206/avanc\303\251/autresLangages/julia.html" index dd06b942a8..a7d143569a 100644 --- "a/\340\260\244\340\261\206/avanc\303\251/autresLangages/julia.html" +++ "b/\340\260\244\340\261\206/avanc\303\251/autresLangages/julia.html" @@ -168,7 +168,7 @@ donnéesRéseau = Constellation.obtDonnéesTableauNuée(client, idNuée, clefTableau, ["fr"]) end end

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/avanc\303\251/autresLangages/nouveauxLangages.html" "b/\340\260\244\340\261\206/avanc\303\251/autresLangages/nouveauxLangages.html" index 9580c1e96f..351ec2bda7 100644 --- "a/\340\260\244\340\261\206/avanc\303\251/autresLangages/nouveauxLangages.html" +++ "b/\340\260\244\340\261\206/avanc\303\251/autresLangages/nouveauxLangages.html" @@ -116,7 +116,7 @@ "id": "1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed", "erreur": "Message d'erreur tel que rencontré par le serveur." }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/avanc\303\251/autresLangages/n\305\223udLocal.html" "b/\340\260\244\340\261\206/avanc\303\251/autresLangages/n\305\223udLocal.html" index 3f6ae1e590..22ec0461e1 100644 --- "a/\340\260\244\340\261\206/avanc\303\251/autresLangages/n\305\223udLocal.html" +++ "b/\340\260\244\340\261\206/avanc\303\251/autresLangages/n\305\223udLocal.html" @@ -68,7 +68,7 @@ // Lorsqu'on a fini : fermerClient();

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/avanc\303\251/autresLangages/python.html" "b/\340\260\244\340\261\206/avanc\303\251/autresLangages/python.html" index f8f7ea7325..a90ef48374 100644 --- "a/\340\260\244\340\261\206/avanc\303\251/autresLangages/python.html" +++ "b/\340\260\244\340\261\206/avanc\303\251/autresLangages/python.html" @@ -234,7 +234,7 @@ trio.run(principale)

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/avanc\303\251/autresLangages/r.html" "b/\340\260\244\340\261\206/avanc\303\251/autresLangages/r.html" index 6353363f62..4a66614d83 100644 --- "a/\340\260\244\340\261\206/avanc\303\251/autresLangages/r.html" +++ "b/\340\260\244\340\261\206/avanc\303\251/autresLangages/r.html" @@ -143,7 +143,7 @@ }, port = port )

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/exemples/cr\303\251ationCompte.html" "b/\340\260\244\340\261\206/exemples/cr\303\251ationCompte.html" index 040c5d233c..a477a7c561 100644 --- "a/\340\260\244\340\261\206/exemples/cr\303\251ationCompte.html" +++ "b/\340\260\244\340\261\206/exemples/cr\303\251ationCompte.html" @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/exemples/diffusion.html" "b/\340\260\244\340\261\206/exemples/diffusion.html" index 87731f1f08..db57e501a1 100644 --- "a/\340\260\244\340\261\206/exemples/diffusion.html" +++ "b/\340\260\244\340\261\206/exemples/diffusion.html" @@ -19,7 +19,7 @@
Skip to content

Diffusion de données

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

Admettons-le, nous avons tous été coupables du « je-le-partagerai-plus-tardisme ». On a récolté une jolie base de données, et on va la partager dans un dépôt de données comme Zenodo, mais plus tard, quand elle sera bien propre et netoyée...et puis ensuite on publie, on répond aux réviseurs, et on oublie notre base de données qu'on a toujours pas partagée.

Constellation peut être utilisée afin de partager vos données existantes en temps réel, comme ça vous n'avez plus aucune excuse de ne pas les partager, même s'ils ne sont pas « finales ». Si les dépôts de données sont des versions fossilisées de vos données, Constellation est un dépôt pour les données vivantes.

Vous pouvez connecter Constellation à vos logiciels d'entrée de données favoris, et tout se mettra à jour automatiquement. En même temps, les personnes qui s'intéressent à vos données peuvent y accéder et les utiliser en temps réel.

[Schéma diffusion données à inclure]

Importation

Nous pouvons importer nos données à partir d'un fichier Excel, LibreOffice, csv ou autre. Il suffit de créer une base de données et puis de choisir « importer ».

[Image à inclure]

Automatisation

Bon c'était bien chouette, non ? Mais si vous faites des modifications à vos données, c'est un peu ennuyant de toujours devoir les ré-importer. C'est pour ça que nous avons des automatisations.

CONSEIL

Vous pouvez configurer les automatisations pour quelles s'exécutent soit (1) lorsque les données sont modifiées, (2) selon un calendrier fixe, ou (3) uniquement lorsque vous cliquez sur le bouton « actualiser » sur l'interface Constellation.

Nous allons configurer l'importation pour qu'elle actualise les données chaque fois que le document LibreOffice est modifié. Tant que Constellation est ouverte sur votre ordinateur, vos données seront automatiquement mises à jour sur le réseau !

[Image à inclure]

Partage

Vous pouvez maintenant partager les données. Il suffit de copier l'identifiant unique de la base de données de l'interface Constellation et puis de la partager avec tous vos admirateurs.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/exemples/mesDonn\303\251es.html" "b/\340\260\244\340\261\206/exemples/mesDonn\303\251es.html" index a9d2e45e85..8f52f78baf 100644 --- "a/\340\260\244\340\261\206/exemples/mesDonn\303\251es.html" +++ "b/\340\260\244\340\261\206/exemples/mesDonn\303\251es.html" @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/exemples/monCompte.html" "b/\340\260\244\340\261\206/exemples/monCompte.html" index 3fc4c055f7..977494dcdb 100644 --- "a/\340\260\244\340\261\206/exemples/monCompte.html" +++ "b/\340\260\244\340\261\206/exemples/monCompte.html" @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/exemples/scienceCitoyenne.html" "b/\340\260\244\340\261\206/exemples/scienceCitoyenne.html" index 34d49c400c..0ca5bbcb14 100644 --- "a/\340\260\244\340\261\206/exemples/scienceCitoyenne.html" +++ "b/\340\260\244\340\261\206/exemples/scienceCitoyenne.html" @@ -137,7 +137,7 @@ client, idNuée, clefTableau, ["fr", "de"] ) end

:::

Pour plus d'information, voir la section sur les autres langages.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/guide/concepts.html" "b/\340\260\244\340\261\206/guide/concepts.html" index 4baef5bb38..0f94d7d942 100644 --- "a/\340\260\244\340\261\206/guide/concepts.html" +++ "b/\340\260\244\340\261\206/guide/concepts.html" @@ -19,7 +19,7 @@
Skip to content

Terminologie Constellation

Constellation ressemble beaucoup à un tableau LibreOffice ou Excel, mais avec quelques fonctionnalités en plus.

Client

Le client est le point central de Constellation. Chaque compte correspond à un client Constellation.

Profil

Le profil de Constellation organise les information du compte d'utilisateur.

Mots-clefs

Les mots-clefs servent à indexer les bases de données.

Tableaux

Un tableaux est comme une feuille d'un document Excel, LibreOffice ou Google Sheets.

tableaux :---: Exemple d'un tableau Constellation. Chaque tableau a différentes colonnes, chacune associée à une variable.

Variables

Chaque colonne d'un tableau est associée à une variable. Les variables peuvent être de différents types (texte, numérique, dates, photos, audios...).

Bases de données

L'unité centrale de Constellation est la base de données, qui regroupe un ou plusieurs tableaux.

bds :---: Une base de données Constellation. Conceptuellement identiques à un document Excel, LibreOffice ou Google Sheets, les bases de données Constellation incluent un ou plusieurs tableaux.

Projet

Un projet regroupe plusieurs bases de données traitant du même sujet.

projet :---: Exemple d'un projet Constellation. Les projets permettent de retrouver rapidement des données connexes (par exemple, hydrologie de l'Amérique latine, météorologie du Guatemala, pédologie de l'Afrique, ...). Une base de données peut être ajoutée à de multiples projets !

Réseau

Le réseau vous permet d'accéder aux informations des autres membres connectés.

réseau :---: Le réseau Constellation. Constellation forme un réseau de personnes qui se connaissent et se font confiance (ou pas !) avec un modèle de confiance transitive.

Recherche

Vous pouvez également rechercher les données qui vous intéressent.

recherche :---: Une recherche Constellation. Le logiciel commencera avec vos contacts immédiats et recherchera de plus en plus loin si nécessaire.

Nuée

Les nuées vous permettent de créer des projets de science citoyenne et de regrouper toutes les contributions de vos participants à la même place. Elles permettent de combiner des données de différents utilisateurs, un peu comme le ferait une base de données commune dans un système centralisé.

bdCentraliséé :---: Exemple d'une base de données centralisée. Un serveur central contrôle l'accès à une seule base de données dans laquelle les données de toutes les utilisatrices sont écrites. bdDistribuée :---: Exemple d'une nuée Constellation. Les données de chaque utilisatrice sont écrites sur leur propre base de données. Constellation se charge de toutes les retrouver et de les combiner au moment de la visualisation.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/guide/installation.html" "b/\340\260\244\340\261\206/guide/installation.html" index 0f0e629726..fba44a8144 100644 --- "a/\340\260\244\340\261\206/guide/installation.html" +++ "b/\340\260\244\340\261\206/guide/installation.html" @@ -19,7 +19,7 @@
Skip to content

Installation

Constellation peut être utilisé soit

Il y a plusieurs avantages à installer Constellation sur votre ordinateur plutôt que d'utiliser l'appli en ligne. Premièrement, vous aurez accès à plus de mémoire, l'appli en ligne étant limitée par la mémoire de votre navigateur. En plus, la version installée offre plus de fonctionnalités, tel le partage automatique de vos données à base d'un fichier local et la sauvegarde automatique des données Constellation sur votre ordinateur.

FonctionnalitéConstellation navigateurConstellation installée
Exportation manuelle
Exportation automatisée
Importation manuelle (URL ou fichier)
Importation automatisée (URL)
Importation automatisée (fichier)
Limite de mémoireNavigateurSystème
Connectivité TCP
Connectivité WebRTC
Connectivité WebTransport

Autres langages

Si vous préférez travailler avec du code, qu'il s'agisse de JavaScript, Python, Julia ou R, il vous est possible d'utiliser Constellation dans ces langages. Voir notre guide avancé pour démarrer.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/guide/introduction.html" "b/\340\260\244\340\261\206/guide/introduction.html" index de7614721a..410b241e17 100644 --- "a/\340\260\244\340\261\206/guide/introduction.html" +++ "b/\340\260\244\340\261\206/guide/introduction.html" @@ -19,7 +19,7 @@
Skip to content

Introduction

Constellation est un logiciel de bases de données scientifiques distribuées. Il vous permet de collecter et de diffuser vos données scientifiques sans serveur ou dépôt centralisé.

Qu'est-ce qu'un système distribué ?

Dans une système distribué, il n'y a pas de serveur qui contrôle les interactions entres utilisateurs. Les personnes participant au réseau communiquent donc directement entre elles. C'est plus résilient et plus amusant !

systèmeCentralisé

Pourquoi un logiciel local ?

Constellation est un logiciel local qui garde toutes vos données sur votre propre dispositif (comme Excel ou LibreOffice). Vous n'êtes donc pas à la mercie du Wifi ou de Google pour pouvoir accéder à vos propres données. Cependant, Constellation vous permet aussi de collaborer en ligne et de partager (et syncroniser) vos données en temps réel (comme les documents Google). C'est le meilleur des deux mondes !

AvantagesApplis intallées (p.ex., Excel)Applis nuage (p.ex., Google)Applis locales
Rapidité
Sans dépendance Internet
Sans enfermerment propriétaire
Collaboration
Autorisations d'équipe
Sauvegarde en ligne
Mises à jour en directe
Note : Tableau adapté de local-first-web de Herb Caudill.

Philosophie générale

La philosophie de Constellation se résume en quelques grandes lignes :

Accès libre : Les données scientifiques devraient être ouvertes et accessibles. Toutes les données partagées sur Constellation sont publiques. (Si vous travaillez en recherche clinique, ce n'est peut-être pas le logiciel pour vous.)

Source ouverte : Tous les logiciels de l'univers Constellation sont distribués sous licence libre.

Indépendance : Constellation est un logiciel ouvert, et les données sont sauvegardées sur les dispositifs des utilisatrices et utilisateurs. Les communautés gardent donc le contrôle sur leurs propres données en tout temps.

Accessible et multilingue : Le monde est une place multilingue ; le monde de la recherche, lui, ne l'est malheureusement pas autant. Beaucoup de données sont collectées dans des régions du monde et ensuite publiées dans des langues que les personnes qui les ont fournies ne parlent pas. Cependant, la structure des logiciels que nous utilisons façonne notre pensée, pour le mieux ou pour le pire. Beaucoup de logiciels de bases de données (Excel, MongoDB, etc.) ne permettent qu'un seul nom par colonne ou champ ; nous sommes ainsi entraînés à entrer des données monolingues. Nous avons donc conceptualisé Constellation afin qu'elle guide ses utilisateurs et utilisatrices vers une meilleure inclusion. Chaque objet en Constellation, soit-ce votre profil, une variable ou une base de données, peut être nommé en autant de langues que vous voulez. Vos données apparaîtront donc dans la langue préférée de chacune de vos utilisatrices finales.

Comment ça se compare à ... ?

FonctionnalitéConstellationExcelLibreOfficeDocs GoogleBD sur serveur (MongoDB, SQL)
Collaboration simultanée
Fonctionne hors ligne
Photos, vidéos
Contrôle local des donnéesSi le serveur vous appartient
Intégration avec vos applis
Source ouverteC'est compliqué

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/guide/pair\303\200Pair.html" "b/\340\260\244\340\261\206/guide/pair\303\200Pair.html" index 14dfaad157..aecfdc23d2 100644 --- "a/\340\260\244\340\261\206/guide/pair\303\200Pair.html" +++ "b/\340\260\244\340\261\206/guide/pair\303\200Pair.html" @@ -19,7 +19,7 @@
Skip to content

Systèmes pair à pair

Afin de bien comprendre Constellation, c'est peut-être util de comprendre ce qu'est un système distribué ou pair à pair. Premièrement, ils ne sont pas exactement la même chose. Un système pair à pair, c'est un système qui, contrairement à votre courriel ou à Google, ne nécessite pas de serveur central pour fonctionner. Chouette, n'est-ce pas ?

Les systèmes pair à pair peuvent être décentralisés ou bien distribués. Dans un système décentralisé, le logiciel est trop gros ou compliqué pour fonctionner sur la majorité des téléphones ou ordinateurs des participants au réseau. Donc, certains participants au réseau qui ont les gros ordinateurs nécessaires servent de point contact et de service pour la majorité des autres participants. À la fin, c'est beaucoup comme un système centralisé.

distribuéVsDécentralisé

Au contraire, dans un système distribué, tout les participants sont égaux les un aux autres. Certains peuvent être connectés avec des machines plus puissantes ou avec plus de mémoire, bien sûr, mais tous intéragissent d'égal à égal dans le réseau.

INFO

Constellation n'est pas une chaîne de bloques !

Les systèmes pair à pair ont malheureusement une mauvaise réputation, peut-être parce que la majorité des premiers logiciels populaires étaient des platformes de partage de médias piratées. Ensuite sont arrivé les cryptomonnaies basées sur les chaînes de bloques, qui ont fréquemment bien mérité leur réputation en tant que pyramides de Ponzi et trous noirs énergétiques notoirement inefficaces pour toute application utile.

Donc nous répétons : Constellation est un système distribué de pair en pair, mais pas une chaîne de bloques !

Mais pourquoi pas une chaîne de bloques ?

Premièrement, parce que c'est ben trop cher. Chaque transaction sur une chaîne de bloques comme Éthereum coûte de la fausse argent (cryptomonnaies), que vous devez malheureusement achetter avec de la vraie argent. Et les fluctuations des prix sont bien entendu complètement hors de notre contrôle. Pourquoi créer un système de données distribuées pour améliorer la souveraineté des données pour ensuite devoir payer des personnes anonymes une somme d'argent variable pour le privilège d'écrire à nos propres bases de données ?

Et deuxièmement, c'est complètement inutil. Les chaînes de bloques sont nécessaires pour les cryptomonnaies et leurs transactions financières. Mais nous, on veut partager des données scientifiques. Nous n'avons rien à faire avec de l'argent ou des transactions financières.

Donc oublions tout ça. Constellation fonctionne de manière complètement distribuée, entièrement sur les dispositifs de ses utilisatrices et utilisateurs.

Comment ça fonctionne

Lorsque vous sauvegardez des données sur Constellation, celles-ci sont sauvegardées sur votre appareil local, et y resteront toujours disponibles.

CONSEIL

Si vous sauvegardez vos données sur un système sur le « nuage » comme les documents Google, vous aurez peut-être remarqué que vos données n'apparaissent plus lorsque vous (ou Google !) est hors ligne. L'avantage d'un système local comme Constellation est que vous êtes toujours garanti d'avoir accès à vos données, parce qu'elles demeurent toujours sur votre dispositif.

Le logiciel Constellation recherche également d'autres utilisatrices et utilisateurs du réseau et vous permet d'accéder et de visualiser leurs données. La magie d'un système distribué est qu'il permet aux tièrces personnes de partager, mais pas de modifier, les données des autres. Si vous vivez au Québec et vous partagez vos données scientifiques et avant fermez votre téléphone pour aller dormir, vos données ne seront plus disponible sur le réseau jusqu'à votre réveil, heure de l'est. Mais, si quelqu'un d'autre, disons au Botswana, les a déjà accédées, elles seront automatiquement repartagées et disponibles sur le réseau à partir du nouveau dispositif, toute prêtes pour le réveil de vos collègues de l'Inde au Japon ! Donc, contrairement à un système centralisé, sur Constellation, le plus populaires vos données, le plus disponibles elles seront.

Mais comment empêchons-nous les autres personnes de modifier vos données avant de les partager ? Chaque changement que vous apportez à vos données est accompagné d'une signature que uniquement votre compte peut générer. Si quelqu'un d'autre essaie de modifier vos données, la signature deviendra invalide et les changements frauduleux seront automatiquement rejetés par le réseau.

Au niveau technique

Pour ceux et celles qui ça amuse, Constellation est construit sur bd-orbite, un logiciel de bases de données distribuées, lui-même construit sur libp2p et le Système de fichiers interplanétaire SFIP. Toutes les bases de données sur Constellation sont composées de multiples bases de données orbite, tandis que les fichiers (images, vidéos) sont sauvegardés directement sur SFIP.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/guide/questions.html" "b/\340\260\244\340\261\206/guide/questions.html" index 7ba72aab97..a377d8ddb4 100644 --- "a/\340\260\244\340\261\206/guide/questions.html" +++ "b/\340\260\244\340\261\206/guide/questions.html" @@ -19,7 +19,7 @@
Skip to content

Questions et problèmes

Erreurs fréquentes Constellation

Nous répertorions ici les erreurs fréquentes que l'on a rencontrés en utilisant Constellation. Apprenons des maux de tête des autres !

SyntaxError: Unexpected identifier

Assurez-vous d'être sur la plus récente version de Node.js. Si vous utilisez nvm, nvm use stable devrait régler le problème.

LockExistsError: Lock already being held for file: constl/sfip/repo.lock

Vous avez probablement lancé plus d'une instance de Constellation en même temps.

Error: Listener is not ready yet

Vous avez probablement lancé plus d'une instance de Constellation en même temps.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/index.html" "b/\340\260\244\340\261\206/index.html" index d152978056..19dda5717c 100644 --- "a/\340\260\244\340\261\206/index.html" +++ "b/\340\260\244\340\261\206/index.html" @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/ipa/automatisations.html" "b/\340\260\244\340\261\206/ipa/automatisations.html" index ed513807e9..e7aab0000a 100644 --- "a/\340\260\244\340\261\206/ipa/automatisations.html" +++ "b/\340\260\244\340\261\206/ipa/automatisations.html" @@ -216,7 +216,7 @@ type: "programmée"; à: number; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/ipa/bds.html" "b/\340\260\244\340\261\206/ipa/bds.html" index fac65a40b3..89d5012b17 100644 --- "a/\340\260\244\340\261\206/ipa/bds.html" +++ "b/\340\260\244\340\261\206/ipa/bds.html" @@ -587,7 +587,7 @@ nomBd: string; tableaux: donnéesTableauExportation[]; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/ipa/client.html" "b/\340\260\244\340\261\206/ipa/client.html" index 52e9c09edf..a3bbcf496b 100644 --- "a/\340\260\244\340\261\206/ipa/client.html" +++ "b/\340\260\244\340\261\206/ipa/client.html" @@ -163,7 +163,7 @@ }

Types dispositifs

ts
type structureNomsDispositifs = {
   [idDispositif: string]: { nom?: string; type?: string };
 };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/ipa/favoris.html" "b/\340\260\244\340\261\206/ipa/favoris.html" index 44c54b1d0c..9b2d9a1f1f 100644 --- "a/\340\260\244\340\261\206/ipa/favoris.html" +++ "b/\340\260\244\340\261\206/ipa/favoris.html" @@ -69,7 +69,7 @@ }; type ÉlémentFavorisAvecObjet = ÉlémentFavoris & { idObjet: string };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/ipa/introduction.html" "b/\340\260\244\340\261\206/ipa/introduction.html" index e5f125eb0c..58da360b3f 100644 --- "a/\340\260\244\340\261\206/ipa/introduction.html" +++ "b/\340\260\244\340\261\206/ipa/introduction.html" @@ -71,7 +71,7 @@ }) </script>

Langues

Constellation est un logiciel multilingue, et tout peut être traduit, y compris vos données, les noms des variables, et aussi votre profil d'utilisatrice. Constellation utilise les codes de langue nuchab'äl pour identifier les langues.

Chiffres

Constellation utilise les systèmes de numération du paquet எண்ணிக்கை pour lire et présenter les numéros en différentes langues.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/ipa/licences.html" "b/\340\260\244\340\261\206/ipa/licences.html" index 7aa417588f..10516e45dc 100644 --- "a/\340\260\244\340\261\206/ipa/licences.html" +++ "b/\340\260\244\340\261\206/ipa/licences.html" @@ -79,7 +79,7 @@ type droit = "partager" | "adapter" | "usageComercial" | "usagePrivé" | "usageBrevets"; type limitation = "aucuneResponsabilité" | "aucuneGarantie" | "marqueCommerce" | "brevetExclu" | "sousLicence"; type catégorie = "basesDeDonnées" | "artistique" | "codeInformatique" | "autre";

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/ipa/motsClefs.html" "b/\340\260\244\340\261\206/ipa/motsClefs.html" index 30df56fd98..5c293a305f 100644 --- "a/\340\260\244\340\261\206/ipa/motsClefs.html" +++ "b/\340\260\244\340\261\206/ipa/motsClefs.html" @@ -133,7 +133,7 @@ langue: "fr", description: "Données hydrologiques" });

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/ipa/nu\303\251es.html" "b/\340\260\244\340\261\206/ipa/nu\303\251es.html" index 9f9fb92f15..4339b91193 100644 --- "a/\340\260\244\340\261\206/ipa/nu\303\251es.html" +++ "b/\340\260\244\340\261\206/ipa/nu\303\251es.html" @@ -498,7 +498,7 @@ nuée: string; différences: différenceBds[]; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/ipa/profil.html" "b/\340\260\244\340\261\206/ipa/profil.html" index d75296b217..a756d51116 100644 --- "a/\340\260\244\340\261\206/ipa/profil.html" +++ "b/\340\260\244\340\261\206/ipa/profil.html" @@ -83,7 +83,7 @@ f: x => courriel.value = x }); await fOublierCourriel();

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/ipa/projets.html" "b/\340\260\244\340\261\206/ipa/projets.html" index 6bd0b76340..29e259dd35 100644 --- "a/\340\260\244\340\261\206/ipa/projets.html" +++ "b/\340\260\244\340\261\206/ipa/projets.html" @@ -354,7 +354,7 @@ nomProjet: string; bds: donnéesBdExportation[]; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/ipa/recherche.html" "b/\340\260\244\340\261\206/ipa/recherche.html" index 8154e406a3..c071fac284 100644 --- "a/\340\260\244\340\261\206/ipa/recherche.html" +++ "b/\340\260\244\340\261\206/ipa/recherche.html" @@ -1181,7 +1181,7 @@ clef?: string; info: T; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/ipa/r\303\250gles.html" "b/\340\260\244\340\261\206/ipa/r\303\250gles.html" index 38af874242..9e212c2838 100644 --- "a/\340\260\244\340\261\206/ipa/r\303\250gles.html" +++ "b/\340\260\244\340\261\206/ipa/r\303\250gles.html" @@ -179,7 +179,7 @@ règle: règleColonne<règleBornes<détailsRègleBornesDynamiqueVariable>>; détails: "variableBornesNonPrésente"; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/ipa/r\303\251seau.html" "b/\340\260\244\340\261\206/ipa/r\303\251seau.html" index 4582b56073..6f2ed62747 100644 --- "a/\340\260\244\340\261\206/ipa/r\303\251seau.html" +++ "b/\340\260\244\340\261\206/ipa/r\303\251seau.html" @@ -266,7 +266,7 @@ vuÀ?: number; })[]; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/ipa/tableaux.html" "b/\340\260\244\340\261\206/ipa/tableaux.html" index 63fa009c50..6e7b568ae9 100644 --- "a/\340\260\244\340\261\206/ipa/tableaux.html" +++ "b/\340\260\244\340\261\206/ipa/tableaux.html" @@ -355,7 +355,7 @@ données: élémentBdListeDonnées[]; fichiersSFIP: Set<string>; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\260\244\340\261\206/ipa/variables.html" "b/\340\260\244\340\261\206/ipa/variables.html" index 7fdb475f00..3c965569e8 100644 --- "a/\340\260\244\340\261\206/ipa/variables.html" +++ "b/\340\260\244\340\261\206/ipa/variables.html" @@ -301,7 +301,7 @@ | "audio" | "image" | "fichier";

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/avanc\303\251/applications/internet.html" "b/\340\262\225/avanc\303\251/applications/internet.html" index e804baee10..c31f3a5e79 100644 --- "a/\340\262\225/avanc\303\251/applications/internet.html" +++ "b/\340\262\225/avanc\303\251/applications/internet.html" @@ -61,7 +61,7 @@ <template> <h1>Mon compte : {{ idCompte }}</h1> </template>

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/avanc\303\251/applications/introduction.html" "b/\340\262\225/avanc\303\251/applications/introduction.html" index 419753c405..f2bc773d6e 100644 --- "a/\340\262\225/avanc\303\251/applications/introduction.html" +++ "b/\340\262\225/avanc\303\251/applications/introduction.html" @@ -19,7 +19,7 @@
Skip to content

Développement d'applis

Vous pouvez utiliser l'IPA TypeScript de Constellation afin de développer vos propres applis de science citoyenne ou autre sur le réseau Constellation.

Vous pouvez ainsi développer des applications en tant que sites web statiques, de même que des applications Électron.

CONSEIL

Si vous cherchez à créer un appli de science citoyenne, Constellation peut la générer automatiquement pour vous ! Il suffit d'ouvrir la nuée dans l'interface de Constellation et choisir l'option de génération de code. Voir la section collecte de données pour plus d'informations.

Projets utilisant Constellation

Si vous développez un projet utilisant Constellation, contactez-nous (ou, encore mieux, ajoutez-le vous-même) et nous vous donnerons un peu de publicité ici.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/avanc\303\251/applications/nu\303\251es.html" "b/\340\262\225/avanc\303\251/applications/nu\303\251es.html" index 60985d092b..38a80b018a 100644 --- "a/\340\262\225/avanc\303\251/applications/nu\303\251es.html" +++ "b/\340\262\225/avanc\303\251/applications/nu\303\251es.html" @@ -19,7 +19,7 @@
Skip to content

Nuées de données

L'application la plus fréquente de Constellation dans une application tièrce est sans toute la collection de données distribuées d'un plublique participant à un projet de science citoyenne ou autre. Dans ce cas, les nuées seront indispensables.

Cette section offre des instructions détaillées sur l'utilisation de nuées Constellation dans vos propres projets.

Création de la nuée

Vous devrez, avant tout, créer l'identifiant de la nuée qui regroupera toutes les données de votre projet.

ATTENTION

Prenez soin de créer la nuée sur le compte Constellation que vous entendez utiliser pour gérer votre projet. Celui-ci aura ainsi l'autorisation de modifier la nuée par la suite.

Génération du code

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/avanc\303\251/applications/\303\251lectron.html" "b/\340\262\225/avanc\303\251/applications/\303\251lectron.html" index 4e11d94d70..187887fc2a 100644 --- "a/\340\262\225/avanc\303\251/applications/\303\251lectron.html" +++ "b/\340\262\225/avanc\303\251/applications/\303\251lectron.html" @@ -116,7 +116,7 @@ port.value = undefined } </script>

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/avanc\303\251/autresLangages/introduction.html" "b/\340\262\225/avanc\303\251/autresLangages/introduction.html" index 9073ce2afc..0a2607ff55 100644 --- "a/\340\262\225/avanc\303\251/autresLangages/introduction.html" +++ "b/\340\262\225/avanc\303\251/autresLangages/introduction.html" @@ -19,7 +19,7 @@
Skip to content

Autres langages

Constellation a beau être un projet JavaScript, il est possible d'accéder au réseau distribué à partir de clients dans d'autres langages informatiques. Des clients sont disposibles dans les langages suivants :

  • Python : Fonctionnel
  • Julia : Fonctionnel
  • R : Fonctionnel
  • Autres langages : Si vous développez un client Constellation dans un autre langage, contactez-nous et nous l'annoncerons ici.

Tous ces clients fonctionnent en ouvrant un serveur WS Constellation local sur votre machine. Le client Python, Julia ou autre communiquera ensuite avec ce serveur local par messages WS et vous permettent d'utiliser Constellation dans le langage de votre choix.

Vous devrez donc toujours installer Constellation sur votre machine avant de pouvoir utiliser ces clients. La manière la plus facile est d'installer l'interface graphique et puis d'activer le serveur WS sur la page de configuration. Alternativement, vous pouvez installer le serveur WS de Constellation sans interface graphique. Vous aurez besoin de Node.js et de pnpm.

Si nécessaire, installer pnpm :

sh
$ npm add -g pnpm

Et puis installer Constellation :

sh
$ pnpm global add -g @constl/ipa @constl/serveur

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/avanc\303\251/autresLangages/julia.html" "b/\340\262\225/avanc\303\251/autresLangages/julia.html" index 4a167037f3..3f1b11d824 100644 --- "a/\340\262\225/avanc\303\251/autresLangages/julia.html" +++ "b/\340\262\225/avanc\303\251/autresLangages/julia.html" @@ -168,7 +168,7 @@ donnéesRéseau = Constellation.obtDonnéesTableauNuée(client, idNuée, clefTableau, ["fr"]) end end

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/avanc\303\251/autresLangages/nouveauxLangages.html" "b/\340\262\225/avanc\303\251/autresLangages/nouveauxLangages.html" index e90a7a8ec8..91773ef7a8 100644 --- "a/\340\262\225/avanc\303\251/autresLangages/nouveauxLangages.html" +++ "b/\340\262\225/avanc\303\251/autresLangages/nouveauxLangages.html" @@ -116,7 +116,7 @@ "id": "1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed", "erreur": "Message d'erreur tel que rencontré par le serveur." }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/avanc\303\251/autresLangages/n\305\223udLocal.html" "b/\340\262\225/avanc\303\251/autresLangages/n\305\223udLocal.html" index 9e451dfa09..eb540fd78a 100644 --- "a/\340\262\225/avanc\303\251/autresLangages/n\305\223udLocal.html" +++ "b/\340\262\225/avanc\303\251/autresLangages/n\305\223udLocal.html" @@ -68,7 +68,7 @@ // Lorsqu'on a fini : fermerClient();

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/avanc\303\251/autresLangages/python.html" "b/\340\262\225/avanc\303\251/autresLangages/python.html" index 74b61d0b33..029e081c99 100644 --- "a/\340\262\225/avanc\303\251/autresLangages/python.html" +++ "b/\340\262\225/avanc\303\251/autresLangages/python.html" @@ -234,7 +234,7 @@ trio.run(principale)

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/avanc\303\251/autresLangages/r.html" "b/\340\262\225/avanc\303\251/autresLangages/r.html" index 5ff5cc0a50..b4a6019bf7 100644 --- "a/\340\262\225/avanc\303\251/autresLangages/r.html" +++ "b/\340\262\225/avanc\303\251/autresLangages/r.html" @@ -143,7 +143,7 @@ }, port = port )

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/exemples/cr\303\251ationCompte.html" "b/\340\262\225/exemples/cr\303\251ationCompte.html" index c91f2aeec4..0a72d8ab82 100644 --- "a/\340\262\225/exemples/cr\303\251ationCompte.html" +++ "b/\340\262\225/exemples/cr\303\251ationCompte.html" @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git "a/\340\262\225/exemples/diffusion.html" "b/\340\262\225/exemples/diffusion.html" index bc6f59d93e..18b1a4d1d1 100644 --- "a/\340\262\225/exemples/diffusion.html" +++ "b/\340\262\225/exemples/diffusion.html" @@ -19,7 +19,7 @@
Skip to content

Diffusion de données

NOTE

Nous y travaillons... revenez plus tard, ou, encore mieux, contactez-nous !

Admettons-le, nous avons tous été coupables du « je-le-partagerai-plus-tardisme ». On a récolté une jolie base de données, et on va la partager dans un dépôt de données comme Zenodo, mais plus tard, quand elle sera bien propre et netoyée...et puis ensuite on publie, on répond aux réviseurs, et on oublie notre base de données qu'on a toujours pas partagée.

Constellation peut être utilisée afin de partager vos données existantes en temps réel, comme ça vous n'avez plus aucune excuse de ne pas les partager, même s'ils ne sont pas « finales ». Si les dépôts de données sont des versions fossilisées de vos données, Constellation est un dépôt pour les données vivantes.

Vous pouvez connecter Constellation à vos logiciels d'entrée de données favoris, et tout se mettra à jour automatiquement. En même temps, les personnes qui s'intéressent à vos données peuvent y accéder et les utiliser en temps réel.

[Schéma diffusion données à inclure]

Importation

Nous pouvons importer nos données à partir d'un fichier Excel, LibreOffice, csv ou autre. Il suffit de créer une base de données et puis de choisir « importer ».

[Image à inclure]

Automatisation

Bon c'était bien chouette, non ? Mais si vous faites des modifications à vos données, c'est un peu ennuyant de toujours devoir les ré-importer. C'est pour ça que nous avons des automatisations.

CONSEIL

Vous pouvez configurer les automatisations pour quelles s'exécutent soit (1) lorsque les données sont modifiées, (2) selon un calendrier fixe, ou (3) uniquement lorsque vous cliquez sur le bouton « actualiser » sur l'interface Constellation.

Nous allons configurer l'importation pour qu'elle actualise les données chaque fois que le document LibreOffice est modifié. Tant que Constellation est ouverte sur votre ordinateur, vos données seront automatiquement mises à jour sur le réseau !

[Image à inclure]

Partage

Vous pouvez maintenant partager les données. Il suffit de copier l'identifiant unique de la base de données de l'interface Constellation et puis de la partager avec tous vos admirateurs.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/exemples/mesDonn\303\251es.html" "b/\340\262\225/exemples/mesDonn\303\251es.html" index 4700572bcd..bbe9c30814 100644 --- "a/\340\262\225/exemples/mesDonn\303\251es.html" +++ "b/\340\262\225/exemples/mesDonn\303\251es.html" @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git "a/\340\262\225/exemples/monCompte.html" "b/\340\262\225/exemples/monCompte.html" index 0a8a845621..e7d8f5589c 100644 --- "a/\340\262\225/exemples/monCompte.html" +++ "b/\340\262\225/exemples/monCompte.html" @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git "a/\340\262\225/exemples/scienceCitoyenne.html" "b/\340\262\225/exemples/scienceCitoyenne.html" index b363dea45c..31012c0847 100644 --- "a/\340\262\225/exemples/scienceCitoyenne.html" +++ "b/\340\262\225/exemples/scienceCitoyenne.html" @@ -137,7 +137,7 @@ client, idNuée, clefTableau, ["fr", "de"] ) end

:::

Pour plus d'information, voir la section sur les autres langages.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/guide/concepts.html" "b/\340\262\225/guide/concepts.html" index fc64e2e7b7..420139a088 100644 --- "a/\340\262\225/guide/concepts.html" +++ "b/\340\262\225/guide/concepts.html" @@ -19,7 +19,7 @@
Skip to content

Terminologie Constellation

Constellation ressemble beaucoup à un tableau LibreOffice ou Excel, mais avec quelques fonctionnalités en plus.

Client

Le client est le point central de Constellation. Chaque compte correspond à un client Constellation.

Profil

Le profil de Constellation organise les information du compte d'utilisateur.

Mots-clefs

Les mots-clefs servent à indexer les bases de données.

Tableaux

Un tableaux est comme une feuille d'un document Excel, LibreOffice ou Google Sheets.

tableaux :---: Exemple d'un tableau Constellation. Chaque tableau a différentes colonnes, chacune associée à une variable.

Variables

Chaque colonne d'un tableau est associée à une variable. Les variables peuvent être de différents types (texte, numérique, dates, photos, audios...).

Bases de données

L'unité centrale de Constellation est la base de données, qui regroupe un ou plusieurs tableaux.

bds :---: Une base de données Constellation. Conceptuellement identiques à un document Excel, LibreOffice ou Google Sheets, les bases de données Constellation incluent un ou plusieurs tableaux.

Projet

Un projet regroupe plusieurs bases de données traitant du même sujet.

projet :---: Exemple d'un projet Constellation. Les projets permettent de retrouver rapidement des données connexes (par exemple, hydrologie de l'Amérique latine, météorologie du Guatemala, pédologie de l'Afrique, ...). Une base de données peut être ajoutée à de multiples projets !

Réseau

Le réseau vous permet d'accéder aux informations des autres membres connectés.

réseau :---: Le réseau Constellation. Constellation forme un réseau de personnes qui se connaissent et se font confiance (ou pas !) avec un modèle de confiance transitive.

Recherche

Vous pouvez également rechercher les données qui vous intéressent.

recherche :---: Une recherche Constellation. Le logiciel commencera avec vos contacts immédiats et recherchera de plus en plus loin si nécessaire.

Nuée

Les nuées vous permettent de créer des projets de science citoyenne et de regrouper toutes les contributions de vos participants à la même place. Elles permettent de combiner des données de différents utilisateurs, un peu comme le ferait une base de données commune dans un système centralisé.

bdCentraliséé :---: Exemple d'une base de données centralisée. Un serveur central contrôle l'accès à une seule base de données dans laquelle les données de toutes les utilisatrices sont écrites. bdDistribuée :---: Exemple d'une nuée Constellation. Les données de chaque utilisatrice sont écrites sur leur propre base de données. Constellation se charge de toutes les retrouver et de les combiner au moment de la visualisation.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/guide/installation.html" "b/\340\262\225/guide/installation.html" index 9990cc43a9..2a0c597f73 100644 --- "a/\340\262\225/guide/installation.html" +++ "b/\340\262\225/guide/installation.html" @@ -19,7 +19,7 @@
Skip to content

Installation

Constellation peut être utilisé soit

Il y a plusieurs avantages à installer Constellation sur votre ordinateur plutôt que d'utiliser l'appli en ligne. Premièrement, vous aurez accès à plus de mémoire, l'appli en ligne étant limitée par la mémoire de votre navigateur. En plus, la version installée offre plus de fonctionnalités, tel le partage automatique de vos données à base d'un fichier local et la sauvegarde automatique des données Constellation sur votre ordinateur.

FonctionnalitéConstellation navigateurConstellation installée
Exportation manuelle
Exportation automatisée
Importation manuelle (URL ou fichier)
Importation automatisée (URL)
Importation automatisée (fichier)
Limite de mémoireNavigateurSystème
Connectivité TCP
Connectivité WebRTC
Connectivité WebTransport

Autres langages

Si vous préférez travailler avec du code, qu'il s'agisse de JavaScript, Python, Julia ou R, il vous est possible d'utiliser Constellation dans ces langages. Voir notre guide avancé pour démarrer.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/guide/introduction.html" "b/\340\262\225/guide/introduction.html" index c409985ec6..ac4a0a701b 100644 --- "a/\340\262\225/guide/introduction.html" +++ "b/\340\262\225/guide/introduction.html" @@ -19,7 +19,7 @@
Skip to content

Introduction

Constellation est un logiciel de bases de données scientifiques distribuées. Il vous permet de collecter et de diffuser vos données scientifiques sans serveur ou dépôt centralisé.

Qu'est-ce qu'un système distribué ?

Dans une système distribué, il n'y a pas de serveur qui contrôle les interactions entres utilisateurs. Les personnes participant au réseau communiquent donc directement entre elles. C'est plus résilient et plus amusant !

systèmeCentralisé

Pourquoi un logiciel local ?

Constellation est un logiciel local qui garde toutes vos données sur votre propre dispositif (comme Excel ou LibreOffice). Vous n'êtes donc pas à la mercie du Wifi ou de Google pour pouvoir accéder à vos propres données. Cependant, Constellation vous permet aussi de collaborer en ligne et de partager (et syncroniser) vos données en temps réel (comme les documents Google). C'est le meilleur des deux mondes !

AvantagesApplis intallées (p.ex., Excel)Applis nuage (p.ex., Google)Applis locales
Rapidité
Sans dépendance Internet
Sans enfermerment propriétaire
Collaboration
Autorisations d'équipe
Sauvegarde en ligne
Mises à jour en directe
Note : Tableau adapté de local-first-web de Herb Caudill.

Philosophie générale

La philosophie de Constellation se résume en quelques grandes lignes :

Accès libre : Les données scientifiques devraient être ouvertes et accessibles. Toutes les données partagées sur Constellation sont publiques. (Si vous travaillez en recherche clinique, ce n'est peut-être pas le logiciel pour vous.)

Source ouverte : Tous les logiciels de l'univers Constellation sont distribués sous licence libre.

Indépendance : Constellation est un logiciel ouvert, et les données sont sauvegardées sur les dispositifs des utilisatrices et utilisateurs. Les communautés gardent donc le contrôle sur leurs propres données en tout temps.

Accessible et multilingue : Le monde est une place multilingue ; le monde de la recherche, lui, ne l'est malheureusement pas autant. Beaucoup de données sont collectées dans des régions du monde et ensuite publiées dans des langues que les personnes qui les ont fournies ne parlent pas. Cependant, la structure des logiciels que nous utilisons façonne notre pensée, pour le mieux ou pour le pire. Beaucoup de logiciels de bases de données (Excel, MongoDB, etc.) ne permettent qu'un seul nom par colonne ou champ ; nous sommes ainsi entraînés à entrer des données monolingues. Nous avons donc conceptualisé Constellation afin qu'elle guide ses utilisateurs et utilisatrices vers une meilleure inclusion. Chaque objet en Constellation, soit-ce votre profil, une variable ou une base de données, peut être nommé en autant de langues que vous voulez. Vos données apparaîtront donc dans la langue préférée de chacune de vos utilisatrices finales.

Comment ça se compare à ... ?

FonctionnalitéConstellationExcelLibreOfficeDocs GoogleBD sur serveur (MongoDB, SQL)
Collaboration simultanée
Fonctionne hors ligne
Photos, vidéos
Contrôle local des donnéesSi le serveur vous appartient
Intégration avec vos applis
Source ouverteC'est compliqué

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/guide/pair\303\200Pair.html" "b/\340\262\225/guide/pair\303\200Pair.html" index 2bf7584635..43d134e4d8 100644 --- "a/\340\262\225/guide/pair\303\200Pair.html" +++ "b/\340\262\225/guide/pair\303\200Pair.html" @@ -19,7 +19,7 @@
Skip to content

Systèmes pair à pair

Afin de bien comprendre Constellation, c'est peut-être util de comprendre ce qu'est un système distribué ou pair à pair. Premièrement, ils ne sont pas exactement la même chose. Un système pair à pair, c'est un système qui, contrairement à votre courriel ou à Google, ne nécessite pas de serveur central pour fonctionner. Chouette, n'est-ce pas ?

Les systèmes pair à pair peuvent être décentralisés ou bien distribués. Dans un système décentralisé, le logiciel est trop gros ou compliqué pour fonctionner sur la majorité des téléphones ou ordinateurs des participants au réseau. Donc, certains participants au réseau qui ont les gros ordinateurs nécessaires servent de point contact et de service pour la majorité des autres participants. À la fin, c'est beaucoup comme un système centralisé.

distribuéVsDécentralisé

Au contraire, dans un système distribué, tout les participants sont égaux les un aux autres. Certains peuvent être connectés avec des machines plus puissantes ou avec plus de mémoire, bien sûr, mais tous intéragissent d'égal à égal dans le réseau.

INFO

Constellation n'est pas une chaîne de bloques !

Les systèmes pair à pair ont malheureusement une mauvaise réputation, peut-être parce que la majorité des premiers logiciels populaires étaient des platformes de partage de médias piratées. Ensuite sont arrivé les cryptomonnaies basées sur les chaînes de bloques, qui ont fréquemment bien mérité leur réputation en tant que pyramides de Ponzi et trous noirs énergétiques notoirement inefficaces pour toute application utile.

Donc nous répétons : Constellation est un système distribué de pair en pair, mais pas une chaîne de bloques !

Mais pourquoi pas une chaîne de bloques ?

Premièrement, parce que c'est ben trop cher. Chaque transaction sur une chaîne de bloques comme Éthereum coûte de la fausse argent (cryptomonnaies), que vous devez malheureusement achetter avec de la vraie argent. Et les fluctuations des prix sont bien entendu complètement hors de notre contrôle. Pourquoi créer un système de données distribuées pour améliorer la souveraineté des données pour ensuite devoir payer des personnes anonymes une somme d'argent variable pour le privilège d'écrire à nos propres bases de données ?

Et deuxièmement, c'est complètement inutil. Les chaînes de bloques sont nécessaires pour les cryptomonnaies et leurs transactions financières. Mais nous, on veut partager des données scientifiques. Nous n'avons rien à faire avec de l'argent ou des transactions financières.

Donc oublions tout ça. Constellation fonctionne de manière complètement distribuée, entièrement sur les dispositifs de ses utilisatrices et utilisateurs.

Comment ça fonctionne

Lorsque vous sauvegardez des données sur Constellation, celles-ci sont sauvegardées sur votre appareil local, et y resteront toujours disponibles.

CONSEIL

Si vous sauvegardez vos données sur un système sur le « nuage » comme les documents Google, vous aurez peut-être remarqué que vos données n'apparaissent plus lorsque vous (ou Google !) est hors ligne. L'avantage d'un système local comme Constellation est que vous êtes toujours garanti d'avoir accès à vos données, parce qu'elles demeurent toujours sur votre dispositif.

Le logiciel Constellation recherche également d'autres utilisatrices et utilisateurs du réseau et vous permet d'accéder et de visualiser leurs données. La magie d'un système distribué est qu'il permet aux tièrces personnes de partager, mais pas de modifier, les données des autres. Si vous vivez au Québec et vous partagez vos données scientifiques et avant fermez votre téléphone pour aller dormir, vos données ne seront plus disponible sur le réseau jusqu'à votre réveil, heure de l'est. Mais, si quelqu'un d'autre, disons au Botswana, les a déjà accédées, elles seront automatiquement repartagées et disponibles sur le réseau à partir du nouveau dispositif, toute prêtes pour le réveil de vos collègues de l'Inde au Japon ! Donc, contrairement à un système centralisé, sur Constellation, le plus populaires vos données, le plus disponibles elles seront.

Mais comment empêchons-nous les autres personnes de modifier vos données avant de les partager ? Chaque changement que vous apportez à vos données est accompagné d'une signature que uniquement votre compte peut générer. Si quelqu'un d'autre essaie de modifier vos données, la signature deviendra invalide et les changements frauduleux seront automatiquement rejetés par le réseau.

Au niveau technique

Pour ceux et celles qui ça amuse, Constellation est construit sur bd-orbite, un logiciel de bases de données distribuées, lui-même construit sur libp2p et le Système de fichiers interplanétaire SFIP. Toutes les bases de données sur Constellation sont composées de multiples bases de données orbite, tandis que les fichiers (images, vidéos) sont sauvegardés directement sur SFIP.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/guide/questions.html" "b/\340\262\225/guide/questions.html" index 6d0353aa1e..cc67587385 100644 --- "a/\340\262\225/guide/questions.html" +++ "b/\340\262\225/guide/questions.html" @@ -19,7 +19,7 @@
Skip to content

Questions et problèmes

Erreurs fréquentes Constellation

Nous répertorions ici les erreurs fréquentes que l'on a rencontrés en utilisant Constellation. Apprenons des maux de tête des autres !

SyntaxError: Unexpected identifier

Assurez-vous d'être sur la plus récente version de Node.js. Si vous utilisez nvm, nvm use stable devrait régler le problème.

LockExistsError: Lock already being held for file: constl/sfip/repo.lock

Vous avez probablement lancé plus d'une instance de Constellation en même temps.

Error: Listener is not ready yet

Vous avez probablement lancé plus d'une instance de Constellation en même temps.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/index.html" "b/\340\262\225/index.html" index 6dd7a466ab..96a9b1c79a 100644 --- "a/\340\262\225/index.html" +++ "b/\340\262\225/index.html" @@ -19,7 +19,7 @@
Skip to content

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/ipa/automatisations.html" "b/\340\262\225/ipa/automatisations.html" index 2b94d9a180..0dc86c69f6 100644 --- "a/\340\262\225/ipa/automatisations.html" +++ "b/\340\262\225/ipa/automatisations.html" @@ -216,7 +216,7 @@ type: "programmée"; à: number; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/ipa/bds.html" "b/\340\262\225/ipa/bds.html" index af0d6f0de1..fd3c57e23b 100644 --- "a/\340\262\225/ipa/bds.html" +++ "b/\340\262\225/ipa/bds.html" @@ -587,7 +587,7 @@ nomBd: string; tableaux: donnéesTableauExportation[]; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/ipa/client.html" "b/\340\262\225/ipa/client.html" index b045f4d49e..19e31a8284 100644 --- "a/\340\262\225/ipa/client.html" +++ "b/\340\262\225/ipa/client.html" @@ -163,7 +163,7 @@ }

Types dispositifs

ts
type structureNomsDispositifs = {
   [idDispositif: string]: { nom?: string; type?: string };
 };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/ipa/favoris.html" "b/\340\262\225/ipa/favoris.html" index f30a731cf1..9f807e5266 100644 --- "a/\340\262\225/ipa/favoris.html" +++ "b/\340\262\225/ipa/favoris.html" @@ -69,7 +69,7 @@ }; type ÉlémentFavorisAvecObjet = ÉlémentFavoris & { idObjet: string };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/ipa/introduction.html" "b/\340\262\225/ipa/introduction.html" index d64e83e91b..9c2df3a4fb 100644 --- "a/\340\262\225/ipa/introduction.html" +++ "b/\340\262\225/ipa/introduction.html" @@ -71,7 +71,7 @@ }) </script>

Langues

Constellation est un logiciel multilingue, et tout peut être traduit, y compris vos données, les noms des variables, et aussi votre profil d'utilisatrice. Constellation utilise les codes de langue nuchab'äl pour identifier les langues.

Chiffres

Constellation utilise les systèmes de numération du paquet எண்ணிக்கை pour lire et présenter les numéros en différentes langues.

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/ipa/licences.html" "b/\340\262\225/ipa/licences.html" index 0ac2c7a74f..df219cc166 100644 --- "a/\340\262\225/ipa/licences.html" +++ "b/\340\262\225/ipa/licences.html" @@ -79,7 +79,7 @@ type droit = "partager" | "adapter" | "usageComercial" | "usagePrivé" | "usageBrevets"; type limitation = "aucuneResponsabilité" | "aucuneGarantie" | "marqueCommerce" | "brevetExclu" | "sousLicence"; type catégorie = "basesDeDonnées" | "artistique" | "codeInformatique" | "autre";

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/ipa/motsClefs.html" "b/\340\262\225/ipa/motsClefs.html" index d8677aa12c..61816b6ec2 100644 --- "a/\340\262\225/ipa/motsClefs.html" +++ "b/\340\262\225/ipa/motsClefs.html" @@ -133,7 +133,7 @@ langue: "fr", description: "Données hydrologiques" });

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/ipa/nu\303\251es.html" "b/\340\262\225/ipa/nu\303\251es.html" index 0677db8851..36787d7cd6 100644 --- "a/\340\262\225/ipa/nu\303\251es.html" +++ "b/\340\262\225/ipa/nu\303\251es.html" @@ -498,7 +498,7 @@ nuée: string; différences: différenceBds[]; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/ipa/profil.html" "b/\340\262\225/ipa/profil.html" index a15a9ee08f..30888198ea 100644 --- "a/\340\262\225/ipa/profil.html" +++ "b/\340\262\225/ipa/profil.html" @@ -83,7 +83,7 @@ f: x => courriel.value = x }); await fOublierCourriel();

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/ipa/projets.html" "b/\340\262\225/ipa/projets.html" index d730c331bf..05d439283f 100644 --- "a/\340\262\225/ipa/projets.html" +++ "b/\340\262\225/ipa/projets.html" @@ -354,7 +354,7 @@ nomProjet: string; bds: donnéesBdExportation[]; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/ipa/recherche.html" "b/\340\262\225/ipa/recherche.html" index bb2995b731..66ce28dfed 100644 --- "a/\340\262\225/ipa/recherche.html" +++ "b/\340\262\225/ipa/recherche.html" @@ -1181,7 +1181,7 @@ clef?: string; info: T; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/ipa/r\303\250gles.html" "b/\340\262\225/ipa/r\303\250gles.html" index bbcf567c0d..222f5f39f2 100644 --- "a/\340\262\225/ipa/r\303\250gles.html" +++ "b/\340\262\225/ipa/r\303\250gles.html" @@ -179,7 +179,7 @@ règle: règleColonne<règleBornes<détailsRègleBornesDynamiqueVariable>>; détails: "variableBornesNonPrésente"; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/ipa/r\303\251seau.html" "b/\340\262\225/ipa/r\303\251seau.html" index 98b25eb7ee..5b020462d6 100644 --- "a/\340\262\225/ipa/r\303\251seau.html" +++ "b/\340\262\225/ipa/r\303\251seau.html" @@ -266,7 +266,7 @@ vuÀ?: number; })[]; }

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/ipa/tableaux.html" "b/\340\262\225/ipa/tableaux.html" index aca440c64d..6e69c31ebe 100644 --- "a/\340\262\225/ipa/tableaux.html" +++ "b/\340\262\225/ipa/tableaux.html" @@ -355,7 +355,7 @@ données: élémentBdListeDonnées[]; fichiersSFIP: Set<string>; };

Disponible sous licence AGPL-3.0

- + \ No newline at end of file diff --git "a/\340\262\225/ipa/variables.html" "b/\340\262\225/ipa/variables.html" index 96f8c834ed..8c99d1f57a 100644 --- "a/\340\262\225/ipa/variables.html" +++ "b/\340\262\225/ipa/variables.html" @@ -301,7 +301,7 @@ | "audio" | "image" | "fichier";

Disponible sous licence AGPL-3.0

- + \ No newline at end of file