portaldacalheta.pt
  • Principal
  • Procédé De Design
  • Interface Web
  • Hausse Des Revenus
  • Processus Financiers
Interface Web

Pourquoi diable utiliserais-je Node.js? Un tutoriel au cas par cas



introduction

La popularité croissante de JavaScript a entraîné plusieurs changements, y compris la surface du développement Web, car il est radicalement différent aujourd'hui. Les choses que nous pouvons faire sur le Web aujourd'hui, avec JavaScript fonctionnant sur le serveur, ainsi que dans le navigateur, étaient difficiles à imaginer il y a plusieurs années, ou sont encapsulées dans des environnements sandbox comme Flash et Java.

Avant d'enquêter sur Node.js , vous voudrez peut-être en savoir plus sur les avantages de l'utilisation de JavaScript dans la pile, qui unifie le langage et le format de données (JSON), permettant une réutilisation optimale des ressources du développeur. Comme il s'agit plus d'un avantage de JavaScript que de Node.js en particulier, nous n'en parlerons pas beaucoup ici. Cependant, c'est un avantage clé d'incorporer Node dans votre pile.



Comme le suggère Wikipedia: «Node.js est un environnement d'exécution open source multiplateforme pour la couche serveur (mais sans s'y limiter) basé sur le langage de programmation ECMAScript, asynchrone, avec des E / S de données dans une architecture événementielle basée sur le moteur V8 de Google. ' Au-delà de cela, il convient de noter que le créateur de Node.js, Ryan Dahl, a été mis en place pour créer des sites Web intégrés en temps réel, «inspirés par des applications comme Gmail». Dans Node.js, il a donné aux développeurs un outil pour travailler sur le paradigme d'E / S non bloquantes et pilotées par les événements.



Après deux décennies de protocole sans état basé sur le paradigme du protocole requête-réponse, nous avons enfin des applications Web en temps réel, des connexions bidirectionnelles.



En une phrase: Node.js brille dans les applications Web en temps réel utilisant la technologie push via Websockets. Qu'y a-t-il de si révolutionnaire à ce sujet? Eh bien, après plus de 20 ans de sites Web sans état basés sur le paradigme demande-réponse sans état, nous avons enfin des applications Web en temps réel, des connexions bidirectionnelles, où le client et le serveur peuvent initier la communication, leur permettant d'échanger des données librement. Cela contraste avec le paradigme typique de la réponse Web, où le client initie toujours la communication. De plus, tout est basé sur l'Open Web Stack (HTML, CSS et JS) fonctionnant sur le port standard 80.

Nous pourrions affirmer que nous avons eu ce format pendant des années sous la forme d'applets Flash et Java, mais en réalité, il s'agissait simplement d'un environnement Sandbox utilisant le Web comme protocole de transport à livrer au client. En outre, ils fonctionnent de manière isolée et fonctionnent souvent via un port non standard, ce qui peut avoir des exigences d'utilisation supplémentaires.



Avec tous ses avantages, Node.js joue désormais un rôle essentiel dans la pile technologique de nombreuses entreprises de haut niveau qui comptent sur ses avantages uniques.

Dans cet article, je vais expliquer non seulement comment ces avantages sont obtenus, mais aussi pourquoi vous pourriez vouloir utiliser Node.js et pourquoi pas utiliser certains des modèles d'applications Web classiques comme exemples.



Comment ça marche?

L'idée principale de Node.js: utiliser des E / S non bloquantes et pilotées par les événements, rester léger et efficace face à la forte utilisation des données en temps réel des applications exécutées sur des appareils distribués.

Incroyable, non?



Ce que cela signifie vraiment, c'est que Node.js n'est pas une nouvelle plate-forme qui dominera le monde du développement Web. C'est plutôt une plateforme qui répond à un besoin particulier.

Et cette compréhension est absolument essentielle. Vous ne voulez certainement pas utiliser Node.js pour les opérations gourmandes en ressources processeur; en fait, l'utiliser pour des calculs lourds annulera presque tous ses avantages. Là où Node excelle VRAIMENT, c'est dans la construction rapide et évolutive d'applications réseau, car il est capable de gérer un grand nombre de connexions simultanées avec des performances élevées, ce qui équivaut à une évolutivité élevée.



Comment cela fonctionne en interne est assez intéressant. Par rapport aux techniques de service Web traditionnelles où chaque connexion (requête) génère un nouveau thread, reprenant la RAM système et enfin remplissant la quantité de RAM disponible, Node.js fonctionne dans un seul thread, il n'utilise pas les E / S de blocage d'appels , lui permettant de prendre en charge des dizaines de milliers de connexions simultanées (tenues dans le cas de la boucle).

