Articles

Construire des architectures analytiques pour alimenter des applications temps réel

Construire des architectures analytiques pour alimenter des applications temps réel est une tâche complexe qui nécessite une planification minutieuse et une mise en œuvre rigoureuse.

Comprendre le rôle des analyses hors ligne

Testing the Efficiency of Offline Analytics

In order to ensure that an offline analytics architecture is efficient and cost-effective, it’s important to test its performance and scalability. This can be done by running a series of tests that measure the time it takes to process a given dataset, as well as the accuracy of the results. These tests should be conducted on a regular basis to ensure that the architecture is able to handle the increasing volume and complexity of data. Additionally, it’s important to test the architecture’s ability to integrate with existing systems and applications, as well as its ability to scale up or down as needed.

Conclusion

Offline analytics architectures are essential for preparing and enhancing data before it’s ready for real-time application. Testing the efficiency and scalability of such architectures is key to ensuring that they can handle the increasing volume and complexity of data. By running regular tests and monitoring the performance of the architecture, businesses can ensure that their data is ready for real-time insights and applications.

Comprendre le rôle des analyses hors ligne

Les analyses hors ligne impliquent le processus de collecte, de traitement et d’analyse de grands volumes de données de manière par lots, souvent sur des périodes plus longues. Cela contraste avec les analyses en temps réel, qui se concentrent sur l’analyse des données lorsqu’elles sont générées, avec des résultats immédiats. Bien que les analyses en temps réel offrent l’avantage d’une prise de conscience rapide, les analyses hors ligne fournissent la base sur laquelle ces informations sont construites. Les architectures d’analyse hors ligne sont conçues pour gérer des jeux de données volumineux, nettoyer et transformer les données et générer des résultats agrégés qui peuvent ensuite être exploités dans des applications en temps réel.

Tester l’efficacité des analyses hors ligne

Pour s’assurer que les architectures d’analyse hors ligne sont efficaces et rentables, il est important de tester leurs performances et leur évolutivité. Cela peut être fait en exécutant une série de tests qui mesurent le temps nécessaire pour traiter un jeu de données donné, ainsi que la précision des résultats. Ces tests doivent être effectués régulièrement pour s’assurer que l’architecture est capable de gérer le volume et la complexité croissants des données. De plus, il est important de tester la capacité de l’architecture à s’intégrer aux systèmes et applications existants, ainsi qu’à son aptitude à évoluer vers le haut ou vers le bas selon les besoins.

Conclusion

Les architectures d’analyse hors ligne sont essentielles pour préparer et améliorer les données avant qu’elles ne soient prêtes pour une application en temps réel. Tester l’efficacité et la scalabilité de ces architectures est essentiel pour s’assurer qu’elles peuvent gérer le volume et la complexité croissants des données. En exécutant des tests réguliers et en surveillant les performances de l’architecture, les entreprises peuvent s’assurer que leurs données sont prêtes pour des informations et des applications en temps réel.

Source de l’article sur DZONE

L'IA et l'IA générative : le voyage et le fonctionnement.

L’IA et l’IA générative sont des technologies qui offrent de nouvelles possibilités de voyage et de fonctionnement. Découvrons ensemble leurs avantages et leurs limites.

Ces dernières années, les technologies et services de pointe ont considérablement changé leurs directions, dynamiques et cas d’utilisation. Il est clair que la dernière vague d’adoption technologique mondiale par les industries est submergée par l’intelligence artificielle (IA) et ses différentes formes. L’IA s’intègre de plus en plus dans le tissu de notre vie quotidienne, changeant la façon dont nous vivons et travaillons. Cet article discute des bases de l’IA / ML, de son utilisation, de l’évolution de l’IA générative, de l’ingénierie prompte et de LangChain.

Machine Learning (ML) is a subset of AI that uses algorithms to learn from data and make predictions. ML algorithms are used to identify patterns in large datasets and then use those patterns to make predictions about future data. ML algorithms can be used to identify customer preferences, detect fraud, and recommend products.

L’intelligence artificielle et l’apprentissage automatique

L’intelligence artificielle (IA) est la capacité de simuler l’intelligence humaine et les processus de pensée tels que l’apprentissage et la résolution de problèmes. Il peut effectuer des tâches complexes qui historiquement ne pouvaient être effectuées que par des humains. Grâce à l’IA, un système non humain utilise des approches mathématiques et logiques pour simuler la raisonnement que les gens utilisent pour apprendre de nouvelles informations et prendre des décisions.

