J'en parlais dans une bulle passée...
https://liens.vincent-bonnefille.fr/?OMKCTA
Isso
génère un espace de commentaire
Testez Isso
, en bas de page, dans {cette} bulle :
https://liens.vincent-bonnefille.fr/?vbm_vg#comments
Page du projet/app
https://github.com/posativ/isso/
https://isso-comments.de {cette bulle}
. . .
Je voulais rendre cet espace 2.0
: qu'on puisse commenter, surligner.
... sans être surveillé.e/tracké.e
Je cherchais...
une alternative à /Disqus/
-> https://alternativeto.net/software/disqus/
J'ai des clients / amix...
qui me demandent ce genre d'outil, essentiel pour avoir un #feedback !
. . .
J'ai finalement opté pour isso
crédit image : https://linuxhandbook.com/deploy-isso-comment/
Limitation
Marche uniquement avec des URL (permaliens) avec un /sous-chemin/
{ici}, avec des parameters (.. .fr/?...) chaque page est considérée comme aillant le même thread (sujet/fil de conversation)
-> https://isso-comments.de/docs/reference/client-config/
-> data-isso-id="https://votre_url_ou_permalien"
Source complète
https://omicx.cc/posts/2021-04-16-create-a-hugo-blog/
Tuto résumé
- on crée un user restreint isso
- quelques dep. dont
virtualenv
ensuite
- on passe en user isso
sudo su isso
- on installe
pip3 install isso
- on passe en virt.
virtualenv ~/venv/isso
source ~/venv/isso/bin/activate
- on crée une config
( avec un autre port que 8080 + password + CORS / hosts(*) + etc )
nano ~/etc/comments.cfg
cf.tuto d'omicx.cc - on démarre isso
isso -c ~/etc/comments.cfg run
. . .
Pour le service je me suis inspiré de :
[Unit]
Description=Isso
After=network-online.target
[Service]
Type=simple
User=isso
Group=isso
UMask=007
ExecStart=/var/www/pip/venv/bin/isso -c /home/isso/etc/comments.cfg
Restart=on-failure
# Configures the time to wait before service is stopped forcefully.
TimeoutStopSec=300
[Install]
WantedBy=multi-user.target
Le tuto nous explique ensuite comment gérer un Reverse_proxy #Nginx
et créer un service qui démarrera avec le serveur...
(*) CORS test
https://cors-test.codehappy.dev/?url=https%3A%2F%2Fisso.bonnebulle.xyz&origin=https%3A%2F%2Fcors-test.codehappy.dev&method=get NOT
https://cors-test.codehappy.dev/?url=https%3A%2F%2Fisso.bonnebulle.xyz&origin=https%3A%2F%2Fliens.vincent-bonnefille.fr&method=get OK
todo FIX: SMTP mail notifications !
Autres pistes
https://isso-comments.de/docs/guides/quickstart/
https://stanislas.blog/2018/02/add-comments-to-your-blog-with-isso/
https://www.hallada.net/2017/11/15/isso-comments.html
https://confluence.jaytaala.com/display/TKB/Installing%2C+configuring%2C+and+integrating+isso+(commenting+web+app)+into+Confluence
List of free stuff for developer by developer to use. This is a collective list of useful services for developer you can use for your next MVP or prototpying your idea.
TOC
Update
Story
Janitor
scraper
WebGrep
Alt
Headless
OutilspourMD
Annoter
Linkscheckers
Tunnels
Archive
indexserveur
Textpocessing
via
Update
Dernière version ( #2024 )
https://liens.vincent-bonnefille.fr/?Jxnufg
( dncorpus )
j'ai mis au point un fichier #cli_bash
pour GRAV ( #grav_wordpress )
qui va chercher les liens dans les pages (sous-dossiers)
- EX/ A => B
puis chercher le fichier/la page en question (liée) ( B )
et indique dans la page ( B ) que ( A ) pointe vers elle - https://gitlab.com/bonnebulle/grav_dn/-/blob/main/user/recursiv_mod.sh?ref_type=heads
Story
Je reprends ma prise de notes avec #dendron / #Zettelkasten
J'en suis pas à mon premier essai {bulle}
article de référence sur cette méth. de prise de notesJe veux automatiser la mise en prod / publication
Je veux ajouter quelques fonctions "de base" qui font d'un (b)log un jardin...
... tel les /Backlinks/ (liens entre articles.notes connexes)
... ce que propose {cet article.lien.bulle}
--> https://sebastiandedeyne.com/adding-backlinks-to-a-github-wiki/
... avec le script /Janitor/Backlinks, or bi-directional links, are becoming table-stakes for productivity apps since they’ve been popularized by Roam. It’s a simple …
Janitor
-
https://github.com/andymatuschak/note-link-janitor
-> forks https://www.npmjs.com/search?q=note-link-janitor
-> FR : https://www.npmjs.com/package/@arthurperret/note-link-janitor-fr !
Quelques alternatives et autres outils...
pour se balader de liens en liens,
de sites en sites
...
scraper
Un scraper c'est une automatisation de taches programmables permettant de visiter et inte agir avec une page web, sa structure ou des données. On peut ainsi simuler un clic, copier du contenu tel des liens (d'images ou hypertextes), faire une capture écran, etc.
Plusieurs approches...
WebGrep
va chercher du texte à la façon de /grep/
on pourrait ainsi lister les liens
se balader de l'un à lautre...
- https://webgrep.readthedocs.io
- (=) https://github.com/dhondta/webgrep
- (=) https://pypi.org/project/webgrep-tool/
(=/=) des variants
- https://github.com/LLazarek/webgrep
wgrep.py
-u URLS, --urls URLS Regexp for urls to search. By default all urls are searched.
wg (an other)
Alt
Recursive by rounds -R
Spider
Headless
des navigateurs 'sans tête'
on intéragis sans afficher à l'écran la page
on a un accès textuel / via du code
( possible par terminal #cli_bash )
- https://github.com/lbarnkow/no_browser
- https://lib.rs/crates/surf
- https://lib.rs/crates/longboard
- https://github.com/http-rs/surf
Je suis aussi tombé sur des outils qui vont me servir dans la création des pages (et leurs interactions par backlinks...
Outils pour MD
toc
tag search <3
like dendron linked notes
Annoter / pdf
extraire annotations pdf -> md <3
Hypothesis direct dans vsc
Search in PDF
pdfgrep
rga
Links checkers
Vérifier la validité des liens
peut être utilile avec le scraper
chker
chker status
Tunnels
Rendre accessible un site en devellopement local
au reste du web en créant un tunel
tunnels
Archive
Sauvegarde, téléchargement de pages
archive / dwl pages
- https://github.com/bcmyers/urls2disk
- https://github.com/mattgathu/duma
- https://lib.rs/crates/shirodl
index_serveur
afichier le contenu d'un dossier
mise en place d'un micro-serveur
j'utilisais http-server
- https://lib.rs/crates/dufs
- https://github.com/http-server-rs/http-server
- https://github.com/svenstaro/miniserve
Text pocessing
-> https://lib.rs/text-processing
via
J'utilises aussi #Signal API
ntfy lets you send push notifications via scripts from any computer or phone. Made with ❤ by Philipp C. Heckel, Apache License 2.0, source at https:
Et voila, un outil pour prévenir mes utilisateurices.eurs d'un New content
( avec des notifications push )
Howto
2e tentative d'install,
Par défaut sans espace privé le web UI me posait pbl,
c'est chose résolue en fouillant dans :
https://docs.ntfy.sh/config/?h=ntfy_cache_duration#config-options
Full story
Succession de /Gotify/ que j'utilise depuis longtemps
https://liens.vincent-bonnefille.fr/?searchterm=ntfy
Plein de projets /portages !
Integrations + projects - ntfy
- https://ntfy.bonnebulle.xyz/docs/integrations/
( dont : )
ntfyd: ntfy desktop daemon - https://github.com/joachimschmidt557/ntfyd/tree/trunk
ntfy-browser: A ntfy browser extension - https://github.com/johman10/ntfy-browser
ntfy-electron: Electron wrapper for the ntfy web app - https://github.com/xdpirate/ntfy-electron
ntfyr: A simple commandline tool to send notifications to ntfy.sh - https://github.com/haxwithaxe/ntfyr
ntfy.sh.sh: 📟 run scripts on ntfy.sh events - ntfy.sh.sh - Codeberg.org
https://codeberg.org/zvava/ntfy.sh.sh
Petite MàJ de mon outil de capture de sites web
( utilisé { ici } pour faire les aperçus )
-> Page entière ( HD )
-> Crop d'image ( rognée )
-> Thumbnail ( image d'aperçu poids réduit : gif )
MAJ des captures par URL -> base 32 )
MAJ index des captures par URL
Le cheminement, {bulle} d'intro
https://liens.vincent-bonnefille.fr/?NYPb2w
Ex ( HD non cropée )
/Wireguard/ permet de créer très facilement des tunnels VPN !
Permet à des "clients" de se connecter via un ordi distant : "host/serveur"
... et ainsi, le client utilise une nouvelle adresse IP de sortie : de changer d'identité
... dit à l'envers : le serveur.host sert de point de sortie à une connexion distante
Pour un #web_master ça sert aussi à accéder à un environnement local !
/Wireguard/ est dit plus souple et rapide que /OpenVPN/
ce #proto est utilisé par /Mozilla VPN/
/Wireguard/, basé comme #i2p /ou/ #WhatsApp sur :
Explications / ressources
Image (illu. {cette bulle})
- https://pimylifeup.com/raspberry-pi-wireguard/
( #tuto d'installation auto. sur #raspberrypi )
Une petite vidéo (récente en #français) pour le détail :
- https://invidious.fdn.fr/watch?v=K3ZClFTVVOU < 3 #@PafLeGeek
WireGuard est donc la nouvelle coqueluche des enthousiastes du VPN. Ce protocole tout récent a pris le monde du VPN par surprise. On relève notamment un développement éclair, des performances surprenantes, sans oublier son intégration au très select Kernel Linux. Avec autant d'arguments en sa faveur, il a vite trouvé preneur chez de nombreux éditeurs de VPN qui n'ont pas manqué d'intégrer le protocole dans leurs services.
MAJ
J'ai fini par utiliser un Web UI :
https://wg.bonnebulle.xyz
Très utile pour générer des cléfs / profiles / qrcode pour mes "clients"/ami.es
-> https://github.com/WeeJeWel/wg-easy
Cela permet de les échanger sans échanger les .conf via /WormHole/ ou autre...
/WormHole/ = <3 = https://liens.vincent-bonnefille.fr/?27Q_IQ
MAJ 2
#todo : split-tunnel & kill-switch
: faire passer certaines applications via WG !
- https://github.com/dadevel/wg-netns
- https://github.com/chrisbouchard/namespaced-wireguard-vpn
- https://volatilesystems.org/wireguard-in-a-separate-linux-network-namespace.html
( namespaces )
MAJ 3 #todo
Utiliser WG avec /Deluge/, web-client #bittorent_p2p ;)
- https://yarmo.eu/blog/wireguard-docker/
- https://shkspr.mobi/blog/2023/03/a-quick-guide-to-getting-mozilla-vpn-working-on-a-headless-linux-server/
--> TUNNELING some apps - https://github.com/jamesmcm/vopono/
Recherches, liens préalables
Doc.mans / Tools
Aur man (dyndns possible)
(full + update endpoint serverside)
LAN access
- https://unix.stackexchange.com/a/639011
- https://www.mickaelwalter.fr/extend-your-lan-with-wireguard/
- https://emersonveenstra.net/blog/access-local-network-with-wireguard/
- https://www.laroberto.com/remote-lan-access-with-wireguard/
- https://davidshomelab.com/access-your-home-network-from-anywhere-with-wireguard-vpn/
Allowed IP and exculde rang calculator
(and detailled explaination)
Très complet
Tools
- https://github.com/WeeJeWel/wg-easy
- https://github.com/complexorganizations/wireguard-manager
https://github.com/EmbarkStudios/wg-ui
Monitoring
Update EndPoint
! à utiliser côté serveur
( perso je remplace l'IP manuellement )
( dommage que WG ne vérifie pas tout seul si le dyn.host.xyz a changé d'IP )
Bash Auto create clients ( try fails /etc/wireguard/autogen )
alt bundle
Un article de #@noted.lol https://noted.lol/self-hosted-roundup-34/
fait récemment le tour des #alternativeto :
/borg/ (souvent cité sur des sites.forums.blogs) me parait une bonne piste
: https://www.borgbackup.org/?ref=noted
Duplicati
Free backup software to store backups online with strong encryption. Works with FTP, SSH, WebDAV, OneDrive, Amazon S3, Google Drive and many others.
Faire des sauvegardes est mère de toutes les vertus !
Hacked ? Restore from last week Backup !
Est plutôt pensé pour de la sauvegarde de HDD en local, on peut faire monter le contenu d'un serveur (FTP) en local... et en copier le contenu.
installation ( docker )
MAIS ne prend en charge que les dossiers LOCAUX (pas FTP/SFTP/SSH)
(une honte !) Du coup, il faut monter son serveur distant en local(host)
...
DIRECT try...
FTP ( ncftp )
- https://www.filestash.app/ovh-ftp.html (*ndbp)
- https://nguoiquynhon.blogspot.com/2009/08/how-to-backup-to-ftp-with-ncftp.html
Monter le contenu d'un serveur ( curlftpfs + Fuse )
--> /!\ Buggy/Laggy #error_échec <--
Final use ( service.systemd : root ready )
-
https://github.com/systemd/systemd/issues/1053#issuecomment-921456374
-
https://linuxconfig.org/mount-remote-ftp-directory-host-locally-into-linux-filesystem ( détailed )
Using Curl profiles
Rclone
( ma solution de cœur, avec un GUI/WebGUI )
( ... but, it's not working with my hoster, cant figure out why )
( mon IP était... blacklistée ! trop de requêtes avec curlftpfs )
fonctionne avec moult protocoles / plateformes !
Après configuration ( rclone config )
Lister
rclone lsd conf_name:
rclone lsd conf_name:Path/to/folder
Sync ( du serveur -> localhost ) :
TESTS
rclone sync --interactive conf_name:Path/folder /local/folder/
rclone sync conf_name:Path/folder /local/folder/ --dry-run --verbose
GO
rclone sync conf_name:Path/folder /local/folder/ --verbose
*) /Filestash/ est pas mal pour se connecter depuis le web à un serveur !
( bon remplaçant de web2ftp ) --- avec une offre gratuite en self_host !
Complémentaire d'un /Filebrowser/
qui, lui, affiche vos dossiers locaux dans votre Navigateur !
( avec une authentification "normale" : non s.FTP )
--> Supprimer/déplacer/renommer (bien sûr)
--> Possibilité de liens de partage (mdp/non)
--> Upload (même gros fichiers)
Tuto source :
.filebrowser.json
{
"port": 80,
"baseURL": "",
"address": "",
"log": "stdout",
"database": "/database.db",
"root": "/srv"
}
Ma commande finale ( pour un user www-data )
docker run --name filebrowser -d \
-v /mon_dossier_racine/Fichiers/:/srv \
-v /mon_dossier_config/filebrowser.db:/database.db \
-v /mon_dossier_config/.filebrowser.json:/.filebrowser.json \
--user $(id -u www-data):$(id -g www-data) \
--restart=always \
-p PORTDISPO:80 \
filebrowser/filebrowser
https://hub.docker.com/r/filebrowser/filebrowser
https://github.com/filebrowser/filebrowser
restaurer son pad trop gros
Je m'en suis finalement tiré en trifouillant le settings.json
...
j'ai illimité la taille d'upload + le temps de requête max...
et tout remis après pour éviter une DDOS ;)
Tools
( pas testés ) ( ressources / tools )
- https://pypi.org/project/etherpump/
- https://github.com/ether/ep_post_data
- https://github.com/redhog/ep_copypad
API
-> https://etherpad.org/doc/v1.6.0/#index_api_methods
-> https://github.com/ether/etherpad-lite/blob/develop/doc/api/http_api.md
list pads
curl "http://0.0.0.0:PORT/api/1.2.13/listAllPads?apikey=SECRETAPI&padID=PADNAME&rev=NUMERO
restaurer version ( restoreRevision )
( pratique pour un pad de démo restauré à 1h du mat )
curl "http://0.0.0.0:PORT/api/1.2.13/restoreRevision?apikey=SECRETAPI&padID=PADNAME&rev=NUMERO
(source)
supprimer ( deletePad )
curl "http://0.0.0.0:PORT/api/1.2.13/deletePad?apikey=SECRETAPI&padID=PADNAME&rev=NUMERO
( ... )
API + Mojo ( Perl )
NB:
- https://metacpan.org/pod/Etherpad
- https://metacpan.org/pod/Etherpad#get_html
- https://metacpan.org/pod/Etherpad#send_clients_message
- https://metacpan.org/pod/Etherpad#get_revisions_count
- https://metacpan.org/pod/Etherpad#restore_revision
use Etherpad; my $ec = Etherpad->new( url => 'http://0.0.0.0:PORT', apikey => 'SECRET', user => 'USER', password => 'PWD', proxy => { http => 'http://0.0.0.0:PORT', https => 'http://0.0.0.0:PORT' } ); $ec->restore_revision('new_pad_name', NUMBER);
- https://metacpan.org/pod/Etherpad#restore_revision
- https://metacpan.org/pod/Etherpad#copy_pad
\#!/usr/bin/perl -w use Etherpad; # # my $ec = Etherpad->new( url => 'http://0.0.0.0:PORT', apikey => 'SECRET', user => 'USER', password => 'PWD', proxy => { http => 'http://0.0.0.0:PORT', https => 'http://0.0.0.0:PORT' } ); # # # # # OUTPUT Arguments (optional) my $total = $#ARGV + 1; my $counter = 1; # # # INPUT + OUTPUT (arguments needed) if($total != 2){ print("2 arguments please..."); print("\n1. old pad name"); print("\n2. new pad name"); exit; } # # # OUTPUT Arguments (print) # Use loop to print all args stored in an array called @ARGV foreach my $a(@ARGV) { print "Arg # $counter : $a\n"; $counter++; } # # # GET 1. and 2. argument my $oldname = $ARGV[0]; my $newname = $ARGV[1]; # Execution $ec->copy_pad($oldname, $newname);
- https://metacpan.org/pod/Etherpad#move_pad
" Display and control your Android device. Contribute to Genymobile "
Contrôler son téléphone #Android depuis son ordinateur ! Un must-have !
Bonus : j'ai créé ce petit script de connexion en Wifi (Bash) : gist
Wiki : https://en.wikipedia.org/wiki/Scrcpy
Genymotion https://www.genymotion.com
est derrière un outil de virtualisation #VM
Blog ressource en #français : https://blog.rom1v.com
"Onionbalance is the best way to load balance onion services across multiple backend Tor instances. This way the load of introduction and rendezvous requests get distributed across multiple hosts. Onionbalance provides load-balancing while also making onion services more resilient and reliable by eliminating single points-of-failure."
https://onionbalance-v3.readthedocs.io/en/latest/v2/design.html :
"This tool is designed to allow requests to Tor onion service to be directed to multiple back-end Tor instances, thereby increasing availability and reliability. The design involves collating the set of introduction points created by one or more independent Tor onion service instances into a single ‘master’ descriptor."
Répertoire / Index mis à jour (1/1h) des relais / noeuds de sortie de Tor
Très utile pour détecter les utilisateurs du #dn_tor_onion ;)
J'ai aussi trouvé https://bgp-tools.com/torlists.html ( à comparer #todo )
Une solution alternative à la liste officielle proposée par le Tor Project qui... :
- n'est pas toujours à jour...
- index de faux positifs ( des IP qui ne font pas partie du réseau )
- pas d'IP_V6 ( qui devient la norme )
--> Peut donc représenter une alternative pour reccueillir les adresses du /DescripTor
listes ( TProject - CollecTor )
Les listes sont mises à jour :
- https://metrics.torproject.org/collector.html#relay-descriptors
- https://metrics.torproject.org/collector.html#exit-lists
( dans des fichiers datés distincts )
Voir aussi...
- https://2019.www.torproject.org/projects/tordnsel.html.en
- https://stem.torproject.org/api/descriptor/tordnsel.html
listes ( Fission )
https://lists.fissionrelays.net/tor/
exits.txt: Exit nodes only, IPv4 and IPv6. Use this list to block traffic to your site from the Tor Network.
exits-ipv4.txt: Exit nodes only, IPv4 only.
exits-ipv6.txt: Exit nodes only, IPv6 only.
relays.txt: All relays within the Tor Network, exit and non-exit, IPv4 and IPv6.
relays-ipv4.txt: All relays, IPv4 only.
relays-ipv6.txt: All relays, IPv6 only.
updated.txt: The time in UTC when the list was last updated.
scripts :)
- {cette bulle} https://gitlab.com/fissionrelays/lists/-/blob/master/tor.php
- alt ( #pyhon ) https://liens.vincent-bonnefille.fr/?CgmMmA
- https://blog.atagar.com/stem-release-1-8 ( using /Stem.python )
[good reports, updates, tips, reviews]
Une revendication sur /Github/ ....
Démission de codeur, référence à #@Aaron_Swartz (réclamant justice/explication)
Retour sur la mort étrange et tragique et touchante de ce "génie du web" / "enfant d'internet"
... à qui l'on doit flux /RSS/ - /Reddit/ - /OpenLibrary/ etc...
-
Défenseur des libertés sur internet
-
Auteur du [ open access #manifesto ]
--> http://wavelets.ens.fr/BOYCOTT_ELSEVIER/DECLARATIONS/DECLARATIONS/2008_07_01_Aaron_Swartz_Open_Access_Manifesto.pdf
--> https://zintv.org/outil/guerilla-open-access-manifesto/ #français -
la culture du logiciel libre
... -
il est arrêté suite au "piratage" des serveurs de #JStore
( qui enfermait des contenus_savoirs sur leurs serveurs )
---> Full Story : https://liens.vincent-bonnefille.fr/?MVj67Q
...
La vidéo évoque aussi le problème de l'économie du logiciel libre dans lequel la rétribution n'est pas toujours équitable (par exemple, un bout de code développé gratuitement mais jamais payé par des multinationales/big_corp)
< - https://invidious.fdn.fr/watch?v=R6S-b_k-ZKY
Heartbeats
Une question qui s'était posée avec la faille /Heartbeats/ d'OpenSSL en #2014
https://www.nextinpact.com/article/12029/86934-openssl-faille-heartbleed-menace-securite-web-sites-ferment
Des logiciels libres au cœur de nos environnements techniques...
sur lesquels "tout" repose
https://xkcd.com/2347/ :
Extra : représenter les "dépendencies" ?
- Visualization of npm dependencies
- npmgraph - socket.io
- npm Packages Dependencies Graph | Exploring Data
Le libre peut-il changer le monde ?
Culture libriste défendue par #@Aaron_Swartz
Celle d'un internet du partage,
Thèse enthousiaste tel :
La bataille du libre
@Philippe_Borrel de 2019
-
timing -> #@Richard_Stallman (intro)
https://peertube.fr/w/9T2bZwD3wQS1W9D37u3HTz?start=5m15s -
timing -> d'afférentes libertés d'usage + Copyleft
https://peertube.fr/w/9T2bZwD3wQS1W9D37u3HTz?start=5m53s -
timing -> droits essentiels d'un logiciel
https://peertube.fr/w/9T2bZwD3wQS1W9D37u3HTz?start=7m10s
(4) libertés essentielles :
-
0 - Exécuter le programme de n'importe quelle manière
-
1 - Étudier le code source et le modifier pour lui faire faire ce que l'on veut
-
2 - Partager : liberté de partager à d'autres gens comme on veut
: possibilité de re-publier le programme -
3 - distribuer des copies de versions modifiées
-
timing -> end : réponses...
de ce "coup de judo qui renverse le principe des lois propriétaires contre elles-même"
https://peertube.fr/w/9T2bZwD3wQS1W9D37u3HTz?start=8m50s
. . .
( // ) Droits en informatique #cli_bash
SOURCE :
I - La commande CHmod
Les types d'utilisateurs
- Le propriétaire du fichier (user)
- Le groupe du propriétaire du fichier (group)
- Les autres utilisateurs, ou encore le reste du monde (others)
Les types de droits
r : droit de lecture (read)
w : droit d'écriture (write)
x : droit d'exécution (eXecute)
II - Correspondances des droits en binaire/octale et leurs significations
Binaire | Val octale | Droits | Signif. |
---|---|---|---|
000 | 0 | - - - | Aucun droit |
001 | 1 | - -x | Exécutable |
010 | 2 | - w - | Ecriture |
011 | 3 | - w x | Ecrire et exécuter |
100 | 4 | r - - | Lire |
101 | 5 | r - x | Lire et exécuter |
110 | 6 | r w - | Lire et écrire |
111 | 7 | r w x | Lire écrire et exécuter |
...
Type d'user | Propriétaire | Groupe | Les autres |
---|---|---|---|
Droits | r w x | r - x | - - x |
Position Binaire | 111 | 101 | 001 |
Valeur Octale | 7 | 5 | 1 |
Quelques exemples / principes
Licences libres -> la quelle ?
Liste, #annuaire_index :
- https://github.com/LibreCybernetics/awesome-copyfarleft
-> Licences : - https://anticapitalist.software/ - Anti-Capitalist Software License
- https://lynnesbian.space/csl/ - Cooperative Software License
- https://wiki.coopcycle.org/en:license - Coopyleft License
- https://fair.io/ - Fair Source License
- https://paritylicense.com/ - Parity Public License
...
Articles : - https://www.boringcactus.com/2020/08/13/post-open-source.html
- https://gitlab.com/cal-coop/software-anarchy/
- http://telekommunisten.net/the-telekommunist-manifesto/ <- #@Dmitry_Kleiner
the-telekommunist-manifesto :
EX/ anticapitaliste
? Que nous dit la #Free_Software_Fondation (fsf)
? et nos amix les GNU
un #wiki #index des licences =>
-
Une "anticapitaliste"
- https://directory.fsf.org/wiki/License:ANTI-1.4
avec ce commentaire du #wiki :La « licence de logiciel anticapitaliste » n'est pas une licence libre, car elle n'accorde les quatre libertés qu'à certains types d'organisations, pas à toutes. Une telle clause restrictive dans une licence logicielle, quelle que soit la cause au nom de laquelle elle a été introduite, donne au détenteur du copyright trop de pouvoir sur les utilisateurs. Nous vous recommandons vivement d'éviter tout logiciel publié sous cette licence et de ne pas l'utiliser pour vos propres logiciels.
. . .
Libre (philo) /VS/ non libre
Open (source) /VS/ propriétaire
EX.
Adobe /VS/ Gimp
Miro /VS/ ...
=> Diversité sur un marché global
=> Logiciels installés sur nos ordinateurs / serveurs !
-> https://degooglisons-internet.org/fr/
un jardin ?
Framasoft = faire soit-même
( Nourrir la terre - Semer - Arroser - Pailler )
Plus largement c'est la culture IndieWeb
-> Popup camps
-
https://indieweb.org/dogfood-fr
( principes )
✊ Own your data.
🔍 Utilisez de la data visible (DRY)
💪 Construisez les outils pour vous-même
😋 Mangez votre propre nourriture pour chiens.
📓 Documentez
💞 Open sourcez
📐 L'UX et le design sont plus important
🌐 plates-formes agnostiques aux plates-formes
🗿 Longévité.
✨ Pluralité.
🎉 Poilons-nous[1].EX: Installation d’Etherpad
(?) comment on peut savoir qu'un logiciel est "ouvert" / "fermé"/propriétaire / "open"
(?) quelle différence ça fait
(?) es ce que vous avez un exemple de logiciel libre / ouvert
(?) queceque vous observez de différent avec les "propriétaires"EX.
Adobe /VS/ Gimp
Miro /VS/ ...
(?) Des limites au "jardin" ?
- Open Hardware
--> core . Kernel . Shell . Application - Open Software
--> OS -> apps
- (x)
- soft / hard / life . ware
Les limites du logiciel libre...
Détruire ou altérer le fonctionnement des machines numériques,
la résistance du 21e siècle ?
@Benjamin_Cadon critique l'espoir du libre et son basculement vers l'open-source (favorable aux multinationales) et préfère l'idée de FarLeft
- https://bib.vincent-bonnefille.fr/book/163 ==> P40_41
= https://revuepossibles.ojs.umontreal.ca/index.php/revuepossibles/article/view/378/385
( microsoft / #GAFAM s'en accommodent bien )Par sa malice, Microsoft a réussi à conserver sa mainmise sur le système d’exploitation des ordinateurs, Google a réussi son hold-up sur les mobiles avec Android (système ouvert quand cela l’arrange), les logiciels libres quant à eux sont majoritairement utilisés pour faire fonctionner Internet ( Wikipédia #2021) et ses multiples protocoles, même Microsoft se met à Linux pour son cloud ( Fassinou #2020 ). Et si l’on regarde quels sont les plus gros contributeurs aux standards d’Internet ( Ten Oever #2021 ) ou au développement du noyau Linux, on retrouve les géants du numérique en tête :
Intel, Google, Huawei, Facebook, AMD, NVIDIA, IBM, CISCO, et bien d’autres géants
… qui forgent leur propre intérêt. Car ces licences et logiciels libres restent dans une vision libérale du régime de la propriété et s'emprisonnent dans le capitalisme, à l’inverse de l’approche « copyfarleft » de #@Dmitry_Kleiner .
= Les multinationales du numérique s’en accommodent donc très bien, pendant que de petits chatons (voir https://chatons.org/), en tentant de dégoogliser Internet, usent leurs griffes en vain. Internet a beau être mu par des logiciels libres, ce n’est pas le sentiment de liberté qui y prévaut aujourd’hui.
( + cite
Car fondamentalement, comme #@Julia_Laïnae et #@Nicolas_Alep le signalent, on peut considérer que « Le logiciel libre n’est qu’une modalité de développement informatique et de licence de diffusion, il ne remet pas en cause la recherche d’efficacité, la rationalité instrumentale, qui sont au fondement des technologies numériques » (Laïnae & Alep 2020)
--> 'Anti_Alternumérisme
Contre l'alternumérisme :
Pourquoi nous ne proposerons pas d'"écogestes numériques" ni de solutions pour une "démocratie numérique"
de #@Julia_Lainae & #@Nicolas_Alep
=> https://bib.vincent-bonnefille.fr/book/57
D'autres aspects problématiques..
...dans le digital labor du code
Un article #français complet reprend cette question...
de dépendances mais aussi des conditions de travail quand on code
==> Le désenchantement du logiciel
==> https://tonsky.me/blog/disenchantment/fr/
EDIT:
On y critique plein de dérives et complexités dans le dev. moderne :
- la lenteur des interfaces et OS/Web
- la complexité et son cout (cruft)
On complexifie parfois les choses avant de revenir à l'essentiel - dépendences
cf. Extra reprsenter les dependencies
Dette Technique (meth. Agile)
- https://fr.wikipedia.org/wiki/Dette_technique
- https://invidious.fdn.fr/watch?v=pqeJFYwnkjE
- https://wikiagile.cesi.fr/index.php?title=DetteTechnique
Article d'origine :
https://martinfowler.com/bliki/TechnicalDebt.html #2019
Ou comment, en préférant les technologies prêtes à l'emploi (ou service) on peut, dans un dev futur, payer la dette de cet "achat" de départ, des années/semaines/après... L'importance de bien choisir ses logiciels, de bien les penser, d'avoir une bonne équipe.
EDIT :
Autre article #2019
Is High Quality Software Worth the Cost ?
R> Le code comporte une part essentielle à son fonctionnement
Autour de ce noyau important s'ajoute d'autres contenus et fonctionalités
.. qui viennent en complexifier la relecture/évolution futur
Ce code de moindre qualité est qualifié grossi la dette technique
: le cout à l'emploi/usage
Un code qui reste de qualité et clair peut être plus long à produire et livrer
.. mais diminue la dette qui devra être rembourssée à l'avenir
( répercutions négatives futures, reportées )
=IA= Cruft est un terme utilisé par les développeurs pour désigner le code qui est redondant, mal organisé ou difficile à comprendre. Il peut également faire référence à des données ou à des processus qui ne sont plus nécessaires.
La dette technique n'existe pas !
Un bon article critique en #français https://waxzce.medium.com/la-dette-technique-une-supercherie-mythologique-pour-gal%C3%A9riens-de-lit-7ed0dfbf39c7
argumente que l'idée de la dette technique est nocive, fait porter une responsabilité culpabilisatrice sur les équipes. Et entend bien que parfois le code tout entier doit être refondé, repris dans un nouveau contexte (et que ce n'est pas un mal).
source
Il faut rebatir autrement, on ne fait pas pareillement un bidonville ou une cathédrale...
Cathedral & the Bazaar
On retrouve ici une métaphore de l'édifice...
Une question micro-macro oranisationel dans la prise de décision des collectifs, la répartition +/- (in)visibilisée du pouvoir, diffus ou explicite, partageant ou non la charge/cout du risque, assumant ou non les responsabilités des objectifs / attendus
Éloge d'un pouvoir possible sans structure apparente, rigide, perçue comme anti-créatrice, asséchante /VS/ l'émultion du collectif auto-organisé par des forces spontanées
https://bib.vincent-bonnefille.fr/book/90
The Cathedral & the Bazaar :
Musings on Linux and Open Source
de comment la hierarchie, le pouvoir ordonnatrice se compose,
comment il peut aussi reposer sur une émulation de groupe "horizontale",
traverssante, autrement récompensansée
d'autres hiérarchies informelles et interpersonnelles
: une économie du don organique,
( dissimulant parfois les pouvoirs internes )
mais favorisant l'émergence,
dont la somme des parties ( interventions )
.. est plus grande que les parties elles-memes ( séparées )
: la multitude faisant œuvre commune.
... une entre aide qui peut malgré tout (et c'est le sujet ici) faire porter la responsabilité sur les épaules d'un.e seul.e dev,
un maillon qu'on pourra exploiter :
Attaque_de_XZ_Utils_par_porte_dérobée, plus facile à isoler et manipuler
Vidéos de vulgarisation en #français :
Une Archie diffuse
L'absence apparente de hiérarchie (ou de connivence) ne veut pas dire que le pouvoir n'existe plus, qu'il n'y a pas de tentatives gouvernantes visant à assujettir ou déplacer les forces (vers des buts spécifiques).
Critique de #@Jo_Freeman : La tyrannie de l’absence de structure #1970
Reconnaître les autorités, qu’elles soient établies ou tacites, est une difficulté pour tout groupe organisé.
Comment agir sans s’entraver dans des structures aliénantes ?
Peut-on se passer de structure ?
Un pouvoir surveillant intgré, une gouvernemrntalité des individus entre-eux
: la modernité d'un panoptique sans barbelé, sans centre identifiable, autonome, décentralisé
... un pouvoir indolore mais toujours là
Interopérabilité
https://liens.vincent-bonnefille.fr/?searchterm=interopérabilité
https://liens.vincent-bonnefille.fr/?AocXOA
: ne pas rendre / ne pas être dépendant.e d'un environnement, une plateforme
On pensera aussi aux logiciels embarqués, aux ventes forcées...
-> https://www.librealire.org/vente-forcee-vente-liee ( articles )
-> https://www.librealire.org/logiciels-libres-internet-libre-perspectives-et-enjeux-frederic-couchet
wiki :
Extra
Pour choisir il faut pouvoir quitter/partir/bifurquer
( idem dans la vie des ingénieurs.eurs )
( ou durant la grande démission post #covid )
( je pense ici à la vidéo de #@Sabine )
/Wetty/ sert à accéder à un terminal de commandes ( #cli_bash ) via le protocole #SSH ...
mais en passant par le wwweb (via n'importe quel #navigateur ) !
Normalement on se connect avec le protocole #SSH via un terminal (application)
ssh user@adresse_du_serveur_ou_son_IP
<
Sur un wifi public (ou protégé) certain #admin empêchent l'accès au port :22
(SSH)
Aussi, en passant par le web ( port :80
) on peut contourner cette limitation...
Pratique quand on veut accéder sans délais à son serveur distant !
- https://computingforgeeks.com/run-linux-terminal-on-web-browser-using-wetty/
Full #tuto - https://distroid.net/linux-terminal-using-wetty/
. . .
En remplaçant de /Shell in a box/ ( discontinued )
Content sharing / reading
-
Hypothes.is // annotations collectives #<3
https://hypothes.is -
Are.na // Collection/Curation du web #<3
https://www.are.na
Tableaux
-
Excalidraw
: https://excalidraw.com -
Miro // la porche, pas libre
Avec on peut bouger / ajouter / annoter des éléments tous.tes ensemble !
Très fluide, efficace, propriétaire.
: https://miro.com/fr/ -
MilaNote // Miro-like #<3
Agencer des contenus en drag-n-drop, présenter, annoter, etc
Un interface fancy comme Miro
: https://milanote.com/ -
Okso // dessiner, lier, noter
Sobre, non interactif, permet de faire des présentations pas en live, on sauvegarde les pages.compositions dans des fichiers locaux (serverless) : "The OkSo app is a Progressive Web App (PWA)" https://okso.app/about
: https://okso.app -
Digiscreen
Un tableau libre où disposer des contenus numériques
: https://ladigitale.dev/digiscreen/ (via)
IDE en ligne
Il y a plein d'IDE qui sont "passés" online !
( des interfaces graphiques de développement )
VSC s'y est mis : https://vscode.dev
( on est chez Microsoft, bof bof )
J'utilisais : https://www.codetogether.com
Chez la concurrence directe il y a :
https://www.jetbrains.com/code-with-me
Ya aussi :
... https://duckly.com
... http://demo.icecoder.net / https://replit.com / https://codesandbox.io
. . . mais on peut trouver plus modeste, simple
#web_master VS #indieweb ;)
Progra. Dev.
-
Glitch // je l'utilisais pour des cours d'introduction au code
Il est gratuit (on peut ajouter des ressources si le projet est trop gourmand)
ya une gestion des fichiers, un terminal, un preview (dont auto-refresh)
L'intérêt vàv de https://codepen.io c'est le côté interactif
: https://glitch.com -
CodeBoard // Glitch-like
Un interface moins accueillant mais des fonctions très proches. La nécessité de s'inscrire.
: https://codeboard.io -
Neocities // un hébergeur de fichiers simples avec éditeur rudimentaire #<3
Une référence dans le #indieweb (gratuit, associatif)
Mais quelques restrictions.manques.limites
: https://neocities.org
MAIS AUSSI ( #2023 )
- https://wowchemy.com/?utm_campaign=poweredby (free lesscode)
- https://vercel.com (environement de déploiement) //
- https://netlify.com
... utilisé pour installer par ex. /Jekyl/ + sync avec #git
... #jardin numérique : https://liens.vincent-bonnefille.fr/?fEu6wQ
#wordpress like ( source )
- Ghost: The Creator Economy Platform
https://ghost.org - Hexo
https://hexo.io - HTMLy - PHP Blogging Platform, and Flat-File CMS <- No DB !
https://www.htmly.com
LiveCode - Editors
-
CodePen // La référence
Tout clef en main
https://codepen.io -
JsArena // Js avec console
Interface scindé (2 panneaux), simple élégant, efficace !
Compte.Sauvegarde via Github
: https://jsarena.dev -
PlayCode
Plus abouti que JsArena, GUI plus léchée, avec Preview (3 panneaux)
Plusieurs templates de départ (js/Vue/Bootstrap/etc)
Proposent des #cours : https://playcode.io/learn
: https://playcode.io/javascript-online
la star ( bonus ) alt. à Miro
- #Hotglue // Tableau drag-n-drop #<3
Pour présenter des contenus, faire des sites à la façon web-n-craft : #indieweb
Un projet collectif : http://kabane.org/thema/surveillance/
: https://hotglue.me
Pensez aussi aux variants et variances d'éditeurs collaboratifs tel #EtherPad :
https://liens.vincent-bonnefille.fr/?searchtags=EtherPad
Par exemple :
- Your World.Of.Text // écrire à l'infini #<3
Écrire toustes ensemble sur un tableau noir infini ( textuel #ascii_art )
https://www.yourworldoftext.com/~vincentb/
Kanboards / Organisation
" As an app developer, Alexander knows better than most the dangers of giving away our personal data in the name of convenience and has a challenge for you to take back control. Alexander is the co-founder, and Chief Technical Officer at ClimateClever, a startup helping schools, communities and businesses reduce their carbon footprint. A full-stack developer with over ten years of experience, he previously ran an app development agency managing various teams from design and marketing to web and native mobile app developers, both in Australia and abroad. "
" Le principe KISS, Keep it simple, stupid (en français, mot à mot : « garde ça simple, idiot », dans le sens de « ne complique pas les choses ») "
Souvent cité pour expliquer la #philosophie_pensée #linux (Unix)
( https://en.wikipedia.org/wiki/Unix_philosophy#Eric_Raymond's_17_Unix_Rules )
Fil #wiki ( articles connexes )
- https://fr.wikipedia.org/wiki/Simplexité
- https://fr.wikipedia.org/wiki/YAGNI
- https://fr.wikipedia.org/wiki/Ne_vous_répétez_pas
- https://fr.wikipedia.org/wiki/Méthode_MoSCoW
Il s'agit de rendre simple une tâche pourant complexe ( par exemple en la découpant )
Un exemple que j'ai retenu : celui des commandes apellées "pipe(lines)" dans l'univers Unix (par lesquelles l'info passe d'un traitement à l'autre) : un procédé simple car combinatoire.
cat mondocument.txt | grep "titre"
Dans cet exemple, cat
( sort/output le texte présent dans mondocument.txt
) qui est ensuite combiné à l'outil grep
( qui cherche dans le résultat de cat
, les lignes contenant "titre"
).
Simple sans perdre la complexité
- Cette combinatoire (parmis d'autres tel
>>
) permet avec un ensemble de commandes.logiciels simples de faire des choses complexes en bout de chaine. - Le principet est simple à intégrer-apprendre. Sa généralisation au sein d'un système d'outils variés ouvre à une grande créativité.
D'autres exemples de commandes "simples" profitant de cette combinatoire
OK pour le dev mais pour les idées ? #méthodologie
( ma question : y aurait il du bon dans les méthodes_stratégies de dev. à appliquer.implémenter à une recherche (en thèse ou autre ) ? Quelles hybridités programatives pourraient en sortir ? Et moi, quels sont mes outils de d'auto-/feedback/ et d'orientation face à un problème (par exemple de restructuration face à une nouvelle hypothèse, un doute) ? )
Cité dans ce wiki (source) :
( explications, point de vu pratique.empirique d'un dev. )
http://people.apache.org/~fhanik/kiss.html
What does that mean?
This principle has been a key, and a huge success in my years of software engineering. A common problem among software engineers and developers today is that they tend to over complicate problems.Typically when a developer is faced with a problem, they break it down into smaller pieces that they think they understand and then try to implement the solution in code. I would say 8 or 9 out of 10 developers make the mistake that they don't break down the problem into small enough or understandable enough pieces. This results in very complex implementations of even the most simple problems, another side effect is spagetthi code, something we tought only BASIC would do with its goto statements, but in Java this results in classes with 500-1000 lines of code, methods that each have several hundreds of lines.
How will I benefit from KISS
- You will be able to solve more problems, faster.
- You will be able to produce code to solve complex problems in fewer lines of code
- You will be able to produce higher quality code
- You will be able to build larger systems, easier to maintain
- You're code base will be more flexible, easier to extend, modify or refactor when new requirements arrive
- You will be able to achieve more than you ever imagined
- You will be able to work in large development groups and large projects since all the code is stupid simple
.... la suite de l'article donne de plutôt bons conseils pour optimiser son dev. (par exemple, réfléchir avant de coder...)
#nodejs ... et son gestionnaire / watcher de dossiers : : /nodemon/
( sont dans un bateau )
Je découvre /PM2/ comme gestionnaire multi-apps (et logger)
( sans doute mille ans après tout le monde )
J'aime bien, je vois le potentiel de gestion...
et puis surtout quand ca plante, ca repousse
( redémarre tout seul )
C'est un outil pro et ça se sent !
Un peu l'impression d'une usine à gaz
( d'ailleurs leur /monitoring ne manque pas de /fees...) #not_free
PM2 permet de créer des "écosystèmes"
( Un fichiers qui indique les environnements des app )
Pour test j'ai "découpé" les applis_services de mon serveur
( qui jusque là étaient dans le même fichier server.js )
( puis j'ai associé chaque app à un port, #nginx a fait le reste en reverse proxy )
Un tuto complet step-by-step (en anglais) : https://blog.tericcabrel.com/deploy-a-node-js-application-with-pm2-and-nginx/ #nginx
Un petit tuto sur https://futurestud.io/tutorials/pm2-use-npm-to-start-your-app (en anglais), j'aime bien le rythme pas-à-pas, l'interface...
Trouvez la documentation des commandes... #linux #cheatsheet
- https://cheat.sh/ls
curl cheat.sh/ls
( ls = lister dossiers )
TLDR
Linux commandes (et tuto, tldr)
Des #alternativeto :
Not installed / cant run #linux
https://wiki.gnome.org/Apps/Devhelp
#horsligne_offline_invisible
Ça donnait ça ( sans la moindre /obfuscation/ )
https://vincent-bonnefille.fr/index_hacked.html
Un message s'affiche alors sur la page d'accueil de mon site principale
(non encore auto-hébergé) ::
Dont un script est chargé sur le disque dur de :
http://mxian.wapgem.com
Un fichier .htaccess intégré au dossier contenant le logiciel intrusif indique :
#Coded By Sole Sad & Invisible
lescgi-script
sont en .alfa
le tout profite d'une failleeval()
et à vrai dire je pige pas tout.
La page hackée avec un index.html
de remplacement indiquait d'aller voir les logs...
Check The Security Of Your System Please
Ce que j'ai fais, l'activité accrue sur un dossier spécifique (et son formulaire) m'ont permis de trouver la faille facilement...
Formulaires : portes ouvertes
Un formulaire, ces petites boites blanches qui attendent du texte de la part du visiteur.visiteuse (bot/humain.e) permet d'envoyer et d’fexécuter du code sur le serveur directement (qui est un ordinateur capable de lancer.activer.exécuter des programmes et donc d'ajouter/supprimer/éditer des fichiers en fonctions des droits/permissions qui sont accordées).
C'est par là que le code a été exécuté.
Hack : usage détourné
Au lieu d'envoyer une image via cette page dédiée, du code non "escapé" a été exécuté. ( "escape", ça veut dire "faire sortir, échapper". Échapper du code ça consiste à convertir les caractères spéciaux qui servent à écrire du code, en autre chose : des caractères inoffensifs : à faire qu'ils s'affichent seulement, comme {ces} caractères, des lettres, des signes non interprétés comme "faisant quelque chose".
( -\:\?()\/... sont {là} escaped . \<> aussi, sinon ils seraient "lus"interprétés par le navigateur comme contenant du code à exécuter ) #langage_progra
: Des caractères qui servent à écrire du code exécutable { c'est à dire qui par son langage produit des effets } en caractères qui ne contiennent pas d'ordres de commandement sur la machine.
Là le langage final interprété dans le code ajouté à mon site semble écrit du Python ...
Se faire cambrioler
Le sentiment est toujours le même suite à un "viol de propriété" ou de domaine... on fouille les dossiers, on cherche les traces de la présence et on se sent pas très bien... mais on apprend.
Et le fait que tout soit explicite, transparent, invitant à regarder le #log sonne comme un avertissement. L'acte d'un.d'une White_hat ?En vrai je les remercie. Ca m'a mis la faille sous le nez et j'ai fais un peu de ménage.
Une faille de débutant
En cause de cette faille, une mauvaise gestion des permissions de fichiers (en 777)
oui ... j'avoue... et un formulaire mal sécurisé permettant l'envoi du code malveillant, son installation (avant une possible activité.usage malfaisant)
L'intrusion, le point d'entrée, à été trouvé (et exploité) à l'intérieur d'une page web accessible. Elle faisait parti d'un projet que je n'ai pas maintenu (et sécurisé comme il faut à l'époque).
Un bout de code, des pages obsolètes pour moi, oubliées sur un coin de serveur... Or, même inactif.inutilisé, un espace reste un espace : l'automatisation de recherche de failles se soucis peu des affectes et volontés : les moyens sont les moyens.
C'est moi dans ma tête qui y cherche du sens, une conspiration, un geste personnel. Un contexte explicatif... ( et j'en ai trouvé un : )
Sys.admin, un métier (pas le mien)
FunFact ... qui ne peut être tout à fait une coïncidence... je passais aujourd'hui un entretient pour des formations de Sys Admin... c'était tout à fait de circonstance.
Le Quiz que j'ai passé m'a donné une note honorable mais j'ai bien compris que je n'avais pas les qualifications d'informaticien BAC+2.
On y parlait adresses IP
, Masques de sous-réseau
, machines virtuelles
...
en citant beaucoup Windows (8.1)
comme référence/environnement...
Les termes du Quiz que j'ai recherché :
Hyperviseur 2012 / VHDX / VHD
SCVMM
GPO Starter
DCPROMO
Fôret Active Directory
Serveur AD DS
NTFS / SATA 3
Base SAM
FTP / TFTP
Couches OSI
...
J'avais bien aimé l'édition de leur expo collective en ligne
. Des pépites #2019 #2020 :
. https://liens.vincent-bonnefille.fr/?bKaWvA
. . un /design/ par /floor/ (étages) en #ascii_art
. . . reprenant les arborescences "par défaut" des serveurs de #fichiers #ftp
.
Elles.Ils reviennent et cette fois c'est la Rave #2021
#actu.candidature { cf. lien.bulle }
Avec des promesses de #web_performance
A la conception de leur site #web =
https://basel.codes #<3
#web_master #web_créatifs #inspiration
donnent des #cours workshops... sur #dn_dat
https://github.com/baselcodes/teaching/tree/master/workshops/201903WS_copy_it_right%40HGK_masterstudio
( en partant de l'install de VSCode #config_install #tuto)