Compare commits
3
Commits
d56c873652
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0b6b7774d9 | ||
|
|
bc150a7a44 | ||
|
|
2d2da86f6a |
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
@@ -0,0 +1,5 @@
|
||||
---
|
||||
title: 3 Avril 2026
|
||||
linkTitle: "03"
|
||||
---
|
||||
|
||||
@@ -0,0 +1,137 @@
|
||||
---
|
||||
date: 2026-04-03T13:34:39+02:00
|
||||
draft: false
|
||||
author: Alexis Lahouze
|
||||
title: Favicon
|
||||
linkTitle: favicon
|
||||
tags:
|
||||
- général
|
||||
- favicon
|
||||
- svg
|
||||
---
|
||||
|
||||
Parce que je trouvais que ça faisait vide, mon onglet sans icône.
|
||||
|
||||
<!--more-->
|
||||
|
||||
Donc j'ai créé un favicon.
|
||||
|
||||
## Réalisation
|
||||
|
||||
J'ai commencé par un SVG. Pour tout vous dire, j'ai demandé à PicoClaw de m'en
|
||||
générer une à partir de mon site et du style Gruvbox Dark Hard.
|
||||
|
||||
Ça m'a permis d'avoir un premier jet, et une idée de base.
|
||||
|
||||
J'ai repris ça à la main, pour avoir un SVG, simple, final :
|
||||
|
||||
```svg
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 32 32" width="32" height="32"
|
||||
>
|
||||
<!-- Background -->
|
||||
<rect width="32" height="32" rx="2" ry="2" fill="#1d2021"/>
|
||||
|
||||
<!-- Prompt -->
|
||||
<text
|
||||
x="1" y="8"
|
||||
font-family="IosevkaTermSS04 Nerd Font Mono" font-size="8"
|
||||
fill="#d79921"
|
||||
>
|
||||
$
|
||||
</text>
|
||||
<text
|
||||
x="9" y="8"
|
||||
font-family="IosevkaTermSS04 Nerd Font Mono" font-size="8"
|
||||
fill="#b8bb26"
|
||||
>
|
||||
whoami
|
||||
</text>
|
||||
|
||||
<!-- Command result -->
|
||||
<text
|
||||
x="1" y="17"
|
||||
font-family="IosevkaTermSS04 Nerd Font Mono" font-size="8"
|
||||
fill="#fabd2f"
|
||||
>
|
||||
alexis
|
||||
</text>
|
||||
|
||||
<!-- New prompt, with cursor -->
|
||||
<text
|
||||
x="1" y="26"
|
||||
font-family="IosevkaTermSS04 Nerd Font Mono" font-size="8"
|
||||
fill="#d79921"
|
||||
>
|
||||
$
|
||||
</text>
|
||||
<text
|
||||
x="9" y="26"
|
||||
font-family="IosevkaTermSS04 Nerd Font Mono" font-size="8"
|
||||
fill="#ebdbb2"
|
||||
>
|
||||
█
|
||||
</text>
|
||||
</svg>
|
||||
```
|
||||
|
||||
L'idée, c'était de rester dans la sémantique du shell, et d'avoir mon prénom
|
||||
retourné par la commande `whomai`. Et le curseur qui s'affiche juste après le
|
||||
second prompt.
|
||||
|
||||
## Conversion
|
||||
|
||||
À partir de ce SVG, j'ai effectué une conversion en PNG, taille 256x256, avec la
|
||||
commande `rsvg-convert` du paquet `librsvg2-bin` :
|
||||
|
||||
```sh
|
||||
rsvg-convert favicon.svg -w 256 -h 256 -o assets/favicon.png
|
||||
```
|
||||
|
||||
J'ai choisi 256 parce que c'est la plus grande taille "standard".
|
||||
|
||||
## Intégration avec Hugo
|
||||
|
||||
Ensuite, pour intégrer tout ça dans Hugo, c'est assez simple. J'ai édité le
|
||||
partial `head.html` pour rajouter les balises `link` :
|
||||
|
||||
```go-html-template
|
||||
{{ with resources.Get "favicon.png" }}
|
||||
{{ with .Resize "180x" }}
|
||||
<link rel="apple-touch-icon"
|
||||
sizes="{{ .Width }}x{{ .Height }}" href="{{ .RelPermalink }}">
|
||||
{{ end }}
|
||||
|
||||
{{ $res := . }}
|
||||
{{ range (slice "256" "128" "96" "64" "48" "32" "16") }}
|
||||
{{ with $res.Resize (print . "x") }}
|
||||
<link rel="icon" type="image/png"
|
||||
sizes="{{ .Width }}x{{ .Height }}" href="{{ .RelPermalink }}">
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
```
|
||||
|
||||
L'idée est simple. Je génère d'abord l'icone pour Apple, parce qu'ils ne sont
|
||||
visiblement pas capables d'utiliser les standards.
|
||||
|
||||
Ensuite, je génère plusieurs tailles, parce que pourquoi pas ? C'est facile à
|
||||
gérer avec un `range` en template Hugo alors autant le faire, le navigateur se
|
||||
gèrera.
|
||||
|
||||
## Épilogue
|
||||
|
||||
C'est assez simple à mettre en place.
|
||||
|
||||
Peut-être que je modifierai l'icône, parce qu'elle n'est pas hyper lisible dans
|
||||
l'onglet, mais bon, c'est déjà un début.
|
||||
|
||||
Aussi, je n'ai pas scripté la génération des .png depuis le .svg, faudrait que
|
||||
je le fasse, on verra au moment où je changerai le .svg, parce que ça implique
|
||||
de rajouter le paquet `librsvg2-bin` dans la procédure de build, rien de bien
|
||||
compliqué mais bon, faut faire.
|
||||
|
||||
Aller, à très vite !
|
||||
|
||||
<!-- vim: set tw=80 ts=2 sw=2 sts=2 spelllang=fr: -->
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
title: "Avril 2026"
|
||||
linkTitle: "04"
|
||||
---
|
||||
|
||||
Cette page liste les articles d'Avril 2026. Du plus récent au plus ancien.
|
||||
|
||||
<!-- vim: set tw=80 ts=4 sw=4 sts=4 spelllang=fr :-->
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
title: 10 Mai 2026
|
||||
linkTitle: "10"
|
||||
---
|
||||
|
||||
@@ -0,0 +1,182 @@
|
||||
---
|
||||
date: 2026-05-10T17:34:31+02:00
|
||||
draft: false
|
||||
author: Alexis Lahouze
|
||||
title: Projets Persos
|
||||
linkTitle: projets-persos
|
||||
tags:
|
||||
- projets
|
||||
- technologie
|
||||
- moi
|
||||
---
|
||||
|
||||
On fait des choses.
|
||||
|
||||
<!--more-->
|
||||
|
||||
## Moi, d'abord
|
||||
|
||||
Avant de parler de ce que je fais, je vais parler un peu de moi.
|
||||
|
||||
Je suis quelqu'un de passionné, et curieux. Particulièrement sur les sujets
|
||||
technologiques.
|
||||
|
||||
Ma première passion a été l'informatique, en découvrant la programmation Basic
|
||||
sur Amstrad CPC 6128, à l'âge de 10 ans. J'ai toujours cette machine.
|
||||
|
||||
Du coup, histoire d'allier ma curiosité avec ma passion de la programmation,
|
||||
j'ai un peu tendance à vouloir écrire un programme pour les sujets qui
|
||||
m'intéressent.
|
||||
|
||||
Et alors, évidemment, avec la pléthore de langages qui existent, j'ai aussi
|
||||
tendance à explorer ceux que je ne connais pas. Vous verrez par la suite que ça
|
||||
peut avoir un certain impact sur le cycle de vie de mes projets.
|
||||
|
||||
Et en dehors de la programmation, j'ai une maison qui nécessite des travaux,
|
||||
notamment d'électricité, et ça fait partie des domaines qui me plaisent. Donc…
|
||||
|
||||
## IRL
|
||||
|
||||
Cette maison, et cette électricité. Oui, jouer avec des fils électriques, ça me
|
||||
botte bien, je sais que ça n'est pas le cas de tout le monde. L'électricité fait
|
||||
peur, car une erreur peut causer la mort, et elle ne se voit pas. Mais en
|
||||
respectant quelques règles, il n'y a pas vraiment de souci à se faire :
|
||||
- couper le jus si possible, là, y a pas de questions à se poser ;
|
||||
- vérifier la tension avec un multimètre, ou mieux avec un détecteur de
|
||||
tension sans contact ;
|
||||
- utiliser des outils adaptés, notamment des pinces et tournevis isolés, et
|
||||
des chaussures aussi.
|
||||
|
||||
Suite à un défaut électrique (en résumé, j'ai un domino qui a cramé sans une
|
||||
boîte de dérivation, j'étais à pas grand chose d'avoir la maison partir en
|
||||
fumée), j'ai décidé de refaire l'électricité. En commençant par le
|
||||
rez-de-chaussée. Bon, évidemment, j'ai mis le nez dedans, j'ai voulu tout
|
||||
refaire. Y compris le tableau, et même avant, c'est à dire l'arrivée ENEDIS. À
|
||||
l'origine, mon tableau se trouvait trop haut, derrière la porte, donc j'ai monté
|
||||
une GTL, et j'ai refait mon tableau, repassé des gaines, repassé des fils dans
|
||||
des goulottes. Je ne m'attarde pas sur ce chantier, mais en gros, il a commencé
|
||||
il y a 2 ans et demi. Et donc ça fait 2 ans que j'ai des fils qui pendouillent
|
||||
dans mon couloir. J'ai repris le weekend dernier, avec pour objectif de passer
|
||||
ces fils en moulures "rapidement".
|
||||
|
||||
Ce chapitre est déjà long, alors je ne m'attarde pas, mais ma maison a deux
|
||||
autres niveaux. Et je n'ai pas encore mis le nez dans l'étage, mais je sais
|
||||
qu'au moins la moitié des prises n'a pas de terre…
|
||||
|
||||
Et je n'ai évoqué que l'électricité, mais il y a bien d'autres travaux à
|
||||
réaliser dans cette maison.
|
||||
|
||||
## Jeu Vidéo
|
||||
|
||||
Je ne vais pas rentrer dans le cliché du passionné de jeu vidéos qui voulait
|
||||
devenir programmeur de jeux vidéos. J'ai toujours considéré que ce milieu était
|
||||
trop sous pression.
|
||||
|
||||
Cependant, j'ai quand même eu quelques idées. On va commencer par le MMORPG. Le
|
||||
sujet m'intéressait, mais surtout la partie communication. Et aussi, j'aimais
|
||||
bien Resident Evil. J'ai donc commencé à développer un système de messagerie
|
||||
distribuée pour gérer la communication client-serveur et serveur-serveur pour un
|
||||
MMORPG dans un univers de zombies. Autant vous dire que ça n'a pas été loin. Le
|
||||
dépôt Git n'a pas bougé depuis… 16 ans. Je ne l'ai pas publié, j'ai trop honte.
|
||||
|
||||
Dans les autres idées que j'avais, et parce que je suis un perfectionniste,
|
||||
j'imaginais un jeu vidéo où l'univers serait régit par des lois physiques, où on
|
||||
aurait des atomes, et une physique réaliste, notamment sur les destructions.
|
||||
C'était avant Minecraft, et la vogue du Voxel. Et j'ai rapidement compris que
|
||||
c'est techniquement irréalisable de gérer une physique aussi complexe et
|
||||
coûteuse en calculs.
|
||||
|
||||
Et enfin, dernier sujet lié au jeu vidéo, l'IA. Et sujet connexe, la génétique.
|
||||
Le "vivant", quoi. Dans les idées folles que j'ai pu avoir, il y avait un jeu
|
||||
vidéo où :
|
||||
- on aurait des créatures qui apprennent (réseaux neuronaux) ;
|
||||
- leurs caractéristiques physiques seraient régies par un ADN, avec
|
||||
reproduction, et donc possibilité de croisements et de sélection
|
||||
(algorithmes génétiques).
|
||||
|
||||
Le jeu se déroulerait en deux phases, la première en local où le joueur
|
||||
entraînerait ses créatures, et la seconde où ils leur feraient rencontrer celles
|
||||
d'autres joueurs dans des combats, et du coup un classement, des championnats,
|
||||
etc. Avec l'engouement actuel pour l'IA, et surtout les évolutions du matériel
|
||||
liées à ce domaine, peut-être qu'un tel jeu pourrait être possible. Mais
|
||||
probablement complexe.
|
||||
|
||||
## Les transports
|
||||
|
||||
Dans les transports, il y a surtout deux domaines qui m'intéressent : le rail et
|
||||
l'aéronautique.
|
||||
|
||||
Dans le premier, un jour, j'ai eu une idée à la con : modéliser des plans de
|
||||
voies ferrées, notamment en gare, stylisés, à partir de données réelles. Les
|
||||
données, on peut les avoir sur OpenStreetMap. Donc, j'ai appris le modèle de
|
||||
données OSM PBF pour pouvoir le lire dans un programme en C++ et récolter les
|
||||
infos dont j'ai besoin. Pour pouvoir visualiser ces infos, j'ai aussi développé
|
||||
une application graphique, basée sur la bibliothèque
|
||||
[Magnum](https://magnum.graphics/). En 2D. Et là, je me suis heurté à un domaine
|
||||
que je ne soupçonnais pas : la géomatique et notamment les projections. Et c'est
|
||||
parti d'un constat tout bête. J'ai rapidement eu une visualisation, sauf que la
|
||||
zone que je visualisais (gare de Bordeaux Saint-Jean) a une particularité :
|
||||
une plateforme circulaire. Dans ma première visualisation, cette plateforme
|
||||
était… Ovale. Et aussi, j'avais des angles droits, pas droits. J'avais
|
||||
simplement utilisé les coordonnées GPS mappées sur les coordonnées de l'écran.
|
||||
Pour la faire courte, ça marche pas comme ça. Il faut changer de projection pour
|
||||
avoir quelque chose de plus régulier. Et donc j'ai mis le nez dans des notions
|
||||
comme WGS84, Lambert, UTM… Je ne rentre pas dans les détails, cherchez
|
||||
vous-mêmes.
|
||||
|
||||
Et donc, le second, l'aéronautique. C'est plus récent, mais pareil, j'ai un
|
||||
projet de visualisation, mais en 3D. Parce que pourquoi faire simple quand on
|
||||
peut apprendre plein de choses ? Si vous vous intéressez un peu au sujet, vous
|
||||
savez peut-être qu'il existe un format d'échanges de données qui s'appelle AIXM,
|
||||
et ls SIA publie pas mal de choses dans ce format, ça s'appelle eAIP. Donc
|
||||
l'idée c'est de prendre ces données et les afficher sur un globe. Donc, vous
|
||||
saurez que, notamment, la Terre n'est pas ronde. Elle est sphérique (plus ou
|
||||
moins). Et donc là, entre en jeu la géodésie. Je rentre pas dans les détails,
|
||||
mais les projections en 2D c'est déjà un vaste sujet, mais alors l'affichage et
|
||||
les coordonnées sur une plus ou moins sphère, je vous laisse imaginer. En l'état
|
||||
actuel, j'ai une sphère. Qu'on peut faire tourner avec la souris. Faudrait que
|
||||
je publie ça, un jour.
|
||||
|
||||
## L'électronique
|
||||
|
||||
L'électronique est un domaine qui m'a toujours fasciné, mais je ne connais que
|
||||
les bases. Vous savez, U=RI, et P=UI. Du coup, je me suis dis qu'un des moyens
|
||||
d'apprendre, c'est d'utiliser un simulateur : NGSpice. Et puis du coup, pourquoi
|
||||
ne pas documenter ma démarche en écrivant un livre où j'explique comment
|
||||
utiliser cette simulation pour apprendre l'électronique ? Bon, du coup, j'ai
|
||||
commencé en LaTeX à écrire ça. Et à passer *beaucoup* de temps à apprendre
|
||||
comment on dessine un circuit en LaTeX. Bref, j'ai dû écrire deux chapitres.
|
||||
|
||||
## La radio
|
||||
|
||||
C'est un des morceaux les plus récents. Je ne sais plus comment c'est arrivé,
|
||||
j'ai découvert la radio. J'ai acheté un dongle USB SDR, et j'ai commencé à
|
||||
jouer. Bon, maintenant je veux installer une antenne sur une de mes cheminées,
|
||||
et peut-être m'intéresser au brevet de radio-amateur.
|
||||
|
||||
## La téléphonie
|
||||
|
||||
Certains ont connu les modems pilotés en liaison série, avec les commandes AT.
|
||||
Et bien on peut toujours faire ça, mais avec des modems 4G/5G. J'avais envie de
|
||||
retrouver un peu cet esprit, et donc j'ai commandé un modem 4G/5G, pas un
|
||||
routeur, qu'on branche en USB, et dans lequel on met une carte SIM. La carte
|
||||
SIM, une carte prépayée suffit pour jouer avec. Et on peut recevoir et envoyer
|
||||
des SMS. Et aussi des appels, a priori. Mais je n'en suis pas arrivé là.
|
||||
|
||||
## Pandoc
|
||||
|
||||
C'est dans la suite du précédent. En fait, j'ai discuté de mes expériences avec
|
||||
le Modem 4G/5G avec un certain Lefinnois, AKA Denis Bodor. Je lui ai promis
|
||||
d'écrire un article. Bon, du coup j'ai commencé à regarder ce qu'il faut pour
|
||||
écrire un article chez Diamond. Vous avez un modèle de document ODT, avec des
|
||||
styles. Bon, j'aime pas la bureautique, mais j'aime beaucoup Pandoc, qui permet
|
||||
d'écrire du Markdown, et d'en sortir un peu ce qu'on veut. L'idée c'est qu'on
|
||||
peut écrire des filtres personnalisés pour sortir la structure qu'on veut. Bon,
|
||||
du coup j'ai promis deux articles à Denis, le premier étant sur le filtre que
|
||||
j'ai commencé à développer pour écrire un article. Un peu méta, quoi. Faut que
|
||||
je m'y mette sérieusement parce que mon filtre est en réalité presque terminé.
|
||||
|
||||
D'ailleurs celui-là je l'ai publié :
|
||||
[https://codeberg.org/xals/pandoc-diamond-filter](https://codeberg.org/xals/pandoc-diamond-filter).
|
||||
|
||||
<!-- vim: set tw=80 ts=2 sw=2 sts=2 spelllang=fr: -->
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
title: "Mai 2026"
|
||||
linkTitle: "05"
|
||||
---
|
||||
|
||||
Cette page liste les articles de Mai 2026. Du plus récent au plus ancien.
|
||||
|
||||
<!-- vim: set tw=80 ts=4 sw=4 sts=4 spelllang=fr :-->
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 32 32" width="32" height="32">
|
||||
<!-- Background -->
|
||||
<rect width="32" height="32" rx="2" ry="2" fill="#1d2021"/>
|
||||
|
||||
<!-- Prompt -->
|
||||
<text
|
||||
x="1" y="8"
|
||||
font-family="IosevkaTermSS04 Nerd Font Mono" font-size="8"
|
||||
fill="#d79921"
|
||||
>
|
||||
$
|
||||
</text>
|
||||
<text
|
||||
x="9" y="8"
|
||||
font-family="IosevkaTermSS04 Nerd Font Mono" font-size="8"
|
||||
fill="#b8bb26"
|
||||
>
|
||||
whoami
|
||||
</text>
|
||||
|
||||
<!-- Command result -->
|
||||
<text
|
||||
x="1" y="17"
|
||||
font-family="IosevkaTermSS04 Nerd Font Mono" font-size="8"
|
||||
fill="#fabd2f"
|
||||
>
|
||||
alexis
|
||||
</text>
|
||||
|
||||
<!-- New prompt with cursor -->
|
||||
<text
|
||||
x="1" y="26"
|
||||
font-family="IosevkaTermSS04 Nerd Font Mono" font-size="8"
|
||||
fill="#d79921"
|
||||
>
|
||||
$
|
||||
</text>
|
||||
<text
|
||||
x="9" y="26"
|
||||
font-family="IosevkaTermSS04 Nerd Font Mono" font-size="8"
|
||||
fill="#ebdbb2"
|
||||
>
|
||||
█
|
||||
</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 907 B |
@@ -55,5 +55,18 @@
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ with resources.Get "favicon.png" }}
|
||||
{{ with .Resize "180x" }}
|
||||
<link rel="apple-touch-icon" sizes="{{ .Width }}x{{ .Height }}" href="{{ .RelPermalink }}">
|
||||
{{ end }}
|
||||
|
||||
{{ $res := . }}
|
||||
{{ range (slice "256" "128" "96" "64" "48" "32" "16") }}
|
||||
{{ with $res.Resize (print . "x") }}
|
||||
<link rel="icon" type="image/png" sizes="{{ .Width }}x{{ .Height }}" href="{{ .RelPermalink }}">
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
<title>{{ block "title" . }}{{ .Site.Title }} - {{ .Title }}{{ end }}</title>
|
||||
{{/* vim: set tw=80 ts=2 sw=2 sts=2 ft=gohtmltmpl: */}}
|
||||
|
||||
Reference in New Issue
Block a user