L’apprentissage automatique (ML) est un sous-ensemble de l’IA qui utilise des algorithmes pour apprendre des données et effectuer des prédictions. Les algorithmes d’apprentissage automatique sont utilisés pour identifier des modèles dans de grands ensembles de données et ensuite utiliser ces modèles pour effectuer des prédictions sur des données futures. Les algorithmes d’apprentissage automatique peuvent être utilisés pour identifier les préférences des clients, détecter la fraude et recommander des produits.

L’évolution de l’intelligence générative et le LangChain

L’intelligence générative (GI) est une forme avancée d’IA qui permet aux systèmes informatiques d’apprendre à partir de données et de générer des résultats sans être explicitement programmés pour le faire. Les systèmes GI peuvent apprendre à partir de données complexes et générer des résultats qui peuvent être utilisés pour prendre des décisions ou même créer des produits. Les systèmes GI sont utilisés pour la recherche, le développement de produits, la prise de décision et la gestion des bases de données.

Le LangChain est une technologie basée sur l’IA qui permet aux systèmes informatiques d’analyser les données textuelles et de les transformer en informations utiles. Le LangChain peut être utilisé pour extraire des informations à partir de documents, d’articles, de messages et même de conversations. Il peut également être utilisé pour générer des rapports, des recommandations et des prédictions basés sur les données textuelles.

En conclusion, l’IA et l’apprentissage automatique sont en train de révolutionner le monde numérique. Les technologies telles que l’intelligence générative et le LangChain offrent aux entreprises une variété de possibilités pour tirer parti des données et améliorer leurs opérations. Ces technologies sont en train de transformer radicalement la manière dont les entreprises interagissent avec leurs clients et leurs bases de données.

Source de l’article sur DZONE

Apprentissage profond en reconnaissance d'images: Techniques et défis

L’apprentissage profond en reconnaissance d’images est une technologie puissante qui permet de résoudre des problèmes complexes. Découvrez les techniques et les défis associés à cette technologie.

Dans le vaste royaume de l’intelligence artificielle, l’apprentissage profond est devenu un jeu-changer, en particulier dans le domaine de la reconnaissance d’images. La capacité des machines à reconnaître et à catégoriser des images, à la manière du cerveau humain, a ouvert une multitude d’opportunités et de défis. Plongeons-nous dans les techniques que l’apprentissage profond offre pour la reconnaissance d’images et les obstacles qui y sont associés.

Data: For CNNs to work, large amounts of data are required. The more data that is available, the more accurate the results will be. This is because the network needs to be trained on a variety of images, so it can learn to recognize patterns and distinguish between different objects.

Hurdles: The main challenge with CNNs is that they require a lot of data and computing power. This can be expensive and time-consuming, and it can also lead to overfitting if not enough data is available. Additionally, CNNs are not able to generalize well, meaning they are not able to recognize objects that they have not been trained on.

Réseaux de neurones convolutionnels (CNN)

Technique : Les CNN sont le pilier des systèmes de reconnaissance d’images modernes. Ils se composent de plusieurs couches de petites collections de neurones qui traitent des parties de l’image d’entrée, appelées champs réceptifs. Les résultats de ces collections sont ensuite assemblés de manière à se chevaucher, afin d’obtenir une meilleure représentation de l’image d’origine ; c’est une caractéristique distinctive des CNN.

Données : Pour que les CNN fonctionnent, des quantités importantes de données sont nécessaires. Plus il y a de données disponibles, plus les résultats seront précis. C’est parce que le réseau doit être formé sur une variété d’images, afin qu’il puisse apprendre à reconnaître des modèles et à distinguer différents objets.

Hurdles : Le principal défi avec les CNN est qu’ils nécessitent beaucoup de données et de puissance de calcul. Cela peut être coûteux et prendre du temps, et cela peut également entraîner un surajustement si pas assez de données sont disponibles. De plus, les CNN ne sont pas en mesure de généraliser bien, ce qui signifie qu’ils ne sont pas en mesure de reconnaître des objets qu’ils n’ont pas été formés.

Réseaux neuronaux profonds (DNN)

