vendredi 25 octobre 2019

Trello et la méthode Kanban et un peu de Slack

Je souhaite relayer ici une vidéo, ce n'est pas coutume mais voici une présentation de la méthode Kanban dans le pédagotube la chaine dédiée à la pédagogie.


https://youtu.be/tfZ5iZ8cfd4

Il est bien précisé que Trello permet de gérer toute sorte de projets et non pas seulement des projets informatiques.

Alors c'est quoi Trello et en quoi cela va nous permettre d'utiliser la méthode Kanban ? Déjà c'est un outil gratuit et c'est toujours intéressant cela permet de découvrir à moindre coût.

Trello Team Playbooks
Trello Team Playbooks

La vidéo nous explique qu'il est classique de lié Trello à Slack car il existe un Addin pour lié Trello et le fameux logiciel Slack.

C'est quoi Trello et à quoi ça sert dans Slack

Alors c'est quoi Slack ?

Je dirais de Slack qu'il s'agit d'un RSE.
Il s'agit d'organiser le travail en équipe, de favoriser les échanges entre les entreprise partenaires tout ceci sent bien le RSE.

Ce que Slack appelle des Canaux, c'est en fait des Projets qui regroupe des équipes de travail.

Trello permet donc d'aller au bout de l'application de la méthode Kanban avec les différentes colonnes et les différentes tâches du projet. Trello permet d'avoir ainsi, en un coup d’œil, une idée de l'avancement du projet.


C'est quoi Microsoft - PowerApps pour les créateurs d'application ?

C'est un peu le coup du "mais on m'aurait pas prévenu" ! Avec Microsoft PowerApps, j'ai l'impression de découvrir la roue et ils ne m'ont pas prévenu. Alors c'est quoi Microsoft PowerApps ?

Microsoft - PowerApps - Vue d’ensemble de la création d’applications dans PowerApps

Quatre composants principaux :
  • applications de canevas
  • applications pilotées par modèle
  • portails
  • Common Data Services
Créer une interface utilisateur comme vous le souhaitez.

Microsoft - PowerApps - Se connecter à PowerApps pour la première fois

Mais là c'est la cata !
Connexion à PowerApps avec Internet Explorer - mdr !

Microsoft - PowerApps - Qu'est ce que PowerApps ?


Ca parait magique, vous créez votre application parfaite avec tout ce dont vous avez besoin dedans en 1 clique.

Je n'ai pas le temps de creuser plus simplement cet outil ne trouve pas le publique qu'il devrait car il est trop compliqué et basé sur SharPoint dont on connait les désavantages.

To Be Continued

mardi 1 octobre 2019

Visual Studio toujours synchroniser avec le document actif

Cette option est cachée tout au fond de Visual Studio alors je prends note car j'en ai besoin chaque fois que j'installe une nouvelle version de Visual Studio sur une nouvelle machine.

Voici les explications de Microsoft sur la Boite de dialogue : Outils -> Options -> Projets et solutions -> Général.

Visual Studio 2019 - Boîte de dialogue Options : Projets et solutions > Général

Mais vous pourrez vous rendre que ces explications ne sont pas si claires pour faire ce que l'on souhaite c'est à  dire : 

Suivre les éléments actifs dans l'explorateur de solutions.

Cela se passe dans le Menu Tools (Options in french) -> Projects and Solutions -> General : Track Active Item in Solution Explorer :

Toujours Synchroniser sur l'élément actif dans l'Explorateur de Solution

Il y a bien le bouton Synchroniser dans la barre de la fenêtre Solution Explorer mais au bout d'un moment, j'en ai assez de devoir cliquer tout le temps dessus !

Visual Studio 2022 - Synchroniser avec le document actif

Cette option se trouve au même endroit avec Visual Studio 2022. Mise à jour de cette fenêtre, dans Visual Studio 2022, voici ce que nous obtenons :

Visual Studio 2022 - Synchroniser l'éditeur avec l'Explorateur de solution
Visual Studio 2022 - Synchroniser l'éditeur avec l'Explorateur de solution

Vous remarquez un point d'interrogation en effet le rendu est assez brouillon pour les options qui sont coincées ici.