Un calcul rapide: en supposant que chaque thread a un potentiel accompagné de 2 Mo de mémoire, qui sera exécuté au sein d'un système avec 8 Go de RAM nous met à un maximum théorique de 4000 connexions simultanées, en plus du coût de basculement de contexte entre fils. C'est le scénario souvent traité avec les techniques de service Web traditionnelles. En évitant tout cela, Node.js atteint des niveaux d'évolutivité de plus de 1M de connexions simultanées ( comme preuve de concept ).



tout

Il existe bien sûr la possibilité de partager un seul thread entre toutes les demandes des clients, ce qui en fait un échec potentiel de l'écriture des applications Node.js. Tout d'abord, un calcul lourd pourrait caler et causer des problèmes à tous les clients (plus à ce sujet plus tard) tels que les demandes entrantes, qui seraient bloquées jusqu'à ce que ce calcul soit terminé. Deuxièmement, les développeurs doivent faire très attention à ne pas autoriser une exception bouillonnante vers le noyau (celui du haut), ce qui provoquerait le blocage de l'instance Node.js ( bloquer efficacement le programme ).

La technique utilisée pour éviter les exceptions transmet les erreurs à l'appel sous forme d'appels de paramètres (plutôt que de les extraire, comme dans d'autres environnements). Même si une exception venait à apparaître, il existe plusieurs outils disponibles pour surveiller le processus Node et effectuer la récupération nécessaire en cas d'urgence (bien que vous ne puissiez pas récupérer les sessions utilisateur); l'urgence la plus courante étant le module Forever, ou une approche différente avec des outils système externes et une surveillance.

NPM: le gestionnaire de packages de nœuds

Lorsque nous parlons de Node.js, une chose à ne pas omettre est de l'intégrer dans le support de gestion des packages à l'aide de l'outil NPM fourni par défaut avec chaque installation de Node.js. L'idée des modules NPM est très similaire à Ruby Gems: un ensemble de composants réutilisables accessibles au public grâce à une installation facile via un référentiel en ligne, avec gestion des versions et des dépendances.

Une liste complète des packages de modules peut être trouvée sur le site Web de NPM Https://npmjs.org/ ou accessible à l'aide de l'outil CLI NPM qui est automatiquement installé avec Node.js. Le module est un écosystème ouvert à tous et chacun peut publier son propre module qui sera inclus dans le référentiel NPM. Une brève introduction au NPM (un peu ancienne, mais toujours valable) peut être trouvée sur http://howtonode.org/introduction-to-npm .

Les modules NPM sont parmi les plus populaires aujourd'hui:

comment faire un bot pour discord
  • Express - Express.js, inspiré du framework de développement Web pour Node.js, et le standard de facto pour la plupart des applications Node.js aujourd'hui.

  • relier - Connect est un framework de serveur HTTP extensible pour Node.js, qui fournit une collection de plugins hautes performances appelée middleware; sert de base à l'expression.

  • socket.io Oui sockjs - Composant serveur des deux composants Websockets les plus courants aujourd'hui.

  • Jade - L'un des moteurs de template les plus populaires, inspiré de HAML, une faille dans Express.js.

  • Mongo Oui mongojs - wrappers mongoDB pour fournir l'API pour les bases de données d'objets MongoDB dans Node.js.

  • redis - Bibliothèque cliente Redis.

  • café-script - Compilateur CoffeeScript qui permet aux développeurs d'écrire leurs programmes Node.js avec coffee.

  • Souligner ( lodash , paresseux ) - La bibliothèque d'utilitaires la plus populaire de JavaScript, conçue pour être utilisée avec Node.js, ainsi que ses deux homologues, qui promettent d'améliorer les performances en adoptant une approche d'application légèrement différente.

  • pour toujours - Probablement l'utilitaire le plus courant pour garantir qu'un script Node donné s'exécute en continu. Maintient votre processus Node.js en production et en cas de crash inattendu.

La liste est interminable. Il y a des tonnes de packages vraiment utiles disponibles pour tout le monde (sans offenser ceux que j'ai sautés ici).

Exemples où Node.js doit être utilisé:

Bavarder

Il s'agit de l'application temps réel et multi-utilisateurs la plus courante. De l'IRC (à l'époque), en passant par de nombreux protocoles propriétaires et ouverts tournant sur des ports non standard, avec la possibilité de tout instrumenter dans Node.js avec des websockets fonctionnant sur le port standard 80.

L'application de chat est vraiment parfaite pour Node.js - c'est un trafic léger et intensif en données (mais un débit faible / de calcul), et c'est une application qui fonctionne sur les appareils distribués. C'est également un excellent cas d'utilisation pour l'apprentissage, car il est trop simple, mais en même temps, il couvre la plupart des outils que vous pouvez utiliser dans une application Node.js typique.

Nous allons essayer de décrire comment cela fonctionne.

Dans l'exemple le plus simple, nous avons une seule salle de discussion sur notre site Web où les gens peuvent venir échanger des messages avec une ou plusieurs personnes. Par exemple, disons que nous avons trois personnes sur le site toutes connectées à notre babillard électronique.

Du côté du serveur, nous avons un simple Express.js qui implémente deux choses: 1) Obtenez un gestionnaire de requêtes '/' qui sert la page Web contenant un babillard électronique et un bouton 'Soumettre' pour initialiser le nouveau message à partir de l'entrée, et 2 ) un serveur websockets qui écoute les messages émis par les clients websocket.