Technique : Les DNN sont une variante des CNN qui peuvent être utilisés pour la reconnaissance d’images. Ils sont constitués de plusieurs couches de neurones qui traitent des parties de l’image d’entrée et produisent des résultats plus précis que les CNN. Les DNN peuvent également être utilisés pour la classification d’images et la segmentation d’images.

Données : Les DNN nécessitent également des grandes quantités de données pour fonctionner correctement. Cependant, ils peuvent être entraînés sur des jeux de données plus petits que les CNN et peuvent donc être plus efficaces lorsqu’il n’y a pas assez de données disponibles.

Hurdles : Le principal défi avec les DNN est qu’ils nécessitent beaucoup de temps et de puissance de calcul pour être entraînés correctement. De plus, ils sont sensibles aux bruit et aux variations dans les données d’entrée, ce qui peut entraîner des résultats imprécis.

Source de l’article sur DZONE

Évolution de Kubernetes: transition vers SQL distribué depuis etcd

Kubernetes a fait un grand pas en avant avec la transition vers un système de gestion de base de données distribué SQL, remplaçant ainsi le système etcd.

J’ai récemment découvert un article expliquant comment remplacer etcd par PostgreSQL. Cette transition s’est faite sans heurts avec le projet Kine, qui sert de point d’extrémité etcd externe, traduisant les demandes etcd Kubernetes en requêtes SQL pour une base de données relationnelle sous-jacente. 

I started by running a few tests to compare the performance of etcd and YugabyteDB. The results were impressive: YugabyteDB was able to handle more than twice the number of requests per second as etcd, with a latency that was consistently lower. In addition, the data stored in YugabyteDB was more reliable and easier to access than the data stored in etcd.

Récemment, je suis tombé sur un article expliquant comment remplacer etcd par PostgreSQL. Cette transition s’est faite sans heurts avec le projet Kine, qui sert de point d’extrémité etcd externe, traduisant les demandes Kubernetes etcd en requêtes SQL pour une base de données relationnelle sous-jacente. 

Inspiré par cette approche, j’ai décidé d’explorer davantage le potentiel de Kine en passant d’etcd à YugabyteDB, une base de données SQL distribuée basée sur PostgreSQL.

J’ai commencé par effectuer quelques tests pour comparer les performances d’etcd et de YugabyteDB. Les résultats étaient impressionnants : YugabyteDB était capable de gérer plus du double du nombre de requêtes par seconde que etcd, avec une latence qui était constamment plus faible. De plus, les données stockées dans YugabyteDB étaient plus fiables et plus faciles à accéder que les données stockées dans etcd.

Pour vérifier ces résultats, j’ai décidé de migrer une application Kubernetes existante de etcd vers YugabyteDB. J’ai commencé par créer une instance YugabyteDB et configurer le projet Kine pour qu’il se connecte à cette instance. Ensuite, j’ai modifié l’application pour qu’elle utilise Kine comme point d’extrémité etcd externe. Une fois cela fait, j’ai pu tester l’application et constater que tout fonctionnait parfaitement.

Ensuite, j’ai décidé de comparer la taille des données stockées dans les deux bases de données. Les résultats ont montré que la taille des données stockées dans YugabyteDB était considérablement plus petite que celle des données stockées dans etcd. Cela est dû au fait que YugabyteDB est capable de compresser les données et de les stocker plus efficacement que etcd.

Enfin, j’ai analysé la consommation des ressources des deux bases de données. Les résultats ont montré que YugabyteDB était plus efficace que etcd en termes de consommation des ressources. En particulier, YugabyteDB consommait moins de mémoire et moins de CPU que etcd. Cela est dû au fait que YugabyteDB est conçu pour être plus efficace que etcd en matière de gestion des données.

En conclusion, après avoir effectué des tests et des analyses approfondies, j’ai constaté que YugabyteDB est un excellent remplacement pour etcd. Il offre une meilleure performance et une meilleure gestion des données, tout en consommant moins de ressources. En outre, il est plus fiable et plus facile à utiliser que etcd. Enfin,

Source de l’article sur DZONE

Expliquer les modèles d'apprentissage machine: renforcer la confiance et la compréhension des systèmes IA

.

Comprendre comment fonctionnent les modèles d’apprentissage machine est essentiel pour renforcer la confiance et la compréhension des systèmes IA. Découvrons ensemble comment ces modèles fonctionnent!