J'ai eu beau sauver les settings de mon ancien Visual Studio et tenter de les importer dans le nouveau cette options n'est pas sauvegardée à cet endroit.

Hop this can help!

mardi 21 mai 2019

NUnit vs xUnit parmi les modules de Tests Unitaires lequel choisir ?

Je me rends compte que dans mon Visual Studio 2017 Community, je peux instancier les deux types de projets de Tests Unitaires, je suis surpris d'ailleurs, il n'y rien à installer pas même un package nuget ces projets sont déjà là dans mes Templates de Visual Studio.

Tout est là dans Visual Studio pour créer un projet de Tests :

Visual Studio Community .NET Core Tests Unitaires

D'ailleurs, si je prête attention, je vois en fait trois modules de Tests Unitaires. Je trouve que cela fait un peu beaucoup... Comment faire le choix du module de Tests Unitaires pour mon projet, MSTest, NUnit ou xUnit ?

Si maintenant, je fais la même chose, créer un projet de TestsU avec mon Visual Studio Community 2019 :

Visual Studio Community 2019 - Unit Test Projects

Je peux constater que les projets de Tests Unitaire se sont bien étoffés en deux ans entre 2017 et 2019. Il faut distinguer en .NET Framework et .NET Core.

Et peut être que ma question devrait être plus large : Quel module de Tests Unitaires choisir ? Je me rends rapidement compte que cette question fait rage sur Internet.

DEV - NET Core 2: Why xUnit and not NUnit or MSTest
Ils disent que xUnit est plus récent. Ils étaient avec NUnit et sont passé à xUnit car ils n'aiment pas trop l'écriture des tests avec MSTest mais ils ne connaissaient pas la V2 donc peut-être que la V2 de MSTest est meilleure.

Dans les commentaires de cet article je trouve :

.Net Core Unit Test and Code Coverage with Visual Studio Code - DEV Community
Et l'utilisation de Visual Studio Code avec un NuGet package Coverlet et de SonarQube donc finalement Unit Test en ferait plus que les autres framework de Test.

GitHub - coverlet-coverage/coverlet: Cross platform code coverage for .NET
Cross-plateforme code coverage (couveture de code)

Avec deux extensions pour Visual Studio Code :

.NET Core Test Explorer - Visual Studio Marketplace
Coverage Gutters - Visual Studio Marketplace

Sur le site de Microsoft quelques comparaisons :
MSDN - Test Experience Improvements
La comparaison chiffrée des trois frameworks xUnit, NUnit et MSTest v2, et la découverte d'une nouvelle fonctionnalité de Visual Studio, Real Time Test Discovery

MSDN - Moving to real time test discovery in Test Explorer
Là, je ne sais pas trop ce que l'on me demande, à découvrir.

Je note ce lien pour la route :
The Clean Code Blog - First-Class Tests

Une définition judicieuse de tous les types de tests que l'on peut imaginer :

  • Unit Test,
  • Acceptance Test,
  • Integration Test,
  • System Test,
  • Micro-test,
  • Functional Test 

Et c'est très intéressant. La morale à la fin de l'histoire c'est : Keep your tests clean. Treat them as first-class citizens of the system. Il est vrais que des tests qui ne sont pas remis à jour en fonction de l'évolution des spécifications, tombent en désuétude et c'est la catastrophe, il faut impérativement maintenir vos tests à jour.
 
RAYGUN - Unit testing frameworks in C#: Comparing XUnit, NUnit and Visual Studio
Là je suppose que ce qui est appelé "Visual Studio" ce sont les tests MSTests qui sont appelés : "Built-in Visual Studio testing Tools"

Je vous donne la traduction de la conclusion : En conclusion…
Quels que soient le framework de Tests Unitaires que vous utilisez, vous obtiendrez les bases. Cependant, il y a quelques différences que j'espère avoir soulignées afin que vous puissiez choisir celle qui convient à votre projet. Qu'il s'agisse de la commodité du framework de tests unitaires intégré de Microsoft, du statut solide et éprouvé de NUnit ou de la prise en charge moderne des tests unitaires fournie par XUnit, il y a toujours quelque chose qui vous donnera exactement ce dont vous avez besoin !

