diff --git a/_articles/en/2016-07-13-how-to-be-best-friend-with-the-http-cache.md b/_articles/en/2016-07-13-how-to-be-best-friend-with-the-http-cache.md index 01643b50b..c0e4907c7 100644 --- a/_articles/en/2016-07-13-how-to-be-best-friend-with-the-http-cache.md +++ b/_articles/en/2016-07-13-how-to-be-best-friend-with-the-http-cache.md @@ -267,6 +267,6 @@ Test ``` Varnish will recognize the use of an ESI and will therefore cache two objects, one for the full page with the cache data of the page and one for ESI with other cache data. You can then uncache the ESI only and Varnish will update a single object (only one request to the server); the user has all the pages updated just the same. -For further information, I suggest you look at a previous [article]({BASE_URL}/symfony-2-cache-http-esi/), which explains an implementation for Symfony. +For further information, I suggest you look at a previous [article]({BASE_URL}/fr/symfony-2-cache-http-esi/), which explains an implementation for Symfony. You can also find a presentation about HTTP caches and Symfony [ici](https://docs.google.com/presentation/d/1RVr_JfpFKVRXdg4hy6war3OfiSJtdeYzFsdxhn2t0NY/edit?usp=sharing). . diff --git a/_articles/en/2017-10-12-react-ssr.md b/_articles/en/2017-10-12-react-ssr.md index 36cf01da5..8ecf56d3b 100644 --- a/_articles/en/2017-10-12-react-ssr.md +++ b/_articles/en/2017-10-12-react-ssr.md @@ -19,7 +19,7 @@ keywords: - webpack --- -Five weeks ago, our friend [Vincent Composieux]({BASE_URL}/authors/vcomposieux/) wrote an [awesome article]({BASE_URL}/fr/migrate-a-react-client-side-application-to-server-side-with-nextjs/) about migrating a React client-side application to server-side with [Next.JS](https://zeit.co/blog/next4). But, sometimes you want to do it the plain vanilla way in order to take control over your workflow. Therefore, this article's purpose is to climb up the steps of developing an SSR React app from scratch. +Five weeks ago, our friend [Vincent Composieux]({BASE_URL}/en/authors/vcomposieux/) wrote an [awesome article]({BASE_URL}/en/migrate-a-react-client-side-application-to-server-side-with-nextjs/) about migrating a React client-side application to server-side with [Next.JS](https://zeit.co/blog/next4). But, sometimes you want to do it the plain vanilla way in order to take control over your workflow. Therefore, this article's purpose is to climb up the steps of developing an SSR React app from scratch. ## A Reminder of SSR's benefits diff --git a/_articles/en/2020-01-29-react-i18next.md b/_articles/en/2020-01-29-react-i18next.md index 696f5e8e6..dc6f9f670 100644 --- a/_articles/en/2020-01-29-react-i18next.md +++ b/_articles/en/2020-01-29-react-i18next.md @@ -285,7 +285,7 @@ Note that the path specified in `loadPath` is in the `public` folder at the root #### Loading remote files -We have presented [in a previous article]({BASE_URL}/en/manage-translations-with-localise.biz/) that we use Localise.biz service and save translation files on a server in the cloud. Hence, we need to recover the files hosted on a remote server: +We have presented [in a previous article]({BASE_URL}/en/manage-translations-with-localise-biz/) that we use Localise.biz service and save translation files on a server in the cloud. Hence, we need to recover the files hosted on a remote server: ```js import i18n from 'i18next'; diff --git a/_articles/en/2020-05-13-php-serverless-part-2.md b/_articles/en/2020-05-13-php-serverless-part-2.md index e34fed139..af5e85dd3 100644 --- a/_articles/en/2020-05-13-php-serverless-part-2.md +++ b/_articles/en/2020-05-13-php-serverless-part-2.md @@ -16,7 +16,7 @@ keywords: - lambda --- -This article is a follow-up to this [first part]({BASE_URL}/en/en/php-serverless-part-1/) which introduces serverless computing. In this second part, we will first see what the *layers* are in AWS Lambda and how to implement them. Then we will see how to use the Bref framework. +This article is a follow-up to this [first part]({BASE_URL}/en/php-serverless-part-1/) which introduces serverless computing. In this second part, we will first see what the *layers* are in AWS Lambda and how to implement them. Then we will see how to use the Bref framework. ## AWS Lambda diff --git a/_articles/fr/2015-05-11-microdata-ou-microdonnees.md b/_articles/fr/2015-05-11-microdata-ou-microdonnees.md index 44573edeb..0232655df 100644 --- a/_articles/fr/2015-05-11-microdata-ou-microdonnees.md +++ b/_articles/fr/2015-05-11-microdata-ou-microdonnees.md @@ -130,7 +130,7 @@ dans les locaux de ### Autre exemple -Voici un exemple d’offre d’emploi issu du site [eleven-labs.com](http://www.eleven-labs.com) : +Voici un exemple d’offre d’emploi issu du site [eleven-labs.com](https://eleven-labs.com/) : Version HTML diff --git a/_articles/fr/2015-05-29-ncrafts-2015.md b/_articles/fr/2015-05-29-ncrafts-2015.md index 0ac357826..604fe7085 100644 --- a/_articles/fr/2015-05-29-ncrafts-2015.md +++ b/_articles/fr/2015-05-29-ncrafts-2015.md @@ -70,6 +70,6 @@ J'ai aimé la façon qu'il a eu de parler du besoin derrière les microservices, ## Bilan -Ce que je préfère dans les conférences, ce sont les rencontres que l'on fait via des discussions avec des personnes que l'on ne connait pas, ou que via internet. J'ai ainsi pu discuté avec certains *speakers* tels que Sandro Mancuso, Mathias Verraes, Paul Stack et Christian Horsdal notamment. Sandro m'a donné quelques conseils pour apporter du changement chez des clients réticents, j'ai discuté legos (nos enfants ont le même âge) et [CQRS]({BASE_URL}/cqrs-pattern/) avec Mathias, comment était perçu l'évolution de l'écosystème PHP du point de vue d'un ancien dev .Net devenu Ops, et le fait de sensibiliser les devs à la prise de recul. +Ce que je préfère dans les conférences, ce sont les rencontres que l'on fait via des discussions avec des personnes que l'on ne connait pas, ou que via internet. J'ai ainsi pu discuté avec certains *speakers* tels que Sandro Mancuso, Mathias Verraes, Paul Stack et Christian Horsdal notamment. Sandro m'a donné quelques conseils pour apporter du changement chez des clients réticents, j'ai discuté legos (nos enfants ont le même âge) et [CQRS]({BASE_URL}/fr/cqrs-pattern/) avec Mathias, comment était perçu l'évolution de l'écosystème PHP du point de vue d'un ancien dev .Net devenu Ops, et le fait de sensibiliser les devs à la prise de recul. Je n'ai croisé que 2/3 devs PHP, mais ça n'a pas vraiment eu d'importance, les talks n'étaient pas vraiment orientés outils et technique, mais plutôt orientés sur des pratiques qui méritent peut être plus d'attention, en tout cas dans la communauté PHP. diff --git a/_articles/fr/2015-12-09-symfonycon-2015-birthday-party.md b/_articles/fr/2015-12-09-symfonycon-2015-birthday-party.md index 249fc0706..53eb4f806 100644 --- a/_articles/fr/2015-12-09-symfonycon-2015-birthday-party.md +++ b/_articles/fr/2015-12-09-symfonycon-2015-birthday-party.md @@ -24,8 +24,6 @@ keywords: - routing --- -![](http://pariscon2015.symfony.com/bundles/sensiosymfonylive/images/pariscon2015/assets/header.jpg) - Pour la troisième édition de la SymfonyCon (conférence internationale sur Symfony), SensioLabs a fait les choses en grand aux Folies Bergère à Paris, la ville natale de Symfony. Les conférences ont eu lieu pendant deux jours en deux tracks. ------------------------------------------------------------------------ diff --git a/_articles/fr/2015-12-22-dotjs-2015-on-y-etait-encore.md b/_articles/fr/2015-12-22-dotjs-2015-on-y-etait-encore.md index 12ff632f1..3099e24dd 100644 --- a/_articles/fr/2015-12-22-dotjs-2015-on-y-etait-encore.md +++ b/_articles/fr/2015-12-22-dotjs-2015-on-y-etait-encore.md @@ -35,7 +35,7 @@ Alors oui, mais la dotJS c’est quoi déjà ? Il s’agit ni plus ni moins de la plus grande conférence Javascript d’Europe. Le but étant de se rassembler afin de présenter l’avenir du Javascript, de voir l’avancement de certaines technologies ou fonctionnalités, et de troller tous ensemble. -dotJS fait partie des dotConferences, dont mon collègue astronaute Martin Cadoux nous explique très clairement le concept dans [son article sur dotCSS]({BASE_URL}/les-dotcss-2015-cetait-bien/) : +dotJS fait partie des dotConferences, dont mon collègue astronaute Martin Cadoux nous explique très clairement le concept dans [son article sur dotCSS]({BASE_URL}/fr/les-dotcss-2015-cetait-bien/) : > "dotConference une série de conférences qui vise à proposer des présentations de haute volée en lien avec des technologies ou des sujets particuliers. On en recense six aujourd’hui, dont les dotJS qui se sont déroulés lundi dernier, mais aussi les dotGo, et bientôt les dotScale. Ces rassemblements ont lieu exclusivement à Paris, mais attirent néanmoins une audience venue en large partie de l’étranger." @@ -90,7 +90,7 @@ Constat sur HTTP/2 aujourd’hui: Ça à l’air cool, mais on ne s’en sert pa **LUNCH BREAK !** -![](https://c2.staticflickr.com/6/5725/23359640130_8bff265e02_h.jpg) ![](http://i.giphy.com/3GCLlNvCg61ji.gif) +![](https://c2.staticflickr.com/6/5725/23359640130_8bff265e02_h.jpg) ![](https://i.giphy.com/3GCLlNvCg61ji.gif) ## Lightning talks @@ -138,7 +138,7 @@ Après avoir travaillé sur la compatibilité sur chaque navigateur (y compris I En bonus: Eric postule également au poste de maire de San Francisco... -![](http://i.giphy.com/KTHFxuEtrVoGI.gif) +![](https://i.giphy.com/KTHFxuEtrVoGI.gif) ## Jade > Pug par [*Forbes Lindesay*](https://twitter.com/forbeslindesay) @@ -181,7 +181,7 @@ Pas de réelle révolution cependant, le but de ce rassemblement semblait plus d Petite frustration tout de même sur le fait de ne pas pouvoir poser de questions directement en fin de présentation, mais cela est sûrement dû à un souci de logistique. L’objectif de ce post étant de survoler le large panel de sujets abordés, je vous laisse approfondir les plus intéressants. -![](http://i.giphy.com/kRWFIgO75okHm.gif) +![](https://i.giphy.com/kRWFIgO75okHm.gif) Les photos de l’événement sont disponibles sur le [compte Flickr](https://www.flickr.com/photos/97226415@N08/sets/72157661549425069/) diff --git a/_articles/fr/2016-02-24-annuler-une-fonctionnalite-avant-une-mise-en-production.md b/_articles/fr/2016-02-24-annuler-une-fonctionnalite-avant-une-mise-en-production.md index 761befbe6..9f2ba58fc 100644 --- a/_articles/fr/2016-02-24-annuler-une-fonctionnalite-avant-une-mise-en-production.md +++ b/_articles/fr/2016-02-24-annuler-une-fonctionnalite-avant-une-mise-en-production.md @@ -19,7 +19,7 @@ Connaissez-vous le "git workflow" ? Si ce n'est pas le cas, je vous invite à li Je vais mettre ci-dessous l'image pour bien l'avoir en tête : -![Git workflow](http://nvie.com/img/git-model@2x.png) +![Git workflow](https://nvie.com/img/git-model@2x.png) > "Git workflow. source: http://nvie.com/posts/a-successful-git-branching-model" diff --git a/_articles/fr/2016-06-29-le-cache-http-votre-meilleur-ami.md b/_articles/fr/2016-06-29-le-cache-http-votre-meilleur-ami.md index 49888f85c..8027a2eb6 100644 --- a/_articles/fr/2016-06-29-le-cache-http-votre-meilleur-ami.md +++ b/_articles/fr/2016-06-29-le-cache-http-votre-meilleur-ami.md @@ -272,5 +272,5 @@ Test Varnish va reconnaître l'utilisation d'un ESI et va donc cacher deux objets, l'un pour la page complète avec les informations de cache de la page et l'un pour ESI avec d'autres informations de cache. Vous pouvez alors décacher seulement l'ESI et varnish va mettre à jour un seul objet (une seule demande au serveur), l'utilisateur a tout de même toutes les pages mises à jour. -Pour plus d'informations, je vous invite à aller voir un ancien [article]({BASE_URL}/symfony-2-cache-http-esi/) , qui explique une implémentation pour Symfony. +Pour plus d'informations, je vous invite à aller voir un ancien [article]({BASE_URL}/fr/symfony-2-cache-http-esi/) , qui explique une implémentation pour Symfony. Vous pouvez aussi retrouver une présentation sur le cache HTTP et Symfony [ici](https://docs.google.com/presentation/d/1RVr_JfpFKVRXdg4hy6war3OfiSJtdeYzFsdxhn2t0NY/edit?usp=sharing). diff --git a/_articles/fr/2016-11-28-tutoriel-ci-detector.md b/_articles/fr/2016-11-28-tutoriel-ci-detector.md index 12bb0be47..413ecac7d 100644 --- a/_articles/fr/2016-11-28-tutoriel-ci-detector.md +++ b/_articles/fr/2016-11-28-tutoriel-ci-detector.md @@ -30,4 +30,4 @@ Nous allons voir ensemble un cas pratique d'utilisation afin de mieux comprendre Et bien sûr, si vous avez des remarques et/ou questions, n'hésitez pas à écrire un commentaire ! Je me ferai un plaisir d'échanger avec vous. - + diff --git a/_articles/fr/2017-12-22-optimiser-son-application-react.md b/_articles/fr/2017-12-22-optimiser-son-application-react.md index 4ba3ba7ce..351789a52 100644 --- a/_articles/fr/2017-12-22-optimiser-son-application-react.md +++ b/_articles/fr/2017-12-22-optimiser-son-application-react.md @@ -374,4 +374,4 @@ React-Developer-Tools, disponible pour [Chrome](https://chrome.google.com/websto ## Conclusion L'ensemble des techniques présentées dans cet article sont indispensables à la réalisation d'une application React rapide et réactive. -[Redux](https://redux.js.org/) ou encore [reselect](https://github.com/reactjs/reselect) sont aussi des pistes que vous pouvez explorer afin d'améliorer encore cette optimisation. Mais n'oubliez pas que nous n'avons optimisé que la partie "update" de votre application, c'est-à-dire uniquement lorsque l'application est déjà chargée. Le premier chargement est tout aussi important si ce n'est plus, et la solution à ce problème est le SSR (Server Side Rendering). Je vous redirige donc vers l'excellent article de [Vincent](/authors/vcomposieux/) sur ce sujet : ["Migrer une application React Client-Side en Server-Side avec NextJS"]({BASE_URL}/fr/migrer-une-application-react-client-side-en-server-side-avec-nextjs/). +[Redux](https://redux.js.org/) ou encore [reselect](https://github.com/reactjs/reselect) sont aussi des pistes que vous pouvez explorer afin d'améliorer encore cette optimisation. Mais n'oubliez pas que nous n'avons optimisé que la partie "update" de votre application, c'est-à-dire uniquement lorsque l'application est déjà chargée. Le premier chargement est tout aussi important si ce n'est plus, et la solution à ce problème est le SSR (Server Side Rendering). Je vous redirige donc vers l'excellent article de [Vincent]({BASE_URL}/fr/authors/vcomposieux/) sur ce sujet : ["Migrer une application React Client-Side en Server-Side avec NextJS"]({BASE_URL}/fr/migrer-une-application-react-client-side-en-server-side-avec-nextjs/). diff --git a/_articles/fr/2018-01-17-blog-bandeau-cookie.md b/_articles/fr/2018-01-17-blog-bandeau-cookie.md index 6769c31a5..40e64f3c1 100644 --- a/_articles/fr/2018-01-17-blog-bandeau-cookie.md +++ b/_articles/fr/2018-01-17-blog-bandeau-cookie.md @@ -313,6 +313,6 @@ function onGaCancelButtonClick(event) { Si vous avez bien suivi cet article et si vous l'avez adapté aux besoins de votre site, vous avez maintenant un bandeau cookie parfaitement fonctionnel et respectant les recommandations de la CNIL ! Évidemment un site comme celui-ci (un simple blog) est un cas simple où il y a peu voire pas de cookies posés du tout. En réalité, votre site est déjà quasiment prêt pour la future mise en application de la RGPD à quelques ajustements près. -Si vous ne savez pas ce qu'est la RGPD, c'est en gros une évolution de la directive européenne dont nous avons parlé précédemment vers une version XXL. Pour de plus amples informations, je vous invite à lire l'excellent article de mon collègue [Pouzor](/authors/pouzor/) : [RGPD - Ce qu'il va changer]({BASE_URL}/fr/rgpd-ce-qu-il-va-changer/). +Si vous ne savez pas ce qu'est la RGPD, c'est en gros une évolution de la directive européenne dont nous avons parlé précédemment vers une version XXL. Pour de plus amples informations, je vous invite à lire l'excellent article de mon collègue [Pouzor]({BASE_URL}/fr/authors/pouzor/) : [RGPD - Ce qu'il va changer]({BASE_URL}/fr/rgpd-ce-qu-il-va-changer/). ![Cookie Monster]({BASE_URL}/imgs/articles/2018-01-17-cookie-banner/cookie-monster.jpg) diff --git a/_articles/fr/2018-02-11-throwable-error-exception.md b/_articles/fr/2018-02-11-throwable-error-exception.md index 5effdb8e3..f10b06d5c 100644 --- a/_articles/fr/2018-02-11-throwable-error-exception.md +++ b/_articles/fr/2018-02-11-throwable-error-exception.md @@ -385,7 +385,7 @@ Les points négatifs ## Autres articles intéressants -* [Bien gérer ses exceptions]({BASE_URL}/fr/php_bien-gerer-ses-exceptions/) +* [Bien gérer ses exceptions]({BASE_URL}/fr/php-bien-gerer-ses-exceptions/) * [Errors in PHP 7](http://php.net/manual/fr/language.errors.php7.php) * [Example](https://3v4l.org/sDMsv) * [Throwable Exceptions and Errors in PHP 7](https://trowski.com/2015/06/24/throwable-exceptions-and-errors-in-php7/) diff --git a/_articles/fr/2018-10-03-introduction-gitlab-ci.md b/_articles/fr/2018-10-03-introduction-gitlab-ci.md index e9de4414d..70be1dadf 100644 --- a/_articles/fr/2018-10-03-introduction-gitlab-ci.md +++ b/_articles/fr/2018-10-03-introduction-gitlab-ci.md @@ -516,7 +516,7 @@ Le code coverage sera visible dans les informations du `job` dans l'interface we ![CI Coverage]({BASE_URL}/imgs/articles/2018-09-19-introduction-gitlab-ci/ci-coverage.png) -> Si vous le souhaitez voici un autre article de notre blog écrit par l'astronaute [Pouzor]({BASE_URL}/authors/pouzor/) sur le code coverage : [Ajouter le code coverage sur les MR avec avec GitLab-CI]({BASE_URL}/fr/ajouter-le-code-coverage-sur-les-pr-avec-gitlab-ci/) +> Si vous le souhaitez voici un autre article de notre blog écrit par l'astronaute [Pouzor]({BASE_URL}/fr/authors/pouzor/) sur le code coverage : [Ajouter le code coverage sur les MR avec avec GitLab-CI]({BASE_URL}/fr/ajouter-le-code-coverage-sur-les-pr-avec-gitlab-ci/) ### retry Cette déclaration permet de ré-exécuter le `job` en cas d'échec. Il faut indiquer le nombre de fois où vous voulez ré-exécuter le `job` diff --git a/_articles/fr/2019-03-06-un-an-de-webperformance.md b/_articles/fr/2019-03-06-un-an-de-webperformance.md index f19b6a573..dc6ce9cb3 100644 --- a/_articles/fr/2019-03-06-un-an-de-webperformance.md +++ b/_articles/fr/2019-03-06-un-an-de-webperformance.md @@ -127,4 +127,4 @@ Après un an de mission et grâce au travail des équipes MCD et France24, nous ![bilan]({BASE_URL}/imgs/articles/2019-02-28-un-an-de-webperformance/image8.png) -Si vous aussi vous souhaitez améliorer votre webperformance, renseignez-vous [ici](https://eleven-labs.com/accompagnement-sur-mesure/audit-et-expertise) +Si vous aussi vous souhaitez améliorer votre webperformance, renseignez-vous [ici](https://eleven-labs.com/audit-systeme-information/) diff --git a/_articles/fr/2019-05-09-react-i18next.md b/_articles/fr/2019-05-09-react-i18next.md index d734b5a12..492537bf4 100644 --- a/_articles/fr/2019-05-09-react-i18next.md +++ b/_articles/fr/2019-05-09-react-i18next.md @@ -286,7 +286,7 @@ Notez que le chemin indiqué dans `loadPath` est dans le dossier `public` à la #### Fichiers hébergés sur un serveur distant -Nous avons présenté [dans un article précédent]({BASE_URL}/fr/gestion-des-traductions-avec-localise.biz/) que nous utilisons le service Localise.biz et enregistrons les fichiers de traduction sur un serveur dans le cloud. Ainsi, nous avons besoin de récupérer les fichiers hébergés sur un serveur distant : +Nous avons présenté [dans un article précédent]({BASE_URL}/fr/gestion-des-traductions-avec-localise-biz/) que nous utilisons le service Localise.biz et enregistrons les fichiers de traduction sur un serveur dans le cloud. Ainsi, nous avons besoin de récupérer les fichiers hébergés sur un serveur distant : ```js import i18n from 'i18next'; diff --git a/_articles/fr/2020-09-30-meilleurs-outils-js-2020.md b/_articles/fr/2020-09-30-meilleurs-outils-js-2020.md index 9a7c5f6fc..c63994af8 100644 --- a/_articles/fr/2020-09-30-meilleurs-outils-js-2020.md +++ b/_articles/fr/2020-09-30-meilleurs-outils-js-2020.md @@ -127,7 +127,7 @@ En parlant de render, ne vous êtes vous jamais demandé pourquoi vos composants ![]({BASE_URL}/imgs/articles/2020-09-30-meilleurs-outils-js-2020/storybook.png) -Si comme moi vous avez adopté la méthodologie [BEM]({BASE_URL}/fr/retour-d-experience-sur-bem/), alors vous connaissez la nécessité d’avoir des composants unitaires, avec un affichage et un comportement uniforme à chaque utilisation. Pour aider à travailler dans ce sens il existe l’outil open source [Storybook](https://storybook.js.org/), qui est disponible pour React, Vue et Angular et qui permet de facilement créer et maintenir vos composants pour une meilleure réutilisabilité. Pour en savoir plus une suite d’articles est disponible sur notre [blog]({BASE_URL}/fr/Storybook-creer-son-premier-composant/). +Si comme moi vous avez adopté la méthodologie [BEM]({BASE_URL}/fr/retour-d-experience-sur-bem/), alors vous connaissez la nécessité d’avoir des composants unitaires, avec un affichage et un comportement uniforme à chaque utilisation. Pour aider à travailler dans ce sens il existe l’outil open source [Storybook](https://storybook.js.org/), qui est disponible pour React, Vue et Angular et qui permet de facilement créer et maintenir vos composants pour une meilleure réutilisabilité. Pour en savoir plus une suite d’articles est disponible sur notre [blog]({BASE_URL}/fr/storybook-creer-son-premier-composant/). ## Bit diff --git a/_articles/fr/2021-05-24-leco-conception.md b/_articles/fr/2021-05-24-leco-conception.md index c68c61004..472ff5894 100644 --- a/_articles/fr/2021-05-24-leco-conception.md +++ b/_articles/fr/2021-05-24-leco-conception.md @@ -87,7 +87,7 @@ On pourra réfléchir à optimiser le design et le parcours sur l’interface av - Opter pour un design épuré pour une meilleure lisibilité et accessibilité de votre site. Privilégier par exemple les icônes aux images, limiter les images lourdes et utiliser les formats webs pour améliorer les temps de chargement, éviter au maximum les animations, vidéos, GIF. Réutiliser les images : vous n’avez pas forcément besoin d’une nouvelle image pour chaque page ou contenu ! -- Bien penser le contenu et le découpage des encarts de texte pour faciliter la lecture et encore une fois l’accessibilité (plus d’infos dans l’article [UX WRITING : INTRODUCTION ET BONNES PRATIQUES]({BASE_URL}/fr/UX-Writing-Introduction-et-bonnes-pratiques/)) +- Bien penser le contenu et le découpage des encarts de texte pour faciliter la lecture et encore une fois l’accessibilité (plus d’infos dans l’article [UX WRITING : INTRODUCTION ET BONNES PRATIQUES]({BASE_URL}/fr/ux-writing-introduction-et-bonnes-pratiques/)) - Limiter le nombre de polices et de couleurs utilisées @@ -97,7 +97,7 @@ Il conviendra de challenger régulièrement, avec l’équipe de développement, Qualifier la donnée allégera votre UX et vos bases de données. - A-t-on besoin que la fonctionnalité soit en temps réel ? - Si ce n’est pas le cas, traiter la demande quand les serveurs sont le moins sous pression ou, si vous le pouvez, lancer une instance serveur pour traiter toutes les demandes en même temps permettra de réduire la consommation de votre infrastructure. Cela passe par de l’asynchrone, avec [RabbitMQ]({BASE_URL}/tag/rabbitmq.html) par exemple. + Si ce n’est pas le cas, traiter la demande quand les serveurs sont le moins sous pression ou, si vous le pouvez, lancer une instance serveur pour traiter toutes les demandes en même temps permettra de réduire la consommation de votre infrastructure. Cela passe par de l’asynchrone, avec RabbitMQ par exemple. - Peut-on favoriser un moteur de recherche performant ou des filtres pour que l’utilisateur puisse affiner une recherche par exemple et accéder plus rapidement à l’information ? diff --git a/_articles/fr/2022-08-24-symfony-javascript-traduction-bazinga-js-translation-bundle-icu.md b/_articles/fr/2022-08-24-symfony-javascript-traduction-bazinga-js-translation-bundle-icu.md index 6affd98fe..295e5083c 100644 --- a/_articles/fr/2022-08-24-symfony-javascript-traduction-bazinga-js-translation-bundle-icu.md +++ b/_articles/fr/2022-08-24-symfony-javascript-traduction-bazinga-js-translation-bundle-icu.md @@ -75,7 +75,7 @@ Il existe plein d'autres subtilités et de configurations ainsi que des bundles D'ailleurs, ces solutions Saas utilisent un autre format que celui proposé de base par Symfony : le format ICU. ## Qu'est-ce que le format ICU ? -Le format ICU (International Components for Unicode) est un format de message largement utilisé dans de nombreux systèmes logiciels de traduction tels que localize.biz (et vous pouvez en apprendre plus sur son utilisation sur l’article [Gestion des traductions avec localise.biz]({BASE_URL}/fr/gestion-des-traductions-avec-localise.biz/)), [phrase](https://phrase.com/), [lokalise](https://lokalise.com) ou encore [crowdin](https://crowdin.com/). Ce format permet de gérer des patterns tels que le pluriel. +Le format ICU (International Components for Unicode) est un format de message largement utilisé dans de nombreux systèmes logiciels de traduction tels que localize.biz (et vous pouvez en apprendre plus sur son utilisation sur l’article [Gestion des traductions avec localise.biz]({BASE_URL}/fr/gestion-des-traductions-avec-localise-biz/)), [phrase](https://phrase.com/), [lokalise](https://lokalise.com) ou encore [crowdin](https://crowdin.com/). Ce format permet de gérer des patterns tels que le pluriel. Le format ne fait pas varier l'utilisation et l'ordonnancement des clés des fichiers de traduction, mais les fichiers doivent être renommés messages.{locale}+intl-icu.yaml et les patterns modifiés. diff --git a/_assets/articles/2023-08-09-comment-creer-de-la-dette-technique-des-le-debut-d-un-nouveau-projet/logo.png b/_assets/articles/2023-08-09-comment-creer-de-la-dette-technique-des-le-debut-d-un-nouveau-projet/logo.png new file mode 100644 index 000000000..47e9126fe Binary files /dev/null and b/_assets/articles/2023-08-09-comment-creer-de-la-dette-technique-des-le-debut-d-un-nouveau-projet/logo.png differ diff --git a/_tutorials/fr/2019-07-29-react-env-variable-gcp-gitlabci/steps/introduction.md b/_tutorials/fr/2019-07-29-react-env-variable-gcp-gitlabci/steps/introduction.md index c3e2b513d..6e4f86153 100644 --- a/_tutorials/fr/2019-07-29-react-env-variable-gcp-gitlabci/steps/introduction.md +++ b/_tutorials/fr/2019-07-29-react-env-variable-gcp-gitlabci/steps/introduction.md @@ -27,9 +27,9 @@ Dans ce CodeLabs, nous allons donc voir comment créer et déployer, via Gitlab Créer une application [React](https://facebook.github.io/create-react-app/docs/documentation-intro) Obtenir un compte [Google Cloud Platform](https://console.cloud.google.com) Créer un compte [Gitlab](https://about.gitlab.com/) -En savoir plus à propos de [Gitlab CI]([https://docs.gitlab.com/ee/ci/](https://docs.gitlab.com/ee/ci/)) +En savoir plus à propos de [Gitlab CI](https://docs.gitlab.com/ee/ci/) ## Pré-requis Nous aurons besoin d'une installation de [Npm & Nodejs](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) -Le code complet du projet est disponible [ici](https://github.com/RedPi/codelabs-env-var) mais je vous conseille de le récupérer seulement si besoin. \ No newline at end of file +Le code complet du projet est disponible [ici](https://github.com/RedPi/codelabs-env-var) mais je vous conseille de le récupérer seulement si besoin. diff --git a/_tutorials/fr/2024-01-10-composition-over-inheritance-et-typage-generique-avec-symfony-et-doctrine/steps/introduction.md b/_tutorials/fr/2024-01-10-composition-over-inheritance-et-typage-generique-avec-symfony-et-doctrine/steps/introduction.md index 37fe89de1..482d5d3a5 100644 --- a/_tutorials/fr/2024-01-10-composition-over-inheritance-et-typage-generique-avec-symfony-et-doctrine/steps/introduction.md +++ b/_tutorials/fr/2024-01-10-composition-over-inheritance-et-typage-generique-avec-symfony-et-doctrine/steps/introduction.md @@ -15,9 +15,9 @@ Ainsi, on dira que le détail de notre implémentation (ici Doctrine et toutes s Pour régler cela, nous allons utiliser l'injection de dépendance. De plus, nous aurons besoin d'être aidé par un typage plus strict pour faciliter et améliorer notre expérience de développement. Pour cela, nous utiliserons le typage générique. Comme vous le savez sûrement, ce n'est pas possible nativement en PHP de faire ce genre de typage, mais grâce à l'outil d'analyse statique PHPStan, nous contournerons ce problème. -En cela, ce Codelabs est une mise en application de [cet article sur le typage générique en PHP](https://blog.eleven-labs.com/fr/typage-generique-en-php/) sorti sur le blog d'Eleven Labs. Allez y jeter un oeil ! +En cela, ce Codelabs est une mise en application de [cet article sur le typage générique en PHP]({BASE_URL}/fr/typage-generique-php/) sorti sur le blog d'Eleven Labs. Allez y jeter un oeil ! -Enfin, le code source de ce Codelabs est disponible sur mon GitHub : +Enfin, le code source de ce Codelabs est disponible sur mon GitHub : - [Codelab Symfo/Doctrine](https://github.com/ArthurJCQ/codelabs-compo) diff --git a/_tutorials/fr/2024-01-10-composition-over-inheritance-et-typage-generique-avec-symfony-et-doctrine/steps/typage-generique-avec-phpstan.md b/_tutorials/fr/2024-01-10-composition-over-inheritance-et-typage-generique-avec-symfony-et-doctrine/steps/typage-generique-avec-phpstan.md index 942ad3d5e..c82ffbcce 100644 --- a/_tutorials/fr/2024-01-10-composition-over-inheritance-et-typage-generique-avec-symfony-et-doctrine/steps/typage-generique-avec-phpstan.md +++ b/_tutorials/fr/2024-01-10-composition-over-inheritance-et-typage-generique-avec-symfony-et-doctrine/steps/typage-generique-avec-phpstan.md @@ -6,7 +6,7 @@ title: Typage générique avec PHPStan --- ## Typage générique avec PHPStan -Nous y voilà enfin ! Je vous conseille de faire une pause pour aller lire l'article [sur le typage générique en PHP](https://blog.eleven-labs.com/fr/typage-generique-en-php/) pour un peu de théorie sur le pourquoi du comment des ***generics***. +Nous y voilà enfin ! Je vous conseille de faire une pause pour aller lire l'article [sur le typage générique en PHP]({BASE_URL}/fr/typage-generique-php/) pour un peu de théorie sur le pourquoi du comment des ***generics***. Ça y est ? Alors c'est parti ! @@ -130,7 +130,7 @@ class PostRepositoryDoctrine extends BaseRepositoryDoctrine implements PostRepos } ``` -Le seul changement utile et important ici est le tag `@extends` juste au-dessus de la classe. C'est *ici* que tout ce passe. +Le seul changement utile et important ici est le tag `@extends` juste au-dessus de la classe. C'est *ici* que tout ce passe. On indique ici que nous étendons notre `BaseRepositoryDoctrine`, mais avec une info supplémentaire, la présence des chevrons ``. En faisant cela, on explique à PHPStan que nous souhaitons remplacer, dans cette classe, tous nos types génériques `T` par `Post`. Et par `User` dans notre Repository User en faisant la manipulation équivalente. Notez également la notation `@return array` au-dessus de la seule méthode de notre repository. Cela permet d'indiquer que nous ne pouvons retourner qu'un tableau composé d'objets `Post`. En fonction de comment vous implémentez la méthode, PHPStan vous remonte une erreur si ce n'est pas le cas. @@ -162,7 +162,7 @@ class BaseController { $post = new Post(); $userRepository->store($post); - + return new Response(); } } diff --git a/src/containers/TutorialPageContainer/useTutorialPageContainer.tsx b/src/containers/TutorialPageContainer/useTutorialPageContainer.tsx index b79774721..168dbf035 100644 --- a/src/containers/TutorialPageContainer/useTutorialPageContainer.tsx +++ b/src/containers/TutorialPageContainer/useTutorialPageContainer.tsx @@ -35,7 +35,11 @@ export const useTutorialPageContainer = (tutorial: TutorialPageData): PostPagePr previousLink: previousStep ? { label: t('pages.tutorial.previous_button'), - href: generatePath(PATHS.POST, { lang: i18n.language, slug, step: previousStep.slug }), + href: generatePath(PATHS.POST, { + lang: i18n.language, + slug, + step: previousStep.slug === 'introduction' ? '' : previousStep.slug, + }), } : undefined, nextLink: nextStep