https://si3t.ch/log/prx's logprxprx@si3t.ch2026-07-22T17:42:33Zwhttps://si3t.ch/log/2026-07-22-w.txt2026-07-22T17:33:02Z et le alt en
pour pouvoir écrire des légendes.
Je ne suis pas développeur, on doit pouvoir faire mieux.
Si vous avez des suggestions pour rendre le truc plus facile à utiliser
et pour améliorer le code CSS et le rendu à l'impression, je suis
preneur :)
Les sources sont là :
https://git.sr.ht/~prx/w
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=w
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
Réponse à arpihttps://si3t.ch/log/2026-07-08-Reponse-a-arpi.txt2026-07-08T21:18:20Z mailto:prx@si3t.ch?subject=Reponse-a-arpi
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
stagal static gallery generatorhttps://si3t.ch/log/2026-06-24-stagal-static-gallery-generator.txt2026-06-24T13:46:44Z https://git.sr.ht/~prx/stagal
## Description
Pourquoi un nouveau générateur alors qu'il y a MinigalNano?
=> https://github.com/sebsauvage/MinigalNano
Même si j'aime beaucoup Minigalnano, il reste en PHP dont j'essaie de me
débarasser pour me simplifier l'administration de mon serveur. À ce
titre, il ne mereste plus qu'à trouver un remplaçant à baïkal pour mes
CalDAV/CardDAV.
Par ailleurs, MinigalNano ne prends pas en charge tous les formats
vidéos (webm notamment), et demande à mon petit serveur limité des
ressources pour générer les aperçus.
En passant, sfpg est génial aussi (mais en PHP):
=> https://sye.dk/sfpg/
Bref, avec ma chérie, on a un site qui nous sert d'album photo : les
parents gagas que nous sommes. On a pris énormément de retard dans le
classement, et ma dame a récemment tout refait pour s'occuper l'esprit
pendant son arrêt de travail.
De mon côté, j'avais commencé un truc à base de awk, puis ensuite tout
réécrit en C (à peine), puis finalement suis revenu au awk, moins rapide
mais tellement plus pratique pour tous les petits cas de figure et la
gestion du texte.
Oui, awk, pas python, parce que awk est présent par défaut partout, et
en python il y a déjà l'énorme sigal que je ne saurais ajuster à mes
besoins.
=> https://github.com/saimn/sigal
Bref, stagal est né.
Il s'agit d'un script awk qui appelle "find" sur un répertoire, crée des
fichiers html uniques et des thumbnails si besoin qu'il suffit ensuite d'envoyer
sur le serveur http, chacun étant dans son dossier respectif.
Je tenais à un truc qui ne touche pas aux photos sources : on utilise
Syncthing pour garder nos photos triées entre tous nos appareils.
=> https://syncthing.net/
Je vous invite à tester et me faire des retours si vous le voulez,
stagal est là :
=> https://git.sr.ht/~prx/stagal
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=stagal-static-gallery-generator
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
Que faire après linstallation dOpenBSD ?https://si3t.ch/log/2026-05-29-Que-faire-apres-linstallation-dOpenBSD-.txt2026-05-29T21:32:36Z /misc/logiciel-libre/openbsd/postinst/
Voici donc une copie de cette page actualisée :
---
# Choses à faire après l'installation d'OpenBSD
Notes personnelles pour profiter d'OpenBSD dans un usage "desktop".
## Sécurité
### /home en 700
Personne d'autre que moi ne peut lire dans mon dossier.
```
$ chmod 0700 $HOME
```
### Parefeu + sévère
On laisse tout sortir, mais rien rentrer sauf pour le ping (icmp).
Seule l'interface wg0 pour le VPN est plus permissive.
```
# cat << EOF > /etc/pf.conf
set skip on lo
antispoof quick for { egress }
block
pass in proto icmp
pass in proto icmp6
pass on wg0
pass out
EOF
```
### doas
Commandes que je veux pouvoir lancer sans entrer de mots de passe.
Surtout pour les scripts.
```
cat << EOF > /etc/doas.conf
permit persist :wheel
permit nopass :wheel cmd /sbin/disklabel
permit nopass :wheel cmd /sbin/umount
permit nopass :wheel cmd /sbin/mount
EOF
```
### Sync fs
Pour assurer le moins de perte de données possible en cas de crash, en
dépit d'un léger ralentissement potentiel (jamais remarqué), je préfère
monter toutes mes partitions
avec l'option "sync" :
```
# sed -i s/rw/rw,sync/g /etc/fstab
```
### Autologin
Si on est le seul utilisateur de la machine et que l'ensemble est
chiffré et qu'on éteint son ordi lorsqu'on ne l'utilise pas, alors on
peut activer l'autologin pour xenodm :
```
echo 'DisplayManager._0.autoLogin: user' >>
/etc/X11/xenodm/xenodm-config
```
Dans ce cas, je vous conseille de désactiver la possibilité de fermer
la session graphique avec Ctrl-Shift-backspace. Sinon, n'importe qui
peut prendre le contrôle de votre session même si vous l'avez
verrouillée avec xlock (ou autre). On en profite aussi pour retirer la
possiblité d'accéder à un tty avec Ctrl-Alt-F*.
```
cat << EOF >> /etc/X11/xorg.conf
Section "ServerFlags"
Option "DontZap" "True"
Option "DontVTSwitch" "True"
EndSection
EOF
```
### Résolveur DNS indépendant (unwind) + adblock
/etc/unwind.conf:
```
fdn1=80.67.169.12
fdn2=80.67.169.40
fdn61=2001:910:800::12
fdn62=2001:910:800::40
wikimedia=185.71.138.138
wikimedia6=2001:67c:930::1
bortzmeyer=193.70.85.11
block list "/var/db/unwind-block.txt" log
forwarder { $fdn61 DoT $fdn62 DoT $fdn1 DoT $fdn2 DoT $wikimedia6 DoT
$wikimedia DoT $bortzmeyer }
preference { recursor DoT oDoT-forwarder oDoT-autoconf stub }
```
Le script : /usr/local/sbin/unwindblock
```
#!/bin/sh
db=/var/db/unwind-block.txt
if [ -n "$(find $db -mtime +7)" ]; then
# wait for internet access
while true; do
nc -zw1 si3t.ch 443 && break || sleep 60
done
ftp -o- https://si3t.ch/pub/evils/unwind-block.txt.gz |gzcat >
$db
fi
```
Première installation et activation :
```
ftp -o- https://si3t.ch/pub/evils/unwind-block.txt.gz |\
gzcat > /var/db/unwind-block.txt
rcctl enable unwind
rcctl start unwind
chmod +x /usr/local/sbin/unwindblock
# crontab -e
@reboot /usr/local/sbin/unwindblock
```
Voir la liste des ip blacklistées
=> /evils/
### ntpd
J'évite google à tout prix, même pour l'heure!
```
sed -i 's/www\.google\.com/www.openbsd.org/' /etc/ntpd.conf
```
### VPN
J'utilise un VPN wireguard via openbsd.amsterdam sur le rdomain 2 pour
l'utiliser seulement au besoin.
J'ai donc un fichier /etc/hostname.wg0
```
wgkey ...
wgpeer ... \
wgendpoint 46.23.90.144 4545 \
wgaip 0.0.0.0/0 \
wgaip ::0/0
inet 10.0.0.2/24
inet6 fd54:49bc:c233:fde:cafe::2/64
rdomain 2
!route -T2 add -inet default 10.0.0.1
!route -T2 add -inet6 default fd54:49bc:c233:fde:cafe::1
up
```
unwind n'est pas accessible sur la table de routage 2. Il faut donc
lancer un second unwind:
```
cat << EOF > /etc/hostname.lo1
rdomain 2
127.0.0.1
up"
EOF
sh /etc/netstart lo1
ln -s /etc/rc.d/unwind /etc/rc.d/unwind2
rcctl enable unwind2
echo "unwind2_rtable=2" >> /etc/rc.conf.local
rcctl start unwind2
```
Pour utiliser le VPN, je lance le programme souhaité avec :
```
route -T2 exec le_nom_de-l_outil -flag1 -flag2...
```
## /etc/fstab
### Montage de cdrom/DVD
```
$ doas mkdir /cdrom
$ cat /etc/fstab
/dev/cd0a /cdrom cd9660 ro,noauto 0 0
```
### Disque dur externe de musique
Toute ma musique est sur une carte SD.
```
b2a7ab562311a08f.a /home/prx/mpd ffs rw,nodev,nosuid,noatime 1 2
```
### /tmp en ram
Je monte "/tmp" en ram, et j'attribue 1/10 de la RAM disponible pour ça.
Ça permet de gagner en rapidité et limite les écritures sur le disque.
On commente avant tout la ligne contenant déjà une entrée pour "/tmp"
dans "/etc/fstab".
```
# sed -i '/\/tmp /s/^/\#/' /etc/fstab
# printf "swap /tmp mfs rw,nodev,nosuid,-s=%sB 0 0\n" \
$(dmesg |awk '/avail mem/ { print int($4 / 10)}') \
>> /etc/fstab
# echo "chmod 1777 /tmp" >> /etc/rc.local
```
Ou plus simplement, pour allouer 1G de ram :
```
swap /tmp mfs rw,nodev,nosuid,-s=1G 0 0
```
## Confort
## Boot plus rapide
Ça, c'est juste du caprice.
```
echo "set timeout 1" > /etc/boot.conf
```
### user dans + de groupes
Pour éteindre sans avoir besoin de "doas", il faut appartenir au groupe
"_shutdown".
Afin d'utiliser "cu", c'est à dire accéder à mon apu2, il faut être
dialer.
Pour travailler avec les sources, il faut être wsrc.
```
# usermod -G _shutdown prx
# usermod -G dialer prx
# usermod -G wsrc prx
```
Enfin, pour être moins limité en terme de ressources, c'est mieux
d'appartenir à la class de login "staff",
ce qui est de toute façon le cas si on est le premier utilisateur créé à
l'installation (voir login.conf(5)).
```
# usermod -L staff prx
```
À la fin:
```
> userinfo prx
login prx
passwd *
uid 1000
groups prx wheel operator wsrc staff dialer _shutdown
change NEVER
class staff
gecos prx
dir /home/prx
shell /bin/ksh
expire NEVER
```
### wsconsctl
Pas de bip clavier.
Luminosité réduite : 40% me permet de bien voir et réduit la
consommation d'énergie.
Mise en veille de l'écran après 1 minute si inactif.
vblank pour économiser l'énergie.
```
cat << EOF > /etc/wsconsctl.conf
keyboard.bell.volume=0
display.brightness=40
display.screen_off=60000
display.vblank=on
EOF
```
### Bruit dans le casque
Dans mon casque audio, il y a parfois du bruit blanc.
Pour le retirer:
```
cat << EOF > /etc/mixerctl.conf
inputs.mix2_source=dac-0:1
EOF
```
=> https://www.mail-archive.com/misc@openbsd.org/msg182180.html
### Gestion de l'énergie
Le système sera suspendu si la batterie descend en-dessous de 10%. Ça
permet de brancher la machine sans perdre son travail. La batterie est
considérée comme faible à partir de 20% et déclenche le script warnlow.
```
rcctl enable apmd
rcctl set apmd flags -A -z 10 -w20
```
Et pour que l'écran soit verrouillé après avoir suspendu la machine:
```
# cat /etc/apm/suspend
#!/bin/sh
pkill -USR1 xidle
```
Pour être averti si la batterie a un niveau trop faible:
```
# cat /etc/apm/warnlow
#!/bin/sh
export DISPLAY=:0.0
notify-send "ALERT!!! Batt: $(apm -l) %"
exit 0
```
On n'oublie pas de rendre éxécutable ces scripts:
```
# chmod +x /etc/apm/*
```
### /etc/sysctl.conf
Pour éviter d'abîmer la batterie en lui imposant une tension de charge
lorsque le secteur est branché :
```
hw.battery.chargemode=1
hw.battery.chargestart=0
hw.battery.chargestop=85
```
Pour xorg, si c'est demandé dans /var/log/Xorg.0.log
```
machdep.allowaperture=1
```
Si on veut utiliser micro et webcam... Perso je préfère lancer un script
"visio-enable" seulement au besoin pour activer ces éléments...
```
#!/bin/sh
doas sysctl kern.audio.record=1
doas sysctl kern.video.record=1
doas chown $USER /dev/video*
sndioctl input.mute=1
sndioctl input.level=0.9
doas mixerctl record.volume.mute=off
doas mixerctl record.adc-0:1_source=mic
```
### Syncthing
Pour Syncthing, comme indiqué dans le pkg-readme, il faut augmenter
quelques limites:
/etc/login.conf :
```
staff:\
[...]
:openfiles-cur=8192:\
:openfiles-max=8192:\
[...]
```
/etc/sysctl.conf
```
kern.maxfiles=8192
```
### réseau et WiFi
Sur un portable, on peut activer le WiFi et le filaire avec de
préférence le filaire. En cas de déconnexion, l'autre carte réseau
prend le relais.
Dans mon cas, sur un x250 :
```
# cat /etc/hostname.iwn0
join wifi1 wpakey blabla
join wifi2 wpakey pouet
join ""
up
# cat /etc/hostname.em0
up
# cat /etc/hostname.trunk0
trunkproto failover trunkport em0 trunkport iwm0
inet autoconf
inet6 autoconf
```
### Outils audio USB prioritaires
```
# rcctl set sndiod flags -f rsnd/0 -F rsnd/1
# rcctl restart sndiod
```
### Imprimante USB
```
# echo 'disable ulpt' >>/etc/bsd.re-config
```
### ports
Liste générée avec "pkg_info -zm > obsdpkglist.lst".
Probablement pas à jour...
```
ftp https://si3t.ch/misc/logiciel-libre/openbsd/obsdpkglist.lst
pkg_add -vmzl obsdpkglist.lst
```
### dotfiles
Récupérer les dotfiles .profile, .Xresouces, .kshrc, .exrc, .xsession
```
# extrait de .profile
PATH=$HOME/bin:$HOME/.local/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6
/bin:/usr/local/bin:/usr/local/sbin:/usr/games:/opt/bin:/usr/local/jdk-1
.8.0/jre/bin/:$HOME/.cabal/bin
EDITOR='e'
VISUAL='vi'
TOP='-s .5'
PAGER=less
ENV=$HOME/.kshrc
MANPATH=:$HOME/man
if [ -n "$DISPLAY" ]; then
BROWSER=firefox-esr
else
BROWSER=w3m
fi
export VISUAL EDITOR PATH HOME TOP PAGER BROWSER ENV MANPATH
# code
X11INC=/usr/X11R6/include
X11LIB=/usr/X11R6/lib
FREETYPEINC=${X11INC}/freetype2
CFLAGS="-I/usr/local/include -I${X11INC} $CFLAGS"
LDFLAGS="-L/usr/local/lib -L${X11LIB} $LDFLAGS"
export CFLAGS LDFLAGS
# locale
LANG="fr_FR.UTF-8"
LC_CTYPE="fr_FR.UTF-8"
export LANG LC_CTYPE
#w3m
export WWW_HOME=/home/prx/work/si3t.ch/site/links/index.html
export XCURSOR_THEME=dmz
# sfeed
export SFEED_PLUMBER="$BROWSER"
export SFEED_YANKER="xclip -selection clipboard"
export SFEED_AUTOCMD="1tgo>>>>"
export SFEED_HTMLCONV="w3m -o display_link_number=1 -F -dump -I utf-8
-O utf-8 -T text/html"
export SFEED_NEW_AGE=129600
# firefox
export MOZ_ACCELERATED=1
export MOZ_WEBRENDER=1
# soulcoud
export SOULCOUD_MAIL="prx@si3t.ch"
# rover and noice
#export ROVER_OPEN=olab
export NOPEN=olab
# nethack
export NETHACKDIR=~/.nethack/
```
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=Que-faire-apres-linstallation-dOpenBSD-
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
motd gopherhttps://si3t.ch/log/2026-05-25-motd-gopher.txt2026-05-25T15:14:07Z mailto:prx@si3t.ch?subject=motd-gopher
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
Toutes ces failleshttps://si3t.ch/log/2026-05-18-Toutes-ces-failles.txt2026-05-18T08:55:49Z https://www.phoronix.com/news/Linux-ssh-keysign-pwn
=> https://www.phoronix.com/news/Dirty-Frag-Linux
=> https://www.phoronix.com/news/Linux-Fragnesia
=> https://copy.fail/
Une de temps en temps, c'est assez normal, mais là, ça semble
s'intensifier. Notez que je suis cela de loin, puisque je ne suis pas
vraiment concerné étant utilisateur d'OpenBSD. Bref, j'arrête là, on va
me dire que je fais le troll après ;).
Pas tout à fait ceci dit, car ma chérie utilise debian au quotidien,
dans son école c'est debian sur tous les ordinateurs, sur nos
smartphones,
c'est /e/ (donc Linux)... Et j'en oublie sûrement puisque Linux est
devenu très courant.
Et c'est là tout mon propos : puisque Linux devient populaire, il
devient intéressant de le décortiquer pour y déceler des failles.
Si un autre système devenait plus populaire, il subirait le même sort.
Le fait qu'OpenBSD n'ait connu que si peu de failles tient aussi du fait
qu'il ne se corrompt pas pour devenir accessible.
En effet, on n'a pas de Ubuntu-like qui installe des pilotes
propriétaires à la volée, des firmware-linux-nonfree ou des dépots tiers
avec microcode propriétaire. Ce n'est pas vrai, il y a fw_update.
Il faut utiliser du matériel compatible ou c'est marre. Il faut faire
ses devoirs et lire la FAQ et les man pour l'utiliser : on apprend
beaucoup et on gagne du temps sur le long terme.
De plus, pour simplifier toujours plus la vie des utilisateurs, les
distributions sont devenues de plus en plus complexes, avec des tas de
services qui deviennent autant de sources d'erreurs.
En vérité, le gros succès de Linux, c'est d'avoir Wine, qui fait tout
comme si c'était Windows, et permet à chacun de faire tout comme
d'habitude sans vraiment revoir sa façon de consommer le numérique, et
qui permet à la moindre irritation d'activer une compatibilité avec des
trucs pas libres. (Non, pas de Netflix sur OpenBSD par exemple).
Ça ne veut pas dire que c'est mieux.
Juste que c'est moins populaire, donc moins intéressant à "casser".
Heureusement, Linux reste libre, c'est donc vite corrigé!
Restons vigilants avec tous les systèmes pas à jour qui traînent dans
nos placards et nos poches...
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=Toutes-ces-failles
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
fin de Message to the voidhttps://si3t.ch/log/2026-05-17-fin-de-Message-to-the-void.txt2026-05-17T17:00:10Z https://si3t.ch/log/2024-09-17-message-to-the-void.txt
=> https://git.sr.ht/~prx/m2void
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=fin-de-Message-to-the-void
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
Resiliencehttps://si3t.ch/log/2026-05-16-Resilience.txt2026-05-16T21:17:08Z https://si3t.ch/misc/resilience/
---
... Ou comment éviter la panique en situation d'urgence.
Ici, on ne parle pas de scénario post-apocalyptique, mais de réfléchir
aux impacts du changement climatique et à la situation géopolitique
instable.
Il s'agit plutôt d'une réflexion sur ce qui est vraiment essentiel, et
comment se préparer à se débrouiller plutôt que de faire des bêtises si
on doit faire face à :
* Un confinement
* Une coupure de courant prolongée
* Une pénurie (essence, nourriture, eau...)
* Une fuite précipitée
* Une canicule, une inondation, une tempête...
* ...
## Données numériques
Une simple panne de disque dur peut causer bien des soucis.
Avec des amis, créez de petits clusters de sauvegarde partagés entre vos
ordinateurs et téléphones portables. Un dossier partagé avec Syncthing
est assez facile à mettre en place :
=> https://syncthing.net/
### Site web
Si vous possédez un site web, cela peut être intéressant de prévoir un
miroir :
* Sur un autre serveur (si le principal est en panne)
* Sur un autre nom de domaine (si le premier est censuré)
### Environnement de travail partout
On peut se préparer une liveUSB avec persistence à l'avance.
=> https://wiki.debian.org/DebianLive/LiveUsbPersistence
Ou tout simplement s'installer Linux/OpenBSD sur un disque sur externe.
## Transport
En cas de crise, la voiture est à oublier : c'est très difficile à
réparer soi-même, on est dépendant de l'approvisionnement en carburant.
Le plus adapté semble le vélo. Le VRAI vélo, pas le vélo électrique (on
ne doit pas compter sur l'approvisionnement en électricité). Avec un sac
à dos, on peut aller faire ses courses, éviter les bouchons, et même
quitter les routes s'il le faut.
Prévoir à l'avance une petite trousse de dépannage : de quoi changer une
chambre à air et une chaîne, une pompe, 2 chambre à air de rechange, 2
chaînes neuves.
=> https://ploum.net/2024-10-15-bikepunk.html Bikepunk
## Sac d'urgence
Il existe des "kits de survie" tous prêts, et peuvent constituer une
bonne base de départ, bien que des choses soient inutiles ou alors
manquantes.
Il doit être léger, pratique à emporter, de façon à ce que se soit la
seule chose à prendre puis partir à toutes jambes. Il est aussi
prtatique en cas de confinement.
À l'intérieur, on trouve :
* Une trousse médicale d'urgence. Rien de fou, juste du désinfectant et
de quoi bander une plaie.
* Des couvertures de survie : pour s'abriter du chaud et du froid. En
prévoir plusieurs, de quoi faire un abri. Bien pliées, ça ne prend
pas de place.
* De l'eau. 2 gourdes pleines au moins. Davantage, c'est trop lourd.
* De quoi remplir les gourdes. Pour cela, une paille filtrante fait
l'affaire.
* Quelques vivres : barres énergétiques, nourriture déshydratée, boite
de conserve... à chacun de voir. De quoi tenir 24h, un peu plus en se
rationnant.
* De la ficelle : ça sert toujours pour réparer, faire un abri,
attacher des objets à transporter...
* De quoi allumer un feu. Un briquet par exemple.
* Une petite casserole de camping. En alu, c'est très léger et ne prend
pas de place.
* Une pince multi-outils et/ou juste un très bon couteau.
* Une radio à piles ou à manivelle rechargeable pour se tenir informé
sans dépendre du réseau de distribution électrique.
* Une lampe torche.
* Un peu d'argent liquide, dans une pochette à l'abri de l'humidité.
* Une copie des papiers d'identité et livret de famille, plastifié ou
dans une pochette plastique.
* Un bête savon.
* Du papier, un crayon de bois et un marqueur.
Liens :
=> https://www.info.gouv.fr/risques/se-preparer-a-une-situation-durgence
=>
https://www.croix-rouge.fr/faire-face-au-choc-climatique-nos-proposition
s-pour-une-meilleure/catakit-preparer-son-sac-durgence
=> https://si3t.ch/log/2025-01-06-sac-d-urgence.txt
## Alimentation
Prévoir un stock d'eau. Au moins 6L par personne.
De la nourriture variée en conserve qui n'a pas forcément besoin d'être
cuite : boites de thon, d'haricots, de pois chiche, petits pois, fruits
confits...
Pour des situations plus longues, apprendre à se faire un petit potager
tout simple, dans des bacs ou même un bidon semble nécessaire.
On peut très bien faire pousser des pommes de terre dans un bidon : on
rajoute de la terre au fur et à mesure que la plante grandi : sur 1m²,
des tas de patates vont pousser.
=>
https://www.comment-economiser.fr/faire-pousser-45-kg-pommes-terre-tonne
au.html
On peut aussi se renseigner sur la culture "lasagne".
## Énergie
Si une coupure de courant doit se prolonger, il faudrait pouvoir
alimenter quelques appareils : téléphones, ordinateurs, routeur (pour
se tenir informé, glacière, éclairage.)
Avant de se fabriquer une éolienne à axe vertical, il est possible de se
procurer des panneaux solaires pliables de camping avec batterie.
Il en existe avec des ports USB, mais aussi des prises électriques
classiques EU.
Par exemple :
=>
https://www.amazon.fr/MARBERO-27-000mAh-Electrogene-Silencieux-Bricolage
/dp/B0FQJ7XQ8W
C'est un peu cher...
On peut aussi vouloir une batterie externe avec panneau solaire intégré
: on peut au moins recharger un téléphone, c'est moins lourd si on
doit se déplacer et surtout moins onéreux.
## Communication
Avec notre grande dépendance à l'infrastructure en place (FAI,
antennes, cables), souvent énergivore, c'est difficile de s'en passer.
Si votre ligne internet a déjà été coupée suite à une tempête, ou juste
en cas d'erreur de branchement chez vos voisins, vous savez combien
on est impuissant.
Il faudrait une solution qui demande peu d'énergie afin qu'on puisse
soi-même s'auto alimenter. Un truc qui ne passe pas par l'infrastructure
déjà existante, et si possible chiffré.
Ça existe déjà, cela s'appelle Meshtastic.
Ça fonctionnera d'autant mieux si on est nombreux à l'utiliser : chaque
appareil constitue un relai.
Meshtastic est un projet open source communaitaure qui permet de créer
des réseaux maillés décentralisés, sans avoir besoin de tous, WiFi,
internet... Il s'appuise sur des ondes radio longue portée (LoRa) sur
plusieurs km, demande peu d'énergie et chiffre les communications par
défaut en AES-256.
Il existe des appareils prêts à l'emploi, pas si chers.
=>
https://meshtastic.org/docs/hardware/devices/seeed-studio/sensecap/card-
tracker/
Perso, j'ai choisi celui-ci pour mes tests : le cable peut se changer
facilement.
=> https://meshtastic.org/docs/hardware/devices/lilygo/techo/
Liens :
=> https://meshtastic.org/
=> https://bowshock.nl/irc/
=> https://meshmap.net/
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=Resilience
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
trois riviereshttps://si3t.ch/log/2026-05-15-trois-rivieres.txt2026-05-15T16:02:14Z https://www.trois-rivieres.net/
Je le trouve tout mignon, et le fond est instructif concernant le
simpacts écologiques du numérique.
C'est fait avec phaser, je me souviens avoir bidouillé avec il y a
quelques années. Ça donne envie de s'y remettre.
Bref, bon jeu ! :)
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=trois-rivieres
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
Big up aux SEGPAS et ULIShttps://si3t.ch/log/2026-05-06-Big-up-aux-SEGPAS-et-ULIS.txt2026-05-06T15:35:12Z mailto:prx@si3t.ch?subject=Big-up-aux-SEGPAS-et-ULIS
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
Modele de document accessiblehttps://si3t.ch/log/2026-04-10-modele-de-document-accessible.txt2026-04-10T14:42:49Z /pub/Modele-document.accessible.odt
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=modele-de-document-accessible
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
Presque 800 IP de bot IA déjà blacklistées !https://si3t.ch/log/2026-04-04-Presque-800-IP-de-bot-IA-deja-blacklistees.txt2026-04-04T13:53:17Z https://si3t.ch/log/2026-04-02-bloquer-les-IP-des-bots-IA.txt
Alors si vous n'utilisez pas OpenBSD, je vous invite à nouveau à
récupérer la liste des IP que j'ai pu voir passer de façon quotidienne
afin d'alléger la charge de votre serveur :
=> https://si3t.ch/pub/evils/ai.txt
Ça me donne à réfléchir... Est-ce que ça ne vaudrait pas le coup de
bloquer aussi les scrapers de "moteurs de recherche", et écrire pour des
humains comme le dit sebsauvage?
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=Presque-800-IP-de-bot-IA-deja-blacklistees
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
bloquer les IP des bots IAhttps://si3t.ch/log/2026-04-02-bloquer-les-IP-des-bots-IA.txt2026-04-02T21:27:48Z https://sebsauvage.net/wiki/doku.php?id=stupidantibot
Avant, j'utilisais un fichier robots.txt, naïf que je suis, puisque les
bots ne semblent pas s'en préoccuper:
=> https://github.com/ai-robots-txt/ai.robots.txt
Je me suis dit qu'on pouvait faire mieux.
Puis j'ai pensé que bloquer directement les IP de ces bots au niveau du parefeu, ça
serait nettement plus efficace.
J'ai donc écrit ban-ai, un petit script avec du awk dedans.
=> https://git.sr.ht/~prx/ban-ai code source de ban-ai
C'est très inspiré de "nono", un autre outils qui repère les tentatives
de scan ou d'abus.
=> https://si3t.ch/code/nono/
En gros, quand l'User-Agent d'un bot IA est détecté, son IP est ajoutée
à une table et bloquée, et la connexion fermé. es prochaintes tentatifs
vont échouer.
Bit sûr, on doit pouvoir faire mieux : rien n'empêche un bot d ementir
sur son user-agent. De plus, avoir toutes les IP possibles du bot serait
plus efficace, mais je n'ai pas trouvé un moyen de connaître la rangée
d'IP correspondantes.
C'est plutôt pensé pour OpenBSD, mais on doit pouvoir le modifier
facilement pour d'autres systèmes.
Je rend disponible un fichier qui contient la liste des IP de bots IA
vus sur monserveur, mis à jour quotidiennement. Servez-vous si vous
voulez:
=> https://si3t.ch/pub/evils/ai.txt
Si vous avez des idées d'amélioration, n'hésitez pas à proposer vos
patches ;)
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=bloquer-les-IP-des-bots-IA
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
block AI scraper at IP levelhttps://si3t.ch/log/2026-04-02-block-AI-scraper-at-IP-level.txt2026-04-02T20:50:13Z https://sebsauvage.net/wiki/doku.php?id=stupidantibot
Before, I was using, as naive as I am, a robots.txt file :
=> https://github.com/ai-robots-txt/ai.robots.txt
However, I thought we can do better.
What about stopping ai scraper with the firewall when their IP is seen, and
don't waste any more power for them?
So I wrote ban-ai, a little script with awk inside.
=> https://git.sr.ht/~prx/ban-ai ban-ai source code
It is heavily inspired by "nono" who cares about bad behaviours.
=> https://si3t.ch/code/nono/
In short, when an AI scraper User-agent is detected, the corresponding
IP is blocked and the connection is dropped. Next attempts will fail.
Of course, gathering such IP another way, without User-Agent, a field
where scrapers can lie, would be event better. Actually, IP ranges of
each bot would be ideal.
It is oriented towards OpenBSD, but should be easily modified for others.
I'll keep a text file of detected IP here, use it if you want:
=> https://si3t.ch/pub/evils/ai.txt
Please, send patches if you have better ideas.
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=block-AI-scraper-at-IP-level
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
La Cité Diaphanehttps://si3t.ch/log/2026-03-12-La-Cite-Diaphane.txt2026-03-12T13:53:11Z https://anouckfaure.com/publications/lacitediaphane/
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=La-Cite-Diaphane
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
Une session fraîche à chaque démarragehttps://si3t.ch/log/2026-03-01-Une-session-fraiche-a-chaque-demarrage.txt2026-03-01T15:48:24Z mailto:prx@si3t.ch?subject=Une-session-fraiche-a-chaque-demarrage
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
bah alors?https://si3t.ch/log/2026-01-20-bah-alors.txt2026-01-20T09:05:38Z mailto:prx@si3t.ch?subject=bah-alors
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
avis-de-tempetehttps://si3t.ch/log/2026-01-08-avis-de-tempete.txt2026-01-08T16:55:25ZJeu de piste Toki Ponahttps://si3t.ch/log/2025-12-31-jeu-de-piste-toki-pona.txt2025-12-31T15:45:04Z (ma chérie) Tu peux venir m'aider à décharger la voiture?
> (mon fils, planqué dans les toilettes) : Papaaa???? tu peux m'aider?
j'ai disséminé quelques indices dans sa maison.
À son retour, il a trouvé sur la table basse une feuille :
```
Très cher explorateur,
La terrible Chouette Spectrale a dérobé des pages du Grimoire de Fourier, source de tous les secrets du Grand Manoir des Géants.
Si elles ne sont pas retrouvées avant la prochaine lune, les sciences des Êtres tomberont dans l’oubli.
Ton esprit vif et ta curiosité insatiable sont notre dernier espoir.
Résous les énigmes, suis les traces de la Chouette et découvre l’artefact caché.
Que la poussière des étoiles éclaire tes calculs.
– Jan Kasi Awen
```
Au dos, figurait ce message avec un plan de sa maison :
```
Les Géants regardent le monde de haut,
mais les Êtres lisent la lumière qui tombe du ciel.
Là où les rayons traversent le verre,
la première trace de la Chouette t’attend.
La Chouette cache ses secrets dans les reflets.
Les Êtres savent réfléchir.
```
=> /log/plan-jb.png Plan de la maison
Le plan est de forme hexagonale comme on peut le trouver dans
Mausritter, avec un style snes.
=> https://mausritter.com/ Mausritter
Il n'a eu aucun mal à se diriger vers le premier indice au bord de sa
fenêtre : un texte à l'envers qui le redirigeait dans sa cuisine
```
ɘmɿoʇƨnɒɿƚ ɘiqlɒʜƚnɘ’l ùo à⅃
bnɘƚƚɒ’ƚ ɘimiʜɔlɒ’l ,zɒǫ nɘ ɘbiupil
ɘɿèloɔ ɒl ɘǫnɒléM
ɘlioƚé’b ɘɿèiƨƨuoq ɒl à noǫɒɿb ub
ƚnɒéᎮ ɘb ƨɘmɿɒl ƨɘᗡ
ɘɔnɘƨƨɘ ɿuɘl ƚnɘlèvéɿ
```
Après avoir un peu fouillé, il a trouvé un grand verre avec le message
"StarDust" collé dessus, ainsi que 2 petits flaçons "écailles de dragon
en poudre".
Il a mélangé le tout, ajouté un peu d'eau (les larmes de géant), et hop,
ça a réagi.
En fait, il y avait au fond du récipient du bicarbonate de soude
cristalisé qui recouvrait un petit message plastifié. L'écaille de
dragon n'était que de l'acide citrique en poudre, l'eau l'a dissout et
la réaction entre les 2 a pu avoir lieu, libérant ainsi le message.
```
Sur des collines de coton
Se reposent les Êtres.
```
Il a trouvé sous un coussin du canapé un autre message :
```
ascii 66² ascii 73² ascii 76 ascii 79ascii
```
Le mot ascii était écrit minuscule, un loupe lui aura permis de le lire,
puis de savoir comment décoder le message : BIBLIO.
Hop, il farfouille dans sa bibliothèque, et trouve disséminés 4 QR codes et
l'énigme suivante :
```
Dans leurs voyages, les Êtres ont appris
la langue simple des esprits du monde :
la langue des mots minuscules.
On l’appelle toki pona.
sina wile alasa e poki. poki li lon tomo lape.
poki li lon supa lili.
poki suli pi ijo ante li awen lon tomo ni.
```
Les QR codes sont en fait le dictionnaire Toki Pona
=> https://si3t.ch/misc/toki-pona/
Après un peu de traduction, il se dirige vers sa chambre où il trouve un
bracelet "Jan Pona" qui veut dire "bonne personn", un jeu de 54 cartes
avec "l'alphabet" toki pona en sitelen et le message : .
Traduit, cela donne "ton aventure commence".
Cela me permet de l'introduire à un jeu de rôle sur le base de
Biburukado, où il devra interpéter le rôle d'une souris de l'espace.
=> https://si3t.ch/misc/jeux/biburukado/
Mais ça, il ne le sait pas encore...
Il a reçu il y a quelques jours une carte postale avec une soucoupe
volante en arrière plan d'un vieux tableau qui représente des bretons
d'autrefois. Derrière, en sitelen pona, était écrit un message faisait
référence à la fois où il avait sauvé une souris.
J'aî hâte de commencer :)
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=jeu-de-piste-toki-pona
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
Biburukādo unohttps://si3t.ch/log/2025-11-29-biburukado-uno.txt2025-11-29T13:34:33Z https://si3t.ch/log/2025-11-28-biburukado.txt
Il est plus adapté aux situations de combats et si l'on souhaite faire
gagner des niveaux à un personnage au fil du temps.
Dans ce cas, il est conseillé de diviser le Deck en 2 après avoir
mélangé, puisqu'un jeu de UNO est constitué de 108 cartes. En début de
partie, un Deck devrait être constitué de 54 cartes aussi, il reste donc
54 cartes en réserve à ajouter lors des gains de niveau.
À la place des enseignes (Trèfle, Coeur, Pique, Carreau), on regardera
la couleur des cartes avec les mêmes effets bonus :
* Dextérité : Jaune
* Endurance : Rouge
* Aura : Vert
* Esprit : Bleu
Il n'y a pas de Joker.
Les cartes spécifiques au jeu de UNO ont ce fonctionnement:
* Passe ton tour : Echec automatique
* Changement de sens : Réussite automatique (retour à l'envoyeur)
* "Joker" (4 couleurs) : Regarder les 3 prochaines cartes du Deck, les
réorganiser ou les mettre à la fin. (=Valet)
* +4 : Soin de +4 (= Dame)
* +2 : apporte un bonus de +2 aux prochains évènements, peut être gardé
en réserve. (=Roi)
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=biburukado-uno
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
biburukadohttps://si3t.ch/log/2025-11-28-biburukado.txt2025-11-28T21:13:43Z mailto:prx@si3t.ch?subject=biburukado
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
lueurhttps://si3t.ch/log/2025-11-27-lueur.txt2025-11-27T15:31:37Z https://www.philibertnet.com/fr/bombyx/93241-lueur-3760267990526.html
Il est censé s'adresser à un public à partir de 8 ans... Mais en fait,
cela peut être joué bien avant (mon fils de 6 ans s'éclate... et nous
éclate!).
La mécanique est intéressante par rapport à bien d'autres jeux... Il y a
une part de probabilités, de paris, de stratégie...
L'objectif est de récolter un maximum de points de victoire. Jusque là,
rien de très nouveau.
Au début de chaque tour, vous choisissez une créature que vous
rencontrez. Vient avec elles certains pouvoirs, et des dés à jeter.
Selon le résultats des dés, les pouvoirs s'appliquent, qu'ils soient
bons ou mauvais.
Selon les résultats de ces même dés, vous pourrez voyager sur le
plateau.
Enfin, selon le résultat des dés, ils seront replacés sur une autre
créature au prochain tour.
Il faut donc ajuster sa stratégie selon ses objectifs, et éventuellement
perdre des points de victoire pour pouvoir relancer les dés.
Évidemment, selon la couleur du dé, la probabilité d'obtenir une flamme,
un feuille, un nuage ou que sais-je n'est psa la même.
Mais c'est très facile à suivre, les symboles et couleurs sont bien
pensées.
Et quand vient la possibilité de maudir ses adversaires ou de leur
lancer des sorts, ou de déjouer leurs plans, c'est vraiment jouissif!
En plus de cela, les dessins, la DA est vraiment manifique
Bref, je recommande ;)
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=lueur
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
En quête d'un bon fournisseur mailhttps://si3t.ch/log/2025-11-25-en-quete-dun-bon-fournisseur-mail.txt2025-11-25T07:58:23Z https://sebsauvage.net/links/?lvn_4g
Depuis des années j'ai un mail en laposte.net, et bêtement, je pensais
que c'était français.
Bah oui, laposte -> france.
Bah non :/
=> https://check-host.net/ip-info?host=laposte.net
C'est Google qui héberge laposte!!!
AUX FUCKING USA!!!
Ça signifie que tous mes mails administratifs, impots, publicités de
sites marchands où j'ai commandé des chose, sont sur les serveurs de
google, qui comme pour beaucoup de gens, savent potentiellement une
bonne partie de ma vie et préférences.
Rien de nouveau sous le soleil me direz vous...
Certes, mais ça me gêne.
J'ai donc fouillé un peu plus, après avoir testé et été déçu par le
bazar d'Infomaniak, qui demande de créer un compte, puis un service
kSuite, avec une interface très lente et une configuration IMAP qui ne
marche pas... Là, j'ai demandé la suppression de mon compte car ça a
buggé quand j'ai suivi le formulaire, j'attends une réponse du ticket...
En faisant le tour, je m'aperçois d'un truc évident : les bonnes offres
sont payantes.
C'est logique en fait : il faut bien que le fournisseur soit rentable :
si le client ne paie pas un petit peu, il se fera de l'argent dans votre
dos avec des pubs (au mieux) ou bien par la revente de données
personnelles à des tiers.
Pour le coup, mailo semblait pas mal, ils proposent plusieurs offres,
notamment pour les jeunes. La version gratuite contient des publicités.
Ça ne me donne pas confiance, et j'aime pas trop la façon de faire.
Tutanota me fait bonne impression, quoi que peut-être un peu cher
(3€/mois). Le problème, c'est qu'il demande une applicatoin spécifique
pour consulter les mails, et ça ne me va pas : je veux pouvoir utiliser
les clients que je veux, de partout.
## Le graal : posteo
Bref, assez vite j'arrive sur posteo.
=> https://posteo.de/fr
Je me sens vite en confiance par de multiples détails.
Ils prennent le temps de bien documenter leurs choix dans la façon
d'héberger les mails.
Voici en vrac ce que j'ai retenu, et qui m'a bien plu :
* Chiffrement des mails sur leurs serveurs : cela signifie qu'ils ne
peuvent en théorie pas être lus par quelqu'un qui fouille leurs
disques. Il faut mon mot de passe pour ça.
* On peut créer 20 alias gratuitement, avec de nombreux tld. Ça
multiplie le nombre d'adresses mails dispo.
* Chaque étape est documentée et expliquée.
* Le prix est très accessible : 1€/mois. C'est pas dans nos habitudes de
payer pour le mail, mais encore une fois, c'est bien normal si on
réfléchi 2 minutes. Et à ce prix, c'est bien moins cher que des tas d'autres
trucs pas si utiles.
* configuration des clients de messagerie transparente
* Pour utiliser le client mail du smartphone ou de l'ordinateur, ce
n'est pas le même mot de passe que celui du compte qui est utilisé.
C'est très malin : si mon téléphone est volé, mon compte n'est pas
compromis.
* Aucun souci pour configurer mes outils minimalistes : fdm (imap) et
msmtp
* On peut augmenter lespace de stockage : 1G pour 0,25€. Pas forcément
utile pour moi qui télécharge tous mes mails mais ça peut être utile à
d'autres.
* Le support de GPG est prévu.
* L'authentificatoin à 2 facteurs est disponible.
* Ils annoncent faire tourner leurs serveur avec de "l'énergie verte".
Ça pue le green washing, mais l'intention est là. Je n'ai pas creusé
comment procédait leur fournisseur d'énergie.
* Le webmail est sobre, propre, claire, rapide! Je n'ai pas à attendre
10 à 15 secondes comme chez certains concurrents.
* Hébergé en europe (Allemagne)
Je suis conquis.
Je vais donc rester chez posteo à priori un petit moment pour tout ce qui
est administratif. Je garde mes adresses en si3t.ch pour le privé.
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=en-quete-dun-bon-fournisseur-mail
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
infomaniak mailhttps://si3t.ch/log/2025-11-24-infomaniak-mail.txt2025-11-24T09:30:32Z https://www.infomaniak.com/fr/support/faq/2427/synchroniser-les-e-mails-sur-tous-vos-appareils
Pour supprimer un compte mail (c'est mieux de tester avant), c'est
galère, il faut désouscrire à l'offre koffice, puis après supprimer son
compte. Cependant, supprimer le premier service ne marche pas : il faut
contacter le support...
Mais quand même, c'est dommage de ne pas avoir une messagerie propre et
légère.
Je vais continuer à chercher une alternative...
Peut-être Mailfence, hébergé par OVH.
Posteo me plait bien aussi, mais c'est payant. En même temps, n'importe
quel hébergeur qui est gratuit doit bien se faire de l'argent quelque
part : avec de la pub ou avec vos données.
Il y a aussi OVH, avec 0,36€/mois. J'ai déjà un compte chez eux, alors
pourquoi pas...
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=infomaniak-mail
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
sysclean destructeurhttps://si3t.ch/log/2025-11-17-sysclean-destructeur.txt2025-11-17T08:46:21Z https://fossil-scm.org/home/doc/trunk/www/server/openbsd/fastcgi.md
=> https://fr.forum.puffy.cafe/wiki?name=Index
Cela fait des semaines que je ne m'en était pas aperçu (je n'avais pas
fait de reboot)...
Ça en dit long sur l'inutilité de ce forum, personne n'a rien remarqué.
Je devrais probablement le supprimer...
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=sysclean-destructeur
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
frm sans ramer : mpv + yt-dlphttps://si3t.ch/log/2025-11-15-frm-sans-ramer.txt2025-11-15T14:32:18Z mailto:prx@si3t.ch?subject=frm-sans-ramer
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
Utopiales 2025https://si3t.ch/log/2025-11-12-Utopiales-2025.txt2025-11-12T20:17:18Z Quel plaisir de voir autant de personnes rassemblées pour réfléchir
> ensemble à un avenir plus humain. Surtout en ces temps où on voudrait de
> plus en plus nous en empêcher.
Voilà des jours que je reporte le moment où je vais écrire ce billet.
Mais je dois l'admettre, je n'aurai pas le temps de bien l'écrire.
(prenez soin de votre santé les amis). Alors tant pis, je vais déposer
en vrac mes sentiments et mes notes, en espérant que cela inspire
quelqu'un.
Pour moi, les Utopiales, c'est devenu vital. Dans un monde comme le
notre, où la richesse est proportionnelle à l'imbécilité, un tel endroit
fait du bien.
C'est facile de discuter avec tout le monde, car tout le monde est
sympa.
Les idées sont fascinantes, et même si on est maladroit, l'écoute est de
mise, le respect avant tout.
Bref, j'ai l'impression pendant quelque jours d'être entouré d'humains,
et ça me fait du bien.
Se promener dans l'expo est toujours agréable, on remarque des choses à
chaque passage.
Une grande fresque a été peinte sous nos yeux pendant les 4 jours, un
mur entier. Fascinant à observer, à voir naitre et évoluer. Respect!
Il y avait des petits jeux ci et là, du genre deviner combien de legos
il y avait dans un bocal. C'était chouette.
Je n'ai pas craqué et n'ai pas dévalisé la libraire!
J'ai juste acheté des livres pour ma chérie, ça ne compte pas hein?
Comme toujours, je suis fasciné par la créativité humaine, et l'envie de
liiiiire!
Mon meilleur ami m'avait précommandé le jeu "singularité". Les designs
sont excellents, avec des cartes à l'effigie d'intervenants réguliers
des Utopiales ou d'auteurices de SF.
J'ai pu faire dédicacer ma carte de Roland Lehoucq \o/.
Sinon, 2 sessions de courts-métrages, que j'ai beaucoup apprécié. Pas
trop de trucs expérimentaux qui éclatent la tête avec des effets
stromboscopiques et un son désagréable. Des histoires intelligentes,
belles d'une certaine façon, et souvent drôles. Bravo!
Le 5e jour, j'ai accompagné mes classes. C'était génial. Pouvoir les
voir réagir face à Ex MAchina, leur parler du mythe de Chtulu repris
dans des oeuvres de l'exposition, et puis finalement vulgariser la
conférence de Roland Le houcq trop compliquée pour des collégiens et
leur parler de voyage dans le temps, c'était jouissif :)
L'année prochaine, on fait une session JdR!
Comme d'habitude, j'ai passé beaucoup de temps à écouter les tables
rondes et les conférences. En voici quelques notes, à méditer?
Plus que notes, ce sont surtout des citations, et des idées posées à la
volée.
---
Pourquoi le ciel est noir la nuit? En théorie, où que pointe notre
regard, il existe une étoile dans cette direction, puisque l'univers est
infini. Alors pourquoi ce noir? La lumière de l'étoile ne nous est pas
encore parvenu?
Quand tous les points s'éloignent les uns des autres, ce n'est pas
exactement une explosion.
La Terre en tant que telle est une singularité.
Elle reçoit un rayonnement entropique faible et émet une entropie
élevée.
---
Face à la censure, aux USA, on s'auto-censure.
Aux USA, on fait passer pour canular la science du réchauffement
climatique.
Mais on n'est pas à l'abri en France. Il y a peu de temps, notre premier
ministre disait publiquement qu'il y a 1000 millions d'étoiles dans le
système solaire. (la vidéo est ridicule, personne n'ose lui dire qu'il
raconte des conneries, hein Bayrou?).
Une initiative de chercheure publie un max de bullshit en ligne pour
empoisonner les IA.
La question de l'effort et en jeu.
Le journalisme scientifique est mauvais, il faut réfléchir à comment
communiquer.
Ce n'est pas parce qu'un scientifique explique son raisonnement qu'on
change des idées. On peut vous dire A + B = C, mais ça ne change pas
profondément vos certitudes. Il faut être prêt à faire un pas en avant.
La valeur face à l'autorité ou face à l'expérience en question?
Il y a les sciences que l'on fait, et celles que l'on ne fait pas (à
propos des producteurs de tabac qui ont financé des recherches pour
montrer toutes les causes du cancer du poumon pas dues au tabac, et donc
ainsi camoufler leur responsabilité).
---
Comme dans un livre, on n'entre jamais 2 fois dans la même forêt, car
elle a changé entre temps, et nous aussi.
Face au réchauffement climatique, l'avenir est incertain, mais
inéluctable.
La violence climatique faite au vivant rapproche les différentes
espèces.
---
Une mémoire pour nous gouverner tous.
(Archivez, gardez des copies!!!)
De la mémoire découle l'identité.
Indique d'où on vient.
C'est l'histoire qui nous forme.
Dans beaucoup de familles, ce sont les femmes les gardiennes de la
mémoire.
La mémoire est-elle une garantie de liberté ou un obstacle?
Il n'y a pas de mémoire sans oublie, sans possiblité d'oublie.
Aujourd'hui, avec les IA et tout le merdier des fake news, ce qui
devient le plus fiable, ce sont les interactions en direct avec d'autres
humains, et peut-être les livres.
---
Les scientifiques n'ont pas d'égo (d'égaux).
L'humain veut toujours franchir les limites / les frontières /
l'interdit.
Faut-il interdire l'écologie pour faire envie?
+ on se rapproche de la vitesse de la lumière, moins le temps passe
vite, plus on est lourd.
La vitesse de la lumière : limite de la causalité, de l'information.
La science d ela fiction est que vraisemblance?
Toy Story est un monde quantique : le sobjets vivent quand on ne les
regarde pas.
---
Le cerveau ne définit pas la la personne, de l'identité.
LE cerveau se modifie en permanence, mais pas notre personnalité.
Le cerveau envoie le signalt qu'une décision doit être prise entre 2 et
10 secondes avant la prise de décision : cela questionne un peu le libre
arbitre.
Et si avec des OEM on créait les impulsions apropriées pour engendrer
une prise de décision dans un cerveau?
Il y a un facteur très humain dans les ordinateurs (les programmes), car
ils sont programmés par des humains avant tout, comme vous et moi, même
les IA.
---
Pour les plus curieux(ses), j'ai mis des photos sur motd.
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=Utopiales-2025
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
optimiseur d'images dans mes outils en lignehttps://si3t.ch/log/2025-10-27-optimiseur-dimages-dans-mes-outils-en-ligne.txt2025-10-27T14:43:17Z https://si3t.ch/tools/imgopti/
Le nombre d'options des très limité, un peu volontairement pour garder
le truc facile d'accès, et aussi parce que je n'y comprends pas grand
chose aux algos de dithering et compagnie et que je n'ai pas le temps
de m'y intéresser pour l'instant ^^'.
Comme déjà dit, tout se fait dans le navigateur. Vous pouvez même
télécharger la page html et l'enregistrer sur votre disque dur, ça
fonctionnera pareil. Pas de libs JS, juste canvas.
Merci à l'IA qui m'a aidé à pondre le code que j'ai modifié ensuite pour
le vérifier un peu et le simplifier un peu aussi. J'espère que le nombre
d'images qui seront optimisées pour réduire la quantité de données
chargées compensera l'impact carbone généré par les calculs de l'IA.
N'hésitez pas à modifier et améliorer le code, et surtout de me faire
part de vos modifications, ça m'intéresse ;)
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=optimiseur-dimages-dans-mes-outils-en-ligne
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
Webalizer plus responsivehttps://si3t.ch/log/2025-10-21-Webalizer-plus-responsive.txt2025-10-21T14:06:08Z https://0x0.st/KjF1.png
```
HTMLHead
HTMLHead
TableBorder 1
ChartBorder 0
ColorBackground eceff4
ColorText 2e3440
ColorLink 3b4252
ColorVLink b48ead
ColorALink 5e81ac
ColorGrp 434c5e
ColorHeadline d8dee9
ColorCounter 4c566a
ColorHit 8fbcbb
ColorFile 5e81ac
ColorSite bf616a
ColorKbyte d08770
ColorPage ebcb8b
ColorVisit a3be8c
ColorMisc b48ead
ChartBackgroundColor e5e9f0
ChartLegendColor 2e3440
ChartShadowColor1 2e3440
ChartShadowColor2 2e3440
PieColor1 d08770
PieColor2 a3be8c
PieColor3 ebcb8b
PieColor4 81a1c1
```
Il y a les couleurs nord qui rendent pas mal je trouve.
Et vous, comment vous avez personnalisé webalizer?
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=Webalizer-plus-responsive
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
motd bishttps://si3t.ch/log/2025-10-12-motd-bis.txt2025-10-12T13:31:16Z mailto:prx@si3t.ch?subject=motd-bis
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
Nethack configurationhttps://si3t.ch/log/2025-10-11-Nethack-configuration.txt2025-10-11T20:50:37Z https://www.nethack.org/
Ce jeu m'obsède, j'adore ses mécanismes, et l'intelligence dans sa
cànception.
J'ai ajouté quelques éléments de configuration que je trouve bien utile
et que je voudrais partager. Le tout est répertorié ici :
=> https://si3t.ch/misc/jeux/nethack/
Tout d'abord, je conseille de définir un répertoire pour stocker les
sauvegardes, les scores et les bones. En effet, j'ai eu la mauvaise
surprise de voir mes "meilleurs scores" oubliés après avoir désinstallé
le paquet nethack pour en tester la version X11 (avant de revenir en
arrière, la version X11 est dégueu, mieux vaut l'ASCII!).
En effet, pour éviter la triche, tout est stocké dans un dossier
"système" où l'on n'est pas censé pouvoir intervenir en tant que simple
user.
Pour contourner ce problème, si vous voulez tricher en gardant vos
sauvegardes (bouh!), ou comme moi garder vos scores, c'est en fait très
simples. Il suffit de modifier quelques variables d'environnement.
Pour ma part, j'ai ajouté ceci dans mon fichier ~/.profile
```
# nethack
export BONESDIR=~/.nethack/bones
export SCOREDIR=~/.nethack/scores
```
Bien sûr, il faudra avoir créé les dossiers ci-dessus au préalable.
=> https://nethackwiki.com/wiki/Playground
En complément, voici le fichier de configuration que j'utilise, le
~/.nethackrc qui me permet notamment d'avoir un peu plus d'infos dans
l'interface et d'autopickup des objets intéressants:
```
# improve interface, show more info
OPTIONS=showexp,showscore,time,color
# dig if you move when holding a pickaxe
OPTIONS=autodig
# autopickup, but uder conditions
OPTIONS=autopickup
# only if not encumbered
OPTIONS=pickup_burden:Unencumbered
# don't pick everything
OPTIONS=pickup_types:$?!/(=+"
# Always pick these:
AUTOPICKUP_EXCEPTION=" mailto:prx@si3t.ch?subject=Nethack-configuration
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
motd : Message Of The Dayhttps://si3t.ch/log/2025-10-05-motd--Message-Of-The-Day.txt2025-10-05T20:23:32Z http://huld.re
(javascript requis ^^)
Publier mais cacher... Rendre publique mais dissimuler, ça n'a pas de
sens me direz-vous!
Il y a dans cette démarche une sorte de pudeur : ne pas vouloir afficher
en grand ni faire la publicité de ce qu'on compose.
Il y a aussi une forme de honte, c'est très personnel, qui cela
pourrait-il bien intéresser?
À cela s'ajoute un peu de syndrome de l'imposteur, compensé par le fait
d'avoir son propre site sur lequel, après tout, on fait bien ce qu'on
veut!
En parallèle, on discutait des pages /now de l'Indieweb.
=> https://indieweb.org/now
Une telle page me plaisait bien, mais je craignais de ne pas être
capable de la tenir à jour, simplement d'y penser.
f6k quant à lui, a choisi d'utiliser finger pour publier de ses
nouvelles.
À la place, je me disais qu'un fichier twtxt.txt serait tout à fait
suffisant.
=> https://github.com/buckket/twtxt
J'adore l'idée d'un fichier twtxt. Le peu d'interaction avec d'autres me
plaisait beaucoup. Pour m'affranchir dee l'abonnement nécessitant un
client spécifique, j'en faisais même un flux atom :
=> https://si3t.ch/code/twtxt2atom/
Sauf que voilà, il me posait finalement quelques problèmes :
* Je ne peux l'éditer que depuis mon ordinateur. Alors que je veux
passer moins de temps devant ce dernier, il devenait un peu inutile, et
je prenais finalement davantage de notes sur un bloc-note ou avec Markor
sur Android.
* Je me sentais limité par les entrées sur une ligne simple.
En parallèle, j'avais un script "notd" qui ajoutait à un fichier texte
la date du jour, puis l'ouvrait à la ligne correspondante avec vi, dans
lequel je déposais des liens intéressants, des remarques, des idées...
Ajoutez à ceci l'utilisation de Syncthing pour avoir mes notes sur mon
smartphone et sur mon ordinateur, et vous avez la genèse de motd.
J'aurais pu reprendre scribo, qui permet d epublier par mail, mais le
souci c'est qu'on ne peut pas éditer facilement un message si on veut
faire une édition en plusieurs fois.
=> gopher://z3bra.org/0/projects/scribo.txt
Pour remplacer mon twtxt et moins m'auto censurer, je me décide à ouvrir
un "message of the day", qui ne sera qu'un flux atom à la mode "shinobi"
et un petit gopherhole pour lister plus facilement chaque entrée.
=> https://shinobi.btxx.org/
> Quoi??? Gopher? Mais, t'avais dit que...
Oui, c'est ma façon de garder cet espace de publication "semi privé".
C'est à dire que si quelqu'un a envie de lire mes jérémiades, c'est
qu'il se sera vraiment donné la peine de faire la démarche d'aller sur
le gopherhole.
C'est d'ailleurs pour cela que j'hésite à garder le flux atom...
## MOTD : mise en place
(description rapide...)
Tout d'abord, j'installe Syncthing sur tous mes appareils, (ordinateur,
téléphone, serveur).
=> https://syncthing.net/
Je configure Syncthing pour que les 3 appareils ci-dessus disposent des
notes écrites avec Markor. De cette façon, je pourrai écrire tant sur
mon ordinateur que smartphone.
=> https://github.com/gsantner/markor
Dans Markor, je crée un dossier "motd" qui contiendra toutes mes notes.
J'installe geomyidae pour configurer un gopherhole:
=> https://si3t.ch/ah/fr/09-services/#Gophergeomyidae
Je crée un dossier pour contenir le gopher hole et j'ajuste la façon
dont geomyidae sera lancé:
```
# mkdir -p /var/gopher/motd.si3t.ch
# chmod 666 /var/gopher/motd.si3t.ch
# rcctl enable geomyidae
# rcctl set geomyidae flags -c -e -b /var/gopher/motd.si3t.ch -l /var/log/motd.si3t.ch.log
# rcctl start geomyidae
```
J'ajuste le roulement des logs:
```
# cat /etc/newsyslog.conf
/var/log/motd.si3t.ch.log 644 4 * * Z "rcctl reload geomyidae"
```
Je crée un espace http et ajuste la configuration de httpd pour servir
le flux atom par défaut:
```
# mkdir -p /var/www/htdocs/motd.si3t.ch
# chmod 666 /var/www/htdocs/motd.si3t.ch
# cat /etc/httpd.conf
server "motd.si3t.ch" {
listen on * port 80
directory index "atom.xml"
root "/htdocs/motd.si3t.ch"
gzip-static
}
# rcctl reload httpd
```
J'ajoute une tâche cron qui copiera les notes dans le gopherhole chaque
nuit et générera le flux atom pour la partie http:
```
$ crontab -e
# motd
0 0 * * * /home/bibi/jobs/motd.sh
```
le script motd.sh ressemble à ça :
```
#!/bin/sh -e
# generate motd text files to atom file
# the file must start with publication date :
# YYYY-MM-DD-title.txt
# or
# YYYY-MM-DD.txt
#
srcdir=/var/syncthing/Notes-x/motd/
motd=/var/gopher/motd.si3t.ch/
atom="/var/www/htdocs/motd.si3t.ch/atom.xml"
domain="motd.si3t.ch"
id="http://motd.si3t.ch/"
url="//${domain}"
feedtitle="prx's Message Of The Day"
author="prx"
email="prx@si3t.ch"
tag="motd"
# sync files
openrsync -vr --delete ${srcdir} ${motd}
# header template of the atom
cat << EOF > "${atom}"
${id}${feedtitle}${author}${email}$(date -u +%FT%TZ)
EOF
for f in "${motd}"/*.txt; do
bn="$(basename $f)"
pubdate="$(printf "${bn})" | cut -c-10)"
timestamp="$(printf "${bn}" | tr -cd '[^[:digit:]]')"
entryid="tag:${domain},${pubdate}:${tag}${timestamp}"
cat << EOF >> "${atom}"
${entryid}${bn}${pubdate}T23:59:59Z", "]]]]]]>")}1' ${f})
]]]]>
EOF
done
printf '%s' '' >> "${atom}"
gzip -k9 "${atom}"
exit 0
```
Je reviendrai peut-être une autre fois sur la génération d'un flux ATOM.
C'est vraiment facile une fois qu'on a chopé le truc, et c'est tellement
génial!
## Publication
Concrètement, si j'ai mon téléphone, je crée un nouveau fichier avec
Markor. Ce dernier permet de directement choisir un nom de fichier
suivant le modèle YYYY-MM-DD-blablabla.txt. Sinon, avec mon ordinateur,
je lance le script "motd":
```
#!/bin/sh
# motd : message of the day.
# open a new YYYY-MM-dd.txt in $MOTDDIR with $EDITOR
# Author: prx
MOTDDIR=~/work/notes/motd
dotd="$(date +%Y-%m-%d)"
title="$(echo "$@" | awk '
{
gsub(/[[:space:]]/, "-")
gsub(/[éèêë]/, "e")
gsub(/[àâ]/, "a")
gsub(/[ùû]/, "u")
gsub("ç", "c")
gsub(/[^[:alnum:]_-]/, "")
print
}
')"
if [ -n "${title}" ]; then
f="${MOTDDIR}/${dotd}-${title}.txt"
else
f="${MOTDDIR}/${dotd}.txt"
fi
# add date of the day and title inside
if [ -z "$(grep $dotd $f)" ]; then
printf "# %s %s\n\n" "${dotd}" "${@}" >> "${f}"
fi
# edit à la fin du fichier:
${EDITOR} + "${f}"
```
Ce script permet juste d'ajouter un titre éventuel si je le passe à la
ligne de commande et de retirer les caractères spéciaux du nom de
fichier.
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=motd--Message-Of-The-Day
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
Nethack -- Épisode 17https://si3t.ch/log/2025-09-29-Nethack----pisode-17.txt2025-09-29T09:27:18Z mailto:prx@si3t.ch?subject=Nethack----pisode-17
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
Studio17https://si3t.ch/log/2025-09-24-Studio17.txt2025-09-24T13:34:57Z https://www.studio17.video/home
Ça fonctionne très bien, c'est sobre, il n'y a pas de publicité, et le
prix est tout à fait abordable.
C'est même nettement moins cher que de soutenir ces créateurs via
Patreon, qui de toute façon se fait une belle marge sur leur dos.
Je vous invite chalheureusement à aller y faire un tour, juste pour
voir : la première semaine est gratuite et c'est sans engagement, donc
vous ne risquez rien.
Vous pourrez y découvrir des humains supers qui jouent à des jeux de
rôle.
C'est drôle, c'est magique, c'est fascinant, c'est divertissant, et
surtout, ça fait du bien.
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=Studio17
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
C'est quoi ces Referrers?https://si3t.ch/log/2025-09-24-Cest-quoi-ces-Referrers.txt2025-09-24T14:10:01Z mailto:prx@si3t.ch?subject=Cest-quoi-ces-Referrers
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
Les protocoles Gemini et Gopher ne desservent-ils pas le smolwebhttps://si3t.ch/log/2025-09-17-Les-protocoles-Gemini-et-Gopher-ne-desservent-ils-pas-le-smolweb.txt2025-09-17T16:01:10Z https://tildegit.org/solene/vger
À cela je rétorque : "y a que les idiots qui ne changent pas d'avis".
Non, pas du tout.
Je vais peut-être dire des conneries, et surtout il ne faudra pas
hésiter à me dire pourquoi.
C'est simplement que j'ai réfléchi (Ha ha ha XD), et j'en suis arrivé à
vouloir partager ces idées.
Je me demande actuellement si inciter à la publication avec les
protocoles gemini et gopher n'irait pas à l'encontre du smolweb, le web
qu'on aimerait plus voir.
## Quelques définitions
Puisque le terme smolweb est un peu large, je préfère préciser que je
l'envisage tel qu'il est décrit ici :
=> https://smolweb.org/
> Promoting a simple unbloated web!
Quant à gemini et gopher, ce sont deux protocoles distincts du http
classique, le premier étant entièrement chiffré, le second étant
nettement plus vieux.
## Répondre à un besoin
Publier sur gopher ou gemini semble répondre à un besoin.
Plus que s'afranchir des publicités et autres lourdeurs pénibles,
ce dernier peut être :
* Pour s'amuser
* Se retrancher
* Retrouver les essentiels du texte brut
* Revendiquer la simplicité perdue sur le web bourré de trackers/pubs/...
* un peu de nostalgie (pour gopher)
Je n'ai rien à redire sur les 2 premiers points.
Par contre, il n'y a nul besoin d'un autre protocole pour le reste.
Quoi qu'il en soit, il n'y a PAS UN de ces points qui ne puissent être
réalisé avec le web classique, c'est à dire http + html
(éventuellement) :
* On n'est pas obligé de diffuser partout son site. Il en existe des
bien cachés, même des sites cachés dans des sites (coucou f6k ;) )
* On peut très bien publier du texte brut. Tiens, c'est d'ailleurs ce
que j'aime faire. O:) Pour cela, gemini avec le gemtext proposait une
alternative intéressante par sa simplicité, mais finalement pas si
indispensable si on fait du plaintext plutôt qu'un gophermap. Et puis
soyons honnête, les balises de base du html ne sont tout de même pas si
compliquées à retenir.
* On peut publier un site simple, sans tracker, sans JS.
* On peut faire un site au look oldschool, d'ailleurs http n'est pas si
récent.
* Ça peut être fun, il y a des tas d'exemples de sites qui sont
carrément des oeuvres d'art à mon avis :
=> http://superpixelquest.com/
=> https://ellesho.me/ (merci f6k!)
=> https://floor796.com/
=> https://www.hyperreve.fr/
=> https://nostalgic-css.github.io/NES.css/
## Le principal problème...
> Il n'y a pas de code d'erreur 418 : "I'm a teapot". !
Ahem...
Publier sur gopher ou gemini, c'est justement rendre moins facile
d'accès une autre façon de faire.
C'est cacher ce que pourrait être le web actuel, en mieux.
À moins que cela soit l'objectif, cela va à contre sens ce vers quoi on
voudrait voir le web évoluer.
Pour en profiter, il faut installer et apprendre des outils
spécifiques, des clients adaptés, ce qui représent un sacré frein à la
popularisation de ce qu'on aime...
Pour ma part, c'est un vrai souci pour les flux RSS/ATOM par exemple.
Alors que fait-on? On utilise un proxy http:
=> http://portal.mozz.us
=> https://warmedal.se/~wobbly/
...
Petite anecdote en passant, j'ai découvert que certains de ces services
publient leurs logs, ce qui questionne sur la vie privée... oO
=> https://gopher.floodgap.com/gopher/gw?gopher.floodgap.com/0/recent
Pire que les proxy, on voit fleurir des tentatives pour rendre
accessible via ces protocoles ce qui existe déjà ailleurs : reddit,
wikipedia, ...
Autrement dit, on ne s'affranchit pas du tout du web "classique".
## Les solutions ?
Retrouver le plaisir de surfer à nouveau.
Sauter d'un lien à l'autre, suivre les recommandations de personnes
plutôt que celles d'un moteur de recherche. Pour ça, le mot clé est
"blogroll".
À la rigueur, on pourrait utiliser un moteur de recherche adapté au
smolweb, comme wiby:
=> https://wiby.me/
Ou encore découvrir des pépites dans des répertoires :
=> http://biglist.terraaeon.com/ The big list of personal websites
=> https://indieblog.page/all indieblog
=> https://512kb.club/ 512kb club
=> https://250kb.club/ 250KB club
=> https://ooh.directory/
=> https://personalsit.es/
=> https://smallweb.cc/
=> ...
Mais à mon avis, le plus important serait de publier un vrai smolweb,
comme indiqué ici :
=> https://smolweb.org/
On pourrait penser que c'est trop technique.
Que nenni, il existe plusieurs services à différents niveaux de
geekitudes, du plus facile au moins facile à utiliser:
=> https://bearblog.dev/
Prérequis : aucun. est une plateforme de blog vraiment hyyyyper
simple à prendre en main. On crée un compte, on écrit, et voilà!
=> https://mataroa.blog/ Aucun prérequis.
=> https://smol.pub/ Aucun prérequis.
=> https://midnight.pub/ Aucun prérequis..
=> https://pages.casa/
Prérequis : savoir utiliser filezilla.
C'est très bien documenté sur le site.
=> https://neocities.org/
Prérequis : à priori aucun, il y a un éditeur html intégré, mais
je n'ai pas pu tester.
=> https://prose.sh/
Prérequis : savoir utiliser la commande "ssh".
=> https://www.nearlyfreespeech.net/
Prérequis : savoir écrire son html et utiliser ssh
=> https://sdf.org/
Prérequis : avoir l'habitude d'UNIX.
...
Les solutions ne manquent pas pour faire l'exemple de ce qu'on
souhaiterait voir davantage.
Pour cela, il faut rendre vos créations disponibles pour inspirer.
Et pour aller plus loin, on peut même se prendre un nom de domaine et
suivre des idées de l'indieweb, si on a envie:
=> https://indieweb.org/
## Le mot de la fin
Si ça vous fait plaisir, n'arrêtez pas de publier sur gopher ou gemini.
Car après tout, chacun est libre et la diversité est riche :)
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=Les-protocoles-Gemini-et-Gopher-ne-desservent-ils-pas-le-smolweb
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
Du tri dans mes flux RSS ATOMhttps://si3t.ch/log/2025-09-15-DutridansmesfluxRSSATOM.txt2025-09-15T12:18:23Z mailto:prx@si3t.ch?subject=DutridansmesfluxRSSATOM
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
rss2emailhttps://si3t.ch/log/2025-09-13-rss2email.txt2025-09-13T15:32:33Z https://codemadness.org/sfeed.html
Il est vraiment excellent.
Son côté KISS permet de très finement l'adapter à ses besoins.
On peut même filtrer les trackers, ou remplacer les youtube par invidious (et équivalents).
Le fait qu'il utilise curl permet même de récupérer un flux sur gopher.
Je vérifiais une fois par jour mes flux, et les lisais avec sfeed_curses.
Seulement voilà, je ne lisais pas tout.
Loin de là.
Du coup j'en arrivais à me dépêcher de lire un maximum de choses avant que la fatigue ne l'emporte.
C'était bacler.
f6k m'a rappelé récemment l'existence de rss2email, qui est bien connu :
=> https://github.com/rss2email/rss2email
Cet outil envoie vers une adresse mail les nouveaux éléments de flux.
> Mais tu peux faire pareil avec sfeed_mbox et fdm
Oui, j'en ai bien conscience, mais sfeed_mbox ne fait qu'envoyer le lien vers l'article.
C'est d'ailleurs un des principaux reproches que j'ai à faire à sfeed, le contenu des articles est rarement incluse, sauf dans sfeed_curses.
Alors je pourrais éditer le code, mais là je n'en ai pas le temps ni l'énergie.
Je me sentais restreint dans le fait d'être forcé à ouvrir sfeed_curses pour lire.
L'envoie d'un article par mail me permet de les lire depuis mutt, mais aussi depuis n'importe quel autre endroit qui me permet de consulter mes mails.
Cette petite liberté fait tout.
Tout n'est pas parfait : rss2email ne supporte pas gopher, ni gemini.
Tant pis.
De toute façon, ça fait partie des choses qui m'agacent avec ces autres protocoles, surtout gemini qui n'est toujours pas reconnu.
C'est bien beau de vouloir refaire un web propre et sain, mais c'est inutile s'il est restreint. À la place, on voit fleurir des proxys gopher->http ou gemini->http. Ça me paraît hypocrite, alors que proposer son contenu dans du http propre dépourvu de publicité/trackers/cookies me semble une façon active de montrer l'exemple et promouvoir un indieweb qu'on aime.
Bref, il faudra qu'on en reparle...
En attendant, rss2email fait très bien le job.
Un jour, peut-être, je me plongerai dans le code pour ajouter gopher et gemini. (gemini qui en passant a inventé son propre format, le gemfeed, qui limite à un post par jour ce qui est aberrant, comme si on n'avait pas pu penser à ajouter l'heure à un post...). Quoi? Je digresse? Bienvenue dans ma tête :D.
Ça fait longtemps que je n'ai pas fait de python, ça serait l'occasion.
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=rss2email
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
calendarhttps://si3t.ch/log/2025-09-11-calendar.txt2025-09-11T12:54:06Z https://terokarvinen.com/2021/calendar-txt/ Calendar.txt
=> https://ploum.net/2025-09-03-calendar-txt.html How I fell in love with calendar.txt
=> https://galusik.fr/twtxt.txt entrée du https://galusik.fr/twtxt.txt
=> https://orangina-rouge.org/shaarli/shaare/mEMTXQ
Et pour cause, je suis le premier à apprécier la simplicité et la
puissance du texte brut.
Contrairement à ce qui est évoqué par endroit, c'est simplissime de
synchroniser un tel calendrier entre différentes machines, smartphone
et ordinateur, par exemple avec Syncthing :
=> https://syncthing.net Syncthing
Cependant, il n'y a pas de client Android tout prêt, mais j'imagine que
c'est assez simple à créer.
Ce qui m'étonne, c'est la redécouverte d'un outil calendrier de ce
genre.
En effet, ce dont je veux parler aujourd'hui, c'est de la commande
"calendar", disponible sur la plupart des outils UNIX, donc
probablement votre distro Linux:
=> https://man.openbsd.org/calendar
=> https://manpages.debian.org/testing/calendar/calendar.1.en.html
Un peu comme l'évoque Ploum, j'ai depuis un moment la commande suivante
qui est lancée quand j'ouvre un terminal :
```
calendar -A 7
```
Cela m'affiche tous les évènements à venir les 7 prochains jours.
J'en parlais ici (presque 4 ans, que ça passe vite!!!):
=> https://si3t.ch/log/2021-05-26-calendar.txt
Le fichier ~/.calendar/calendar est un simple fichier texte.
Pour ma part, je le trouve nettement plus clair que la syntaxe de
calendar.txt :
```
Mois jour évènement
```
On y retrouve tous les avantages très bien décrits par Ploum, avec
quelques autres.
Par exemple, les évènements récurrents, par exemple "tous les mardis".
Pas besoin d'éditer touuuus les mardis du calendrier, une simple ligne
de ce genre suffit :
```
Tue 10h : prendre une douche
```
Il y a un tout petit bémol : la tabulation qui sépare la date de la
description de l'évènement. Ce n'est pas très pratique à entrer sur un
smartphone. Mais on peut le faire quand même avec le clavier virtuel
qui va bien.
calendar comprend plusieurs façon d'écrire les dates, à chacun de
choisir ce qu'il préfère.
Mais encore plus pratique : on peut inclure des évènements de divers
calendriers, par exemple:
```
#include
```
Nul besoin de devoir télécharger un fichier pré-rempli, qui sera
obsolète dans quelques (longues, il faut le reconnaître) années.
Je vous invite à en apprendre plus sur ces solutions KISS et à lire les
liens donnés plus haut, peut-être vous inspireront-ils.
En tout cas, j'en suis venu à ne plus pouvoir m'en passer.
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=calendar
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
teapothttps://si3t.ch/log/2025-09-09-teapot.txt2025-09-09T11:38:07Z https://si3t.ch/teapot
Dans le configuration de httpd, j'ai juste ajouté :
```
location "/teapot" { block return 418 }
```
Indispensable!
---
Une réaction?
Envoyez votre commentaire par mail ✉️:
=> mailto:prx@si3t.ch?subject=teapot
Ou rejoignez le salon XMPP 💬:
=> xmpp:fremen@chat.si3t.ch?join
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
Générateur de plan de classehttps://si3t.ch/log/2025-09-03-Generateurdeplandeclasse.txt2025-09-03T21:52:18Z https://si3t.ch/tools/plan-de-classe/
## En détails
En ce début d'année, avec M, on a eu envie d'un générateur de
plan de classe aléatoire.
Dit autrement, un outil qui nous permette d'imprimer/projeter/modifier
un plan de classe sans trop de prise de tête, avec environ 300 élèves
dans notre carquois.
(on est bien d'accord, on ne peut pas se reposer uniquement sur le
hasard, mais l'aléatoire est parfois un point de départ comme un autre).
Par ailleurs, ça peut être un outil pratique pour varier la composition
des groupes.
On a pensé que cela pourrait vous intéresser.
Sans prétention, on a commencé à écrire quelques lignes de code, et
ChatGPT aidant (Saint Bilan-Carbone nous pardonne), nous avons étoffé
l'outil afin qu'il permette :
* D'importer une liste de classe exportée depuis Pronote.
* Placer de façon aléatoire les élèves.
* Modifier le plan de classe aléatoire par glisser-déposer
* Figer un élève à une place bien précise. Si si, on sait que vous avez
vos chouchous à garder tout près du bureau. ;)
* Diffuser un plan de classe pour permettre de se placer à l'entrée en
classe.
* Disposer du même plan de classe du point de vue du prof (inversé).
* Imprimer ce plan de classe (export PDF).
Si cela vous intéresse, l'essayer vaudra mieux que ce long discours :
=> https://si3t.ch/tools/plan-de-classe/
Oui, ce n'est pas très joli, mais on a pensé que des couleurs et des
dégradés à paillettes, ça ne serait pas l'idéal pour le toner de notre
précieuse photocopieuse.
Rassurez-vous : cet outil ne fait travailler que votre ordinateur
uniquement.
Autrement dit, il n'y a pas de serveur qui traite les données sensibles
de nos élèves : tout se fait sur votre ordinateur uniquement. (Captain'
RGPD est ok).
D'ailleurs, les plus sceptiques (bravo!) pourront télécharger la page
sur leur disque dur et l'ouvrir le fichier plan-de-classe.html avec
un navigateur (Firefox, Chrome) : le résultat sera exactement le même.
## Comment l'utiliser?
Ouvrez Pronote dans votre navigateur.
Dans l'onglet "Mes données", ouvrez "Liste des élèves".
Après avoir choisi votre classe favorite, vous pourrez récupérer la
liste de vos
élèves adorés au format CSV avec un clic sur le bouton tout à droite à
la forme
de deux feuilles superposées.
Ouvrez maintenant le générateur de plan de classe sus-mentionnée.
(indice : https://si3t.ch/tools/plan-de-classe/ )
Avec un clic sur le bouton "Parcourir", vous pourrez donner à votre
navigateur la liste de votre classe préférée à traiter.
Aussitôt, il propose un plan de classe aléatoire.
Tant que vous cliquez sur "Nouvelle disposition", il mélange les élèves.
Vous pouvez déplacer les élèves avec un glisser-déposer.
Un double clic sur un élève le fige à cette place : il ne sera plus
modifiable.
(on oublie l'aléatoire assez vite)
Un bouton "Retourner" vous permet d'obtenir un point de vue "prof".
Enfin, vous pouvez exporter votre plan de classe en PDF tel qu'il
apparaît à l'écran.
Petit bémol : la répartition des tables correspond à nos salles de
sciences, ce qui n'est probablement la configuration de vos salles.
Modifiez alors le nombre de rangées et de colonnes selon vos besoins.
Nous n'avons pas prévu d'outil pour les ilôts (vois plus loin ;) ).
## Pour compléter
Vous aimerez peut-être l'outil de ladigitale qui permet de constituer
des groupes aléatoires :
=> https://ladigitale.dev/digitools/groupes/
Et de façon plus large tous les outils de la digitale bien pratique aux
enseignants :
=> https://ladigitale.dev/
Voire encore le bien connu tableau de classe avec chronomètres, compte
à rebours, sondage...
=> https://classroomscreen.com/app/
## Mot de la fin
Petite pensée pour toutes celleux qui n'ont pas d'ordinateur fonctionnel
dans leur salle qui trouveront ce message pour le moins ironique.
Consolez-vous, votre exemple de sobriété énergétique fait du bien à Gaïa...
(désolé... 😕)
Ça y est, ce mail est enfin terminé, vous pouvez comme le dit l'ami arpi,
éteindre votre ordinateur et reprendre une activité normale.
---
Une réaction?
Envoyez votre commentaire par mail:
prx@si3t.ch
Ou rejoignez le salon XMPP:
fremen@chat.si3t.ch
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
Tous les émojis à portée de mainhttps://si3t.ch/log/2025-09-01-Touslesemojisaporteedemain.txt2025-09-01T10:23:57Z https://www.unicode.org/emoji/charts/full-emoji-list.html
Ensuite, un peu de awk m'a permis d'obtenir emoji.txt :
=> https://si3t.ch/tools/secret/?7b195ddc9d320f02#HKhPA5BaLia4UjnBUuyjtsJxMEPVYgASmJ4fMUmJzMUZ
```
awk '
/td.*'chars'/ {
split($0, a, ">")
split(a[2], b, "<")
emoji = b[1]
}
/td.*'name'/ {
split($0, a, ">")
split(a[2], b, "<")
name = b[1]
}
(emoji != "") && (name != "") {
printf("%s %s\n", emoji, name)
emoji=""
name=""
}
' full-emoji-list.html > emoji.txt
```
Enfin, je veux pouvoir copier un de ces symboles facilement. J'utilise
pour cela dmenu ou fzy
=> https://github.com/jhawthorn/fzy
```
fzy -p emoji < emoji.txt | awk '{print $1}' | xclip -selection clipboard
```
Ceci mis en alias ou dans un script appelé via raccourci clavier, et hop!
À vrai dire, il me manquait aussi quelques symboles mathématiques, qui ne
font pas partie des emojis.
Mais c'est enfantin d'ajouter un symbole qui pourait me manquer pour une
future utilisation :)
Pour le retrouver, ce site est pas mal du tout:
=> https://www.utf8icons.com
---
Une réaction?
Envoyez votre commentaire par mail:
prx@si3t.ch
Ou rejoignez le salon XMPP:
fremen@chat.si3t.ch
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
parfois ça a du bon d'être un geekhttps://si3t.ch/log/2025-08-29-parfoiscaadubondetreungeek.txt2025-08-29T21:54:12Z 1 {gsub("\"","", $1); print $1}'
```
Un petit coup de sort -R est c'est randomisé pour un début d'année.
```
awk -F ';' 'NR > 1 {gsub("\"","", $1); print $1}' | sort -R
```
C'est pas parfait, j'en connais quelques uns qu'il vaut mieux séparer
pour commencer, mais c'est un bon début.
Sinon, il y a aussi digigroupes:
=> https://ladigitale.dev/digitools/groupes/
Bon, je n'ai pas encore trouvé comment générer un plan de classe
aléatoire, mais j'imagine qu'avec des tableaux markdown + pandoc on
doit pouvoir le faire. Ça ne fait pas partie de mes envies, je laisse
ça comme exercice au lecteur ^^
---
Une réaction?
Envoyez votre commentaire par mail:
prx@si3t.ch
Ou rejoignez le salon XMPP:
fremen@chat.si3t.ch
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
La guerre des Rosehttps://si3t.ch/log/2025-08-28-LaguerredesRose.txt2025-08-28T10:00:01Zamore: a more readable plaintext markuphttps://si3t.ch/log/2025-08-22-amore-a-more-readable-plaintext-markup.txt2025-08-22T15:38:17Z https://sr.ht/~prx/amore/
J'aime beaucoup le format gemtext, mais avoir des lignes hyper longues,
c'est vraiment pénible.
Il me manquait la possibilité de pouvoir appeler "fmt" ou "fold" sur
mes documents afin qu'ils soient aussi bien lisibles au format texte
brut qu'une fois convertis en html (ou autre).
Vous me direz, je n'avais qu'à repasser au markdown.
Oui mais, le markdown, c'est n'importe quoi pour les liens.
Franchement, qui a envie de se casser les doignes à mettre des [ et des
] puis des (), et de penser à mettre un ! pour les images.
Et encore, il ne faut pas se tromper dans l'ordre des [] et des ().
J'aurais pu me contenter de coller un lien tout seul sur sa ligne après
tout sans ces notations bizarres... Ainsi, le lien reste bien
identifiable.
Mais ça aurait été passer à côté des vidéos et du son.
C'était aussi l'occasion de me remettre au C.
Après une implémentation en awk, le C est prêt, et la différence est
comme d'habitude notable pour générer tout mon site:
En awk: 0m14.33s real 0m05.73s user 0m04.91s system
En c: 0m08.99s real 0m02.53s user 0m03.87s system
J'en ai profité pour ajouter 2 sortes de paragraphes : les messages
importants (strong) et le mode verbatim si je veux coller du html
direct.
J'ai en tête de convertir ça en d'autres formats, notamment PDF
(LaTeX), afin de pouvoir rédiger mes cours ainsi.
Si vous voulez regarder la syntaxe, je détaille cela en français ici :
=> https://si3t.ch/misc/plaintext/
Sinon, n'hésitez pas à aller chasser les bugs:
=> https://sr.ht/~prx/amore/
En attendant, je vais pouvoir reprendre mes citations pour les formater
sur plusieurs lignes :)
---
Une réaction?
Envoyez votre commentaire par mail:
=> prx@si3t.ch?subject=amore-a-more-readable-plaintext-markup
Ou rejoignez le salon XMPP:
=> fremen@chat.si3t.ch
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
atom.awk corrigéhttps://si3t.ch/log/2025-08-21-atom.awk-corrige.txt2025-08-21T07:09:40Z https://si3t.ch/code/atom.awk/
Il ignore les fichiers dont le nom commence par un "_".
Cependant, là, j'ai un fichier qui n'est pas une entrée du flux, mais
qui ne commence pas par un "_".
J'ai donc ajouté une vérification qui devrait être là depuis longtemps
: si la date de plublication indiquée sur la 2e ligne n'est pas au bon
format, alors ce n'est sans doute pas une entrée de blog et le fichier
doit être ignoré.
Voici à quoi ressemble la regex (awk rocks!)
```
if (pubdate !~ /[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z/) {
```
On doit pouvoir faire plus court, mais j'aime autant la laisser ainsi
car c'est plus clair pour moi.
Elle est constituée des éléments suivants :
* [0-9] : il doit y avoir un chiffre
* [0-9]{4} : Ce doit être un nombre de 4 chiffres
* [0-9]{4}-[0-9]{2} : Un nombre de 4 chiffres suivi d'un tiret suivi
d'un nombre de 2 chiffres
* [0-9]{4}-[0-9]{2}-[0-9]{2}T : Encore 2 chiffres après un tiret
puis un "T"
La suite c'est la même logique pour l'heure, mais c'est séparé par des
":" et pas des "-".
AWK permet de tester une regex avec l'opérateur "~", et la regex est
indiquée entre "/".
En tout cas, désolé pour ceux qui auraient vu le mauvais billet
apparaître dans leur flux. Comme il n'avait pas de date, je ne sais pas
trop comment les lecteurs de flux l'auront traité.
---
Une réaction?
Envoyez votre commentaire par mail:
=> prx@si3t.ch?subject=atom.awk-corrige
Ou rejoignez le salon XMPP:
=> fremen@chat.si3t.ch
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
Helldeberthttps://si3t.ch/log/2025-08-15-Helldebert.txt2025-08-15T08:03:33Z https://www.youtube.com/watch?v=mfY87bZbUVM&list=OLAK5uy_mjIuKYPZE49IuA65XgbYyTA78oVxkoht8&index=2
---
Une réaction?
Envoyez votre commentaire par mail:
=> mailto:prx@si3t.ch?subject=Helldebert
Ou rejoignez le salon XMPP:
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
Des notes accessibles de partouthttps://si3t.ch/log/2025-08-14-notes-multiples-appareils.txt2025-08-14T14:27:07Z ls ~/work/notes/
achats.txt
articles.txt
bricolage.txt
checklist-impots-revenus.txt
code.txt
dl.txt
educ.txt
idees_cadeau.txt
isotop.txt
notd.txt
nouvelles.txt
ports-openbsd.txt
projets.txt
series.txt
todo.txt
toread.txt
tty.txt
workout-playlist.txt
```
Je me retrouve avec des choses sur papier, des doublons sur ordinateur, des triplets avec le téléphone, et je n'ai pas toujours ce que j'ai besoin sours la main, et parfois j'oublie de copier d'un outils à l'autre.
C'est le bazar quoi.
J'ai enfin mis en place un truc auquel j'aurais du penser avant :
* Installation de Markor sur mon smartphone : https://github.com/gsantner/markor
* Installation de Syncthing sur mon smartphone et mon ordinateur : https://syncthing.net/
* Partage du dossier /storage/emulated/0/Documents/markor avec mon ordinateur (et mon serveur pour backup).
Désormais, peu importe ce que je copie de mon téléphone ou de mon ordinateur, j'ai toutes mes notes synchronisées dans la minute.
C'est terriblement pratique!!!
Je tombe sur un site qui a l'air cool : hop, dans la liste des trucs toread.txt.
...
Bref, prenez 10min pour mettre ça en place, n'attendez pas comme j'ai pu le faire :)
---
Une réaction?
Envoyez votre commentaire par mail:
=> mailto:prx@si3t.ch?subject=notes-multiples-appareils
Ou rejoignez le salon XMPP:
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
~*´¨¨)
⹁.•´¸.•*´¨) ¸.•*¨)
(¸.•´ (¸.• ;⹁.~!prx
]]>
Le temps qui poussehttps://si3t.ch/log/2025-08-12-le-temps-qui-pousse.txt2025-08-12T14:12:16Z https://phauneradio.bandcamp.com/album/le-temps-qui-pousse
=> https://archive.phauneradio.com/creations/Temps-Qui-Pousse/2025_Temps-qui-pousse_transcript-translation.pdf
> Vos souvenirs percolent vers l’avenir. Le temps ne passe plus : il pense, il ponce les pierres sous vos pas, il serait touffe d’herbe dans vos failles, il fut fleur et fruit — il pousse. -- A. Damasio
---
Une réaction?
Envoyez votre commentaire par mail:
=> mailto:prx@si3t.ch?subject=le-temps-qui-pousse
Ou rejoignez le salon XMPP:
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
]]>
Bien utiliser rsynchttps://si3t.ch/log/2025-08-11-bien-utiliser-rsync.txt2025-08-11T08:49:10Z mailto:prx@si3t.ch?subject=bien-utiliser-rsync
Ou rejoignez le salon XMPP:
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
]]>
Trouver les fichiers volumineuxhttps://si3t.ch/log/2025-08-10-trouver-les-fichiers-volumineux.txt2025-08-10T08:29:31Z mailto:prx@si3t.ch?subject=trouver-les-fichiers-volumineux
Ou rejoignez le salon XMPP:
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
]]>
Sauvegarde de culture pour la postéritéhttps://si3t.ch/log/2025-08-04-sauvegarde-de-culture-posterite.txt2025-08-04T08:45:14Z https://pen.org/magic-tree-house-author-calvin-and-hobbes-among-hundreds-of-tennessee-book-bans/
=> https://web.archive.org/save/https://pen.org/magic-tree-house-author-calvin-and-hobbes-among-hundreds-of-tennessee-book-bans/
=> https://archive.is/diExo
Me voilà donc avec un disque dur qui se rempli de Pixar et autres films qui m'ont formés, dans l'espoir de pouvoir les partager avec mes enfants bientôt, et puisque les lecteurs DVD se font rares.
Il y a aussi quelques ressources documentaires : vikidia, wikipedia, ...
=> https://download.kiwix.org/zim
Mais il manquait les livres.
Sur mon serveur se trouvent désormais quelques ouvrages:
1984, Dune, Fondation, Farenheit 451, Mars...
La culture et la connaissance ne prennent de la valeur que lorsqu'on les partage :).
---
Une réaction?
Envoyez votre commentaire par mail:
=> mailto:prx@si3t.ch?subject=sauvegarde-de-culture-posterite
Ou rejoignez le salon XMPP:
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
]]>
Steam-workshop : où sont les mods ?https://si3t.ch/log/2025-06-25-steam-workshop-ou-sont-mods.txt2025-06-25T14:46:15Z mailto:prx@si3t.ch?subject=steam-workshop-ou-sont-mods
Ou rejoignez le salon XMPP:
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
]]>
warnlowhttps://si3t.ch/log/2025-06-24-warnlow.txt2025-06-24T08:27:55Z https://man.openbsd.org/apmd
---
Une réaction?
Envoyez votre commentaire par mail:
=> mailto:prx@si3t.ch?subject=warnlow
Ou rejoignez le salon XMPP:
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
]]>
DOS: Baby Johttps://si3t.ch/log/2025-05-18-DOS-Baby-Jo.txt2025-05-18T20:57:46Z https://dos.zone/babyjo/
---
Une réaction?
Envoyez votre commentaire par mail:
=> mailto:prx@si3t.ch?subject=DOS-Baby-Jo
Ou rejoignez le salon XMPP:
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
]]>
kamehameha interdit à tablehttps://si3t.ch/log/2025-05-13-kamehameha-interdit-a-table.txt2025-05-13T21:05:04Z https://si3t.ch/pub/img/kame.svg
=> https://si3t.ch/pub/img/kame.png
C'est pas parfait, loin de là, mais ça m'amuse :)
Merci Péhä!
---
Une réaction?
Envoyez votre commentaire par mail:
=> mailto:prx@si3t.ch?subject=kamehameha-interdit-a-table
Ou rejoignez le salon XMPP:
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
]]>
musicforprogramminghttps://si3t.ch/log/2025-05-04-musicforprogramming.txt2025-05-04T13:20:08Z https://si3t.ch/log/2020-09-27.txt
Depuis, j'ai je crois fait mieux :
```
#!/bin/sh
# downoad every musicforprogramming files
curl "https://musicforprogramming.net/rss.xml" | awk '
/.*mp3/ {
sub("", "")
sub("", "")
print
}
' | xargs -I "{}" wget -c "{}"
```
---
Une réaction?
Envoyez votre commentaire par mail:
=> mailto:prx@si3t.ch?subject=musicforprogramming
Ou rejoignez le salon XMPP:
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
]]>
/quoteshttps://si3t.ch/log/2025-03-24-quotes.txt2025-03-24T10:35:36Z https://si3t.ch/quotes/
J'adore les citations, si bien que j'en ajoute à la fin de la plupart des évaluations distribuées à mes élèves.
Évidemment, selon l'état d'esprit du moment, elles ne résonnent pas toujours de la même façon.
J'imagine qu'il s'agit d'un assez bon reflet de comment ça fonctionne dans ma tête, alors c'est aussi une façon de mieux se connaître.
Peut-être voudrez-vous avoir votre /quotes vous aussi ;)
Actuellement, je m'occupe de remplir cette page avec tout ce que j'ai pu noter ci et là sans les rassembler.
Je suis d'ailleurs horrifié de voir dans certains recueils des phrases de "grands" hommes mysogines qui sous des airs humoristiques méprisent les femmes, le mariage et le respect d'autrui finalement.
Le pire, c'est que certaines femmes célèbres participent à cette discrimination. Coco Chanel, A Nothomb... (à quoi m'attendais-je de quelqu'un qui dine avec Bardella après tout?)
Voici les 2 dernières citations ajoutées:
> L'éducation est l'arme la plus puissante qu'on puisse utiliser pour changer le monde. -- Nelson Mandela
> Leur peine fut la mort, la mienne fur la vie. -- Audrey Pleynet.
---
Une réaction?
Envoyez votre commentaire par mail:
=> mailto:prx@si3t.ch?subject=quotes
Ou rejoignez le salon XMPP:
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
]]>
La Bonne Aubergehttps://si3t.ch/log/2025-03-18-lba.txt2025-03-18T16:35:24Z https://www.youtube.com/channel/UCY8XxCWoDsPwMQT2_P6gtKQ
=> https://labonneaubergejdr.fr/
Si ça vous plaît, peut-être voudrez-vous participer à leur campagne de financement participatif:
=> https://fr.ulule.com/lba-studio17/
---
Une réaction?
Envoyez votre commentaire par mail:
=> mailto:prx@si3t.ch?subject=lba
Ou rejoignez le salon XMPP:
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
]]>
slashpageshttps://si3t.ch/log/2025-03-16-slashpages.txt2025-03-16T14:52:49Z https://slashpages.net/
Je trouve certaines idées plutôt sympa, et c'est finalement assez pratique à écrire.
Cela m'a aidé à réorganiser un peu le site pour avoir:
=> /about : ça parle de moi, du site, comment me contacter
=> /uses : il faut que je pense à mettre cette page à jour ^^
=> /sitemap : j'avais déjà nue page pour mettre les liens vers toutes les pages du site, il a suffit de renommer.
=> /links : tous les liens au fil du web, il faut que je réorganise tout ça et ajouter des explications.
Pas de /now, pour cela, il y a le /log.
Pour finir, j'ai ajouté la page /wall.
Il s'agit d'un livre d'or, ou guestbook.
Très largement inspiré de :
=> https://github.com/shannonkay/guestbook/
J'ai quand même un peu modifié le code, car certaines choses ne m'allaient pas:
* Les retours à la ligne sont supportés. Cela permet d'avoir du ascii art si on veut. Cela se fait en remplaçant \r\n par l'entité html correspondante
* Je retire l'éventuel html avec la fonction prévue pour : strip_tags()
* Pour être vraiment tranquille, on appelle htmlspecialchars().
* Pour valider l'url, c'est directement le html qui s'en charge plutôt que forcer le protocole http:// (pas chiffré en +...)
Le code était suffisamment simple, et j'ai réussi à me l'approprier.
Si vous remarquez des défauts, n'hésitez pas à m'en faire part :)
Le code est là :
=> https://git.sr.ht/~prx/wall/
---
Une réaction?
Envoyez votre commentaire par mail:
=> mailto:prx@si3t.ch?subject=slashpages
Ou rejoignez le salon XMPP:
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
]]>
Outilshttps://si3t.ch/log/2025-03-14-outils.txt2025-03-14T16:42:42Z https://si3t.ch/tools
On y trouve un featherwiki que je trouve pratique pour créer une simple page web, une calculatrice, de quoi afficher son IP, un chronomètre, un timer...
J'ai piqué pas mal d'outils à Timo et à ladigitale, merci à eux pour les modèles!
=> https://lehollandaisvolant.net/tout/tools/
=> https://ladigitale.dev/digitools
L'idée c'est d'avoir en version hors ligne des outils qui me servent souvent en classe.
J'essaie de m'approprier le code des autres, ça me fait réviser mon javascript rouillé.
À ce titre, j'ai envie de me créer une petite startpage perso.
Et en plus gros projet, un board pour le jeu de rôle, avec :
* Génération de personnage aléatoire
* Dés à cliquer pour les faire rouler
* Timer
* Générateur de map
* bloc note... ?
J'en ai profité pour réorganiser un peu le site avec des slashpages.
=> https://slashpages.net/
J'hésite à mettre un guestbook:
=> https://web.pixelshannon.com/aguestbook/index.html
À ce propos, j'ia failli retirer la mention de mon adresse mail pour les commentaires.
Cependant, passer par Mastodon pour avoir des commentaires d'articles, bien que séduisant au départ, ne me paraît pas une si bonne idée : ça impose de créer un compte sur Mastodon. Alors que le mail, tout le monde en a déjà un...
C'est agréable de s'occuper de son petit espace à soi, un peu comme un petit jardin numérique :)
Reste à réorganiser mes marques pages et commenter un peu pour chacun d'entre eux. :)
---
Une réaction?
Envoyez votre commentaire par mail:
=> mailto:prx@si3t.ch?subject=outils
Ou rejoignez le salon XMPP:
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
]]>
Que faire si votre TRX fait bouger votre porte ?https://si3t.ch/log/2025-02-25-trx-porte-qui-bouge.txt2025-02-25T11:59:34Z https://www.trxtraining.com/
---
Une réaction?
Envoyez votre commentaire par mail:
=> mailto:prx@si3t.ch?subject=trx-porte-qui-bouge
Ou rejoignez le salon XMPP:
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
]]>
bloque bollorehttps://si3t.ch/log/2025-02-18-bloque-bollore.txt2025-02-18T20:42:28Z https://d4llo.codeberg.page/BloquonsBollore/
J'ajoute ma petite touche, avec quelques lignes à intégrer à votre fichiers /etc/hosts
```
0.0.0.0 havas.com
0.0.0.0 dailymotion.com
0.0.0.0 cnews.fr
0.0.0.0 canalplus.com
0.0.0.0 caminteresse.fr
0.0.0.0 capital.fr
0.0.0.0 cotemaison.fr
0.0.0.0 croq-kilos.com
0.0.0.0 cuisineactuelle.fr
0.0.0.0 cuisineaz.com
0.0.0.0 deco.fr
0.0.0.0 drgood.fr
0.0.0.0 femmeactuelle.fr
0.0.0.0 flowmagazine.fr
0.0.0.0 fourchette-et-bikini.fr
0.0.0.0 gentside.com
0.0.0.0 gamesider.com
0.0.0.0 geo.fr
0.0.0.0 telez.fr
0.0.0.0 turbo.fr
0.0.0.0 uppercutmma.com
0.0.0.0 voici.fr
0.0.0.0 hbr.org
0.0.0.0 meteocity.com
0.0.0.0 milkdecoration.com
0.0.0.0 milkmagazine.net
0.0.0.0 mortelleadele.com
0.0.0.0 nationalgeographic.fr
0.0.0.0 neonmag.fr
0.0.0.0 ohmymag.com
0.0.0.0 passeportsante.net
0.0.0.0 programme.tv
0.0.0.0 programme-tv.net
0.0.0.0 harpersbazaar.fr
0.0.0.0 europe1.fr
0.0.0.0 europe2.fr
0.0.0.0 rfm.fr
0.0.0.0 lejdd.fr
0.0.0.0 relay.com
0.0.0.0 larousse.fr
0.0.0.0 valeursactuelles.com
0.0.0.0 tvlibertes.com
0.0.0.0 breizh-info.com
0.0.0.0 burdigala-presse.fr
0.0.0.0 nice-provence.info
0.0.0.0 infos-bordeaux.fr
0.0.0.0 lengadoc-info.com
0.0.0.0 fdesouche.com
0.0.0.0 dreuz.info
0.0.0.0 unebonnedroite.fr
0.0.0.0 contre-info.com
0.0.0.0 causeur.fr
0.0.0.0 bvoltaire.fr
0.0.0.0 frontieresmedia.fr
0.0.0.0 omertamedia.fr
0.0.0.0 lafuria.fr
0.0.0.0 nouveaupresent.fr
0.0.0.0 rc.fr
0.0.0.0 lesalonbeige.fr
0.0.0.0 medias-presse.info
0.0.0.0 chire.fr
0.0.0.0 lectures-francaises.info
0.0.0.0 rivarol.com
0.0.0.0 lincorrect.org
0.0.0.0 francesoir.fr
```
J'hésite à l'ajouter à
=> https://si3t.ch/evils/
Car en ce qui me concerne, ça ne me manquera pas du tout...
---
Une réaction?
Envoyez votre commentaire par mail:
=> mailto:prx@si3t.ch?subject=bloque-bollore
Ou rejoignez le salon XMPP:
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
]]>
Time to update zim archiveshttps://si3t.ch/log/2025-02-16-update-zim.txt2025-02-16T14:21:42Z mailto:prx@si3t.ch?subject=update-zim
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
]]>
Rose à paillettes multicoloreshttps://si3t.ch/log/2025-02-08-rose-a-paillettes-multicolores.txt2025-02-08T15:12:11Z Les vêtements qui brillent multicolores, il n'y en a que pour les filles! C'est pareil pour le rose, et moi j'aime bien cette couleur!
Il a tellement raison.
On fait le maximum pour dire aux jeunes filles qu'elles ne se destinent pas forcément à être des princesses délicates et parfaites et qu'elles ont le droit d'adorer casser des trucs et courir dans tous les sens si ça leur plait, qu'on en oublie que les garçons aussi n'ont pas à être des grosses brutes toxiques.
J'exagère le trait volontairement.
Mais il suffit d'aller dans un magasin de jouets pour être agressé soit de bleu ou bien de rose.
Il en va de même pour les habits pour enfants : c'est très genré.
Dans l'idéal, on a quelques vêtements "neutres" en jaune ou en vert.
Mais dès 6 ans à peine, notre environnement est déjà balisé avec une forte incitation à se ranger d'un côté ou de l'autre, sans plus de réflexion que le choix d'une couleur.
C'est juste des chaussettes qu'on veut bordel.
C'est pas mieux pour les chaussures de sport pour les petites filles : au mieux c'est sandalettes ouvertes, ou alors des baskets avec une semelle lisse.
Alors on fait les wokes comme disent certains :
* On achète des baskets dans les rayons "garçons" pour notre fille : bah oui, les filles aussi on le droit de courir et s'éclater dans l'herbe et la boue sans glisser.
* On achète des chaussettes roses à paillettes multicolores pour notre fils. Il marche et court aussi bien qu'avant, sauf que ça lui donne le sourire de porter ses couleurs favorites.
---
Une réaction?
Envoyez votre commentaire par mail:
=> mailto:prx@si3t.ch?subject=rose-a-paillettes-multicolores
Ou rejoignez le salon XMPP:
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
]]>
Mesure de masses et de volumes puis transformation chimiquehttps://si3t.ch/log/2025-02-01-mesure-masse-volumes-transfo-chimique.txt2025-02-01T15:48:07Z mailto:prx@si3t.ch?subject=mesure-masse-volumes-transfo-chimique
Ou rejoignez le salon XMPP:
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
]]>
ralf : Rename A Lot of Fileshttps://si3t.ch/log/2025-01-27-ralf.txt2025-01-27T21:03:40Z https://github.com/lecram/rover
C'est ainsi qu'est née l'envie d'écrire ralf, comme "Rename A Lot of Files" (le nom a beaucoup changé...).
Vous pouvez le récupérer et le tester à partir de cette URL:
=> https://git.sr.ht/~prx/ralf
J'ignore si c'est bien portable en dehors d'OpenBSD, puisque j'utilise strlcat et sltrcpy pour assurer le bon fonctionnement du traîtement des chaînes de caractères. Je pourrais m'en passer avec memcpy() et memmove(), mais autant m'appuyer sur le travail de gens sérieux.
Sur debian, il faut installer libbsd-dev je crois.
ralf est encore tout nouveau, il y a sans doutes des améliorations à y apporter.
Avant cela, et aussi pour me permettre de réfléchir à ce que j'ai écrit, voici quelques explications sur le code.
## Options? Flags?
Au départ, j'ai envisager de recopier les diverses façons de renommer que propose Thunar:
* Supprimer à partir d'une position
* Remplacer à partir d'une position
* Chercher/remplacer
* Chercher/remplacer avec une regex
Après avoir écrit un menu pour sélectionner la méthode, j'ai finalement réalisé que les regex permettaient de faire le tout.
## Liste des fichiers ?
Initialement, ralf listait les fichiers présents dans le dossier courant avec scandir(3).
C'est une fonction que j'ai déjà utilisé, qui permet d'avoir rapidement une liste des fichiers/dossiers présents.
Puis, je me suis dit que restreindre au dossier courant n'était pas très pratique, et que devoir réallouer la taille de la liste en mémoire avec des mallocs n'était pas très efficace.
De plus, on peut profiter des méthodes de sélection du shell, comme le fameux glob "*".
Alors, tant qu'à faire, je laisse le shell et l'utilisateur décrire les fichiers à renommer en les passant en argument.
En passant, j'ai réalisé que le premier argument est toujours le programme en cours d'exécution, j'ai donc retiré le premier paramètre dans argc.
## Enregistrement des fichiers à traîter
Pour commencer, j'ai enregistré la liste des fichiers à éventuellement renommer dans une liste, tout simple après avoir vérifié que le fichier existe bel et bien:
```
int
file_exist(const char *fn)
{
struct stat sb;
if (stat(fn, &sb) == 0) {
return 1;
} else {
return 0;
}
}
```
Ça fonctionnait bien, mais cela devenait plus compliqué lorsque je voulais associer le nouveau nom de fichier et parcourir la liste en question.
Puis je me suis souvenu qu'il existe déjà tout ce qu'il faut pour ce genre de taches : les queues!
Avec sys/queue.h, il y a des méthodes toutes prêtes pour insérer/traiter dans l'ordre une liste chaînée d'objets.
Me voilà donc avec une structure qui me permet d'avoir pour chaque fichier le nom courant et à côté le nom à donner:
```
struct Filename {
int modified;
char name[FILENAME_MAX];
char new[FILENAME_MAX];
SIMPLEQ_ENTRY(Filename) filename;
};
SIMPLEQ_HEAD(Filelist_head, Filename);
```
On remarque la variable "modified", qui me permet de savoir ensuite si le fichier doit effectivement être renommé, et mettre un peu de couleur pour identifier le changement prévu.
## Interface utilisateur
Je ne connais pas ncurses.h.
Alors j'en suis resté aux bons vieux fgets() et getchar().
Oups, je devrais dire getline() et getchar(), puisque le manpage de fgets() conseille d'utiliser getline dans le cas d'entrée hasardeuse.
Là encore, tout est prêt et bien pensé, c'est du gâteau.
J'ai choisi de tout simplement demander à l'utilisateur la regex à rechercher puis par quoi remplacer.
## La gestion des regex.
Là, j'au un peu plus réfléchi.
Au départ, j'avais une boucle qui cherchait dans le nom du fichier les patterns correspondant à la regex entrée et qui remplaçait dans ce nom du fichier par la chaîne choisie par l'utilisateur.
Cependant, ça posait un problème de boucles infinie.
Imaginez que l'on a le fichier "babar.txt".
L'utilisateur demande de remplacer "[a-c]" par "b".
On comprend qu'il voudrait que "babar.txt" devienne "bbbbr.txt".
Cependant, puisque "b" fait partie de "[a-c]", alors ça boucle sans cesse.
J'ai donc modifié mon algorithme pour ne traîter chaque pattern qu'à une seule reprise. Au final, la fonction est nettement plus simple:
```
regex_t regex;
regmatch_t match[1];
int regret = 0;
int n = 0;
int lastpos = 0;
char buf[BUFSIZ] = {'\0'};
char tmp[FILENAME_MAX] = {'\0'};
/* copy the string to tmp, then modify it */
estrlcpy(tmp, str, sizeof(tmp));
if ((regret = regcomp(®ex, pattern, REG_EXTENDED)) != 0) {
regerror(regret, ®ex, buf, sizeof(buf));
regfree(®ex);
err(1, "%s", buf);
}
while (regexec(®ex, tmp, 1, match, 0) == 0) {
/* append beginning of tmp in new until match start */
tmp[match[0].rm_so] = '\0';
estrlcat(new, tmp, newsiz);
/* replace this part */
estrlcat(new, rep, newsiz);
/* move the end of the string at the beginning of tmp */
memmove(tmp, tmp + match[0].rm_so + 1, sizeof(tmp));
n++;
}
/* at the end, copy the unmatching ending of tmp in new */
estrlcat(new, tmp, newsiz);
regfree(®ex);
return n;
```
## stack
J'ai choisi d'éviter les malloc().
Ce n'est pas par fainéantise (un peu), mais puisqu'il existe déjà FILENAME_MAX définit dans POSIX.
Par ailleurs, ça simplifie le code plutôt que d'allouer de la mémoire et lancer free() ci et là.
## Ce qu'il manque
Ça, c'est à vous de me le dire ^^.
Pour l'instant, j'ai identifié le souci qui se pose quand un nom de fichier existe déjà : il est tout simplement écrasé. Mettre un petit warning serait pas mal ^^.
J'hésite aussi à virer strlcpy et strlcat pour rendre le code plus portable, et aussi pour l'exercice. Qu'en pensez-vous?
Ah, il faudrait aussi une manpage.
---
Une réaction?
Envoyez votre commentaire par mail:
=> mailto:prx@si3t.ch?subject=ralf
Ou rejoignez le salon XMPP:
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
]]>
La trilogie Mars est solarpunkhttps://si3t.ch/log/2025-01-25-mars-KSR.txt2025-01-25T13:29:23Z https://si3t.ch/misc/solarpunk/
---
Une réaction?
Envoyez votre commentaire par mail:
=> mailto:prx@si3t.ch?subject=mars-KSR
Ou rejoignez le salon XMPP:
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
]]>
Sans suite ?https://si3t.ch/log/2025-01-23-sans-suite.txt2025-01-23T11:02:47Z Je ne connais pas la peur, car la peur tue l'esprit.
> La peur est la petite mort qui conduit à l'oblitération totale.
> J'affronterai ma peur.
> Je lui permettrai de passer sur moi, au travers de moi.
> Et lorsqu'elle sera passée, je tournerai mon oeil intérieur sur son chemin.
> Et là où elle sera passée, il n'y aura plus rien.
> Rien que moi.
---
Une réaction?
Envoyez votre commentaire par mail:
=> mailto:prx@si3t.ch?subject=sans-suite
Ou rejoignez le salon XMPP:
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
]]>
nuagehttps://si3t.ch/log/2025-01-22-nuage.txt2025-01-22T15:01:31Z https://nuage.apps.education.fr/
C'est fait pour le boulot, alors c'est parfait pour le besoin que j'en ai.
Me voilà donc à tester nextcloudcmd pour envoyer mes cours sur nuage.
Je m'y suis peut-être mal pris, mais l'application de synchronisation Nextcloud plante sur mon OpenBSD -current (bug à faire remonter si je prends le temps...), et nextcloudcmd ne fait rien...
Je me suis donc tourné vers rclone, et là, je suis ravi tellement ça marche bien. Il uploade les changements via le protocole webDAV, et j'ai mes documents toujours à portée de main même si mon matériel n'est plus accessible.
---
Une réaction?
Envoyez votre commentaire par mail:
=> mailto:prx@si3t.ch?subject=nuage
Ou rejoignez le salon XMPP:
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
]]>
Privatebin et le partage de fichiershttps://si3t.ch/log/2025-01-15-Privatebin.txt2025-01-15T14:04:57Z /dev/null 2>&1
printf "%s\n" "${url}/${out}" | xclip -i -selection clipboard
printf "%s\n" "${url}/${out}"
exit 0
```
Régulièrement, les fichiers qui sont trop vieux sont supprimés. J'ai pour cela une tâche cron qui s'en occupe:
```
@weekly find /var/www/htdocs/si3t.ch/pub/tmp/ -type f -mtime +8 -delete
```
Mais je ne peux utiliser cette méthode que si je dispose d'un ordinateur capable de faire du ssh, et à fortiori qui contient ma clé SSH.
Me voilà donc en quête d'un outil à auto-héberger.
Et là c'est la misère, à croire qu'il n'existe plus que docket et nodejs pour développer des trucs.
Rendez-nous les petits CGI propres ou les bouts de PHP pas compliqués!
Par hasard, je suis ensuite tombé sur le Privatebin de mon académie:
=> https://secret.ac-nantes.fr/
Je fais confiance à l'admin de mon serveur, je vais donc héberger Privatebin qui non seulement chiffre les données dans le navigateur (zero-knowledge pour le serveur) et permet de joindre des fichiers.
Après un peu de configuration, j'ai un truc qui me plaît :
* Pas de partages éternels
* Durée de validité d'1 jour maxi
* Upload de 100M maxi. C'est beaucoup!
La configuration de httpd pour les curieux est tout bête:
```
# Privatebin
# Interdit de lire les données pastées
location "/tools/secret/data/*" { block }
# seul le index.php est traîté par PHP
location "/tools/secret/" { directory index index.php }
location "/tools/secret/index.php" { fastcgi socket "/run/php-fpm.sock" }
```
Si vous en avez besoin, c'est par ici:
=> https://si3t.ch/tools/secret/
Je suis curieux de découvrir de nouveaux outils à héberger, si possible de type zero-knowledge.
---
Une réaction?
Envoyez votre commentaire par mail:
=> mailto:prx@si3t.ch?subject=Privatebin
Ou rejoignez le salon XMPP:
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
]]>
Sac d'urgencehttps://si3t.ch/log/2025-01-06-sac-d-urgence.txt2025-01-06T11:30:46Z "Tout bon père de famille devrait avoir un sac d'urgence à portée de main". 😊
Ça me fait penser que peut-être certains trouveront intéressant le contenu de ce sac d'urgence.
Il existe des "kits de survie" tous prêts, et peuvent constituer une bonne base de départ, bien que des choses soient inutiles ou alors manquantes.
Il doit être léger, pratique à emporter, de façon à ce que se soit la seule chose à prendre puis partir à toutes jambes.
Mon vieux sac à dos qui me servait au collège à transporter mes affaires de sport fait tout à fait l'affaire: :)
À l'intérieur, on trouve :
* Une trousse médicale d'urgence. Rien de fou, juste du désinfectant et de quoi bander une plaie.
* Des couvertures de survie : pour s'abriter du chaud et du froid. J'en ai pris plusieurs, de quoi faire un abri. Bien pliées, ça ne prend pas de place.
* De l'eau. J'ai prévu 2 gourdes pleines.
* De quoi remplir les gourdes. Pour cela, une paille filtrante fait l'affaire.
* Quelques vivres : barres énergétiques, nourriture déshydratée, boite de conserve... à chacun de voir. De quoi tenir 24h, un peu plus en se rationnant.
* De la ficelle : ça sert toujours pour réparer, faire un abri, attacher des objets à transporter...
* De quoi allumer un feu. Un briquet par exemple.
* Une petite casserole de camping. En alu, c'est très léger et ne prend pas de place.
* Une pince multi-outils ou juste un très bon couteau.
* Une radio à piles ou à manivelle rechargeable pour se tenir informé sans dépendre du réseau de distribution électrique.
* Une lampe torche.
* Un peu d'argent liquide, dans une pochette à l'abri de l'humidité.
* Une copie des papiers d'identité et livret de famille, plastifié ou dans une pochette plastique.
* Un bête savon.
* Du papier, un crayon de bois et un marqueur.
Un jour, j'apprendrai à fabriquer un radio-émetteur pour compléter ce kit...
Il manque peut-être des couverts... Mais on ne part pas pour un camping ^^
Pareil pour la petite pelle... Pas sûr que ce soit le + important en cas d'urgence.
Il y a même une page gouvernementale sur le sujet:
=> https://www.info.gouv.fr/risques/se-preparer-a-une-situation-durgence
Une autre source avec des idées intéressantes :
=> https://www.croix-rouge.fr/faire-face-au-choc-climatique-nos-propositions-pour-une-meilleure/catakit-preparer-son-sac-durgence
Si vous avez des suggestions d'amélioration, je suis preneur :)
---
Une réaction?
Envoyez votre commentaire par mail:
=> mailto:prx@si3t.ch?subject=sac-d-urgence
]]>
bibliothequehttps://si3t.ch/log/2025-01-06-bibliotheque.txt2025-01-06T08:52:51Z Mais t'en avais pas déjà plein à lire ?
Ahem...
Bref, je me la pète avec la photo du résultat :) :
=> https://0x0.st/8iWs.jpg
---
Une réaction?
Envoyez votre commentaire par mail:
=> mailto:prx@si3t.ch?subject=bibliotheque
Ou rejoignez le salon XMPP:
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
]]>
dmz : pour X ok, mais pas pour Firefoxhttps://si3t.ch/log/2025-01-04-dmz.txt2025-01-04T14:47:35Z> ~/.icons/dmz/cursor.theme <> ~/.icons/dmz/index.theme <> ~/.icons/default/index.theme < mailto:prx@si3t.ch?subject=dmz
Ou rejoignez le salon XMPP:
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
]]>
sfeed_cleanhttps://si3t.ch/log/2025-01-03-sfeed-clean.txt2025-01-03T14:55:54Z https://codemadness.org/git/sfeed/file/README.html
Amongst other thigs, I use it to display new entries when I first open a terminal, meaning automagically in tmux when my session pops up.
Recently, I noticed it was a little slower to display latest entries.
I had to clean up older entries and no longer subscribed feeds.
To do so, the README is very clear, but I had to gather things in a little script for later purpose :
```sfeed_clean
#!/bin/sh
# remove previous feeds older than a week.
feeds_dir=~/.sfeed/feeds
for i in "${feeds_dir}"/*; do
echo "${i}"
awk -F '\t' -v "old=$(($(date +'%s') - 604800))" 'int($1) > old' < "${i}" > "${i}".new
mv "${i}".new "${i}"
done
```
---
Comments?
=> mailto:prx@si3t.ch?subject=sfeed-clean
=> xmpp:fremen@chat.si3t.ch?join fremen@chat.si3t.ch
]]>
Philosophie de viehttps://si3t.ch/log/2024-12-16-philovie.txt2024-12-16T09:32:11Z https://si3t.ch/misc/philovie/
J'ai essayé de rester très générique, de façon à ce que chacun et chacune puisse s'y retrouver.
Pour ma part, ça me fait penser à ma responsabilité de père, ma mission d'enseignant, mes inquiétudes écologiques, mon appétit pour le logiciel-libre.
Je me tais désormais et vous laisse lire, je suis curieux de lire vos réactions tel qu'est le texte ainsi.
```
## Faire le bien
Refuse la violence, c'est le raccourci des faibles. Emprunte le long chemin de la gentillesse, c'est la voie des braves.
Patiente. Comme une prière, un gage de confiance, une main intransigeante mais tendue vers le changement.
Écoute, observe. Fais preuve d'empathie, nous ne sommes que des humains, un espèce bien jeune qui a tout à apprendre.
Seul le bien peut engendrer le bon.
## Inspirer
Sois digne de confiance.
Reste fiable, toujours. Tiens tes promesses.
Inspire par l'exemple, pas par l'obligation, alors réfléchis.
## Préserver
Préserve les connaissances et les ressources.
Partage.
```
---
Une réaction?
Envoyez votre commentaire par mail :
=> mailto:prx@si3t.ch?subject=philovie
]]>
Philosophiehttps://si3t.ch/log/2024-12-15-philosophie.txt2024-12-15T15:27:36Z https://si3t.ch/misc/philovie/
---
C'est dans mes flux que j'ai vu passer cette idée : quelle est la façon dont on voit la vie? Quelle est sa philosophie?
=> https://manuelmoreale.com/@/page/3bg8rYZBhA7cNjBA
J'aime beaucoup cette idée, et j'y vois une sorte de voeux à la vie.
Je dois y réfléchir, mais en ce qui me concerne, ce qui me vient à l'esprit en premier, ce serait très court : "sois gentil".
La gentillesse est la plus importante des qualités. Je ne veux pas d'un monde où être gentil est considéré comme une faiblesse.
Être gentil, c'est être patient. Une patience comme une grande prière. De la patience en guise d'acte de foi pour avoir un courage à toute épreuves.
Faire preuve de gentillesse, c'est s'ouvrir à l'autre, une forme d'empathie à l'état pur qui renvoie à notre condition de simple être humain et nécessite un respect viscéral.
Enfin, la gentillesse, c'est souhaiter le meilleur pour chacun et contribuer à sa mise en oeuvre. Cela demande de l'exigence et de la générosité. Il en découle la nécessité de sauvegarder la connnaissance pour la rendre accessible et la transmettre le plus largement possible. (vivre les livres!)
Peut-être y ajouterai-je le minimalisme? Ou en tout cas "faire avec moins"?
Et le karma... Comme me le rappelle souvent arpinux, faire le bien, la vie te le rendra... J'aime bien, c'est rassurant, mais a la facheuse tendance à être biaisé de façon intéressée, de réclamer au mérite lorsque le retour n'est pas assez rapide. C'est pas clair dans ma tête.
## Divers
J'ai ajouté une page "*" au si3tch qui contient la liste de toutes les pages:
=> /everything/
## Dons
Pour 2025, j'ai activé le don récurrent à Framasoft.
=> https://soutenir.framasoft.org/fr/
C'est défiscalisé, pensez-y ;)
Dans un tout autre domaine, j'ai fait de même pour La Bonne Auberge:
=> https://www.patreon.com/c/LaBonneAuberge/membership
## Citation
> Deserves it! I daresay he does. Many that live deserve death. And some that die deserve life. Can you give it to them? Then do not be too eager to deal out death in judgement. For even the very wise cannot see all ends. I have not much hope that Gollum can be cured before he dies, but there is a chance of it. And he is bound up with the fate of the Ring. My heart tells me that he has some part to play yet, for good or ill, before the end; and when that comes, the pity of Bilbo may rule the fate of many – yours not least. -- Gandalf (Tolkien)
...
> All we have to decide is what to do with the time that is given us.'
---
Une réaction?
Envoyez votre commentaire par mail :
=> mailto:prx@si3t.ch?subject=philosophie
]]>
Block AI bots with relayd on OpenBSDhttps://si3t.ch/log/2024-11-27-block-ai-bots-with-relayd-openbsd.txt2024-11-27T09:08:57ZI don't feed IA"
```
As you can see, in the end, I add a little message :)
The user-agent list has been found here:
=> https://raw.githubusercontent.com/ai-robots-txt/ai.robots.txt/refs/heads/main/robots.txt)
After reloading relayd, check it works as expected with curl:
```
> curl -H "User-Agent:GPTBot" https://si3t.ch
[... snip ...]
Forbidden
Forbidden
I don't feed IA
OpenBSD relayd at 2a01:e0a:2b8:ca70::1bad port 443