À propos du projet

7days-golang est un dépôt pédagogique de la série « 7 jours pour implémenter Go à partir de zéro », maintenu par geektutu, sous licence MIT. Ce dépôt aide les lecteurs à comprendre les principes internes de ces outils en implémentant progressivement des composants Go courants en 7 jours. Chaque sous-projet est organisé par jour dans des répertoires distincts, accompagné d'articles explicatifs sur le site de l'auteur. Il comprend principalement quatre sous-projets : 1. **Framework Web Gee (gee-web)** : Un framework Web imitant gin. Les sept jours couvrent successivement : l'interface de base http.Handler, la conception du contexte (Context), le routage basé sur un arbre Trie, le contrôle des groupes de routes, le mécanisme de middleware, l'intégration de templates HTML, ainsi que la gestion des paniques et la robustesse. 2. **Cache distribué GeeCache (gee-cache)** : Un système de cache distribué imitant groupcache. Le contenu inclut : la stratégie d'éviction LRU, le cache concurrent local, le serveur HTTP, le hachage cohérent, la communication entre nœuds distribués, l'implémentation de singleflight pour éviter l'effondrement du cache, et l'utilisation de Protobuf comme format d'échange de données. 3. **Framework ORM GeeORM (gee-orm)** : Un framework ORM conçu en référence à xorm et gorm. L'auteur précise que, gorm v2 étant encore en développement et xorm ayant une conception plus facile à comprendre, l'interface s'inspire principalement de xorm, tandis que certains détails d'implémentation s'appuient sur gorm. Les sept jours incluent : les bases de database/sql, le mappage objet-table, l'insertion et la requête d'enregistrements, les opérations chaînées et la mise à jour/suppression, les hooks, le support des transactions, et la migration de base de données (Migrate). 4. **Framework RPC GeeRPC (gee-rpc)** : Un framework RPC basé sur la bibliothèque standard net/rpc de Go, avec environ 1 000 lignes de code. Il ajoute des fonctionnalités telles que l'échange de protocoles, la découverte et l'enregistrement de services, l'équilibrage de charge, la gestion des délais d'attente, et le support de débogage via le protocole HTTP. Les jours couvrent : le serveur et le codage des messages, le client supportant la concurrence et l'asynchrone, l'enregistrement des services, la gestion des délais, le support du protocole HTTP, l'équilibrage de charge, ainsi que la découverte de services et le registre. De plus, le dépôt inclut quatre exemples WebAssembly en Go (demo-wasm), démontrant Hello World, l'enregistrement de fonctions, la manipulation du DOM et les fonctions de rappel, accompagnés de l'article « Tutoriel concis Go WebAssembly ». L'auteur recommande également des lectures complémentaires, notamment « Tutoriel concis Go », « Questions d'examen et d'entretien Go » et « Programmation haute performance en Go », suggérant aux lecteurs de maîtriser d'abord la syntaxe de base de Go, la programmation concurrente et la gestion des dépendances avant de se lancer dans la pratique. L'ensemble du dépôt convient aux apprenants de Go souhaitant approfondir leur compréhension des mécanismes internes des frameworks Web, des caches distribués, des ORM et des RPC en lisant et en écrivant du code source.