On peut dire qu'il ne se mouille pas trop dans un choix définitif ... Grrrrr !

Ma Conclusion sur les frameworks de Tests Unitaires

Je sens que je vais lancer avec les Tests Intégrés de Microsoft : MS Tests puisque la V2 est là et que cela semble prometteur. J'aime explorer les nouveautés.

Et en plus, j'ai trouvé un argument de poids ! Ils sont intégrés, c'est à dire que vous lisez le résultats des Tests Unitaires directement dans Visual Studio tandis avec les deux autres framework de tests vous avez les résultats dans une console ... à méditer encore. A murir sérieusement car les Tests Unitaires sont une affaire sérieuse.

N'hésitez pas à participer à laisser votre commentaire en dessous.

Have great fun with tests!

mercredi 15 mai 2019

Solution Open Source pour remplacer Microsoft Exchange (Outlook)

Quelle solution Open Source existent si l'on ne souhaite pas utiliser la messagerie collaborative Outlook ? D'abord, je pensais que Microsoft Exchange c'était plutôt pour parler du Serveur de mails.

Blog-Syloé - 4 solutions open source pour remplacer Microsoft Exchange
Oui, je souhaitais simplement exercer mon droit de réponse, en profitant peut être un peu du flux généré par cette question d'abord posée sur le Blog Syloé. Je trouve la formulation de cette question particulière  tendancieuse mais il est vrai que ce sont des Linuxien alors il ne sont pas habitués à l'Open Source de Microsoft. Il faut les éduquer ;-)

Outlook est une messagerie collaborative et gratuite sur Internet une licence est nécessaire si et seulement si vous souhaitez installer l'application de poste sur votre Ordinateur. Effectivement si vous souhaitez installer la partie serveur d'emails sur l'un des ordinateur de votre société il vous faudra vous acquitter d'une licence Microsoft Exchange.

La solution proposée en contre partie m'intéresse, on parle de Zimbra

https://www.zimbra.com/email-server-software/
Zimbra server d'emails

Si je regarde un peu ce logiciel en effet ce serait une serveur d'entreprise d'emailling collaboratif donc une véritable alternative à "Microsoft Exchange" mais pas à Outlook que vous pouvez utiliser gratuitement sur Internet.

Mise à jour en septembre 2020, j'ai décidé de ne plus payer ma licence Microsoft Office. Ma licence a expirée au début je pouvais continuer d'utiliser MS Outlook et puis un beau jour plus rien les fonctionnalités étaient toutes invalides ... bref j'ai installé Thunderbird. Ça fonctionne super bien et cela remplace avantageusement Oulook pour poste.

Pendant que j'y suis, j'ai installé Libre Office qui fonctionne pas mal du tout non plus. Je n'aurais pas dit cela, il y a une dizaine d'années.

mardi 9 avril 2019

Intelligence Artificielle en Langage Pyhton

Je cherche les meilleurs outils le chemin le plus directe pour faire mon initiation à l'intelligence artificielle et je cherche les mots clefs "machine learning python" il me semble avoir trouvé la mine d'or et son filon.

https://wiki.python.org/moin/PythonForArtificialIntelligence
Python For Artificial Intelligence
C'est notre sujet du moment avec ce prix Alan Turing obtenu par un français Yann LeCun et ses confrères Yoshua Bengio et Goeffray Hinton sur le développement du deep Learning.

C'est le moment de prendre quelques notes et de découvrir un peu plus ce qu'est l'intelligence artificielle.

Makina Corpus - Initiation au Machine Learning avec Python
Les différentes techniques pour faire réfléchir nos machines :
  • Logique floue
  • Algorithmes génétique
  • Data mining
  • Inférence bayésienne
  • Agents intelligents
  • Réseaux de neuronnes
  • Apprentissage automatique
L'arrivée du Big Data a propulsé un nouveau domaine de l'IA l'apprentissage automatique.

Python - PythonForArtificialIntelligence
Voici une liste de librairies en langage Python qui concerne l'Intelligence Artificielle, quatre types de rubriques : General AI, Machine Learning, Langage naturel et traitement de texte, Réseau Neuronal.

