Update documentation

This commit is contained in:
Alexis Métaireau 2024-01-23 16:02:55 +01:00
parent 81d3cbe08a
commit 03015d1950

370
umap/index.html Normal file
View file

@ -0,0 +1,370 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<title>
uMap - 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">uMap</h1>
<details>
<summary>Stats</summary>
<div>
▓▓▓▓▓▓▓▓▓░ 97% (169h / 175 prévues)
</div>
<ul>
<li>169h rémunérées</li>
<li>4h bénévoles</li>
</ul>
<table>
<thead>
<tr>
<td>Mois</td>
<td>Heures</td>
<td>Jours</td>
</tr>
</thead>
<tbody>
<tr>
<td>2024/01</td>
<td>40</td>
<td>5.7</td>
</tr>
<tr>
<td>2023/12</td>
<td>56</td>
<td>8.0</td>
</tr>
<tr>
<td>2023/11</td>
<td>73</td>
<td>10.4</td>
</tr>
</tbody>
</table>
</details>
</header>
<article>
<div id="vis"></div>
<h2 id="lundi-22-janvier-2024">🗓️ lundi 22 janvier&nbsp;2024</h2>
<p>Je continue sur mon prototype de synchronisation. Je commence à connecter la partie websockets, avec une implémentation avec <a href="https://websockets.readthedocs.io">websockets</a> en&nbsp;python.</p>
<p>L&#8217;après-midi, j&#8217;essaye d&#8217;aller plus loin et pour les besoins de la démo de plugger <a href="https://github.com/yjs/y-websocket">Y-WebSocket</a>, mais je bloque (encore) sur l&#8217;utilisation de modules <span class="caps">JS</span>. J&#8217;essaye de contourner en faisant des pirouettes avec webpack (pour qu&#8217;il expose un module attaché à la fenêtre), mais je me retrouve face à des soucis de recursion infinie que j&#8217;ai du mal à&nbsp;comprendre.</p>
<p>Je me dis que peut-être que <a href="https://jsonjoy.com/">Json-Joy</a> sera utile ici, et je commence à le plugger dans le code que j&#8217;ai fait, avant de me rendre compte que son <span class="caps">API</span> est un peu différente de celle de Y.js ou Automerge. Je ne comprends pas tout à fait comment utiliser le projet et je perds du temps la dessus. Je n&#8217;ai pas réussi à trouver beaucoup d&#8217;exemples d&#8217;utilisation et ça me questionne sur la documentation et l&#8217;usage réel de ce&nbsp;projet.</p>
<h2 id="mardi-16-janvier-2024">🗓️ mardi 16 janvier&nbsp;2024</h2>
<p>Discussion avec David et Yohan autour de notre manière de s&#8217;outiller. J&#8217;ai du mal à comprendre ce qui bloque, mais j&#8217;ai l&#8217;impression qu&#8217;on patine. J&#8217;ai l&#8217;impression d&#8217;apporter plus d&#8217;inconfort que l&#8217;inverse, et je ressors de la réunion avec un sentiment de&nbsp;frustration.</p>
<h2 id="lundi-15-janvier-2024">🗓️ lundi 15 janvier&nbsp;2024</h2>
<p>Une réunion avec toute l&#8217;équipe durant laquelle j&#8217;ai pu poser des questions
sur notre manière de nous organiser, et sur le role de la réunion hebdomadaire.
Je suis content de l&#8217;avoir fait, hate de voir comment les choses vont&nbsp;évoluer.</p>
<p>Une courte session avec David pour échanger sur l&#8217;approche prise pour le&nbsp;moment.</p>
<h2 id="vendredi-12-janvier-2024">🗓️ vendredi 12 janvier&nbsp;2024</h2>
<p>J&#8217;ai continué à coder la piste initiée mercredi. Je me rends compte qu&#8217;il me
faudra peut-être un moyen de faire du lien entre les données, et que cette
information soit stockée quelque part (pour des re-rendus en cascade, si des
données sont dépendantes d&#8217;autres&nbsp;données).</p>
<p>En tout cas, j&#8217;ai une interface un peu plus claire pour le Mixin de <code>rerender</code>.</p>
<h2 id="mercredi-10-janvier-2024">🗓️ mercredi 10 janvier&nbsp;2024</h2>
<p>La piste des IDs est finalement écartée pour l&#8217;instant, je ne suis pas encore
certain d&#8217;en avoir besoin, peut-être qu&#8217;il n&#8217;est pas utile d&#8217;identifier les
features de manière unique au niveau de la base de données, et que cette
information n&#8217;est utile que de manière ponctuelle pour la synchronisation de
données (avec les&nbsp;CRDTs).</p>
<p>On a changé d&#8217;approche avec Yohan pour commencer à coder et voir ou ça
bloquerait. On a commencé par ajouter de la synchro sur les champs du
formbuilder de la&nbsp;carte.</p>
<p>Je suis assez surpris par la relative simplicité de la tâche: je m&#8217;attendais à
quelque chose de bien plus compliqué, mais — en tout cas pour le formbuilder —
c&#8217;est assez simple puisque lui modifie des données qui lui sont extérieures. Il
est donc possible de se connecter sur son étape finale pour updater les données
à&nbsp;synchroniser.</p>
<p>Actuellement, des <code>callbacks</code> sont définis manuellement par le code qui appelle
le formbuilder (pour re-rendre les éléments qui en ont besoin), on factorise
tout ça, pour faire en sorte que les données qui viennent de l&#8217;extérieur mettent
aussi à jour&nbsp;l&#8217;interface.</p>
<p>Je suis content de réussir à avancer sur des trucs un peu plus concrets. Aussi
très content des discussions « en off » avec Yohan. L&#8217;impression qu&#8217;on réussi à
commencer à désamorcer certains trucs avant qu&#8217;ils ne&nbsp;s&#8217;installent.</p>
<p>En fin de journée, je repasse sur la proposition de Json Joy qui me semble
intéressante en terme d&#8217;<span class="caps">API</span>, et plus tournée vers des composants&nbsp;réutilisables.</p>
<p>Avec un peu de recul, les avancées de ces quelques jours ne sont pas techniques,
mais humainess. On a passé du temps à confronter des approches, avant de se
rendre compte qu&#8217;il s&#8217;agissait <em>aussi</em> de peurs chez l&#8217;un et chez l&#8217;autre, ce
qui nous a permis de trouver un moyen de travailler ensemble plus efficacement.
Frustrant de ne pas avoir avancé techniquement, mais l&#8217;impression d&#8217;être sur de
bons rails humains, et d&#8217;avoir pu dégrossir certains aspects du code pour me les
rendre&nbsp;compréhensibles.</p>
<h2 id="mardi-09-janvier-2024">🗓️ mardi 09 janvier&nbsp;2024</h2>
<p>On discute avec Yohan de comment faire pour avancer, on commence à travailler
en pair pour plutôt décider se séparer le travail au lieu de le faire&nbsp;ensemble.</p>
<p>Yohan s&#8217;occupera de faire une séparation du code qui fait le « rendering », je
travaille sur la partie qui fait la synchronisation de données, qui va utiliser
les APIs exposées par&nbsp;Yohan.</p>
<p>Ce choix m&#8217;aide à me sentir plus à l&#8217;aise: je n&#8217;ai pas besoin de faire trop
de refactoring sur un code que je ne connais pas et qui me demande beaucoup de
temps de lecture et de&nbsp;compréhension.</p>
<p>Une discussion avec David me fait imaginer un scénario que j&#8217;avais oublié:
faire une bibliothèque Leaflet qui permet de faire de la synchro de données, de
manière générique. J&#8217;aime bien le fait que ça propose une séparation claire de
qui fait quoi, et permettrait d&#8217;avoir une frontière bien définie avec le code&nbsp;actuel.</p>
<p>Je ne trouve pas trop ma place dans la weekly qui est plus orientée décisions
stratégiques que updates des uns et des autres. Ça me pose question, j&#8217;aimerai
bien réussir à aborder le sujet lors d&#8217;un prochain&nbsp;point.</p>
<p>Je travaille sur un bout de code qui ajoute la gestion des identifiants sur les
features GeoJSON, et j&#8217;ajoute un test dans playwright (c&#8217;est plaisant). Utiliser
des UUIDs (v4) voudrait dire avoir 36bits * 12 000 000 layers * 50 features =
21,<span class="caps">6GB</span> de données en plus sur la base de données de <span class="caps">OSMFR</span>.</p>
<p>Partir sur des identifiants plus courts permet d&#8217;utiliser moins&nbsp;d&#8217;espace.</p>
<p>Je suis content des bouts de discussions qu&#8217;on a pu avoir, qui entament une
réflexion sur la manière dont on travaille ensemble, ce qu&#8217;on attends l&#8217;un de
l&#8217;autre. Je me rends compte que ma confiance en moi est faible, et que j&#8217;ai
besoin de la conforter avant d&#8217;être efficace pour travailler avec&nbsp;d&#8217;autres.</p>
<p>Content de la découverte, et d&#8217;avoir pu l&#8217;expliciter auprès de Yohan.
J&#8217;espère que ça débouchera sur quelque chose de sain et&nbsp;productif.</p>
<h2 id="lundi-08-janvier-2024">🗓️ lundi 08 janvier&nbsp;2024</h2>
<p>Matinée passée et début d&#8217;après midi avec Yohan à faire une release de uMap puis
à faire du bugfix dessus ensuite. Fin d&#8217;après-midi à discuter de la manière dont
on peut imaginer la suite du travail ensemble. On patine un peu, on a du mal à
trouver une manière de fonctionner qui nous convienne à tous les&nbsp;deux.</p>
<h2 id="lundi-18-decembre-2023">🗓️ lundi 18 décembre&nbsp;2023</h2>
<p>J&#8217;ai creusé sur mon idée de faire en sorte de synchroniser un point, j&#8217;ai une meilleure compréhension de ou m&#8217;insérer dans le code, et j&#8217;ai pu commencer à coder un bout de code qui fait la connexion avec le&nbsp;stockage.</p>
<p>J&#8217;ai aussi commencé à coder la partie stockage, en mettant de côté pour le moment la partie <span class="caps">CRDT</span> en tant que telle, j&#8217;ai l&#8217;impression de voir comment ça va fonctionner maintenant, et l&#8217;intégration avec Y.<span class="caps">JS</span> me semble difficile sans utiliser de bundler js, ce qui est peut-être un signe qu&#8217;il faut aller voir ailleurs (Json Joy me fait de&nbsp;l&#8217;oeil)</p>
<p>J&#8217;ai découvert la documentation de Leaflet <a href="https://leafletjs.com/reference.html#class">sur comment les objets fonctionnent</a> et la documentation de <a href="http://leaflet.github.io/Leaflet.Editable/doc/api.html#editable">Leaflet Editable</a> qui étaient en fait des lectures indispensables à la bonne compréhension du code de&nbsp;umap.</p>
<p>On a terminé la journée avec une session de pair avec Yohan qui était vraiment bien : j&#8217;avais des questions précises et on a pu avancer ensemble vers plus de&nbsp;clarté.</p>
<h2 id="samedi-16-decembre-2023">🗓️ samedi 16 décembre&nbsp;2023</h2>
<p>J&#8217;ai eu envie de commencer à m&#8217;intégrer avec uMap, pour ce qui est de la synchronisation des données. Pas forcement pour faire les choses <em>en version finale</em>, mais plutôt pour avancer un peu sur ma compréhension du code de manière&nbsp;générale.</p>
<p>Objectif: faire de la synchronisation de données pour un point. Quand il est ajouté sur une carte, je veux pouvoir récupérer un évènement de l&#8217;autre côté et l&#8217;afficher sur cette seconde carte. Éventuellement j&#8217;aimerai bien pouvoir suivre le drag-n-drop&nbsp;également.</p>
<p>J&#8217;ai passé l&#8217;aprèm à mettre des petits points d&#8217;arrêts dans mon navigateur web, pour mieux comprendre où ce serait le plus logique de m&#8217;insérer pour voir les modifications sur la carte, pour enfin commencer à ajouter <code>Y.js</code> dans le code (en tant que&nbsp;module).</p>
<p>Le fait qu&#8217;on utilise pas de bundler rends les choses un peu plus compliquées, mais je suis content d&#8217;avoir la main sur comment les choses sont&nbsp;faites.</p>
<p>J&#8217;ai un peu bloqué sur l&#8217;utilisation de Y.<span class="caps">JS</span>, qui s&#8217;attends à ce que d&#8217;autres modules soient disponibles dans des namespaces spécifiques, ce qui ne correspond pas vraiment à nos&nbsp;pratiques.</p>
<p>J&#8217;ai découvert <a href="">import maps</a> et j&#8217;ai commencé à les utiliser, mais ça ne semble pas suffire pour notre approche &#8220;simpliste&#8221;. En tout cas, pas pour Y.<span class="caps">JS</span>&nbsp;(https://github.com/yjs/yjs/issues/325)</p>
<h2 id="vendredi-15-decembre-2023">🗓️ vendredi 15 décembre&nbsp;2023</h2>
<p>🚗 J&#8217;ai travaillé depuis la maison, suite à des soucis de&nbsp;voiture. </p>
<p>J&#8217;ai continué le travail sur l&#8217;ajout de l&#8217;utilisation de modules Javascript, pour pouvoir gérer les imports et les exports, plutôt que d&#8217;avoir tout dans le namespace&nbsp;global.</p>
<p>J&#8217;ai pu discuter avec Vincent puis avec David du sujet. Je suis content <a href="https://github.com/umap-project/umap/pull/1463">de l&#8217;approche prise</a>, qui devrait permettre de moderniser un peu la base de code, sans pour autant utiliser des technologies de transpilation, ni de bundling qui rendent l&#8217;expérience développeur plus&nbsp;complexe.</p>
<p>J&#8217;en ai profité pour <a href="https://github.com/umap-project/umap/pull/1471">ajouter mes apprentissages</a> dans la documentation développeur, le genre d&#8217;informations que je récupère à droite à gauche et qui sont utiles pour pouvoir&nbsp;contribuer.</p>
<p>J&#8217;ai un peu réorganisé mes notes autour des différents challenges qu&#8217;on a sur ce projet concernant les différents aspects (stockage, réactivité, réconcialiation des données, transport). Et entre autre autour de la partie&nbsp;transport.</p>
<h2 id="jeudi-14-decembre-2023">🗓️ jeudi 14 décembre&nbsp;2023</h2>
<p>Réunion le matin avec Yohan et NLNet, l&#8217;idée était de valider notre plan d&#8217;action, et c&#8217;est bon. Les documents sont signés on est surs d&#8217;avoir le financement. Sacrée nouvelle&nbsp;:-)</p>
<p>J&#8217;ai découvert au passage quelques bibliothèques intéressantes (<a href="https://jsonjoy.com/"><span class="caps">JSON</span> Joy</a> et <a href="https://p2panda.org/">p2panda</a>), qui pourraient potentiellement nous&nbsp;intéresser. </p>
<p>J&#8217;ai passé un peu de temps en amont pour retravailler la proposition qu&#8217;on leur avait faite, et après pour leur donner dans le format qu&#8217;iels&nbsp;souhaitaient.</p>
<p>L&#8217;après-midi j&#8217;ai passé un peu de temps pour voir comment on pourrait utiliser des modules <span class="caps">JS</span> dans umap sans tout changer pour autant&nbsp;😇</p>
<h2 id="mercredi-13-decembre-2023">🗓️ mercredi 13 décembre&nbsp;2023</h2>
<p>Je n&#8217;ai pas pris de&nbsp;notes.</p>
<h2 id="mardi-12-decembre-2023">🗓️ mardi 12 décembre&nbsp;2023</h2>
<p>Matinée loupée suite à une blessure au poignet la veille au soir. Après-midi passée en partie avec David pour mettre en place l&#8217;utilisation de web&nbsp;components.</p>
<h2 id="lundi-11-decembre-2023">🗓️ lundi 11 décembre&nbsp;2023</h2>
<p>Matinée passée à imaginer comment les données pourraient êtres structurées dans le client, et comment l&#8217;interface pourrait se faire avec les objets&nbsp;leaflet.</p>
<p>Après-midi à faire un point humain, puis un point technique, avec la rencontre de (peut-être ?) notre prochaine&nbsp;bizdev.</p>
<p>Discussion technique avec David. Peut-être qu&#8217;un algorithme de merge qui serait présent sur le serveur et sur le client pourrait nous permettre de nous passer de la complexité des&nbsp;CRDTs?</p>
<h2 id="mercredi-06-decembre-2023">🗓️ mercredi 06 décembre&nbsp;2023</h2>
<p>J&#8217;ai terminé de faire quelques légers changements dans la documentation, avant de me plonger dans le code javascript et de commencer à faire du&nbsp;refactoring.</p>
<p>J&#8217;ai passé du temps à comprendre comment avoir côte à côte des modules <span class="caps">ES6</span> et du code de type « script ». J&#8217;ai ensuite commencé à créer des modules javascript en charge de la sauvegarde des données. En tirant les fils je me rends compte qu&#8217;il va sans doute falloir que je repasse sur le code qui s&#8217;occupe des requêtes <span class="caps">XHR</span> à l&#8217;ancienne, pour le remplacer par de&nbsp;l&#8217;async/await.</p>
<p>J&#8217;avais oublié à quel point faire des requêtes depuis le navigateur était compliqué à l&#8217;époque&nbsp;!</p>
<h2 id="mardi-05-decembre-2023">🗓️ mardi 05 décembre&nbsp;2023</h2>
<p>J&#8217;ai mis à plat ce que j&#8217;ai appris ces dernières semaines sur le projet, pour pouvoir décider vers où aller pour la suite des&nbsp;évènements.</p>
<p>Une discussion avec Yohan me fait pencher vers la piste que je mettais de côté à cause des changements qui sont nécessaires côté client: les&nbsp;CRDTs.</p>
<h2 id="mercredi-29-novembre-2023">🗓️ mercredi 29 novembre&nbsp;2023</h2>
<p>J&#8217;ai passé du temps sur la <span class="caps">PR</span> du merge optimiste, pour essayer de changer le fonctionnement qui passe actuellement par la modification des champs de formulaires envoyés, ce que je ne trouve pas très&nbsp;clean.</p>
<p>Le travail pour faire autrement me semble trop important pour le moment, on accepte la <span class="caps">PR</span> telle quelle, avec l&#8217;idée de passer par une <span class="caps">API</span> plus tard, avec la refonte avec <span class="caps">DRF</span>.</p>
<p>J&#8217;ai aussi travaillé sur la&nbsp;documentation.</p>
<h2 id="mardi-28-novembre-2023">🗓️ mardi 28 novembre&nbsp;2023</h2>
<p>Travail de projection pour NLNet, puis réunion l&#8217;après-midi. J&#8217;ai ensuite repris les recherches pour affiner l&#8217;utilisation des&nbsp;CRDTs.</p>
<h2 id="lundi-27-novembre-2023">🗓️ lundi 27 novembre&nbsp;2023</h2>
<p>Matinée passée à organiser ma semaine, à participer a la présentation de NLNet (très bon accueil, et clarifications utiles), puis à faire un petit tour de uMap côté front avec&nbsp;Yohan.</p>
<p>L&#8217;après-midi j&#8217;ai commencé à intégrer les notes que j&#8217;ai prises sur le côté <span class="caps">JS</span> à la documentation actuelle, et j&#8217;en ai profité pour refaire un tour sur la documentation actuelle pour la simplifier et la&nbsp;clarifier.</p>
<h2 id="vendredi-24-novembre-2023">🗓️ vendredi 24 novembre&nbsp;2023</h2>
<p>Réunion d&#8217;avancement et point avec David et Yohan pour préparer la suite concernant&nbsp;NLNet.</p>
<p>Je suis content d&#8217;avoir préparé le point, et je mesure l&#8217;importance donnée aux personnes dans les&nbsp;process.</p>
<h2 id="jeudi-23-novembre-2023">🗓️ jeudi 23 novembre&nbsp;2023</h2>
<p>J&#8217;ai passé du temps pour faire passer les tests dans le <span class="caps">CI</span>, et résolu quelques problèmes au&nbsp;passage.</p>
<h2 id="mercredi-22-novembre-2023">🗓️ mercredi 22 novembre&nbsp;2023</h2>
<p>J&#8217;ai exploré l&#8217;utilisation de Websockets pour le transport, entre autre sa consommation mémoire, il semblerait que ce soit tout à fait acceptable (1gb de mémoire permet de gérer 1500 connexions&nbsp;concurrentes).</p>
<p>WebRTC n&#8217;est <a href="https://gitlab.torproject.org/legacy/trac/-/issues/8178">actuellement pas supporté par Tor Browser </a>(<a href="https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/41021">pour le moment</a>), donc j&#8217;imagine que c&#8217;est une fausse&nbsp;piste.</p>
<p>J&#8217;ai repassé un bon coup sur la <span class="caps">PR</span> du merge optimiste. Je suis content du résultat: le code et des tests me semblent plus lisibles et&nbsp;compréhensibles.</p>
<p>L&#8217;après-midi à été passée avec Yohan qui m&#8217;a fait un tour du frontend. J&#8217;en ai profité pour prendre des notes que je pense publier dans la documentation. C&#8217;était très utile d&#8217;avoir ses explications, le code n&#8217;est pas si simple à prendre en&nbsp;main.</p>
<h2 id="mardi-21-novembre-2023">🗓️ mardi 21 novembre&nbsp;2023</h2>
<p>Une matinée passée à la fois à préparer la semaine et à rédiger un résumé de ce que j&#8217;ai fait la semaine dernière.
J&#8217;ai passé un peu plus de temps à comprendre en profondeur le code de merge de la <span class="caps">PR</span> de Biondi biondo, pour pouvoir l&#8217;expliquer dans un article de&nbsp;blog.</p>
<p>L&#8217;après-midi j&#8217;ai participé à la weekly et lu l&#8217;article de blog de Figma qui explique leur approche pour implementer du temps&nbsp;réel.</p>
<p>J&#8217;avance petit à petite sur la piste d&#8217;utiliser un <span class="caps">CRDT</span> &#8220;maison&#8221;, voire pas de <span class="caps">CRDT</span> du tout, en fonction de nos besoins réels. Un <span class="caps">CRDT</span> nous permettrait d&#8217;avoir plusieurs personnes qui travaillent en même temps sur une même feature (au sens GeoJSON), mais je ne sais pas encore si c&#8217;est un cas d&#8217;usage&nbsp;réel.</p>
<h2 id="samedi-18-novembre-2023">🗓️ samedi 18 novembre&nbsp;2023</h2>
<p>J&#8217;ai passé un peu de temps à intégrer l&#8217;intégration continue de Github. Je pensais que ce serait rapide mais je ne devais pas être très&nbsp;réveillé…</p>
<h2 id="vendredi-17-novembre-2023">🗓️ vendredi 17 novembre&nbsp;2023</h2>
<p>J&#8217;ai passé du temps pour essayer de comprendre comment utiliser SQLite en local à l&#8217;intérieur d&#8217;un navigateur, en utilisant <a href="https://vlcn.io/docs/cr-sqlite/intro">cr-sqlite</a>. J&#8217;ai un prototype qui fonctionne à peu près et qui permet de récupérer les éditions en local pour les synchroniser avec une autre base&nbsp;SQLite.</p>
<p>Fait un point avec l&#8217;équipe sur l&#8217;avancement général&nbsp;l&#8217;après-midi.</p>
<p>Ensuite continué à creuser sur l&#8217;utilisation de SQLite avec&nbsp;cr-sqlite.</p>
<h2 id="mardi-14-novembre-2023">🗓️ mardi 14 novembre&nbsp;2023</h2>
<p>Une matinée passée avec Yohan pour à la fois <a href="https://github.com/umap-project/umap/pull/772/">avancer sur la <span class="caps">PR</span> pour merger des conflits simples</a>. On a passé le code en revue et fait quelques changements cosmétiques qui devraient aider à la compréhension&nbsp;générale.</p>
<p>La deuxième partie de la matinée à été utilisée pour discuter des découvertes et des questions que je me pose quand à comment faire pour ajouter ces fonctions de collaboration temps&nbsp;réel.</p>
<p>Plusieurs trucs à noter :
- Il est possible de challenger l&#8217;utilisation de geoJSON pour le stockage des données. On a parlé entre autres de pmtiles et de&nbsp;sqlite.</p>
<p>J&#8217;ai passé un début d&#8217;après-midi à installer mon environnement de travail sur Linux, puis j&#8217;ai :
- terminé de rebaser la pull request pour faire un merge optimiste.
- amélioré la vitesse d&#8217;execution des&nbsp;tests</p>
<p>Découvertes :
- https://www.geopackage.org/
-&nbsp;https://vlcn.io/docs/js/reactivity</p>
<h2 id="lundi-13-novembre-2023">🗓️ lundi 13 novembre&nbsp;2023</h2>
<p>J&#8217;ai cherché à comprendre comment il serait possible de s&#8217;intégrer avec Leaflet. Je connais assez mal l&#8217;écosystème donc j&#8217;ai cherché les plugins autour de stockage de données et de la&nbsp;synchronisation.</p>
<p>Beaucoup de clicks, de lecture et de compréhension des contours de l&#8217;écosystème <span class="caps">SIG</span>, et de l&#8217;écosystème de&nbsp;Leaflet.</p>
<p>J&#8217;ai aussi creusé autour des <span class="caps">SSE</span> et de WebRTC, question de comprendre les limites et avantages de&nbsp;chacun.</p>
<h2 id="mardi-07-novembre-2023">🗓️ mardi 07 novembre&nbsp;2023</h2>
<ul>
<li>Lu la documentation&nbsp;d&#8217;automerge</li>
<li>Commencé à faire un prototype pour voir le fonctionnement d&#8217;automerge en&nbsp;python</li>
<li>Installé les dépendances rust, compilé&nbsp;automerge</li>
<li>Réunion discussion avec Yohan sur mes questions et sur les différentes&nbsp;pistes</li>
</ul>
<h2 id="lundi-06-novembre-2023">🗓️ lundi 06 novembre&nbsp;2023</h2>
<ul>
<li>Lu le code qui est dans uMap actuellement pour comprendre le fonctionnement&nbsp;actuel</li>
<li>Commencé à rédiger un document avec les différentes options pour faire de la&nbsp;synchro</li>
<li>Fais des recherches sur les différentes options pour faire de la&nbsp;synchro</li>
</ul>
</article>
<script>
const spec = {
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"width": 500,
"height": 200,
"data":
{
"name": "table",
"values": [
{"date": "2024-01-22", "series": "Rémunéré", "count": 7},
{"date": "2024-01-22", "series": "Bénévole", "count": 0},
{"date": "2024-01-16", "series": "Rémunéré", "count": 3},
{"date": "2024-01-16", "series": "Bénévole", "count": 0},
{"date": "2024-01-15", "series": "Rémunéré", "count": 3},
{"date": "2024-01-15", "series": "Bénévole", "count": 0},
{"date": "2024-01-12", "series": "Rémunéré", "count": 3},
{"date": "2024-01-12", "series": "Bénévole", "count": 0},
{"date": "2024-01-10", "series": "Rémunéré", "count": 7},
{"date": "2024-01-10", "series": "Bénévole", "count": 0},
{"date": "2024-01-09", "series": "Rémunéré", "count": 8},
{"date": "2024-01-09", "series": "Bénévole", "count": 0},
{"date": "2024-01-08", "series": "Rémunéré", "count": 9},
{"date": "2024-01-08", "series": "Bénévole", "count": 0},
{"date": "2023-12-18", "series": "Rémunéré", "count": 9},
{"date": "2023-12-18", "series": "Bénévole", "count": 0},
{"date": "2023-12-16", "series": "Rémunéré", "count": 4},
{"date": "2023-12-16", "series": "Bénévole", "count": 0},
{"date": "2023-12-15", "series": "Rémunéré", "count": 7},
{"date": "2023-12-15", "series": "Bénévole", "count": 0},
{"date": "2023-12-14", "series": "Rémunéré", "count": 8},
{"date": "2023-12-14", "series": "Bénévole", "count": 0},
{"date": "2023-12-13", "series": "Rémunéré", "count": 2},
{"date": "2023-12-13", "series": "Bénévole", "count": 0},
{"date": "2023-12-12", "series": "Rémunéré", "count": 4},
{"date": "2023-12-12", "series": "Bénévole", "count": 0},
{"date": "2023-12-11", "series": "Rémunéré", "count": 8},
{"date": "2023-12-11", "series": "Bénévole", "count": 0},
{"date": "2023-12-06", "series": "Rémunéré", "count": 6},
{"date": "2023-12-06", "series": "Bénévole", "count": 0},
{"date": "2023-12-05", "series": "Rémunéré", "count": 8},
{"date": "2023-12-05", "series": "Bénévole", "count": 0},
{"date": "2023-11-29", "series": "Rémunéré", "count": 5},
{"date": "2023-11-29", "series": "Bénévole", "count": 0},
{"date": "2023-11-28", "series": "Rémunéré", "count": 4},
{"date": "2023-11-28", "series": "Bénévole", "count": 0},
{"date": "2023-11-27", "series": "Rémunéré", "count": 8},
{"date": "2023-11-27", "series": "Bénévole", "count": 0},
{"date": "2023-11-24", "series": "Rémunéré", "count": 2},
{"date": "2023-11-24", "series": "Bénévole", "count": 0},
{"date": "2023-11-23", "series": "Rémunéré", "count": 3},
{"date": "2023-11-23", "series": "Bénévole", "count": 0},
{"date": "2023-11-22", "series": "Rémunéré", "count": 9},
{"date": "2023-11-22", "series": "Bénévole", "count": 0},
{"date": "2023-11-21", "series": "Rémunéré", "count": 8},
{"date": "2023-11-21", "series": "Bénévole", "count": 0},
{"date": "2023-11-18", "series": "Rémunéré", "count": 0},
{"date": "2023-11-18", "series": "Bénévole", "count": 4},
{"date": "2023-11-17", "series": "Rémunéré", "count": 6},
{"date": "2023-11-17", "series": "Bénévole", "count": 0},
{"date": "2023-11-14", "series": "Rémunéré", "count": 8},
{"date": "2023-11-14", "series": "Bénévole", "count": 0},
{"date": "2023-11-13", "series": "Rémunéré", "count": 8},
{"date": "2023-11-13", "series": "Bénévole", "count": 0},
{"date": "2023-11-07", "series": "Rémunéré", "count": 8},
{"date": "2023-11-07", "series": "Bénévole", "count": 0},
{"date": "2023-11-06", "series": "Rémunéré", "count": 4},
{"date": "2023-11-06", "series": "Bénévole", "count": 0},
]
}
,
"mark": "bar",
"encoding": {
"x": {
"timeUnit": {"unit": "", "utc": true},
"field": "date",
"axis": {"format": "%d/%m"},
"title": "Date"
},
"y": {
"aggregate": "sum",
"field": "count",
"title": "Heures",
},
"color": {
"field": "series",
"scale": {
"domain": ["Bénévole", "Rémunéré"],
"range": ["#e7ba52", "#1f77b4"]
}
}
}
};
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>