Sur le client, nous avons une page HTML avec quelques gestionnaires, un pour l'événement de clic sur le bouton Envoyer, qui récupère le message d'entrée et l'envoie dans le websocket, et un autre qui écoute les messages entrants du nouveau client. Websockets (c'est-à-dire les messages envoyés par d'autres utilisateurs, que le serveur souhaite maintenant que le client affiche).

Lorsqu'un des clients envoie un message, ce qui se passe est le suivant:

  1. Le navigateur attrape le clic du bouton `` Envoyer '' dans un gestionnaire JavaScript qui récupère la valeur du champ de saisie (c'est-à-dire le texte du message) et émet un message websocket en utilisant le client websocket connecté à notre serveur (initialisé lors de l'initialisation de la page Web).

  2. Le composant serveur de la connexion websocket reçoit le message et le transmet à tous les autres clients connectés à l'aide de la méthode de diffusion.

  3. Tous les clients reçoivent le message sous forme de message push via un composant client Websockets qui s'exécute dans la page Web. Ils collectent ensuite le contenu du message et mettent à jour la page Web au lieu d'ajouter le nouveau message au tableau.

tout

C'est l'exemple le plus simple. Pour une solution plus robuste, vous pouvez utiliser un simple cache basé sur le magasin Redis. Ou même dans une solution plus avancée, une file d'attente de messages pour gérer le routage des messages vers les clients et un mécanisme de livraison plus robuste qui peut couvrir les pertes de connexion temporaires ou stocker des messages pour les clients enregistrés lorsqu'ils sont déconnectés. Mais quelles que soient les améliorations que vous apportez, Node.js fonctionnera toujours selon les mêmes principes de base: réagir aux événements, gérer de nombreuses connexions simultanées et maintenir la fluidité de l'expérience utilisateur.

API au-dessus d'un objet DB

Bien que Node.js se démarque vraiment parmi les applications temps réel, c'est un choix naturel pour exposer des données à partir d'objets DB (par exemple MongoDB). Le stockage de données JSON permet à Node.js de fonctionner sans décalage d'impédance ni conversion de données.

Par exemple, si vous utilisez Rails, vous devrez convertir les données JSON en modèles binaires, puis les exposer à nouveau en JSON sur HTTP lorsque les données sont consommées par le backbone.js, les angles, etc., ou même les appels jQuery AJAX normaux . Avec Node.js, vous pouvez simplement exposer vos objets JSON avec une API REST pour que le client les consomme. De plus, vous n'avez pas à vous soucier de la conversion entre JSON et quoi que ce soit d'autre lors de la lecture ou de l'écriture à partir de votre base de données (si vous utilisez MongoDB). En conclusion, vous pouvez éviter d'avoir à effectuer plusieurs conversions en utilisant un format de sérialisation de données cohérent sur le client, le serveur et la base de données.

Billets en attente

Si vous recevez une grande quantité de données simultanées, votre base de données peut s'étouffer. Comme décrit ci-dessus, Node.js peut facilement gérer des connexions simultanées en même temps. Mais comme l'accès à la base de données est une opération bloquante (dans ce cas), nous rencontrons des problèmes. La solution consiste à reconnaître le comportement du client avant que les données ne soient écrites dans la base de données réelle.

