Update documentation

This commit is contained in:
Alexis Métaireau 2023-12-17 15:22:49 +01:00
parent a909352959
commit a88bd2e770
3 changed files with 234 additions and 8 deletions

221
argos/index.html Normal file
View file

@ -0,0 +1,221 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<title>
Argos - Alexis Métaireau </title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet"
href="https://blog.notmyidea.org/theme/css/main.css?v2"
type="text/css" />
<link href="https://blog.notmyidea.org/feeds/all.atom.xml"
type="application/atom+xml"
rel="alternate"
title="Alexis Métaireau ATOM Feed" />
<script src="https://cdn.jsdelivr.net/npm/vega@5"></script>
<script src="https://cdn.jsdelivr.net/npm/vega-lite@5"></script>
<script src="https://cdn.jsdelivr.net/npm/vega-embed@6"></script>
</head>
<body>
<div id="content">
<section id="links">
<ul>
<li>
<a class="main" href="/">Alexis Métaireau</a>
</li>
<li>
<a class=""
href="https://blog.notmyidea.org/journal/index.html">Journal</a>
</li>
<li>
<a class=""
href="https://blog.notmyidea.org/code/">Code, etc.</a>
</li>
<li>
<a class=""
href="https://blog.notmyidea.org/weeknotes/">Notes hebdo</a>
</li>
<li>
<a class=""
href="https://blog.notmyidea.org/lectures/">Lectures</a>
</li>
<li>
<a class=""
href="https://blog.notmyidea.org/projets.html">Projets</a>
</li>
</ul>
</section>
<header>
<h1 class="post-title">Argos</h1>
<div>
▓▓▓▓▓▓▓▓▓▓ 102% (57h / 56 prévues)
</div>
<ul>
<li>57h rémunérées</li>
<li>16h bénévoles</li>
</ul>
</header>
<article>
<div id="vis"></div>
<h2 id="samedi-16-decembre-2023">🗓️ Samedi 16 décembre&nbsp;2023</h2>
<p>J&#8217;ai ajouté le support de <a href="https://alembic.sqlalchemy.org">Alembic</a>, pour permettre de faire des migrations de base de données. C&#8217;était assez chouette de découvrir comment ça fonctionne : ça fait longtemps que je l&#8217;utilise sur d&#8217;autres projets mais ce n&#8217;était pas moi qui l&#8217;avait mis en&nbsp;place.</p>
<p>J&#8217;ai aussi passé un peu de temps à faire des petits changements à droite à&nbsp;gauche.</p>
<h2 id="jeudi-14-decembre-2023">🗓️ Jeudi 14 décembre&nbsp;2023</h2>
<p>Echanges avec Luc pour faire le tour des merge requests, et un petit temps de bilan général sur le projet.
Content de recevoir des retours positifs sur le travail&nbsp;effectué.</p>
<h2 id="jeudi-07-decembre-2023">🗓️ Jeudi 07 décembre&nbsp;2023</h2>
<p>Revue de&nbsp;code.</p>
<h2 id="jeudi-23-novembre-2023">🗓️ Jeudi 23 novembre&nbsp;2023</h2>
<p>J&#8217;ai fait de la revue de code (<a href="https://framagit.org/framasoft/framaspace/argos/-/merge_requests/12">pylint</a>, <a href="https://framagit.org/framasoft/framaspace/argos/-/merge_requests/13#notes">ajout des notifs mail</a>), <a href="https://framagit.org/framasoft/framaspace/argos/-/merge_requests/14">ajouté de la documentation</a> pour&nbsp;systemd</p>
<h2 id="mardi-21-novembre-2023">🗓️ Mardi 21 novembre&nbsp;2023</h2>
<p>J&#8217;ai passé un peu de temps à répondre a des tickets, merger et faire des petites modifications dans le code, c&#8217;était très&nbsp;plaisant.</p>
<p>Il est maintenant <a href="https://framagit.org/framasoft/framaspace/argos/-/merge_requests/8">possible de lancer le serveur depuis l&#8217;extérieur du venv</a>, et j&#8217;ai lu quelques demandes de modifications de&nbsp;Luc.</p>
<h2 id="jeudi-16-novembre-2023">🗓️ Jeudi 16 novembre&nbsp;2023</h2>
<ul>
<li><a href="https://framagit.org/framasoft/framaspace/argos/-/merge_requests/6">Migré vers la nouvelle manière de définir la config dans&nbsp;Pydantic</a></li>
</ul>
<h2 id="lundi-06-novembre-2023">🗓️ Lundi 06 novembre&nbsp;2023</h2>
<p>J&#8217;ai passé un peu de temps avec Matthieu Leplatre pour faire une revue du code que j&#8217;ai&nbsp;écrit. </p>
<h2 id="jeudi-19-octobre-2023">🗓️ Jeudi 19 octobre&nbsp;2023</h2>
<p>Préparation de la discussion avec Luc, puis j&#8217;ai ajouté de la documentation et j&#8217;ai fait pas mal de&nbsp;finitions.</p>
<h2 id="mercredi-18-octobre-2023">🗓️ Mercredi 18 octobre&nbsp;2023</h2>
<p>J&#8217;ai passé une journée de travail dessus.
Beaucoup de choses faites. La base de code est plus solide, et surtout testée ce qui me&nbsp;rassure.</p>
<h2 id="mardi-17-octobre-2023">🗓️ Mardi 17 octobre&nbsp;2023</h2>
<ul>
<li>J&#8217;ai ajouté les dépendences dans le&nbsp;pyproject.toml</li>
<li>Updated the <span class="caps">CLI</span>&nbsp;interface</li>
</ul>
<h2 id="mercredi-11-octobre-2023">🗓️ Mercredi 11 octobre&nbsp;2023</h2>
<p>J&#8217;ai passé la journée dessus.Il me reste 3 demi&nbsp;journées.</p>
<p>J&#8217;ai passé beaucoup de temps à mettre en place des tests au niveau de l&#8217;app. La manière dont l&#8217;application était initialisée ne permettait pas de l&#8217;utiliser dans les tests. Je n&#8217;ai pas tout à fait terminé, mais je pense que c&#8217;est le moment pour essayer de passer à PostgreSQL, parce que c&#8217;est ce qui va tourner en&nbsp;production.</p>
<p>De ce que je comprends, plusieurs approches :
1. Utiliser une connection pool
2. Faire des requêtes en asynchrone (voir <a href="https://docs.sqlalchemy.org/en/14/orm/extensions/asyncio.html">la doc</a>)</p>
<p>Je suis vraiment pas loin d&#8217;un truc bien, j&#8217;aimerai quand même vraiment avoir des tests pour tester les cas limites, là beaucoup de choses se font à vue et j&#8217;ai peur que des bugs ne se&nbsp;cachent.</p>
<p>Fait&nbsp;:</p>
<ul>
<li>[x] Ajouter une notion de sévérité dans la&nbsp;config</li>
<li>[x] Ajouter une notion de fréquence dans la&nbsp;config</li>
</ul>
<h2 id="mardi-10-octobre-2023">🗓️ Mardi 10 octobre&nbsp;2023</h2>
<ul>
<li>[x] Sécuriser les appels des agents au&nbsp;backend</li>
<li>[x] Ajouter le support pour les&nbsp;!include</li>
</ul>
<h2 id="lundi-09-octobre-2023">🗓️ Lundi 09 octobre&nbsp;2023</h2>
<ul>
<li>[x] Terminer le backend de vérification <span class="caps">SSL</span></li>
<li>[x] Décider comment faire pour faire remonter les différents niveaux d&#8217;alerte (L&#8217;agent ne devrait pas décider, c&#8217;est le travail du&nbsp;serveur)</li>
</ul>
<p>J&#8217;ai pas mal refactoré le code, et c&#8217;est maintenant possible de faire une partie des checks (la finalisation) côté serveur. Nous avons aussi maintenant un check <span class="caps">SSL</span>&nbsp;fonctionnel.</p>
<p>La base de données gère maintenant une relation, et j&#8217;ai commencé à écrire quelques tests également, ainsi que packagé ça dans un package&nbsp;python.</p>
<p>C&#8217;était plutôt une journée un peu décousue, mais je suis content du résultat. C&#8217;était beaucoup de grosses modifications et donc avoir le temps de le faire pour avoir le contexte en tête aide pas&nbsp;mal.</p>
<h2 id="jeudi-05-octobre-2023">🗓️ Jeudi 05 octobre&nbsp;2023</h2>
<p>Je n&#8217;ai pas pris de&nbsp;notes.</p>
<h2 id="mercredi-04-octobre-2023">🗓️ Mercredi 04 octobre&nbsp;2023</h2>
<p>J&#8217;ai pu avancer, mais je me suis confronté à plusieurs soucis de concentration. Ici au coworking c&#8217;est aussi un endroit pour socialiser, et donc je suis moins efficace. Les pomodoros m&#8217;aident à me recentrer, j&#8217;ai quasiment une <span class="caps">API</span> fonctionnelle. Je galère un peu avec Pydantic parce que je ne le connais pas encore bien, j&#8217;espère que ce sont des efforts qui vont payer sur le long&nbsp;terme.</p>
<p>La prochaine fois je pense avancer sur les requêtes pour ordonnancer tout ça, et faire quelques tests pour valider que tout marche bien comme je&nbsp;veux.</p>
<h2 id="mardi-03-octobre-2023">🗓️ Mardi 03 octobre&nbsp;2023</h2>
<p>Session de travail assez agréable. J&#8217;ai commencé à faire fonctionner l&#8217;outil, et je commence maintenant à travailler sur les checks en tant que tels. Je sens qu&#8217;il t a quelques fragilités au niveau de la structure des données (schémas / validation avec&nbsp;Pydantic).</p>
<p>Je pense que la prochaine étape sera de faire tous les checks, et de les faire retourner des données à l&#8217;<span class="caps">API</span>. Puis ensuite de s&#8217;assurer que les jobs ne sont pas distribués à plusieurs workers en&nbsp;paralelle.</p>
<h2 id="lundi-02-octobre-2023">🗓️ Lundi 02 octobre&nbsp;2023</h2>
<p>Je suis content de cette session de travail. J&#8217;ai repensé encore une fois le modèle de données pour arriver à quelque chose qui me semble mieux. J&#8217;ai continué à travailler sur la codebase avec fastapi que je trouve plus élégante et sur laquelle il sera possible de passer en asynchrone&nbsp;ensuite.</p>
<p>Les fichiers de configuration, une fois parsés, permettent de créer les enregistrements dans la base de données. La première version de l&#8217;<span class="caps">API</span> est bientôt prête. La prochaine étape est de bosser sur les&nbsp;workers.</p>
<h2 id="mercredi-27-septembre-2023">🗓️ Mercredi 27 septembre&nbsp;2023</h2>
<p>1h pour mettre en place un bouncer <span class="caps">ZNC</span>. J&#8217;ai plutôt fait des recherches sur des outils alternatifs pour l&#8217;<span class="caps">API</span>, suite à mon impression de passer du temps à refaire des choses qui sont déjà fournies par d&#8217;autres outils. J&#8217;espère que c&#8217;était une bonne idée ! Le prix à payer pour me remettre le pied à l&#8217;étrier. En fin de journée j&#8217;ai réussi à vraiment réfléchir au problème métier, et à déterminer un bon modèle de données ainsi que des scénarios d&#8217;utilisation. Au final, je pense qu&#8217;il faut passer par fastapi (qui propose de l&#8217;asynchrone <span class="caps">ASGI</span> de base) mais rester sur SQLAlchemy (Pewee à une <span class="caps">API</span> qui semble plus simple, mais qui ne supporte pas très bien l&#8217;asynchronicité). Pour la suite, je pense qu&#8217;il faut que je me concentre plus sur les fonctionalités de&nbsp;base.</p>
<h2 id="mardi-26-septembre-2023">🗓️ Mardi 26 septembre&nbsp;2023</h2>
<p>J&#8217;ai continué de bootstrapper et j&#8217;ai importé des bouts de codes qui manquaient pour lancer le serveur web, gérer la configuration du service, la gestion de la base de données, des migrations&nbsp;etc.</p>
<h2 id="lundi-25-septembre-2023">🗓️ Lundi 25 septembre&nbsp;2023</h2>
<p>J&#8217;ai commencé à boostraper le projet, fait un module qui est capable de lire le fichier de configuration (en <span class="caps">YAML</span>) et de valider que ce qui s&#8217;y trouve est correct. J&#8217;utilise Pydantic pour ça, que je ne connaissais&nbsp;pas.</p>
</article>
<script>
const spec = {
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"width": 500,
"height": 200,
"data":
{
"name": "table",
"values": [
{"date": "2023-12-16", "series": "Rémunéré", "count": 0},
{"date": "2023-12-16", "series": "Bénévole", "count": 5},
{"date": "2023-12-14", "series": "Rémunéré", "count": 0},
{"date": "2023-12-14", "series": "Bénévole", "count": 1},
{"date": "2023-12-07", "series": "Rémunéré", "count": 0},
{"date": "2023-12-07", "series": "Bénévole", "count": 1},
{"date": "2023-11-23", "series": "Rémunéré", "count": 0},
{"date": "2023-11-23", "series": "Bénévole", "count": 1},
{"date": "2023-11-21", "series": "Rémunéré", "count": 0},
{"date": "2023-11-21", "series": "Bénévole", "count": 1},
{"date": "2023-11-16", "series": "Rémunéré", "count": 0},
{"date": "2023-11-16", "series": "Bénévole", "count": 1},
{"date": "2023-11-06", "series": "Rémunéré", "count": 0},
{"date": "2023-11-06", "series": "Bénévole", "count": 2},
{"date": "2023-10-19", "series": "Rémunéré", "count": 6},
{"date": "2023-10-19", "series": "Bénévole", "count": 2},
{"date": "2023-10-18", "series": "Rémunéré", "count": 7},
{"date": "2023-10-18", "series": "Bénévole", "count": 1},
{"date": "2023-10-17", "series": "Rémunéré", "count": 1},
{"date": "2023-10-17", "series": "Bénévole", "count": 0},
{"date": "2023-10-11", "series": "Rémunéré", "count": 7},
{"date": "2023-10-11", "series": "Bénévole", "count": 1},
{"date": "2023-10-10", "series": "Rémunéré", "count": 5},
{"date": "2023-10-10", "series": "Bénévole", "count": 0},
{"date": "2023-10-09", "series": "Rémunéré", "count": 7},
{"date": "2023-10-09", "series": "Bénévole", "count": 0},
{"date": "2023-10-05", "series": "Rémunéré", "count": 2},
{"date": "2023-10-05", "series": "Bénévole", "count": 0},
{"date": "2023-10-04", "series": "Rémunéré", "count": 4},
{"date": "2023-10-04", "series": "Bénévole", "count": 0},
{"date": "2023-10-03", "series": "Rémunéré", "count": 3},
{"date": "2023-10-03", "series": "Bénévole", "count": 0},
{"date": "2023-10-02", "series": "Rémunéré", "count": 4},
{"date": "2023-10-02", "series": "Bénévole", "count": 0},
{"date": "2023-09-27", "series": "Rémunéré", "count": 4},
{"date": "2023-09-27", "series": "Bénévole", "count": 0},
{"date": "2023-09-26", "series": "Rémunéré", "count": 4},
{"date": "2023-09-26", "series": "Bénévole", "count": 0},
{"date": "2023-09-25", "series": "Rémunéré", "count": 3},
{"date": "2023-09-25", "series": "Bénévole", "count": 0},
]
}
,
"mark": "bar",
"encoding": {
"x": {
"timeUnit": {"unit": "dayofyear", "step": 1},
"field": "date",
"axis": {"format": "%d/%m"},
"title": "Date",
"step": 1,
},
"y": {
"aggregate": "sum",
"field": "count",
"title": "Heures",
},
"color": {
"field": "series",
"scale": {
"domain": ["Bénévole", "Rémunéré"],
"range": ["#e7ba52", "#1f77b4"]
},
"title": "Type d'heures"
}
}
};
vegaEmbed("#vis", spec)
// result.view provides access to the Vega View API
.then(result => console.log(result))
.catch(console.warn);
</script>
<footer>
<a id="feed" href="/feeds/all.atom.xml">
<img alt="RSS Logo" src="/theme/rss.svg" />
</a>
</footer>
</div>
</body>
</html>