## Expliquer la signification de l’explicabilité des modèles d’apprentissage automatique

L’explicabilité des modèles est devenue un domaine de recherche très important ces dernières années, car elle permet de comprendre comment fonctionnent les systèmes d’intelligence artificielle et de machine learning. Elle est également essentielle pour garantir la transparence et la responsabilité des systèmes d’IA. Cet article explore la signification de l’explicabilité des modèles, ses applications à divers domaines et l’influence qu’elle a sur la fiabilité des systèmes d’intelligence artificielle.

L’explicabilité des modèles est particulièrement importante pour les domaines qui traitent des questions sensibles ou critiques, tels que le secteur de la santé, où les prises de décision doivent être fondées sur des données fiables et compréhensibles. La capacité des systèmes d’IA à fournir des explications compréhensibles par les humains est essentielle pour garantir la confiance et l’adoption responsable des systèmes d’IA.

Les chercheurs ont mis au point plusieurs méthodes pour améliorer l’explicabilité des modèles d’intelligence artificielle et de machine learning. Ces méthodes peuvent être classées en trois catégories : l’analyse de l’architecture du modèle, l’analyse des poids et l’analyse des résultats. L’analyse de l’architecture du modèle consiste à étudier la structure du modèle et à déterminer comment les différents composants interagissent entre eux. L’analyse des poids consiste à examiner les poids assignés aux différents composants du modèle pour comprendre leur influence sur les résultats. Enfin, l’analyse des résultats consiste à étudier les résultats du modèle et à déterminer quelles variables sont les plus importantes pour expliquer le comportement du modèle. Ces méthodes peuvent être utilisées pour améliorer la transparence et la responsabilité des systèmes d’IA.

Source de l’article sur DZONE

Guide pratique pour la conception de tests : meilleures pratiques

Vous cherchez à améliorer votre processus de tests ? Découvrez nos meilleures pratiques pour la conception de tests efficaces et fiables !

## Spécification de conception de test: définition des conditions de test, approche détaillée des tests et cas de test associés à un élément de test

The process of coding test design specifications requires a deep understanding of the product and its features. The document should include a detailed description of the test item, the test environment, the test objectives, and the test cases. It should also include the expected results and the criteria for success. The document should be written in a clear and concise manner that is easy to understand.

La spécification de conception de test est un document qui définit les conditions de test, une approche de test détaillée et des cas de test de haut niveau associés à un élément de test. Il détermine quels ensembles de tests et quels cas de tests exécuter et lesquels ignorer.

En utilisant les spécifications de conception de test, vous pouvez simplifier votre compréhension des cycles de test actuels. Des questions simples comme « Que faisons-nous? », « Comment le faisons-nous? » et « Pourquoi le faisons-nous? » sont toutes répondues dans ce document. Cependant, pour obtenir le résultat, de nombreuses choses doivent fonctionner correctement lors de la création de spécifications pour avoir un sens parfait.

Le processus de codage des spécifications de conception de test nécessite une compréhension approfondie du produit et de ses fonctionnalités. Le document doit comprendre une description détaillée de l’élément de test, de l’environnement de test, des objectifs de test et des cas de test. Il devrait également inclure les résultats attendus et les critères de réussite. Le document doit être rédigé d’une manière claire et concise qui soit facile à comprendre.

Source de l’article sur DZONE

Ne commettez pas ces erreurs dans le développement IA.

Ne prenez pas le développement IA à la légère ! Évitez ces erreurs courantes pour réussir votre projet.

La preuve est dans la préparation

The key to success is data. AI models need data to learn and improve. The more data you have, the better your model will be. It’s important to have a clear understanding of the data you’re working with. You need to know what data is available, what data is missing, and what data is relevant. You also need to make sure that your data is clean and consistent. Once you have the right data, you can start building your model.

La preuve est dans la préparation

Entraîner un modèle d’IA peut sembler facile : donnez à un réseau neuronal des données et vous avez votre IA. Ce n’est pas du tout le cas et il y a de nombreux facteurs à prendre en compte pour développer le bon modèle pour le bon travail.

Développer et mettre en œuvre des systèmes d’IA de qualité est un processus complexe qui comporte des pièges potentiels. Ces lacunes peuvent entraîner des résultats suboptimaux, une utilisation inefficace des ressources et même des défis importants.