C'est la mine d'or de l'algorithmie liée au machine Learning, même si quelques liens sont cassés ...

Wikipédia - List Of programming languages for artificiel intelligence
On sort du Python et on fait le tour de tous les langages qui peuvent nous permettre de programmer quelque chose en IA.

Wikipédia - Calcul des prédicats
J'aime bien cette page car elle me rappelle les cours en programmation que j'avais à l'Université. Des termes et des concepts indispensables y sont décrit.

lundi 8 avril 2019

C'est quoi un Ingénieur d'Intégration Continue

L’intégration continue est un concept qui se base sur l’analogie avec une usine automatisée. Sauf qu’au lieu de construire des voitures, on construit un logiciel. Un logiciel est modifié sans cesse et pour sécuriser son processus de fabrication, il faut automatiser le plus possible sa fabrication.

En 2013, j'écrivais déjà un article sur l'intégration continue : Outils d'Intégration Continue

Attention l'intégration continue s'entend souvent sur multiplateformes une partie des développements viennent de Windows et peut être qu'une autre partie vient de Linux, il faudra évoquer CMake.

Pour découvrir rapidement CMake :

Alexandre Laurent - Développez.com - Utiliser CMake pour compiler un projet

Etape par étape, je vais détailler les outils correspondants au métier de l'Ingénieur d'intégration continue. Dans les équipes de développement une personnes est dédiée à l'intégration continue. C'est ce qui différencie un développement artisanal d'un véritable développement professionnel. 

Alors quelles sont les spécificités de ce métier ? Quelles sont les nouveautés de ces dernières années.

Ingénieur d'intégration continue définition de poste

Je débute par une définition de poste voilà ce que je propose :

Collaborer avec les experts techniques R&D (architectes logiciel et experts métier) et les utilisateurs (équipes de qualification des produits) pour comprendre les exigences métier et identifier les solutions d’intégration et déploiement automatisés et de validation automatique de nos produits logiciels.

Il s'agit bien sûr d'une très grosse société au sein d'une très grosse équipe. Là on se rend compte que l'intégration continue n'a pas pu être mise en œuvre, il faut donc un facilitateur.

Et l'on donne l'outil Jenkins

Nous y voilà, nous avons une parfaite connaissance d'MSBuild on y ajoute les Outils d'Intégration Continue et au dessus de tout ça l'outil Jenkins va nous permettre de faire quoi ?

https://jenkins.io/solutions/c/
Jenkins Documentation Use-cases - C/C++

Jenkins Définition

Jenkins est un serveur d'automatisation open source autonome qui peut être utilisé pour automatiser toutes sortes de tâches liées à la création, au test, à la livraison ou au déploiement de logiciels.

Jenkins Installation

Jenkins est une application web à laquelle on accède par localhost une fois installée.

Jenkins - Getting started with the Guided Tour

La suite consiste à créer des pipeline des canaux de livraison continue. L'objectif de Jenkins est de pouvoir enchaîner les différentes étapes pour construire tester et déployer l'application.

Vous maîtrisez un outil comme Jenkins vous êtes un Ingénieur d'Intégration Continue.

Vous avez maintenant tout le loisir de vous former à Jenkins. Je voudrais aborder une notion importante de Jenkins c'est Blue Ocean dit comme ça c'est flou mais Blue Ocean vient se mettre au dessus de Jenkins et permet de repenser l'expérience utilisateur de Jenkins. Blue Ocean est un éditeur de pipeline.

En suite, je pense faire un tour du côté de ce site :

Continuous Integration with MSBuild and Jenkins – Part 1

Et puis un petit retour sur la doc Jenkins et l'intégration de MSBuild Plugin pour l'intégration continue sur plateforme Windows :

Jenkins - MSBuild Plugin

Car MSBuild cela je connais bien :

MSBuild - Outils d'intégration continue

Donc un Ingénieur d'intégration continue ce serait quelqu'un qui maîtrise aussi bien MSBuild que Jenkins. Ce blog est donc l'outil pour devenir un Ingénieur d'Intégration Continue.


mardi 2 avril 2019

Comment traduire un logiciel développé en Java en langage C#.NET ?

