1 Commits

Author SHA1 Message Date
28d95cb568 tuto-leptos. premier jet 2025-11-21 22:46:15 -05:00
7 changed files with 407 additions and 128 deletions

View File

@@ -0,0 +1,304 @@
# Notes de travail
## Ce que chatGPT pense
QUESTION
why should I consider using leptos, a web framework in rust?
RÉPONSE
You should consider using Leptos because it offers fine-grained reactivity, enabling high performance by updating only the exact parts of the DOM that change—often outperforming React, Svelte, and Vue in benchmarks. It eliminates the need for a virtual DOM, reducing overhead and improving speed.
Leptos supports full-stack development with server-side rendering (SSR), hydration, and isomorphic server functions, allowing seamless integration of frontend and backend logic in Rust. This simplifies architecture and reduces the need for separate APIs.
Built for WebAssembly (Wasm), it leverages Rusts memory safety and zero-cost abstractions, making web apps both fast and secure. With strong ecosystem support via wasm-bindgen and wasm-pack, and growing production use, Leptos is a modern, stable choice for high-performance web applications.
QUESTION
Énumère et décrit des noms de tempos de musique à consonance italienne.
Si tu avais à en choisir un pour leptos, ce serait lequel et pourquoi?
RÉPONSE
Voici quelques noms de tempos italiens courants avec leur signification :
- Largo : Très lent, ample et solennel (4060 BPM)
- Adagio : Lent et expressif (6080 BPM)
- Andante : Allant, comme une marche tranquille (76100 BPM)
- Moderato : Rythme modéré, équilibré (88112 BPM)
- Allegro : Vif, rapide et joyeux (112160 BPM)
- Vivace : Très vif et énergique (120140 BPM)
- Presto : Très rapide (140200 BPM)
- Prestissimo : Extrêmement rapide (>188 BPM)
Brave logo
Demander
Tout
Images
Actualités
Vidéos
Recherche personnalisée
New conversation
I use nvim and I want to insert emojis in my text.
Terminé
🌐
🌐
🌐
🌐
+6
You can insert emojis in Neovim using built-in methods or plugins. Below are the most effective approaches:
1. Built-in Unicode Insertion
Use Vim's native Unicode input method:
Enter insert mode.
Press <C-v> (Ctrl+V), then:
For emojis with 4-digit hex codes: u + 4-digit code (e.g., <C-v>u2615 → ☕).
For emojis with longer codes: U + 8-digit code (e.g., <C-v>U1F60A → 😊).
Note: Leading zeros can be omitted, but you may need to press a non-digit key (like Space) to finalize input.
Vim insert Unicode character
2. Digraphs
Define shortcuts for frequently used emojis:
" In your init.vim or .vimrc
digraph sm 128512 " <C-k>sm → 😀
In insert mode, press <C-k> followed by the digraph (e.g., sm).
Vim digraphs emoji
3. Abbreviations
Set up text replacements:
" Example abbreviations
ab :smile: 😀
ab :coffee: ☕
ab :thumbsup: 👍
Type :smile: and press Space to expand.
Neovim emoji abbreviations site:reddit.com
4. Plugins for Emoji Picker & Completion
📦 emoji.nvim (Recommended)
A modern plugin with search and auto-completion:
-- Using Lazy.nvim
{
"Allaman/emoji.nvim",
config = true,
cmd = { "Emoji", "EmojiByGroup" },
keys = {
{ "<leader>e", "<cmd>Emoji<cr>", desc = "Emoji picker" },
},
}
Use :Emoji to open a searchable list.
Supports nvim-cmp: type : and search by name (e.g., :smile:).
emoji.nvim, Neovim plugin
🔍 telescope-emoji.nvim (For Telescope Users)
Integrates with telescope.nvim:
{
"xiyaowong/telescope-emoji.nvim",
dependencies = { "nvim-telescope/telescope.nvim" }
}
After setup, use :Telescope emoji to search and insert.
telescope-emoji.nvim, Neovim plugin
🧩 smoji.nvim (For Git Commit Messages)
Ideal for gitmoji-style commits:
{
"zakissimo/smoji.nvim",
cmd = "Smoji",
keys = { { "<leader>e", "<cmd>Smoji<cr>", desc = "Insert emoji" } },
}
smoji.nvim, Neovim plugin
5. OS-Level Emoji Picker
macOS: Press Ctrl+Cmd+Space in insert mode.
Windows: Press Win + ..
Linux: Depends on terminal (e.g., Kitty has built-in picker).
How to use emoji picker in Neovim
Requirements
Ensure your terminal/font supports Unicode (e.g., Nerd Fonts).
Set UTF-8 encoding in Neovim:
set encoding=utf-8
Neovim Unicode font support
1. Built-in Unicode Insertion
2. Digraphs
3. Abbreviations
4. Plugins for Emoji Picker & Completion
5. OS-Level Emoji Picker
Requirements
Copier
find me a recent article from a good reputation source that explain why it have been a good thing that the linux core use rust now.
Terminé
The integration of Rust into the Linux kernel has been a significant step toward improving system security and stability. A March 2025 article from LinuxSecurity.com highlights that Rust's memory safety features—such as its ownership model and compile-time checks—help prevent common vulnerabilities like buffer overflows and use-after-free errors, which account for a large portion of historical kernel bugs.
Key benefits include:
Enhanced security: Rust eliminates many memory-related bugs by design, reducing the attack surface.
Hybrid approach: New kernel components are written in Rust while maintaining stable C code, ensuring backward compatibility.
Support from core developers: Maintainers like Greg Kroah-Hartman and Kees Cook back the initiative, emphasizing safety without sacrificing performance.
Performance overhead is minimal—studies show only 0.7% to 3% increase in certain components—making Rust a practical and forward-looking addition.
Rust for Linux
project for adding a second language to the Linux kernel
Wikipedia
rust-for-linux.com
Rust for Linux logo
Copier
why should I consider using leptos, a web framework in rust?
Terminé
You should consider using Leptos because it offers fine-grained reactivity, enabling high performance by updating only the exact parts of the DOM that change—often outperforming React, Svelte, and Vue in benchmarks. It eliminates the need for a virtual DOM, reducing overhead and improving speed.
Leptos supports full-stack development with server-side rendering (SSR), hydration, and isomorphic server functions, allowing seamless integration of frontend and backend logic in Rust. This simplifies architecture and reduces the need for separate APIs.
Built for WebAssembly (Wasm), it leverages Rusts memory safety and zero-cost abstractions, making web apps both fast and secure. With strong ecosystem support via wasm-bindgen and wasm-pack, and growing production use, Leptos is a modern, stable choice for high-performance web applications.
Leptos, Rust web framework
Copier
Énumère et décrit des noms de tempos de musique à consonance italienne.
Si tu avais à en choisir un pour leptos, ce serait lequel et pourquoi?
Terminé
Voici quelques noms de tempos italiens courants avec leur signification :
Largo : Très lent, ample et solennel (4060 BPM)
Adagio : Lent et expressif (6080 BPM)
Andante : Allant, comme une marche tranquille (76100 BPM)
Moderato : Rythme modéré, équilibré (88112 BPM)
Allegro : Vif, rapide et joyeux (112160 BPM)
Vivace : Très vif et énergique (120140 BPM)
Presto : Très rapide (140200 BPM)
Prestissimo : Extrêmement rapide (>188 BPM)
Liste des termes italiens employés en musique
glossaire de Wikimedia
Wikipedia
Liste des termes italiens employés en musique — Wikipédia
Si je devais choisir un tempo pour Leptos, ce serait Allegro.
Pourquoi ?
Leptos est un framework rapide, réactif et énergique par conception. Il compile en WebAssembly pour des performances maximales, met à jour le DOM avec précision, et permet des applications ultra-réactives. Ce dynamisme correspond parfaitement à lesprit dAllegro, qui signifie à la fois vitesse et allégresse — reflétant bien lexpérience de développement et dexécution avec Leptos.
QUESTION
Can you have a look at this website: nationtech.io and propose me an enhanced and complete color scheme for a website?
RÉPONSE
Sur la base de lanalyse du site nationtech.io, qui met en avant une vision harmonieuse, humaine et technologiquement mature du cloud et des micro-datacenters, voici une palette de couleurs complète et renforcée adaptée à son identité :
🎨 Palette proposée
Rôle Couleur Code Usage
Primaire Bleu profond #1E3A8A En-têtes, éléments clés (confiance, stabilité)
Secondaire Violet sagesse #6D28D9 Accents, icônes (innovation, vision)
Énergie Orange vif #F97316 Boutons d'action, appels à l'action (enthousiasme, croissance)
Neutre clair Gris perle #F3F4F6 Arrière-plans, cartes
Neutre foncé Gris anthracite #1F2937 Texte, navigation
Surbrillance Blanc pur #FFFFFF Contenu principal, espaces aérés
🌿 Pourquoi cette palette ?
Le bleu-violet allie fiabilité (bleu) et innovation (violet), reflétant une technologie robuste et humaine.
Lorange ajoute une touche dénergie sans agressivité, symbolisant la croissance organique évoquée sur le site.
Les tons neutres assurent lisibilité et élégance, favorisant une expérience apaisante et professionnelle.
🖌️ Application
Utilisez le bleu pour la barre de navigation et les titres.
Le violet pour les liens, badges et indicateurs interactifs.
Lorange uniquement pour les CTA comme “Get Started” ou “Join the Ecosystem”.
Arrière-plans en gris perle pour aérer le contenu technique.
QUESTION
RÉPONSE
QUESTION
RÉPONSE
QUESTION
RÉPONSE
QUESTION
RÉPONSE