Avec cette approche, le système maintient sa sensibilité sous une charge élevée, ce qui est particulièrement utile lorsque le client n'a pas besoin d'une confirmation forte de l'écriture correcte des données. Les exemples typiques incluent: la journalisation ou l'écriture des données de suivi des utilisateurs, le traitement par lots qui n'est utilisé que plus tard, ainsi que les opérations qui n'ont pas besoin d'être reflétées instantanément (comme la mise à jour du compte Facebook Like) où la cohérence finale (si souvent utilisé dans le monde NoSQL) est acceptable.

Les données sont mises en file d'attente via une sorte de cache ou Message Queuing (par exemple, infrastructure, RabbitMQ , ZeroMQ ) et résumée par un processus séparé écrit dans des services backend intensifs de traitement par lots, de calcul ou de traitement, écrits dans une plate-forme de meilleure performance pour de telles tâches. Un comportement similaire peut être implémenté avec d'autres langages / frameworks, mais pas avec le même matériel ou avec la même hauteur, pour maintenir ses performances.

tout

Conclusion: avec Node, vous pouvez mettre de côté la base de données écrite et la traiter plus tard, pour continuer comme si elle avait réussi.

Transmission de données

Dans les plates-formes Web plus traditionnelles, les requêtes et réponses HTTP sont traitées comme des événements isolés; en fait, ils sont vraiment courants. Cette observation peut être utilisée dans Node.js pour créer des fonctionnalités intéressantes. Par exemple, il est possible de traiter des fichiers pendant leur téléchargement, puisque les données entrent par un flux, et elles peuvent être traitées dans une ligne de mode. Cela pourrait être fait en temps réel pour l'encodage audio ou vidéo, en tant que proxy entre différentes sources de données (voir la section suivante).

utiliser raspberry pi comme serveur

PROCURATION

Le nœud PROXY.js est utilisé comme serveur proxy qui peut gérer un grand nombre de connexions simultanées en mode non bloquant. Il est particulièrement utile pour le proxy de différents services avec des temps de réponse différents, ou pour collecter des données à partir de divers points d'origine.

Un exemple: considérons une application serveur qui communique avec des ressources tierces, en extrayant des données de différentes sources ou en stockant des actifs tels que des images et des vidéos sur des services cloud tiers.

Bien qu'il existe des serveurs proxy dédiés, l'utilisation de Node à la place peut être utile si votre infrastructure de serveur proxy est inexistante ou si vous avez besoin d'une solution pour le développement local. Par cela, je veux dire que vous pouvez créer une application côté client avec un serveur de développement Node.js pour des actifs tels que les demandes d'API proxy / stubbing, tandis qu'en production, vous géreriez de telles interactions avec un service proxy dédié (nginx, HAProxy, etc. ).

Brokerage-Dashboard del Stock Trader

Revenons au niveau de l'application. Un autre exemple où le logiciel de bureau domine, mais pourrait facilement être remplacé par un Web en temps réel est la solution d'agent logiciel commercial; Il est utilisé pour suivre les cours des actions, effectuer des calculs et des analyses techniques, et créer des graphiques et des diagrammes.

Le commutateur en temps réel est une solution Web qui permettrait aux courtiers de changer facilement de poste de travail ou de lieu de travail. Bientôt, nous pourrions commencer à les voir sur la plage en Floride, à Ibiza ... ou à Bali.

Panneau de surveillance des applications

Un autre cas d'utilisation courant dans lequel Node-con-web-sockets convient parfaitement est le suivant: suivre les visiteurs du site Web et visualiser leurs interactions en temps réel. (Si vous êtes intéressé, cette idée a déjà été produite par Colibrí).

Vous pouvez collecter des statistiques en temps réel auprès de votre utilisateur, ou même passer au niveau supérieur en introduisant des interactions sélectives avec vos visiteurs en ouvrant un canal de communication lorsqu'ils atteignent un point spécifique de l'entonnoir. (Si vous êtes intéressé, cette idée a déjà été produite par CANDDi.)

Imaginez comment votre entreprise pourrait s'améliorer si vous saviez ce que faisaient vos visiteurs en temps réel; si vous pouviez visualiser leurs interactions. Avec le temps réel, vous pouvez désormais sortir de Node.js. de deux manières.

Maintenant, le panneau de surveillance du système, apprenons à connaître la perspective de l'infrastructure des choses. Imaginez, par exemple, un fournisseur SaaS qui souhaite proposer à ses utilisateurs un service de veille (par exemple, la page GitHub). Avec l'événement Node.js-loop, nous pouvons créer un puissant tableau de bord Web qui vérifie les services d'état de manière asynchrone et envoie des données aux clients à l'aide de Websockets.