C'est la question que l'on me pose aujourd'hui alors en tant que consultant, je vais trouver la réponse et cela ne m'a pas l'air si simple. Je connaissais un outil de transfert du langage Visual Basic en C# mais de Java en C# ... je ne vois pas encore alors creusons la question.

Pour aller du langage Visual Basic en C# : Telerik - Code Converter

Oui les bons mots clefs sont : Converter ou Translator et je trouve un site en ligne qui fait à peut prêt tout :

https://www.carlosag.net/tools/codetranslator/
Traduire d'un langage de programmation dans un autre C#, Java, VB.NET, TypeScript
En suite il y a des solutions payantes pour quelques centaines de dollars pourquoi se priver :


https://www.tangiblesoftwaresolutions.com/order/order-java-to-csharp.html
Translater du soft écrit en Java vers du C#
Et voilà, on a fait le tour de la question très rapidement en trouvant des outils en ligne gratuits qui peuvent permettre de prendre en main une partie automatique de la traduction et pour aller plus vite certainement avec un outil payant.

Quant à moi je crois que je apprendre le Java ;-)



vendredi 8 mars 2019

ZDNet - Outil de reverse engineering sous licence libre Ghidra

Vous connaissez Ghidra ? La National Security Agency a publié Ghidra, un outil de reverse engineering sous licence libre utilisé depuis plus de 10 ans en interne. ZDNet - Ghidra

L'existence de Ghidra a été initialement rendue publique via Wikileaks en mars 2017 mais il a fallut attendre la déclassification du logiciel deux ans plus tard. Les formats binaires pris en charge sont très nombreux on retrouve dans la liste un nombre impressionnant de micro-processeurs.

https://ghidra-sre.org/
Outil de reverse engineering de la NSA

Il existe une alternative nommée IDA Pro mais elle vaut des milliers de dollars par an. IDA Pro est un désassembleur et débogueur pour Windows Linux ou Mac OS. C'est le standard en matière d'analyse de code hostile.

NSA sous GitHub - Ghidra
NSA sous GitHub - Ghidra 

Cet outil est maintenant un logiciel Open Source sous Github :


Ghidra est en Java, il faut avoir installé le Java Development Kit 11. Mais a priori l'installation de cet outil n'est pas plus compliqué que de dézipper l'archive.

Au cas cela disparaisse moi je prends des notes et je l'ai téléhargé ... LoL ...

mercredi 27 février 2019

C'est quoi l'outil de partage de fichiers Dropbox

Vous connaissez forcément OneDrive, l'outil de partage de fichiers intégré à l'OS de Windows de Microsoft. Alors Dropbox c'est la même chose ou c'est mieux ?

https://www.dropbox.com/business/tour
Dropbox Business
Je dirais tout simplement que c'est le même principe de base concernant le partage des fichiers Dropbox amène au dessus de cette couche fonctionnelle tout ce qui est gestion de groupe collaboration entre équipes.

J'ajoute que si vous êtes seul OneDrive suffit ;-) si votre équipe grossie passez à Dropbox c'est un excellent outil collaboratif de partage du travail.

Concept marketing la sécurité

Ils écrivent : Préservez la sécurité de votre entreprise
Protégez-vous contre les fuites de données des fuites et les attaques malveillantes. Dropbox Business vous offre une sécurité et une durabilité haut de gamme sans les coûts élevés et la gestion complexe d'un serveur de fichiers, d'un FTP ou d'une solution NAS.

Mais attention, il n'y a pas de sécurité absolue sur Internet ... à voir avec le temps si certains clients de Dropbox ne se sont pas fait attaqués et voler leurs données.

Pour terminé avec Dropbox

La page de comparaison des différentes solutions cela permet d'avoir une liste de toutes les fonctionnalités et le tarif :

Dropbox - Choisissez la solution qui vous convient
Avec Dropbox Business accédez à une collaboration plus sûre et efficace simplifiez-vous la tâche en vous offrant un emplacement centralisé pour accéder à vos fichiers et les partager.

mardi 26 février 2019

Encore quelques Tutos sur Git - Bitbucket et les workflows