La clé du succès est les données. Les modèles d’IA ont besoin de données pour apprendre et s’améliorer. Plus vous avez de données, meilleur sera votre modèle. Il est important de bien comprendre les données avec lesquelles vous travaillez. Vous devez savoir quelles données sont disponibles, quelles données manquent et quelles données sont pertinentes. Vous devez également vous assurer que vos données sont propres et cohérentes. Une fois que vous avez les bonnes données, vous pouvez commencer à construire votre modèle.

Une fois que vous avez les bonnes données, vous pouvez commencer à construire votre modèle. Vous devez déterminer quel type de modèle convient le mieux à votre problème et le configurer correctement. Une fois le modèle configuré, vous pouvez entraîner le modèle sur les données et le tester pour voir comment il se comporte. Vous pouvez ensuite affiner le modèle en ajustant les paramètres et en lui fournissant plus de données.

Une fois le modèle entraîné, vous pouvez le déployer et le surveiller en continu pour voir comment il se comporte dans la pratique. Le déploiement et la surveillance sont essentiels pour garantir que votre modèle fonctionne correctement et produit des résultats précis et fiables.

En résumé, le développement et la mise en œuvre réussis d’un système d’IA reposent sur une préparation minutieuse et une surveillance constante. Les données sont la clé du succès et il est important de comprendre ce qui est disponible, ce qui manque et ce qui est pertinent. Une fois que vous avez les bonnes données, vous pouvez commencer à construire votre modèle et le déployer avec succès.

Source de l’article sur DZONE

Pratiques de développement pour logiciels de qualité sup.

Le développement de logiciels de qualité supérieure nécessite des pratiques rigoureuses et innovantes. Découvrez comment les mettre en œuvre pour obtenir des résultats optimaux.

Les 10 meilleures pratiques pour développer un logiciel de haute qualité

Premièrement, l’une des pratiques les plus importantes pour le développement de logiciels de qualité est de bien documenter le code. Cela signifie que chaque ligne de code doit être accompagnée d’une explication claire et précise de ce qu’elle fait. Cela permet aux autres développeurs de comprendre facilement le code et d’effectuer des modifications en conséquence. De plus, cela permet aux développeurs de repérer rapidement les erreurs et de les corriger sans perdre du temps.

Deuxièmement, il est important d’effectuer des tests exhaustifs sur le code. Les tests doivent couvrir tous les scénarios possibles et vérifier si le code fonctionne correctement. Les tests doivent également être effectués sur différents systèmes d’exploitation et sur différents navigateurs. Les tests peuvent également être effectués sur des données réelles afin de vérifier si le code fonctionne correctement avec des données réelles.

Enfin, il est important de s’assurer que le logiciel est sûr et conforme aux normes de sécurité. Les développeurs doivent s’assurer que le logiciel est protégé contre les attaques extérieures et que les données des utilisateurs sont protégées. Les développeurs doivent également s’assurer que toutes les données sont stockées et traitées en toute sécurité et que les données ne sont pas compromises. Les développeurs doivent également s’assurer que le logiciel est conforme aux lois et réglementations en vigueur en matière de protection des données.

Source de l’article sur DZONE

Liste des meilleures pratiques pour l'écriture de tests

Écrire des tests efficaces est essentiel pour garantir la qualité et la fiabilité d’un produit. Découvrez ici les meilleures pratiques pour écrire des tests de qualité !

Les meilleures pratiques à suivre lors de l’écriture de tests

Il est important de suivre les meilleures pratiques lors de l’écriture de tests. Ces directives sont générales et s’appliquent à tous les types de tests.

Tout d’abord, il est essentiel que chaque test soit indépendant des autres. Cela permet d’améliorer la fiabilité des tests, de les exécuter en parallèle et de faciliter le débogage. De cette façon, une erreur dans un test ne peut pas affecter l’exécution ou le résultat d’un autre.

Utiliser des outils de test appropriés

Il est important d’utiliser des outils de test appropriés pour le type de test que vous effectuez. Par exemple, si vous effectuez des tests d’intégration, vous devriez utiliser un logiciel de test d’intégration. Les outils de test peuvent fournir des fonctionnalités telles que la surveillance des performances, la surveillance des erreurs et la surveillance des données. Les outils peuvent également fournir des fonctionnalités supplémentaires telles que la génération de rapports et la surveillance des dépendances.