Aussi bien internes (intra-entreprise) que ceux des services publics des Etats, peuvent être signalés en direct et en temps réel grâce à cette technologie. Poussez cette idée un peu plus loin et essayez d'imaginer un centre d'opérations réseau (NOC) dans les applications de surveillance d'un opérateur de télécommunications, d'un fournisseur de services cloud / réseau / d'hébergement ou d'une institution financière, le tout fonctionnant sur la pile Web ouverte prise en charge par Node.js et Websockets au lieu d'applets Java et / ou Java.

Remarque: n'essayez pas de créer des systèmes temps réel durs dans Node (c'est-à-dire des systèmes qui nécessitent des temps de réponse cohérents). Erlang est probablement un meilleur choix pour ce type d'application.

Où node.js peut être utilisé

Applications Web côté serveur

Node.js avec Express.js peut également être utilisé pour créer des applications Web classiques sur le serveur. Cependant, aussi longtemps que possible, ce paradigme de requête-réponse de Node.js porterait du HTML, ce n'est pas le plus typique des cas d'utilisation. Il y a des arguments pour et contre cette approche. Voici quelques faits à considérer:

Avantages:

  • Si votre application ne consomme pas beaucoup de ressources processeur, vous pouvez créer du Javascript de haut en bas, même au niveau de la base de données si vous utilisez l'objet de stockage JSON comme MongoDB DB. Cela facilite considérablement le développement (y compris l'embauche).

  • Les robots d'exploration reçoivent une réponse entièrement HTML, ce qui est beaucoup plus convivial pour le référencement, par exemple, une seule page ou une application Websockets s'exécute au-dessus de Node.js.

Les inconvénients:

  • Un processeur intensif en calcul bloquera la réactivité de Node.js, donc une plate-forme de threading est une meilleure approche. Vous pouvez également essayer de mettre à l'échelle le nombre [*].

  • Utiliser Node.js avec une base de données relationnelle est encore assez pénible (lire ci-dessous pour plus de détails). Faites-vous une faveur et choisissez n'importe quel autre environnement comme Rails, Django ou ASP.NET MVC si vous essayez d'effectuer des opérations relationnelles.

Où Node.js ne doit pas être utilisé

Du côté du serveur d'applications Web, il y a une relation de base de données derrière

En comparant Node.js à Express.js à Ruby on Rails, par exemple, il y a une décision claire en faveur de ce dernier en ce qui concerne l'accès aux données relationnelles.La base de données relationnelle avec des outils pour Node.js en est encore à ses débuts. étapes; il est assez prématuré et donc pas si agréable à travailler. D'autre part, Rails fournit automatiquement des données de configuration d'accès directement à partir de la boîte avec le schéma de base de données et les outils de support de migration d'autres Gems (avec un double sens). Rails et son homologue de framework ont ​​mûri et ont prouvé qu'Active Record Data Mapper collecte les implémentations d'accès aux données que vous manquerez si vous essayez de le répliquer avec du JavaScript pur. [*]

Néanmoins, si vous êtes très enclin à rester dans JS jusqu'au bout, gardez un œil sur Sequelize ORM et Node2 car les deux sont encore immatures, mais peuvent éventuellement rattraper les autres langages de programmation.

[] est possible et pas rare pour vous d'utiliser Node uniquement en tant que frontal, en conservant son back-end Rails et un accès facile à une base de données relationnelle.

Traitement lourd côté serveur / calcul

En ce qui concerne l'informatique lourde, Node.js n'est pas la meilleure plate-forme. Vous ne voulez certainement pas créer un serveur de calcul Fibonacci dans Node.js. En général, toute opération gourmande en ressources processeur annule tous les avantages en termes de performances et bloquerait toutes les demandes entrantes d'un thread.