Je découvre les Workflows de Git avec Gitflow et je trouve les tutoriels d'Atlassian intéressants, bien faits, clairs. Alors je prends des notes car cela me semble très intéressant pour la suite.

Workflow Gitflow | Tutoriel Git d'Atlassian

Git-flow est un wrapper Git.

Il faut Installer git-flow et lancer la commande : git flow init

Elle créé des branches pour nous faciliter les tâches de développement collaboratif.

Du coût dans Bitbucket, on trouve plein d'aides sur Git même si vous avez déposé vos Repos dans Github toute cette aide peut être intéressante.

Utilisation d'une branche Git pour merger un fichier

De SVN à Git – Préparation de la migration

Basic Git commands

Autrefois, Git était connu pour nécessiter un apprentissage de longue haleine. Cependant, les mainteneurs Git n'ont cessé d'apporter des améliorations, comme des valeurs par défaut sensibles et des messages d'aide contextuels, pour rendre le processus d'intégration plus agréable.

Ah oui vous trouvez ?! Lol, Il y a trop d'outils annexes, on ne sait plus quoi utiliser pour rationnaliser Git.

Comparaison de workflows

Voilà et bien d'autres informations sur le site Bitbucket d'Atlassian.

jeudi 21 février 2019

Outil pour s'organiser en utilisant la méthodologie Scrum

Connaissez-vous un outil pour vous organiser en utilisant la méthodologie Scrum ? Non, alors découvrons ensemble l'outil logiciel scrumwise pour bien utiliser la méthodologie Scrum :

https://www.scrumwise.com/
scrumwise

Et d'abord son message marketing :

L'outil agile le plus simple que vous trouverez. Scrumwise vous permet de vous concentrer sur votre projet, en vous donnant des résultats plus rapides, un meilleur travail d'équipe et une meilleure communication.

Et à part cela ?

Il semble que la communication sur cet outils soit bien moderne sur le site le bouton le plus facile à cliquer c'est "Free try now" ce qui ne signifie pas que c'est le meilleur outil ...

Les fonctionnalités :

Equipes et rôles

Créez des équipes et attribuez des rôles. Gardez une trace de la vitesse de votre équipe et travaillez sur plusieurs fuseaux horaires. Discutez avec les membres de l'équipe, faites des annonces et partagez des fichiers.

Gestion des arriérés

Créez des backlogs et organisez-les à l'aide de listes, de balises et de filtres. Utilisez des épopées pour garder un aperçu de haut niveau des choses. Divisez le travail en morceaux gérables à l'aide de sous-tâches et de listes de contrôle.

Gestion des versions

Planifiez efficacement les rejets à long terme, en prévoyant les dates de diffusion en utilisant les vitesses et le taux de combustion prévus. Savoir si vous êtes sur la bonne voie ou non.

Sprint management

Organisez les sprints de manière visuelle en répartissant le travail entre vos équipes. Voir quelle équipe est sur-affectée et faire des ajustements à la volée. Gérez les vacances, les allocations partielles et le travail de fin de semaine.

Tableaux de tâches

Concevez vos propres tableaux de tâches faciles à utiliser, où tout se met à jour en temps réel. Chaque élément du carnet de commandes a sa propre ligne dans le tableau, ce qui permet de garder facilement les sous-tâches ensemble.

Graphiques de Burndown

Visualisez vos progrès dans les tableaux de burndown, en tenant automatiquement compte des vacances et du travail du week-end, quel que soit le fuseau horaire de l'équipe.

Conseils Kanban

Utilisez des tableaux Kanban lorsque vous n'avez pas besoin de sprints pour créer un tableau pour chacun de vos flux de travail. Mélangez Scrum et Kanban librement, pour une flexibilité totale.

Suivi du temps

Suivez le temps de facturation et de comptabilité et obtenez des journaux de temps détaillés pour des personnes individuelles, des sprints, des équipes et des périodes calendaires. Exporter au format CSV ou copier directement dans des feuilles de calcul.

Le Prix ?

Entre 9 et 7,50 dollars / mois / utilisateur

Alors pourquoi s'en priver d'autant que vous pouvez essayer gratuitement ...

Dashboard Scrumwise