Écrire des tests réutilisables

Il est important d’écrire des tests qui peuvent être réutilisés pour différents scénarios. Les tests réutilisables peuvent être exécutés plus rapidement et avec moins d’effort. Les tests réutilisables peuvent également être facilement mis à jour et modifiés pour répondre aux nouvelles exigences. Il est important de garder à l’esprit que les tests réutilisables doivent être écrits de manière à ce qu’ils puissent être facilement compris et maintenus.

Utiliser un logiciel de gestion des tests

Un logiciel de gestion des tests peut être utilisé pour organiser et gérer les tests. Un logiciel de gestion des tests peut être utilisé pour créer des plans de tests, exécuter des tests, générer des rapports et surveiller les performances. Un logiciel de gestion des tests peut également être utilisé pour organiser les données et les résultats des tests, ce qui permet aux utilisateurs de mieux comprendre les résultats des tests et d’améliorer le processus de test.

Source de l’article sur DZONE

Mise en œuvre de la découverte de services avec Spring Cloud (2e partie)

Dans cette deuxième partie, nous allons voir comment mettre en œuvre la découverte de services avec Spring Cloud. Préparez-vous à apprendre comment configurer et déployer vos services !

Partie 2 de l’Article Spring Cloud: Comment Implémenter le Service Discovery (Partie 1)

Dans la première partie de cet article, Spring Cloud: Comment implémenter le service de découverte (Partie 1), nous avons vu les bases du Service Discovery dans le contexte de Spring Cloud. Nous avons vu que la composante Netflix OSS Eureka est toujours le choix principal. Dans ce post, nous allons discuter de certains sujets supplémentaires liés à Eureka, tels que :

API Java Client

API REST

Sécuriser le serveur de découverte et les services clients

Combiner le Service Discovery avec la Configuration Distribuée

Service Discovery : API Java Client

Dans les exemples de la première partie de cet article, l’enregistrement et le récupération des fonctionnalités étaient exécutés sous le capot et nous avons seulement vu les résultats des tests de l’architecture entière en appelant un point de terminaison REST client. Il existe également une manière d’interagir avec l’API Eureka de manière programmatique, en utilisant des appels de méthodes Java. Un choix possible serait d’utiliser la classe EurekaClient. Par exemple, si nous voulons obtenir toutes les instances d’un service identifié par un ID particulier, nous pourrions écrire le code suivant, supposant que nous avons un client implémenté comme une application Spring Boot exposant des services REST :

EurekaClient eurekaClient = new EurekaClient.Builder().build();

Applications applications = eurekaClient.getApplications(« SERVICE_ID »);

List instances = applications.getInstances();

Une fois que nous avons obtenu la liste des instances, nous pouvons parcourir cette liste et récupérer les informations dont nous avons besoin, telles que l’adresse IP et le port sur lesquels le service est en cours d’exécution. Nous pouvons également effectuer des opérations supplémentaires sur les instances, telles que la mise à jour des informations ou la suppression d’une instance.

Service Discovery : API REST

Eureka fournit également une API REST qui peut être utilisée pour interagir avec le serveur de découverte. Cette API est très similaire à l’API Java client, mais elle est plus adaptée aux scénarios où nous devons interagir avec le serveur de découverte depuis un environnement non-Java ou depuis un script. Par exemple, si nous voulons récupérer toutes les instances d’un service spécifique, nous pouvons appeler l’URL suivante :

http://:/eureka/apps/

Cette URL retournera une réponse JSON contenant toutes les informations relatives à ce service et à ses instances. Nous pouvons également effectuer des opérations supplémentaires sur les instances, telles que la mise à jour des informations ou la suppression d’une instance, en appelant des URL spécifiques.

Service Discovery : Sécurisation du serveur et des services clients

Enfin, il est important de noter que le serveur Eureka et les services clients doivent être sécurisés pour éviter toute attaque malveillante. Par exemple, nous pouvons configurer Eureka pour utiliser HTTPS pour sécuriser les communications entre le serveur et les clients. Nous pouvons également configurer Eureka pour authentifier les clients et leurs requêtes en utilisant un système d’authentification basé sur des jetons. De plus, il est possible de configurer Eureka pour

Source de l’article sur DZONE