Skip to content

Commit

Permalink
chore: update more sections/links
Browse files Browse the repository at this point in the history
  • Loading branch information
fraxken committed Jun 23, 2024
1 parent 2df5fc1 commit 474a156
Show file tree
Hide file tree
Showing 15 changed files with 58 additions and 25 deletions.
2 changes: 0 additions & 2 deletions en/chapters/11-monitoring/1-introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

## Introduction

> ⚠️ The monitoring section is not yet very complete. Expect a multi-page improvement in the coming months.
As a developer, it is important to know how to identify the metrics and practices that will allow us to reflect and build monitoring for our applications (web or desktop). **We will mainly talk about APM here**.

Some modern frameworks like fastify already have [packages](https://www.npmjs.com/package/fastify-metrics) to export metrics (promeheus format).
Expand Down
1 change: 1 addition & 0 deletions en/chapters/12-system/1-introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ I will surely disappoint many, but anything related to the system is very far fr

It is nevertheless important to know how to manage at least (most of the time it is just a question of good will). In France we have the excellent [youtube channel of Xavki](https://www.youtube.com/c/xavki-linux/videos) which talks about a lot of subjects around various OS, Docker, etc… Moreover, as far as I'm concerned, I'm not particularly a big fan of everything related with the frequent war between OSes... As a monitoring solution developer, I have a duty to set foot on the different existing solutions, which means that I have to experience different things (to already have a little experience in low-level binding on the different OS, I can guarantee you that there are always good things and problems on each system).

> [!CAUTION]
> ⛔ I say it often in this document but never lock yourself in an ideological bubble.
---
Expand Down
4 changes: 4 additions & 0 deletions en/chapters/5-nodejs/13-core-modules/5-timers.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@ Note that it is possible to call the unref method on a timer so that the event-l

This is for example the case in the [SlimIO/Config](https://github.com/SlimIO/Config/blob/master/src/config.class.js#L272) package where a setInterval is used to constantly clean up Observables that have been closed (to avoid a memory-leak). However, I don't want the timer in question to prevent the event-loop from stopping if someone uses my package :)

#### Links

- [Your Node is Leaking Memory? setTimeout Could be the Reason](https://lucumr.pocoo.org/2024/6/5/node-timeout/)

---

⬅️ [🌟 The different core modules: FileSystem](./4-fs.md) |
Expand Down
6 changes: 3 additions & 3 deletions en/chapters/6-database/10-orm.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ What is certain is that we must stop using [Sequelize](https://sequelize.org/) w

Instead, I recommend you take a look at the following projects:

- [TypeORM](https://typeorm.io/#/) (TypeORM supports both Active Record and Data Mapper patterns)
- [MikroORM](https://mikro-orm.io/) (TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns).
- [MikroORM](https://mikro-orm.io/)
- [Kysely](https://kysely.dev/) - If you're looking for a query builder

Note that if you use the Adonis.js framework they also have their own ORM, [Lucid](https://adonisjs.com/docs/4.0/lucid).
Note that if you use the Adonis.js framework they also have their own ORM, [Lucid](https://lucid.adonisjs.com/docs/introduction).

There are a whole bunch of packages available in the ecosystem, but I am not necessarily convinced by most of them (Afterwards there are surely some that I myself have not yet discovered).

Expand Down
6 changes: 3 additions & 3 deletions fr/README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# Devenir un(e) développeur(se) Node.js 🐢🚀

Ce document a pour objectif de livrer mon expérience **personnelle** et mes ressources à celles et ceux qui souhaiteraient devenir des développeurs back-end [Node.js](https://nodejs.org/fr/) 😎.
Ce document a pour objectif de partager mon **expérience personnelle** et mes ressources avec celles et ceux qui souhaitent devenir des développeurs back-end [Node.js](https://nodejs.org/fr/) 😎.

Mon expérience et mes opinions vont fortement influencer l’écriture du document 👿 (je vous invite donc à conserver un fort esprit critique envers moi pour vous construire votre propre chemin 🐤).
Mon expérience et mes opinions influenceront fortement l’écriture de ce document 👿. Je vous invite donc à garder un esprit critique pour construire votre propre chemin 🐤.

Ce document n’est pas figé et il évoluera autant que je l’estime nécessaire à travers le temps.
Ce document n’est pas figé et évoluera au fil du temps, selon les besoins et les nouvelles connaissances acquises.

<img src="../assets/nodejs_logo.png" alt="Logo de Node.js" width="500">

Expand Down
14 changes: 7 additions & 7 deletions fr/chapters/1-introduction/1-introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,22 +26,22 @@ Quelques articles sur mon équipe / mon travail;
## 👊 Pour qui ?

Ce document s'adresse principalement à des développeurs (débutants ou non 🐣) qui souhaitent s’orienter vers une carrière **back-end** Node.js. Potentiellement à des personnes souhaitant établir une carrière en transverse ayant la motivation pour subir une montée en compétences aussi bien back que front.
Ce document s'adresse principalement aux développeurs, débutants ou non 🐣, qui souhaitent s’orienter vers une carrière **back-end** Node.js. Il est aussi destiné à ceux qui souhaitent établir une carrière transverse, avec la motivation de monter en compétences aussi bien en back-end qu’en front-end.

> [!IMPORTANT]
> En ce qui me concerne j’avais déjà une expérience non négligeable en front-end lors de mes débuts en 2013. Je ne peux donc pas vous en vouloir si vous souhaitez avoir les deux cordes à votre arc (**<u>mais attention c’est loin d’être simple</u>**).
> Pour ma part, j'avais déjà une expérience non négligeable en front-end lors de mes débuts en 2013. Je ne peux donc pas vous en vouloir si vous souhaitez maîtriser ces deux aspects (**<u>mais attention, ce n’est pas simple</u>**).
Le document n’a pas forcément pour objectif de partir dans de la vulgarisation dès lors **que des ressources existantes le font déjà très bien** (sauf si je pense avoir une opportunité et les compétences nécessaires pour le faire mieux). Je préfère le voir comme **un portail vers un ensemble de références** de bien meilleure qualité.
L'objectif de ce document n'est pas de vulgariser, car de nombreuses ressources existantes le font déjà très bien (sauf si je pense avoir une opportunité et les compétences nécessaires pour le faire mieux). Je préfère le voir comme un **portail vers un ensemble de références** de meilleure qualité.

Beaucoup de références ne sont pas en français alors **<u>il est fortement recommandé d’avoir un bon niveau en anglais</u>** (si ce n’est pas le cas il va vous falloir apprendre).
Beaucoup de références ne sont pas en français, **<u>Il est donc fortement recommandé d’avoir un bon niveau en anglais</u>** (si ce n’est pas le cas, il va vous falloir apprendre).

## 💬 Pourquoi ?

C’est toujours un plaisir pour moi d’aider les autres et de partager mon savoir et mes références ❤️. Je le fais déjà au quotidien au travers des différentes communautés et groupes dans lesquelles je suis actif.
C’est toujours un plaisir pour moi d’aider les autres et de partager mon savoir et mes références ❤️. Je le fais déjà au quotidien à travers les différentes communautés et groupes dans lesquels je suis actif.

C’est aussi pour moi l’occasion de travailler à la construction d’un document rassemblant une majeure partie des éléments qui ont constitué mon parcours 📚 (et potentiellement **me remettre en question et faire un nouveau travail de recherche**). Cela devrait me permettre à titre personnel de former des juniors et mentee beaucoup plus facilement en les aidant avec mon propre document 💡.
C’est aussi l’occasion pour moi de travailler à la construction d’un document rassemblant une majeure partie des éléments qui ont constitué mon parcours 📚. Cela pourrait potentiellement me remettre en question et me **pousser à faire un nouveau travail de recherche**. À titre personnel, cela devrait me permettre de former des juniors et des mentees beaucoup plus facilement en les aidant avec mon propre document 💡.

De plus, je suis attristé de voir qu’en France __nous manquons encore cruellement de développeurs qualifiés en Node.js__. Beaucoup de mes clients ont un réel manque de candidats ayant une réelle connaissance ou intérêt envers le monde du back-end (la plupart des développeurs se concentrent bien souvent sur leur parcours front et/ou mobile).
De plus, je suis attristé de voir qu’en France __nous manquons encore cruellement de développeurs qualifiés en Node.js__. Beaucoup de mes clients ont un réel manque de candidats ayant une véritable connaissance ou un intérêt envers le monde du back-end (la plupart des développeurs se concentrent bien souvent sur leur parcours front et/ou mobile).

## 📌 Légendes
Le document comporte un ensemble de références (liens) vers des vidéos et articles qui sont segmentés par niveau de difficulté et langue ( FR français ou EN anglais).
Expand Down
2 changes: 0 additions & 2 deletions fr/chapters/11-monitoring/1-monitoring.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# 🔬 Monitoring

> ⚠️ La section monitoring n’est pas encore très complète. Attendez-vous à une amélioration de plusieurs pages dans les mois à venir.
## Introduction
En tant que développeur il est important de savoir identifier les métriques et pratiques qui vont nous permettre de réfléchir et construire un monitoring pour nos applications (web ou desktop). **Nous parlerons surtout d’APM ici**.

Expand Down
1 change: 1 addition & 0 deletions fr/chapters/12-system/1-system.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Je vais sûrement en décevoir beaucoup, mais tout ce qui est en lien avec le sy

Il est néanmoins important de savoir au minimum se démerder (la plupart du temps c’est juste une question de bonne volonté). En France nous avons l'excellente chaîne youtube de [Xavki](https://www.youtube.com/c/xavki-linux/videos) qui parle d’énormément de sujets autours de divers OS, Docker, etc… Par ailleurs, en ce qui me concerne je ne suis pas particulièrement un grand fan de tout ce qui est en lien avec la guerre fréquente entre les OS… En tant que développeur de solution de monitoring, j’ai le devoir de mettre les pieds sur les différentes solutions existantes ce qui fait que je suis amené à vivre différentes choses (pour avoir déjà un peu d’expérience en binding bas niveau sur les différents OS, je peux vous garantir qu’il y a toujours des trucs bien et des problèmes sur chaque système).

> [!CAUTION]
> ⛔ Je le dis souvent dans ce document mais ne vous enfermez jamais dans une bulle idéologique.
## Scripting: Shell, Bash et Powershell
Expand Down
10 changes: 5 additions & 5 deletions fr/chapters/2-javascript/1-introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

## 🌞 Introduction

Devenir développeur back-end c’est avant tout comprendre que **vous allez passer vos journées à écrire des codes en JavaScript** 😵 (un développeur front aura bien souvent en comparaison beaucoup d’autres tâches comme implémenter des maquettes ce qui lui permettra de respirer).
Devenir développeur back-end, c’est avant tout comprendre que **vous allez passer vos journées à écrire du code en JavaScript** 😵. Un développeur front-end, en comparaison, aura bien souvent d’autres tâches comme implémenter des maquettes, ce qui lui permet de respirer un peu.

Je rencontre tous les jours des développeurs qui passent leur temps à galérer car ils ne font jamais les efforts nécessaires pour **combler leur manque de compréhension** des fonctionnalités qui composent JavaScript ou Node.js 😐 (Promise, Symbol, Reflection, Generators, Streams, Event-loop).
Je rencontre tous les jours des développeurs qui galèrent parce qu’ils ne font jamais les efforts nécessaires pour **combler leurs lacunes en compréhension** des fonctionnalités de JavaScript ou Node.js 😐 (Promise, Symbol, Reflection, Generators, Streams, Event-loop, etc.).

Il est donc nécessaire de vous entraîner et vous former bien plus intensivement que vos collègues qui aspirent à devenir “**majoritairement**développeur front-end (Même si le front-end lui aussi devient de plus en plus technique avec quelquefois des frameworks qui demandent une maîtrise importante de JavaScript).
Il est donc nécessaire de vous entraîner et de vous former bien plus intensivement que vos collègues qui aspirent à devenir “**majoritairement**développeurs front-end. Même si le front-end devient lui aussi de plus en plus technique, avec des frameworks qui demandent une maîtrise importante de JavaScript, le back-end requiert une compréhension encore plus profonde et spécialisée.

Les entretiens **se jouent majoritairement sur votre maîtrise du langage** (plus vous êtes à l’aise et plus vous aurez une chance d’obtenir le boulot). Que ce soit pour un algorithme, un challenge ou même la création d’un projet (une API http par exemple).
Les entretiens **se jouent majoritairement sur votre maîtrise du langage**. Plus vous êtes à l’aise, plus vous aurez de chances d’obtenir le job. Que ce soit pour un algorithme, un challenge, ou même la création d’un projet (comme une API HTTP).

Si vous passez dix minutes pour vous souvenir de comment mettre une clé dans un objet, **alors il est fort probable que vous avez grillé votre entretien** 😭. Avoir de l’expérience avec un framework ou une librairie est une bonne chose, mais cela ne doit pas se faire au prix d’un manque de compétences en JavaScript.
Si vous passez dix minutes à vous souvenir de comment mettre une clé dans un objet, il est fort probable que **vous avez grillé** votre entretien 😭. Avoir de l’expérience avec un framework ou une librairie est une bonne chose, mais cela ne doit pas se faire au prix d’un manque de compétences en JavaScript (ainsi que des compétences plus abstraites comme la conception et l'architecture).

> [!IMPORTANT]
> 💡 Les conseils et références qui seront abordés dans le chapitre JavaScript ont été “un peu” discutés dans [un talk](https://www.youtube.com/watch?v=k4cABQN46qE) entre Rayed Benbrahim et moi. Le format vidéo vous conviendra peut-être mieux pour une première approche.
Expand Down
4 changes: 4 additions & 0 deletions fr/chapters/2-javascript/4-online-courses-talks-articles.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,9 @@ Aussi un excellent développeur et vulgarisateur de concepts et fonctionnalités
- EN **[A savoir]** [Property order is predictable in JavaScript objects since ES2015](https://www.stefanjudis.com/today-i-learned/property-order-is-predictable-in-javascript-objects-since-es2015/)
- EN **[A savoir]** [Quick tip: reusable Array search predicates](https://jasonformat.com/reusable-array-search-predicates/)
- EN **[A savoir]** [Javascript and the next decade of data programming](<https://benschmidt.org/post/2020-01-15/2020-01-15-webgpu/>)
- EN **[A savoir]** [Thoughts On JavaScript Classes](https://jrfom.com/posts/2023/10/31/js-classes/)
- EN **[A savoir]** [When You Should Prefer Map Over Object In JavaScript](https://www.zhenghao.io/posts/object-vs-map)
- EN **[Intermédiaire]** [A Smarter JavaScript Mapper: array.flatMap()](https://dmitripavlutin.com/javascript-array-flatmap/)
- EN **[Intermédiaire]** [What I Talk About When I Talk About Sorting: Untangling Array#sort](https://alistapart.com/article/what-i-talk-about-when-i-talk-about-sorting/)
- EN **[Intermédiaire]** [This in JavaScript](https://zellwk.com/blog/this/)
- EN **[Intermédiaire]** [The global `Reflect` object, its use cases and things to watch out for](https://www.stefanjudis.com/today-i-learned/the-global-reflect-object-its-use-cases-and-things-to-watch-out-for/)
Expand All @@ -125,6 +128,7 @@ J’ai toujours beaucoup apprécié Christophe PORTENEUVE en tant qu’orateur

Les autres talks

- FR **[Débutant]** [L'asynchrone en JS sans le cringe - Christophe Porteneuve](https://www.youtube.com/watch?v=GI6vm_NfqYg)
- EN **[Débutant]** [Apprentissage de la programmation fonctionnelle avec JavaScript](https://www.youtube.com/watch?v=e-5obm1G_FY)
- EN **[Débutant]** [Immutable data structures for functional JS](https://www.youtube.com/watch?v=Wo0qiGPSV-s)
- EN **[Débutant]** [Wes Bos - Async + Await](https://www.youtube.com/watch?v=9YkUCxvaLEk)
Expand Down
3 changes: 3 additions & 0 deletions fr/chapters/5-nodejs/core-modules/2-events.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,9 @@ for await (const [data] of on(ee, "data")) {
}
```

> [!NOTE]
> Node.js supporte maintenant aussi l'API Web [EventTarget](https://nodejs.org/api/events.html#class-nodeeventtarget)
---

⬅️ [🌟 Les différents modules core: Console](./1-console.md) |
Expand Down
4 changes: 4 additions & 0 deletions fr/chapters/5-nodejs/core-modules/5-timers.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,10 @@ await timers.setTimeout(10_000, {
});
```

#### Liens

- EN [Your Node is Leaking Memory? setTimeout Could be the Reason](https://lucumr.pocoo.org/2024/6/5/node-timeout/)

---

⬅️ [🌟 Les différents modules core: FileSystem (fs)](./4-fs.md) |
Expand Down
19 changes: 19 additions & 0 deletions fr/chapters/5-nodejs/core-modules/6-url.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,25 @@ const buffer = readFileSync(new URL("./data.proto", import.meta.url));
Bonus: [How to migrate from querystring to URLSearchParams in Node.js](https://www.linkedin.com/pulse/how-migrate-from-querystring-urlsearchparams-nodejs-vladim%25C3%25ADr-gorej/?trackingId=OEdtd%2BKZRxWNkgptsoWKlA%3D%3D)
#### URL.parse
```js
// Avant
let url = null;
try {
url = new URL(input, base);
} catch {}

// Après
const url = URL.parse(input, base);
```
#### Liens
- [WHATWG-compliant and fast URL parser written in modern C++](https://github.com/ada-url/ada)
- [Yagiz Nizipli & Daniel Lemire | Ada: Parsing Millions of URLs per Second](https://www.youtube.com/watch?v=tQ-6OWRDsZg)
---
⬅️ [🌟 Les différents modules core: Timers](./5-timers.md) |
Expand Down
1 change: 1 addition & 0 deletions fr/chapters/5-nodejs/core-modules/8-child_process.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ console.log(stdout);

Si vous êtes à la recherche d’un module simplifiant ces tâches, je vous recommande de jeter un œil à [execa](https://github.com/sindresorhus/execa#readme). (il y aussi [cross-spawn](https://github.com/moxystudio/node-cross-spawn)).

> [!CAUTION]
> ⛔ Attention à ne pas exécuter des commandes à partir de chaîne de caractères venant de l’extérieur sans effectuer de vérification stricte (un attaquant pourrait s’en servir pour exécuter du code sur votre système).
---
Expand Down
6 changes: 3 additions & 3 deletions fr/chapters/6-database/10-orm.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ Ce qui est certain c’est qu’il faut arrêter d’utiliser [Sequelize](https:

Je vous recommande plutôt de jeter un oeil aux projets suivants :

- [TypeORM](https://typeorm.io/#/) (TypeORM supports both Active Record and Data Mapper patterns)
- [MikroORM](https://mikro-orm.io/) (TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns).
- [MikroORM](https://mikro-orm.io/)
- [Kysely](https://kysely.dev/) - Si vous êtes plutôt à la recherche d'un query builder.

A noter que si vous utilisez le framework Adonis.js ils ont aussi leur propre ORM [Lucid](https://adonisjs.com/docs/4.0/lucid).
A noter que si vous utilisez le framework Adonis.js ils ont aussi leur propre ORM [Lucid](https://lucid.adonisjs.com/docs/introduction).

Il y a tout un tas de packages disponibles dans l’écosystème, mais je ne suis pas forcément convaincu par la plupart d’entre eux (Après il y en a sûrement que je n’ai moi-même pas encore découvert).

Expand Down

0 comments on commit 474a156

Please sign in to comment.