Voilà, vous connaissez d'autres outils de ce type pour s'organiser en méthodologie Scrum ?

N'hésitez pas à faire votre commentaire.

mercredi 9 janvier 2019

C'est quoi l'industrie 4.0 ?

L'industrie 4.0 qu'est ce que cela implique ? Certaines normalisations, certains concepts acceptés par tous et quoi encore ? Des protocoles de communication communs. Venez, on va trouver la réponse.
 
L'industrie 4.0 une révolution
L'industrie 4.0 une révolution

Bien sûr, on parle d'IoT mais aussi beaucoup de blabla sur le dessin on voit que l'industrie 4.0 se sont les machines qui discutent entre elles soit à l'intérieur de l'usine mais cela peut être aussi d'usine à usine.

Pour nos amis anglais notons qu'ils appellent cela la smart factories. Pour la standardisations et les normalisation il s'agit du standard "OPC UA" particulièrement adapté aux communications entre machines.

Autres protocoles IEC 62264 (intégration des systèmes entreprise-contrôle)
IEC 61512 (conception et la spécification des systèmes de contrôle des procédés de fabrication batch)

Pour la communication entre eux des objets de l'industrie 4.0, on parle de technologie RFID. OPC UA sert de protocole de communication.

La prochaine norme 5G vise à répondre à l'industrie 4.0.

Protocole OPC UA

Il important que les équipements puissent communiquer et fonctionner en bonne intelligence quelque soit le fabricant, dans l'usine 4.0, il ne faut pas de format propriétaire mais un protocole ouvert unifié et Open Source.

OPCUA permet de dispatcher des commandes grâce à l'exécution de méthodes et permet de spécifier des événement et de recevoir des notifications.

L'OPC UA a été implémenté dans différents langage de programmation C++, C#, Java. L'OPC UA implémente le design pattern de l'observer qui permet de s'abonner à des notifications. Il implémente également le classique Client/Serveur.

Lorsqu'un appareil est compatible OPCUA il suffit de la connecté sur le réseau Ethernet de l'usine et il est immédiatement opérationnel sans autre manipulation à effectuer.

OPC Unified Architecture

Implémentations en langage C++




lundi 7 janvier 2019

C'est quoi OpenCL ? Langage de programmation Open Computing Language.

Ce n'est pas tous les jours que l'on découvre un nouveau langage de programmation alors quant on me parle d'OpenCL, je m'empresse d'aller voir ce que c'est que ce nouveau langage de programmation.

Langage de programmation OpenCL
Le langage OpenCL c'est comme du C

OpenCL ou Open Computing Language, c'est la combinaison d'une API et d'un langage de programmation dérivé du C et comme son nom l'indique "open" c'est un standard ouvert, open source (quoi que Apple en dépose une marque ...). Ce langage informatique est conçu pour programmer des systèmes parallèles hétérogènes comprenant un CPU multi-cœur et un GPU, il est créé en juin 2008.

Le langage OpenCL est à l'intersection des mondes CPU parallèles et GPU programmables.

Initialement conçu par Apple pour collaborer avec AMD, Intel et Nvidia autrement dit tout le monde.
AMD décide de supporter OpenCL et DirectX 11

OpenCL 1.1 est publiée en juin 2010 par le Khronos Group

Xilinx

On retrouve OpenCL dans la programmation de Xilinx (FPGA) Circuit Logique Programmable associé à l'IDE Eclipse :

Xilinx - Familiar Embedded C/C++/OpenCL Application Development Experience

Xilinx - SoC

SDSoC Environment Demo

SoC : Single or Dual-core
MPSoC : Dual or Quad-core
RFSoC : Quad-core ARM

Les dernières news sur toutes ces technos concernant le Langage OpenCL :

LinuxGizmos - 16nm Zynq SoC mixes Cortex-A53, FPGA, Cortex-R5

Xilinx - Zynq UltraScale+ MPSoC Product Advantages


Microsoft DirectX

C'est quoi Microsoft DirectX 11, j'en parle souvent avec la librairie OpenGL, en disant que si le langage C++ existe encore c'est parce que de telles librairies existent et ne sont pas traduites dans d'autres langages. car le langage C++ est la manière la plus efficace pour adresser c'est librairies.