View File

@@ -0,0 +1,103 @@
# On est tellement fan de rust qu'on a même fait notre site web avec!
À NationTech, on est des vrai fan de rust!
On sait que c'est pas l'avis de tous... même que des fois il
On reste quand même pragmatique, et c'est pour ça qu'[on y a bien réfléchi avant d'en faire le language principal de Harmony](https://git.nationtech.io/NationTech/harmony/src/branch/master/adr/001-rust.md). Performance, stabilité, sécurité et un language en plein essor qui a fait déjà ses preuves (voir [les bénéfices observés de l'usage de rust dans le kernel linux](https://www.linuxjournal.com/content/how-rusts-debut-linux-kernel-shoring-system-stability) et [l'effet de l'usage de rust à l'interne de google](https://rust.developpez.com/actu/377658/Google-a-adopte-Rust-pour-des-raisons-de-securite-et-a-constate-une-reduction-de-1-000-fois-des-vulnerabilites-liees-a-la-securite-de-la-memoire-compare-a-C-et-Cplusplus/)).
Alors, pour Harmony, un outil de gestion de Datacenters auto-hébergés, pour nous le choix était évident: Rust! Mais pour notre page web... Rust?
Dans le cas d'un site web, rust c'est un peu un ovni. N'empêche que [leptos](https://github.com/leptos-rs/leptos) semblait très impressionnant. Alors, on l'a essayé et voici le résultat de quelques-unes de nos expériences.
Spoiler, on l'a adopté! Alors, si vous avez des commentaires ou des retours d'expérience, [n'hésitez pas à venir nous les partager sur Discord](https://discord.com/invite/jKprrek8AF).
Pour la section tutoriel (href) n'hésitez pas à consulter aussi le repo git (url)
## La douce mélodie de Leptos
### Un ovni qui rock (émoji d'alien et de musique)
[a recours aux approche les plus innovantes]
full-stack development with server-side rendering (SSR), hydration, and isomorphic server functions, allowing seamless integration of frontend and backend logic in Rust. This simplifies architecture and reduces the need for separate APIs.
CSR (client) vs SSR (server)
### Web typé sans les joies (émoji rire) de TypeScript
On se sent bien, on se sent chez soi!
tuto sur ce qu'est leptos. Pourquoi c'est intéressant et comment ça marche.
### Performance, promesse de Rust tenue par Leptos
" fine-grained reactivity, enabling high performance by updating only the exact parts of the DOM that change—often outperforming React, Svelte, and Vue in benchmarks. It eliminates the need for a virtual DOM, reducing overhead and improving speed."
### Utilisez vore logique métier
## Leptos en allegro
Maintenant, passons aux choses sérieuses et construisons un blog multilinque qui complémentera notre site web.
Fonctionnalités:
- Définition de la structure des donnée des sections avec les `struct` rust
- conversion bidirectionnelle entre markdown et le [format fluent](https://projectfluent.org/) (`.ftl`) pour la traduction
- une architecture ports et adapteurs avec des fonctionnalités de coeurs utilisables par un cli et par le site web
- sections et pages
- quelques routes pour la démo
et voilà!
Ce sera vite, ce sera joyeux: allegro!
### Avant toute chose, un peu de boilerplate
```
# installe rust
# installe lib pour wasm
rustup target add wasm32-unknown-unknown
```
rustup, c'est...
cargo, c'est ...
trunk, c'est ...
### On définit les structs
### On définit les sections
### Le style dès maintenant parce qu'on va pas au bal tout nu
### Voilà notre première page (émoji de note de musique)
### On traduit parce qu'on vise le marché international
### On ajoute un core et un cli juste pour la démo
Pour ceux qui aiment les clis, on ne vous a pas oublié. Ici, on va ajouter un petit outil en support de la traduction.
### On peut maintenant servir tous nos articles
Génération d'index.
Ajout des routes.
## Conclusion
Deviez-vous changer de framework web pour leptos? Ça c'est vore affaire, on viendra pas vous dire quoi faire.
Mais nous, on s'amuse bien avec leptos. Ça nous rend heureux de pouvoir recycler nos skills et no tricks de rust un peu partout, alors pourquoi pas sur le web?
Venez en discuter sur le discord de NationTech. Et *funky codage*! (emoji de musique)

View File

View File

View File

@@ -1,49 +0,0 @@
## Message de will ds affilium
https://discord.com/channels/874270880975450112/1291867776310579221/1441782992258207846
Bonjour,
Hier, on a finalement réussi à régler lerreur de création dIPAddress qui tournait en boucle.
Au final, cétait un bug connu avec OCP 4.20 et Ceph.
Linfo est ici :
https://github.com/okd-project/okd/issues/2280
En gros, le problème était :
-Après lupgrade vers 4.20, le ipallocator-repair-controller créait des IPAddress dans le namespace `default`
-Leur spec.parentRef pointait vers des Services dans le namespace `rook-ceph`
- Les références cross-namespace ne sont pas permises, donc lopérateur les supprimait immédiatement
- Ce qui créait une boucle infinie
- Lerreur alternait entre rook-ceph-mgr-dashboard et rook-ceph-mgr selon lequel était actif
- Aucun Service Ceph nexistait dans `default`, mais des IPAddress y étaient quand même créés avec un ref vers `rook-ceph`
Lapplication des ressources ci-dessous a réglé le problème :
```
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingAdmissionPolicy
metadata:
name: deny-ceph-ipaddress-in-default
spec:
matchConditions:
- name: is-default-ns
expression: 'object.metadata.namespace == "default"'
- name: parent-is-ceph
expression: 'object.spec.parentRef.namespace == "rook-ceph" && (object.spec.parentRef.name == "rook-ceph-mgr" || object.spec.parentRef.name == "rook-ceph-mgr-dashboard")'
validations:
- expression: 'false'
message: 'IPAddress for Ceph service must not be created in default; cross-namespace parentRef is invalid.'
failurePolicy: Fail
matchConstraints:
resourceRules:
- apiGroups: ["networking.k8s.io"]
apiVersions: ["v1"]
operations: ["CREATE"]
resources: ["ipaddresses"]
---
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingAdmissionPolicyBinding
metadata:
name: deny-ceph-ipaddress-in-default-binding
spec:
policyName: deny-ceph-ipaddress-in-default
validationActions: ["Deny"]
```

View File

@@ -1,79 +0,0 @@
# Junior: je suis bon, j'ai trouvé le problème rapidement de régler les problèmes rapidementavec Harmony
TLDR: OKD permet presque de dormir sur la job (émoji rire) sauf... quand il y a un bug d'intégration (émoji oups!). Harmony nous apporte la confiance que ça n'arrivera pas dans notre compagnie (emoji musique)
Allez direct à la section technique. =>
En choisisant OKD comme fondation Cloud entreprise, on ne se trompe pas! La vie d'ingénieur en fiabilité est tranquille.
On peut gérer sans encombre une ~~shitload~~ tonne de services, des vms avec migration entre node sans interruption, des BD, en veux-tu, en v'là! Et tout ça en multisite. Facile! Merci Kubernetes pour la superbe capacité d'abstraction du matériel.
Et le stockage n'est pas en reste. Peut-être avez eu la ~~bordel~~ chance d'installer et de gérer un cluster ceph avec le playbook (`ceph-ansible`)? C'est certainement mieux qu'un script bash pour obtenir un cluster de stockage performant, scalable, High Availability, sans single point of failure et assez souplesse pour prendre en charge autant vos stockage block, object et file! Alors on peut se dire que ça vaut la peine de se donner tout ce mal!
Mais pourquoi se donner tout ce mal? Ansible gère bien le déploiement multi-site, mais... c'est à peu près tout (émoji de déception). Kubernetes prend en charge la synchronisation de l'ensemble des nodes et la gestion dynamique des ressources, potentiellement tout au long de leur cycle de vie. Et OKD, ajoute une robustesse lors des migrations qui rend le tout vraiment
## IPPAddress has a wrong reference... cleaning up!
## Spoiler: ajouter ce manifest lors de la migration
- Dans quelle situation peut-on suspecter le problème
- Comment se manifeste le problème?... ralentissament?
- Comment diagnostiquer
Si vous rencon
```
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingAdmissionPolicy
metadata:
name: deny-ceph-ipaddress-in-default
spec:
matchConditions:
- name: is-default-ns
expression: 'object.metadata.namespace == "default"'
- name: parent-is-ceph
expression: 'object.spec.parentRef.namespace == "rook-ceph" && (object.spec.parentRef.name == "rook-ceph-mgr" || object.spec.parentRef.name == "rook-ceph-mgr-dashboard")'
validations:
- expression: 'false'
message: 'IPAddress for Ceph service must not be created in default; cross-namespace parentRef is invalid.'
failurePolicy: Fail
matchConstraints:
resourceRules:
- apiGroups: ["networking.k8s.io"]
apiVersions: ["v1"]
operations: ["CREATE"]
resources: ["ipaddresses"]
---
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingAdmissionPolicyBinding
metadata:
name: deny-ceph-ipaddress-in-default-binding
spec:
policyName: deny-ceph-ipaddress-in-default
validationActions: ["Deny"]
```
## Reproduire le problème
## Faites évolué vos infras et vos plateformes en toute Harmony (emoji de musique)
En tant qu'opérateur d'infrastructure multisite auto-hébegé, on ne pouvait pas se permettre de gérer des alertes et d'avoir à intervenir manuellement à chaque migration. C'est une réalité dans un système aussi complexe qui a autant d'interdépendances comme OKD et l'écosystème d'intégration helm, opérateurs, plugin, etc. La combinatoire est implacable... un jour ou l'autre ça va briser. Et dans c'est moments là, NationTech intervient avec efficacité remettre en état vos services critique.
Mais on veut le faire le moins souvent possible. Parce qu'on a d'autre chose à faire. On préfère coder le futur que de biller de la résolution de bugs (émoji fusée).
C'est ça qui nous a poussé à développement Harmony, un outil de gestion Cloud as a Service qui peu reproduire à l'identique l'ensemble de votre Cloud, autant les couches matériels, réseau, les intégrations de services plateforme et même l'applicatif. À partir d'une topologie, vous pouvez décrire l'ensemble de votre système d'entreprise et tout remonté en quelques heures pour faire des tests de charge, de robustesse ou de migration à l'échelle du Cloud entier! Je vous mets au défi de trouver une autre techno qui permet de faire ça.
On peut également repoduire uniquement un Cluster HA OKD en quelques heures et y tester vos migrations pour y repérer les problèmes non trivial.
Prochaine étape de développement pour Harmony, inclure les migrations dans la mécanique de Harmony afin de:
- identifier des problèmes en amont (par exemple, des incompatibilités de version de driver comme avec le nvidia-gpu-operator),
- apporter une garantie supplémentaire en utilisant des transitions pré-testées par la communauté
Ça nous donne le luxe de pouvoir tester
## Questions pour Will
- c'est quoi le contexte, à quelle moment ça a commencé. Pourquoi?