View file

@ -50,7 +50,10 @@ Chariotte - Alexis Métaireau </title>
</header>
<article>
<div id="vis"></div>
<h2 id="lundi-27-novembre-2023">🗓️ Lundi 27 novembre&nbsp;2023</h2>
<h2 id="dimanche-17-decembre-2023">🗓️ Dimanche 17 décembre&nbsp;2023</h2>
<p>J&#8217;ai passé beaucoup de temps pour essayer de comprendre pourquoi les emails n&#8217;étaient pas envoyés lors de la récupération de mot de passe. J&#8217;ai fini par trouver en utilisant un bon vieux debugger, comme quoi c&#8217;est la solution à privilégier autant que&nbsp;possible.</p>
<p>Le code actuel utilise <code>username</code> comme un champ de stockage d&#8217;emails, et Django avait du mal à retrouver ses petits (il cherchait dans le champ <code>email</code> sans succès). J&#8217;ai fini par trouver la solution. Je suis content de réussir à remonter en compétences sur le debug de django, même si je pensais que ça me prendrais moins de temps&nbsp;:-)</p>
<h2 id="lundi-27-novembre-2023">🗓️ Lundi 27 novembre&nbsp;2023</h2>
<p>Chariotte.fr est maintenant hébergé par Alwaysdata !
Arthur m&#8217;a envoyé les données puis j&#8217;ai fait la commande suivante&nbsp;:</p>
<div class="highlight"><pre><span></span><code>gpg<span class="w"> </span>--decrypt<span class="w"> </span>hb_chariotte_prod.pgdump.asc<span class="w"> </span>&gt;<span class="w"> </span>hb_chariotte_prod.pgdump
@ -69,6 +72,8 @@ pg_restore<span class="w"> </span>-C<span class="w"> </span>-f<span class="w"> <
{
"name": "table",
"values": [
{"date": "2023-12-17", "series": "Rémunéré", "count": 0},
{"date": "2023-12-17", "series": "Bénévole", "count": 4},
{"date": "2023-11-27", "series": "Rémunéré", "count": 0},
{"date": "2023-11-27", "series": "Bénévole", "count": 4},
]

View file

@ -48,11 +48,11 @@
<header>
<h1 class="post-title"><span class="caps">IDLV</span>, site web vers&nbsp;ghost</h1>
<div>
▓▓▓▓▓▓▓▓▓▓ 100% (14h / 14 prévues)
▓▓▓▓▓▓▓▓░░ 86% (12h / 14 prévues)
</div>
<ul>
<li>14h rémunérées</li>
<li>6h bénévoles</li>
<li>12h rémunérées</li>
<li>8h bénévoles</li>
</ul>
</header>
<article>
@ -114,10 +114,10 @@
{"date": "2023-09-13", "series": "Bénévole", "count": 3},
{"date": "2023-07-20", "series": "Rémunéré", "count": 0},
{"date": "2023-07-20", "series": "Bénévole", "count": 1},
{"date": "2023-06-23", "series": "Rémunéré", "count": 1},
{"date": "2023-06-23", "series": "Bénévole", "count": 1},
{"date": "2023-06-22", "series": "Rémunéré", "count": 1},
{"date": "2023-06-22", "series": "Bénévole", "count": 0},
{"date": "2023-06-23", "series": "Rémunéré", "count": 0},
{"date": "2023-06-23", "series": "Bénévole", "count": 2},
{"date": "2023-06-22", "series": "Rémunéré", "count": 0},
{"date": "2023-06-22", "series": "Bénévole", "count": 1},
{"date": "2023-06-06", "series": "Rémunéré", "count": 3},
{"date": "2023-06-06", "series": "Bénévole", "count": 0},
{"date": "2023-06-05", "series": "Rémunéré", "count": 4},