Librairies Microsoft Windows

Developpez.net - Affichage des résultats du sondage: Quels API 3D préférez vous ?

Wikipédia - Comparison of OpenGL and Direct3D

C'est donc des librairies de fonctions qui permettent de dessiner sur l'écran ...

Direct3D : est un sous-ensemble de DirectX une librairie graphique pour dessiner en 3D

DirectX : ensemble de librairies, n'adresse pas seulement les graphismes mais aussi le son, la mise en réseau et le multimédia.

DirectX est sur Intel tandis qu'OpenGL est sur AMD. DirectX ne fonctionne que sous Windows et X
Box. Si vous avez besoin de développer pour plus que Windows OpenGL est la solution.

C'est quoi le Deep Learning ?

Il faut que je fasse un article pour présenter simplement ce qu'est le Deep Learning (ou apprentissage profond) en quoi on parle également à propos du Deep Learning de l'Intelligence Artificielle.

Il faut commencer par le "neurone formel" avec sa fonction d'activation qui est l'unité élémentaire en en mettant plusieurs on fabrique un "réseaux de neurones artificiels".


https://fr.wikipedia.org/wiki/Neurone_formel
Neurone avec fonction d'activation à seuil

On parle de "Perceptron" à rétroaction. Alors nous les électroniciens on connait bien la "boucle de rétroaction" en prenant une petite partie du signal de sortie on vient corriger l'entrée, elle sert dans l'industrie sous le nom de servomoteur pour stabiliser la vitesse des machine à vapeur.

Boucle de rétroaction
Boucle de rétroaction

Pour moi la rétroaction c'est "l'apprentissage" dans le sens ou l'on vient corriger ce que l'on a déterminé.

Réseau neuronale à rétroaction
Réseau neuronale à rétroaction

Avec un début d'algorithme :

Règle d'apprentissage du perceptron

Le perceptron de Frank Rosenblatt est très proche de la règle de Hebb, la grande différence étant qu'il tient compte de l'erreur observée en sortie.
Cette fonction est recommandée lorsque la tangente hyperbolique (tanh) est utilisée comme fonction d'activation.

W'(i) = W(i) + Alpha( Y(t)-Y ) * X(i)

avec :
W'(i) = le poids i corrigé
Y(t) = sortie attendue
Y = sortie observée
Alpha = le taux d'apprentissage
X(i) = l'entrée du poids i pour la sortie attendue Y(t)
W(i) = le poids i actuel

C'est trois systèmes sont constitutifs du réseau neuronale a apprentissage, c'est le début du Deep Learning on le conçoit alors presque entièrement quand on arrive au "Perceptron multicouche" :

Perceptron multicouche
Perceptron multicouche

Et surtout l'algorithme de rétropropagation présenté sur cette page dont je prends note ici.

Algorithme de rétropropagation

  1. Présentation d'un motif d'entraînement au réseau.
  2. Comparaison de la sortie du réseau avec la sortie ciblée.
  3. Calcul de l'erreur en sortie de chacun des neurones du réseau.
  4. Calcul, pour chacun des neurones, de la valeur de sortie qui aurait été correcte.
  5. Définition de l'augmentation ou de la diminution nécessaire pour obtenir cette valeur (erreur locale).
  6. Ajustement du poids de chaque connexion vers l'erreur locale la plus faible.
  7. Attribution d'un blâme à tous les neurones précédents.
  8. Recommencer à partir de l'étape 4, sur les neurones précédents en utilisant le blâme comme erreur.
Voilà j'ai fait un tour rapide bien plus rapide qu'en lisant toutes les pages de Wikipédia pour aller directement au but le Deep Learning. Il reste des notions à préciser. ce que je ferais plus tard.

Des cas concrets soit disant mais franchement cet article n'est pas terrible :

Forbes - 10 Amazing Examples Of How Deep Learning AI Is Used In Practice?

Pour aller beaucoup plus loin, je vous conseille mais c'est en anglais :

Deep Learning in Neural Networks: An Overview

Promis, un jour je vous ferai un résumé.

Bon année 2019 !