Comme indiqué ci-dessus, Node.js est monothread et utilise un seul cœur de processeur. Lorsqu'il s'agit d'ajouter de la concurrence sur un serveur multicœur, il y a du travail effectué par le nœud de base sous la forme d'un module de cluster [ref: http://nodejs.org/api/cluster.html ]. Vous pouvez également exécuter plusieurs instances du serveur Node.js assez facilement derrière un proxy inverse via nginx.

Avec le regroupement, vous devez décharger tous les calculs lourds pour traiter un arrière-plan écrit dans un environnement plus approprié et les faire communiquer via Message Queuing en tant que RabbitMQ.

Bien que votre traitement en arrière-plan puisse s'exécuter initialement sur le même serveur, cette approche présente un potentiel d'évolutivité très élevée. Les services de traitement en arrière-plan pourraient être facilement distribués au travailleur indépendamment des serveurs sans qu'il soit nécessaire de configurer les charges des différents serveurs Web.

Bien sûr, vous utiliseriez la même approche sur d'autres plates-formes, mais avec Node.js, vous pouvez atteindre les demandes / s élevées dont nous avons parlé, car chaque demande est une petite tâche et est traitée très rapidement et efficacement.

conclusion

Nous avons parlé de Node.js à partir d'une théorie pratique, en commençant par ses objectifs et ses ambitions, et en terminant par ses points forts et ses pièges. Lorsque les gens ont des problèmes avec Node, ils en déduisent presque toujours le fait que les opérations de blocage sont à l'origine de tous les maux. 99% des abus de Node sont une conséquence directe.

Rappelez-vous: Node.js n'a jamais été créé pour résoudre le problème de mise à l'échelle de calcul. Il a été créé pour résoudre le problème de mise à l'échelle des E / S, ce qu'il fait très bien.

Pourquoi utiliser Node.js? Si le cas d'utilisation ne contient pas d'opérations gourmandes en ressources processeur ou d'accès à des ressources de blocage, vous pouvez profiter des avantages de Node.js et profiter d'applications réseau rapides et évolutives. Bienvenue sur le Web en temps réel.

A propos de l'auteur

Tomislav Capan , Croatie

processus de levée de fonds de private equity

Tomislav est ingénieur logiciel, consultant technique et architecte avec plus de 10 ans d'expérience. Il est spécialisé dans le Full-Slack et est hautement qualifié en JavaScript et Node.jr. A de l'expérience de travail en C #, Java et Ruby. C'est un praticien agile de Kanban qui aime collaborer sur des projets de développement.

Apple Watch en bref: une présentation des fonctionnalités pour les développeurs iOS

Mobile

Apple Watch en bref: une présentation des fonctionnalités pour les développeurs iOS
Comment créer des symboles imbriqués dans Sketch

Comment créer des symboles imbriqués dans Sketch

Conception De L'interface Utilisateur

Articles Populaires
Comment créer une culture dans des équipes distantes
Comment créer une culture dans des équipes distantes
Guide du développeur sur les licences Open Source
Guide du développeur sur les licences Open Source
Comment organiser une conférence technique réussie: l'événement CordobaJS
Comment organiser une conférence technique réussie: l'événement CordobaJS
Astuces et astuces avancées pour les présentations PowerPoint
Astuces et astuces avancées pour les présentations PowerPoint
Un didacticiel pour les futurs développeurs Google Glass: créer votre première application Glass
Un didacticiel pour les futurs développeurs Google Glass: créer votre première application Glass
 
Vol d'identité des pigistes: ça m'est arrivé - voici ce que vous devez savoir
Vol d'identité des pigistes: ça m'est arrivé - voici ce que vous devez savoir
Les 9 erreurs les plus courantes commises par les développeurs ioniques
Les 9 erreurs les plus courantes commises par les développeurs ioniques
Ray Dalio de Bridgewater: pionnier silencieux du Big Data, du Machine Learning et de la Fintech
Ray Dalio de Bridgewater: pionnier silencieux du Big Data, du Machine Learning et de la Fintech
Le guide ultime pour créer un plugin WordPress
Le guide ultime pour créer un plugin WordPress
Reconnaissance des numéros d'apprentissage automatique - De zéro à l'application
Reconnaissance des numéros d'apprentissage automatique - De zéro à l'application
Articles Populaires
  • comment créer un compte bot discord
  • la portée du projet n'entre pas en ligne de compte dans l'examen des choix de coûts fixes et variables.
  • les cinq lois de la perception gestaltiste
  • dans quoi sont écrits les systèmes d'exploitation
  • lequel des objets suivants n'est pas nécessaire dans .net pour afficher des données ?
  • qu'est-ce que le réglage des performances de la base de données
  • javascript ne peut pas être utilisé dans laquelle des situations suivantes
Catégories
  • Procédé De Design
  • Interface Web
  • Hausse Des Revenus
  • Processus Financiers
  • © 2022 | Tous Les Droits Sont Réservés

    portaldacalheta.pt