
Cliquez sur un tag pour affiner votre recherche :
[ << Page précédente (1550) ] [ Page suivante (2126) >> ]
Logiciel de personal finance manager.
Site officiel : https://actualbudget.org/
Article Wikipedia : https://fr.wikipedia.org/wiki/Accel_Partners
Accel est une société de Capital risque.
https://www.youtube.com/@AbsolVideos
J'ai beaucoup aimé son interview de Thibaut Giraud : Monsieur Phi (Thibaut Giraud) en 12 questions
APScheduler est un job scheduler écrit en Python.
Dépôt GitHub : https://github.com/agronholm/apscheduler
XDNA est l'architecture des puces NPU de AMD.
Aussi nommé Ryzen AI.
D'après ce que j'ai compris, Ryzen AI est l'équivalent de Intel AI Boost.
Chaussure Ector Cuir Basse 212 Cuir
En janvier 2024, j'ai acheté une paire de chaussure de la marque Ector Sneakers.
Le modèle : Chaussure Ector Cuir Basse 212 Cuir à 189 €.
Voici ce qui a motivé mon choix :
Dessinés et entièrement fabriquées dans notre atelier, à Romans-sur-Isère (26)
Liste d'articles scientifiques, revues à comités de lectures, etc
Traduction de "The Platinum Rule"
Ma traduction de l'article The Platinum Rule de Shawn Wang (dit swyx) avec quelques modifications et ajouts qui me permettent — peux-être à vous aussi — de mieux comprendre l'article.
La traduction commence ici ⬇️
Vous avez entendu parler de la la règle d'or : « Traiter les autres comme on voudrait être traité » ou « Ne fais pas aux autres ce que tu ne voudrais pas qu'on te fasse ».
Je pense qu'elle est incomplète. Je pense que les gens fonctionnent en réalité selon une norme plus élevée. Je propose la Règle de Platine : Traiter les autres comme ILS veulent être traités.
La Règle de Platine
Pour comprendre comment j'en suis arrivé là, il faut savoir que j'ai des traits de personnalité particuliers qui rendent la règle de Platine pertinente pour moi. Je préfère la franchise. Mon seuil pour considérer quelque chose comme "terminé" est plus bas que le vôtre. J'aime les personnes conscientes d'elles-mêmes et l'humour. Je préfère l'amour vache.
Cela signifie que je préfère livrer une chose imparfaite et itérer plutôt que de mettre de l'ordre dans mes affaires. Cela signifie que je dis les choses sans les adoucir pour les rendre plus agréables à entendre. Cela signifie que je me moque de moi-même et de tout ce à quoi je m'identifie fortement, ce qui peut parfois inclure les personnes avec lesquelles je travaille. Cela signifie que je suis souvent trop dur à l'égard de quelque chose qui me tient à cœur.
En lisant ce paragraphe — ci-dessus — certains d'entre vous ont sans doute pensée « ok, et alors ? » sans voir ce qu'il ne va pas dans ce comportement. Voici ce qui ne va pas.
Pourquoi la règle d'or pose problème ?
Imaginons que nous simplifions les préférences humaines en deux catégories : « plus particulières » et « moins particulières ».
Et supposons que les interactions humaines se résument à deux aspects : « comment vous traitez les autres » et « comment vous voulez être traité ».
La règle d'or — traiter les autres comme vous voulez être traité — suggère que les personnes plus particulières devraient traiter les autres selon leurs propres standards élevés — peu importe comment vous définissez ces standards.
C'est une bonne chose car cela rend les personnes particulières très prévenantes.
Cependant, si les personnes moins particulières appliquaient cette règle et traitaient les autres comme elles veulent être traitées, elles paraîtraient vraiment désagréables aux yeux des personnes plus particulières, qui ne pourraient pas travailler avec elles.
Par exemple, imaginez quelqu'un qui aime que tout soit toujours bien rangé et organisé. Cette personne, très particulière sur la propreté, pourrait être très attentive à maintenir un environnement propre et ordonné pour tout le monde.
Cependant, si une personne qui ne se soucie pas autant du rangement appliquait la règle d'or et traitait les autres comme elle veut être traitée (c'est-à-dire sans se soucier de l'ordre), elle semblerait désordonnée et négligente aux yeux de la personne qui apprécie l'ordre. Cela créerait des tensions, car la personne qui aime l'ordre se sentirait frustrée et incapable de travailler efficacement avec l'autre.
Dans cet exemple, la règle d'or ne fonctionne pas bien, la personne qui aime l'ordre traite l'autre comme elle aimerait être traité, mais son souhaite ne se réalise pas !
Les nombres relatifs de personnes plus particulières et de personnes moins particulières n'ont pas d'importance - si ces personnes doivent travailler ensemble, elles doivent coexister dans le cadre d'un contrat social différent.
La règle de platine ?
Pour essayer de résoudre ce problème, je propose que la règle de platine soit ce contrat : traiter les autres comme ils veulent être traités.
D'un côté, cela semble relever de la plus simple politesse : bien sûr, il faut tenir compte des sentiments des autres. Utilisez leurs pronoms. Respecter leur autonomie et leur liberté.
D'un autre côté, cela peut sembler beaucoup trop accommodant - que faire si les gens abusent du système et veulent être traités de manière déraisonnable ? Il y a deux poids, deux mesures partout lorsqu'il s'agit d'intérêt personnel. Il faut bien tracer une ligne quelque part.
Elle est imparfaite, mais il est probable que le bon équilibre entre vous et moi se situe quelque part entre la Règle d'Or (empathie extrêmement centrée sur soi) et la Règle de Platine (accommodement extrêmement centré sur les autres).
La Règle d'Argent
En réfléchissant à cela dans un avion, j'ai également pensé à une belle conclusion pour ce message. Si la règle de platine est "meilleure" que la règle d'or, à quoi ressemblerait une règle d'argent ? (j'aime étendre les idées comme celle-ci, j'ai pris cela de Brian Chesky).
Une règle d'argent serait quelque chose qui est souvent considéré comme secondaire par rapport aux autres, mais qui reste important et précieux. Et sous la forme suivante : « Traitez x comme X veut être traité ».
Voici ma proposition pour une règle d'argent : Traitez-vous comme vous traitez les autres. Une belle inversion de la règle d'or.
Le framework des quatre tendances de Gretchen Rubin divise les gens en fonction de la façon dont ils répondent aux attentes intérieures et extérieures, ce qui semble tout à fait approprié à ce sujet. Les profils "Questioners" ont le plus besoin de la Règle de Platine. Mais les "Obligers" ont probablement le plus besoin de la Règle d'Argent.
Le souci de soi ne doit pas céder la place au sacrifice de soi.
Projet GH-382 - Je cherche à convertir en SQL des query de filtre basé sur un système de "tags"
Ce projet a été initialement commencé dans une issue le 8 mars 2024.
Sur un modèle de données SQL qui implémente un système de tags
comme celui décrit ici, je souhaite pouvoir appliquer des filtres qui ressemblent à ceci :
- a.
tag_a or tag_b
- b.
tag_a and tag_b
- c.
tag_a and (not tag_b)
- d.
(tag_a and tag_b) or (tag_c and tag_d)
- ...
Voici à quels filtres (where
) SQL peuvent ressembler ces filtres :
- a.
WHERE contacts.tags && (SELECT ARRAY_AGG(id) FROM contact_tags WHERE name = ANY(ARRAY['tag_a', 'tag_b'])
- b.
WHERE contacts.tags @> (SELECT ARRAY_AGG(id) FROM contact_tags WHERE name = ANY(ARRAY['tag_a', 'tag_b'])
- c.
WHERE
(contacts.tags && (SELECT ARRAY_AGG(id) FROM contact_tags WHERE name = ANY(ARRAY['tag_a'])) AND
(NOT (contacts.tags && (SELECT ARRAY_AGG(id) FROM contact_tags WHERE name = ANY(ARRAY['tag_a'])))
- d.
WHERE
(contacts.tags && (SELECT ARRAY_AGG(id) FROM contact_tags WHERE name = ANY(ARRAY['tag_a', 'tag_b'])) OR
(contacts.tags && (SELECT ARRAY_AGG(id) FROM contact_tags WHERE name = ANY(ARRAY['tag_c', 'tag_d']))
Questions que je me pose :
- Existe-t-il un "langage" de query de tag sur lequel je pourrais me baser ?
- Existe-t-il un parser qui me permettrait de transformer ma query de filtre en SQL ?
Todo :
- [ ] Essayer de dresser une liste de langages de query, quelques idées où chercher :
- [ ] Des moteurs de recherche :
- [x] Google
- [x] Duckduckgo
- [ ] Algolia
- [x] Melisearch
- [ ] …
- [ ] Prometheus
- [x] Loki
- [ ] GitLab
- [x] GitHub
- [x] Jira
- [x] Lobster
- [ ] Des moteurs de recherche :
- [ ] Poster un billet de recherche sur
- [x] Subreddit Postgres => https://old.reddit.com/r/PostgreSQL/comments/1bb6qvj/need_advice_on_how_to_convert_a_filter_string/?
- [x] Subreddit Javascript => https://old.reddit.com/r/javascript/comments/1bb8rr3/askjs_need_advice_on_how_to_convert_a_filter/
- [ ] Stackoverflow
- [ ]
Subreddit programming- [ ] AskProgramming
- [x] Publier sur sklein.xyz :
Projet GH-360 - Implémenter un POC de Fuzzy Search en PostgreSQL
Ce projet a été initialement commencé dans une issue, le 10 janvier 2024.
Quel est l'objectif de ce projet ?
Je souhaite mettre en pratique l'extension PostgreSQL fuzzystrmatch pour implémenter une fonctionnaltié Fuzzy Search.
Je souhaite que cette implémentation permette :
- de trouver les éléments à partir d'erreurs d'insertion, de suppression et de substitution (voir paragraphe "Distances entre mots") ;
- de trouver les éléments même si des lettres ont été transposées, par exemple,
cout → touc
est une transposition.
Repository de ce projet :
postgresql-fuzzysearch-poc
(pas encore créé)
Ressources :
- fuzzystrmatch
- Articles Wikipedia :
- Résultat de la recherche "Fuzzy" sur Subreddit PostgreSQL
- Billet de blog : PostgreSQL Fuzzy Text Search: Not so fuzzy to fuzziest
Projet GH-339 - Implémenter un POC de Automerge
Ce projet a été initialement commencé dans une issue, le 16 novembre 2023.
Quel est l'objectif de ce projet ?
Je souhaite implémenter et publier un POC de https://automerge.org.
Ce que je souhaite réaliser dans ce POC :
- Une implémentation du serveur
- En Javascript
- Une autre implémentation en Golang
- Un client Javascript
- User story
- Sur le client A, un user saisie "item 1", celui-ci est ajouté dans une liste ordonné par timestamp
- "item 1" est affiché en temps réel sur client B
- Le client A passe offline
- Sur le client B, un user saisie "item 2"
- Sur le client A, un user saisie "item 3"
- Le client A passe online
- Le client A se synchronise automatiquement et contient la liste "item 1", "item 2", "item 3"
- User story
Repository de ce projet :
Ressources :
Ce projet a été initialement commencé dans une issue le 9 août 2023.
L'objectif de ce projet est de créer un simulateur de manque à gagner suite à une rupture conventionnelle, un licenciement économique ou un licenciement simple.
Le projet est déployé sur : https://comparateur-rupture-conventionnelle-cdi.sklein.xyz/
Repository GitHub du projet : https://github.com/stephane-klein/comparateur-rupture-conventionnelle-cdi-france
Ressources :
- https://www.unedic.org/indemnisation/vos-questions-sur-indemnisation-assurance-chomage/ai-je-toujours-droit-des-1
- https://candidat.pole-emploi.fr/candidat/simucalcul/perteemploi
- https://www.coover.fr/outils/calcul-allocation-chomage
- https://github.com/search?q=org%3Abetagouv chomage&type=code
- https://www.unedic.org/sites/default/files/2023-07/PRE-CIRC-Circulaire_n_2023-08_du_26_juillet_2023.pdf
- https://www.unedic.org/espace-presse/actualites/publication-de-la-circulaire-ndeg-2022-11-du-13-juillet-2022-sur
- https://www.unedic.org/sites/default/files/2021-10/PRE-CIRC-Circulaire_n_2021-13_du_19_octobre_2021.pdf
Tâches restantes : https://github.com/stephane-klein/comparateur-rupture-conventionnelle-cdi-france/issues
Projet 8 - CodeMirror, conceal, Svelte"
Date de la création de cette note : mercredi 3 juillet 2024.
Quel est l'objectif de ce projet ?
Je souhaite implémenter un éditeur Markdown dans une application web frontend utilisant Svelte. Cet éditeur doit supporter la fonctionnalité de conceal en utilisant la librairie CodeMirror.
Plus précisément, mon objectif est de reproduire le comportement des "liens internes avec texte d'affichage" de Obsidian. Cela signifie que lorsque le curseur de l'éditeur n'est pas positionné sur la ligne contenant [[foobar|title]]
, seul title
est affiché avec un style spécifique. Lorsque le curseur se trouve sur la ligne de [[foobar|title]]
, alors [[foobar|title]]
est affiché intégralement.
Ce projet est en lien avec Projet 1 - "CodeMirror, autocomplétion, Svelte".
Pourquoi je souhaite réaliser ce projet ?
J'ai besoin d'implémenter une fonctionnalité Conceal dans l'application Value Props.
Repository de ce projet :
https://github.com/stephane-klein/svelte-codemirror-conceal-poc
Projet 7 - "Améliorer et mettre à jour le projet restic-pg_dump-docker"
Date de la création de cette note : 2024-06-05.
Ce projet est terminé : voir 2024-07-06_1116.
Quel est l'objectif de ce projet ?
Bien que j'aie beaucoup travaillé de décembre 2023 janvier 2024 sur le projet Implémenter un POC de pgBackRest, je souhaite mettre à jour et améliorer le repository restic-pg_dump-docker
.
Quelques tâches à réaliser :
- [x] Mettre à jour tous les composants ;
- [x] Publier le
Dockerfile
destephaneklein/restic-backup-docker
; - [ ] Réaliser et publier un screencast ;
- [x] Améliorer le
README.md
.
Pourquoi je souhaite réaliser ce projet ?
Pourquoi continuer ce projet alors que j'ai travaillé sur pgBackRest qui semble bien mieux ?
Pour plusieurs raisons :
- Je ne peux pas installer pgBackRest dans un « sidecar container Docker » — en tout cas, je n'ai pas trouvé comment réaliser cela 🤷♂️. Je dois utiliser un container Docker PostgreSQL qui intègre pgBackRest.
- Pour le moment, je ne comprends pas très bien la taille consommée par les "WAL segments" sauvegardés dans les buckets.
- Pour le moment, je ne sais pas combien de temps prend la restauration d'un backup d'une base de données d'une taille supérieure à un test. Par exemple, combien de temps prend la restauration d'une base de données de 100 Mo 🤔.
- Je ne suis pas rassuré de devoir lancer un cron —
supercronic
— lancé partini
Bien que pgBackRest
permette un backup en temps "réel" et est sans doute plus rapide que "ma" méthode "restic-pg_dump", pour toutes les raisons listée ci-dessus, je pense que la méthode "restic-pg_dump" est moins complexe à mettre en place et à utiliser.
#JeMeDemande si la fonctionnalité "incremental backups" la version 17 de PostgreSQL sera une solution plus pratique que pgBackRest et la méthode "restic-pg_dump" 🤔.
Repository de ce projet :
https://github.com/stephane-klein/restic-pg_dump-docker
Je vais travailler dans la branche nommée june-2024-working-session
Projet 6 - "SvelteFlow playground"
Date de la création de cette note : 2024-05-17 .
Quel est l'objectif de ce projet ?
Je souhaite essayer de réaliser avec Svelte Flow, une page web qui permet de :
- Glisser / déposer 2 types d'objets vers un flow container.
- Permettre de saisir du texte dans ces deux types d'objets.
- Permettre de relier les objets de type 1 vers ceux de type 2 et inversement.
- Interdire les liaisons entre des objets de même type.
Idéalement j'aimerais que les objets soient placés "harmonieusement" entre eux dans le flow container.
Pourquoi je souhaite réaliser ce projet ?
Je besoin de créer ce type d'éditeur dans mon projet Value Props
Repository de ce projet :
Ressources :
- Documentation de SvelteFlow : https://svelteflow.dev/learn
Résultat
2024-05-22 : je déclare le projet terminé.
Voir détail dans cette note : 2024-05-22_1033
Projet 5 - "Importation d'un vault Obsidian vers Apache Age"
Date de la création de cette note : 2024-05-02.
Quel est l'objectif de ce projet ?
Je souhaite essayer d'implémenter un script d’importation d’un vault Obsidian vers la Base de données Graph Apache Age, avec importation des tags, alias.
Pourquoi je souhaite réaliser ce projet ?
Pour progresser en Cypher. À cause de 2024-04-30_1704.
Repository de ce projet :
https://github.com/stephane-klein/obsidian-vault-to-apache-age-poc/
Plus d'informations sur ce projet :
Projet 4 - "Je souhaite apprendre les bases d'utilisation de Apache Age"
Date de la création de cette note : 2024-05-02
J'ai commencé ce projet le 20 avril 2024
Quel est l'objectif de ce projet ?
Je souhaite dans un premier temps être capable de reproduire ce que j'avais fait dans le projet neo4j-playground
et peut être même ensuite d'aller un peu plus loin dans mon apprentissage du langage de Query Cypher.
Pourquoi je souhaite réaliser ce projet ?
J'ai envie d'ajouter à ma stack de compétence, un moteur de base de données orienté Graph. Idéalement, j'aimerais que ça soit Apache Age parce que c'est un projet libre et basé sur PostgreSQL. Cela me permettrait de facilement coupler les avantages d'une base de données relationnel avec une base de données Graph.
Repository de ce projet :
https://github.com/stephane-klein/apache-age-playground
Idées après ce projet :
Si j'arrive à terminer ce projet, j'ai les idées suivantes :
- Écrire un script d'importation d'un vault Obsidian vers Apache Age, avec importation des tags, alias. => voir Projet 5
- Écrire des scripts de benchmark pour comparer PostgreSQL vs Apache Age sur les aspects suivants : vitesse de lecture, vitesse d'écriture et espace disque consommé.
Projet 2 - "Réaliser un petit projet basé sur NextJS pour le comparer avec SvelteKit"
Date de la création de cette note : mardi 30 avril 2024.
Quel est l'objectif de ce projet ?
Ce projet remplace l'issue Étudier la version 12 de NextJS que j'ai créé en mars 2023.
Contexte : J'utilise SvelteKit depuis avril 2022, j'apprécie très fortement l'élégence de toutes les fonctionnalités de routing de SvelteKit.
Mon objectif est de créer un projet de type #POC pour apprendre les bases de NextJS et de comparer ce framework avec SvelteKit.
Artefacts à produire :
- Un repository GitHub qui contient le projet de type POC que j'aurais réaliser pour apprendre à utiliser NextJS
- Une note d'opinion qui présente ma comparaison entre SvelteKit et NextJS
Objectif secondaire de ce projet:
Je pense pas dire de bétise, en déclarant qu'en 2024 ReactJS est plus populaire que VueJS et Svelte, par conséquent, je pense que maitriser Nuxt me sera utile à l'avenir, par exemple pour des projets en freelance.
Je souhaite ajouter Nuxt sur mon CV.
Repository de ce projet :
Aucun pour le moment.
Ressources :
- Voir les notes que j'ai prise dans l'issue Étudier la version 12 de NextJS
Date de la création de cette note : 6 décembre 2024.
Quel est l'objectif de ce projet ?
En décembre 2017, convaincu par les avantages du modèle Monorepo, j'ai effectué un véritable changement de paradigme en abandonnant le modèle Multirepos.
Depuis, je n'ai eu aucun regret. J'utilise le modèle Monorepo dans tous mes projets, car il simplifie énormément la plutpart des workflow, notamment l'onboarding, grâce à des kits de développement simplifiés.
Cependant, le modèle Multirepos est très populaire, je le rencontre partout où j'interviens.
Cela me perturbe beaucoup, car je constate à chaque fois que ce modèle complique tout. L'onboarding, le flux de travail, de déploiement, la documentation…
L'objectif de ce projet est de documenter une méthode et des outils qui me permettent de maintenir en douceur, sans rien imposer, un monorepo qui contient un development kit de qualité, agréable à utiliser.
Je souhaite pouvoir travailler dans ce monorepo tout en envoyant mon travail dans des branches sur les multi repositories d'origine.
Je souhaite aussi pouvoir pull les changements des multi repositories vers mon monorepo.
Ces deux user stories me permettront d'améliorer le monorepo sans modifier le workflow de développement des autres membres de l'équipe.
Une fois le kit de développement du monorepo opérationnel, je pourrai présenter ce projet à l'équipe pour leur en montrer le fonctionnement, les avantages, ainsi que sa simplicité d'utilisation et d'onboarding.
Au final, il reviendra à l'équipe de décider si elle souhaite adopter ce paradigme ou non.
Repository de ce projet :
Ressources :
Projet 18 - "Créer un skeleton pour l'anonymisation des dumps de bases de données PostgreSQL"
Date de la création de cette note : 6 décembre 2024 .
Quel est l'objectif de ce projet ?
Réaliser un repository de type skeleton, qui contient un workflow permettant de générer et de mettre à disposition des développeurs des versions anonymisées des bases de données PostgreSQL de production, contenant des Personally Identifiable Information (PII).
Ce skeleton aura pour vocation d'être intégré dans des kits de développement.
Pourquoi je souhaite réaliser ce projet ?
Je rencontre réglulièment la problématique de mise à disponsition de dump de base de données de production, dans des environnements de développement des projets sur lesquels je travaille.
On m'a demandé plusieurs fois quel solution mettre en place pour anonymiser et partager une base de données de production.
Repository de ce projet :
anonymous-postgresql-devkit-skeleton
Ressources :
Projet 17 - Créer un POC de création d'une app smartphone avec Capacitor
Date de création de cette note : 2024-11-18.
Quel est l'objectif de ce projet ?
Je souhaite apprendre à créer une app smartphone avec Capacitor.
Idéalement, suivre la documentation "Using Capacitor in a Web Project" pour transformer l'app PWA créée dans Projet 16 - Créer un POC d'application PWA en application smartphone.
Capacitor fully supports traditional web and Progressive Web Apps. In fact, using Capacitor makes it easy to ship a PWA version of your iOS and Android app store apps with minimal work.
-- from
Todo :
- [x] Setup un projet Capacitor
- [x] Documenter comment configurer l'icône de l'application (voir 2024-12-27_1123)
- [x] Documenter comment configurer l'image de splash-screen (voir 2024-12-27_1123)
- [x] Étudier @capacitor/app-launcher
- [x] Setup une webview dans l'app, via
@capacitor/inappbrowser
- [x] Documenter la configuration de Deep Linking with Universal and App Links
- [ ] Jouer du contenu audio en background (peut-être basé sur
capacitor-native-audio
) - [ ] Étudier @capacitor/local-notifications
- [ ] Étudier @capacitor/push-notifications
- [ ] Tester l'envoi de notifications avec Firebase Cloud Messaging
- [ ] Tester l'envoi de notifications avec OneSignal
- [ ] Tester l'envoi de notifications avec Gotify
- [ ] Étudier
@capacitor/status-bar
- [ ] Modifier la couleur de fond de la "status-bar"
- [x] Essayer d'utiliser l'offre Apple Mac mini M1 de Scaleway pour builder l'app pour iOS
- [ ] À la fin, rédiger une note de comparaison de Capacitor versus PWABuilder.
- [ ] Déployer une version de l'app sur Google Play Store en privé, pour tester
- [ ] Déployer une version de l'app sur iOS App Store en privé, pour tester
Repository de ce projet :
Projet 16 - Créer un POC d'application PWA
Date de création de cette note : 2024-11-18.
Quel est l'objectif de ce projet ?
Je souhaite apprendre à créer des applications web de type Progressive Web Apps (PWA).
J'ai déjà une certaine culture dans ce domaine, mais je n'ai jamais créé d'application de ce type.
Voici les éléments que je souhaite apprendre / tester dans ce POC :
- [ ] Accélérer le chargement d'une app web qui a déjà été visitée (configurer correctement la gestion du cache)
- [ ] Rendre l'app web installable
- [ ] Define your app icons
- [ ] Display a badge on the app icon
- [ ] Essayer de publier l'app sur (basé sur PWABuilder)
- [ ] Google Play Store
- [ ] iOS App Store
- [ ] Implémenter l'envoie de notification via un worker
- [ ] L'application doit être accessible même offline.
Si possible, j'aimerais implémenter ce POC avec SvelteKit.
Idéalement, j'aimerais intégrer le travail de "Projet GH-339 - Implémenter un POC de Automerge" dans un PWA.
Ressources :
Projet 14 - Script de base d'installation d'un serveur Ubuntu LTS
Date de création de cette note : 2024-10-11.
Quel est l'objectif de ce projet ?
Je souhaite implémenter et publier un projet de "référence", de type skeleton, dont la fonction est d'installer les éléments de base d'un serveur Ubuntu LTS sécurisé.
Comme point de départ, je peux utiliser mon repository poc-bash-ssh-docker-deployement-example
et le faire évoluer.
Le script _install_basic_server_configuration.sh
se contente d'installer Docker.
J'aimerais y intégrer les recommandations présentes dans l'excellent article "Securing A Linux Server".
J'aimerais, entre autres, ajouter les fonctionnalités suivantes :
- [x] Amélioration de la configuration de OpenSSH ;
- [x] Installation et configuration de ufw ;
- [x] Mise en place de ipsum ;
- [x] Installation et configuration de fail2ban ;
- [x] Système d'installation / suppression de clés ssh ;
- [x] En option : installation et configuration de node exporter ;
- [x] En option : installation et configuration de l'envoi des logs de journald et Docker vers Loki en utilisatant Promtail (
installation et configuration de l'envoi des logs de journald vers Loki en utilisant Vector) ; - [x] En option : installation de configuration de Grafana ; avec Grizzly configuration des dashboards
- [x] des logs et
- [x] metrics des serveurs
- [x] En option : installer et configurer apticron pour envoyer un message dans les logs dès qu'un package de sécurité doit être installé.
- [x] Génération d'une alerte Grafana si une mise à jour de sécurité doit être installé
- [x] En option : envoie de notification sur smartphone en cas d'alerte Grafana, via ntfy
- [ ] En option : installation et configuration de Linux Audit ;
Le repository doit présenter cette installation :
- [x] via Vagrant
- [ ] sur un Virtual machine Scaleway avec Terraform
Repository de ce projet :
Ressources :
Projet 13 - "POC Elasticsearch sur un PKM"
Date de la création de cette note : 2024-08-17 .
Quel est l'objectif de ce projet ?
Suite à :
Contenu de ce constat, je vais peut-être redonner une chance à Elasticsearch malgré mon aversion pour la JVM 🤔. -- from
et dans le cadre de Projet 11 - "Première version d'un moteur web PKM", je souhaite réaliser une alternative à obsidian-vault-to-pg_search
et obsidian-vault-to-typesense
basé sur Elasticsearch.
Tâches :
- [x] Setup une instance Elasticsearch avec Docker
- [x] Utiliser la méthode Explicit mapping
- [x] Importer le contenu en version html dans ElasticSearch
- [x] Implémenté le support de Highlighting Text That Contains HTML Tags sur le contenu Markdown converti en HTML ;
- [x] Setup Language analyzers français
- [x] Setup Stop analyzer
- [x] Setup un Tokenizer reference
- [x] Setup Stemmer token filter français
- [x] Setup HTML strip character filter
- [ ] Implémenter les facets sur :
- [ ] Date de publication
- [x] Tags
- [ ] Type de note
- [x] Support de la pagination
- [x] Effectuer des recherches basées sur Query string query
- [ ] Benchmarker la vitesse de démarrage de Elasticsearch
- [ ] Benchmarker la consommation de RAM
- [ ] Benchmarker la vitesse de réponse des query
Repository de ce projet :
Ressources :
Projet 12 - "Implémentation nodemailer-scaleway-transport"
Date de la création de cette note : 2024-07-30.
Quel est l'objectif de ce projet ?
Implémenter et publier un plugin Nodemailer de transport pour l'API HTTP Transactional Email de Scaleway.
Pourquoi je souhaite réaliser ce projet ?
Les ports SMTP des instances computes de Scaleway sont par défaut fermés. Pour contourner cette contrainte, il est nécessaire d'effectuer une demande au support pour les ouvrir.
Partant de ce constat, #JaiDécidé d'utiliser le protocole HTTP autant que possible pour envoyer des e-mails.
Problème : je n'ai pas trouvé de plugin de transport Nodemailer pour Scaleway, ce qui a motivé la création de ce projet.
Repository de ce projet :
https://github.com/stephane-klein/nodemailer-scaleway-transport (non publié au moment de la rédaction de cette note)
Ressources :
Projet 10 - "Mettre en oeuvre DotTXT AI"
Date de la création de cette note : 2024-07-07.
Quel est l'objectif de ce projet ?
Essayer de générer du contenu fictif d'un knowlege management system, créé par Obsidian, que j'aimerais utiliser pour le projet obsidian-vault-to-apache-age-poc
Pour réaliser ce projet, j'aimerais essayer de mettre en œuvre :
- Outlines et/ou DotTXT AI (mentionné dans la note du 2024-06-06_1047)
- Replicate.com
Pourquoi je souhaite réaliser ce projet ?
Pour le fun et pour essayer de comprendre Outlines et DotTXT AI (mentionné dans la note du 2024-06-06_1047).
Repository de ce projet :
Non déterminé pour le moment