Trucs et astuces autour des outils et des chaînes de développement logiciel, explorons le monde de la programmation
mardi 30 octobre 2018
Comment et pourquoi centraliser les logs pour l'ensemble de votre SI ?
Je viens de discuter avec un client final de son système et de la catastrophe que sont pour lui les logs car dans son SI les logs ont été écris par maintes équipes différentes avec toutes sortes de briques différentes. Il voudrait un peu de rationalisation.
Alors que je viens de lire cet article :
Syloé - Pourquoi traiter et centraliser vos logs avec ELK et Craylog ?
ELK c'est pour Elasticsearch, Logstash et Kibana une suite de logiciels Open Source, on parle de Stack ELK. Kibana est un greffon de visualisation de données pour Elasticsearch.
La solution qui est préconisé c'est d'utiliser Craylog et ELK, avec ELK l'inconvénient c'est la non-gestion des utilisateurs. Craylog permet de gérer les utilisateurs et les permissions façon LDAP.
Voilà nous avons fait le tour rapide de la centralisation des logs de l'ensemble de votre Système d'Information. C'est pas fini vous vous en doutez, pas si simple de mettre en œuvre cette pile de softs pour faire des logs.
C'est une nécessité absolue dans un SI de capitaliser sur les logs, de les maitriser, de les centraliser, de les expliquer pour l'ensemble des équipes soft. La façon dont est traité la problématique "faire des logs" dans un SI est caractéristique de la qualité de ce SI.
lundi 15 octobre 2018
GitHub - C'est quoi les fichiers .md (point md) ? Markdown ?
Je l'ai découvert par la force en utilisant GitHub. J'ai trouvé comment jongler avec, un tout petit peu dans GitLab dans l'article suivant Comment exporter votre Wiki. Mais je ne sais toujours pas ce que signifie réellement l'extension de fichiers ".md".
Je cherche et je me retrouve sur des sites qui ne me donnent pas la solution, un tas de sites se sont organisés pour que vous les visitiez mais ne vous donne pas la solution ! C'est quoi cette extension de fichier ".md" ... bref c'est Wikipédia qui gagne encore une fois la batille de la culture geek :
Un fichier ".md" est un fichier Markdown, Markdown est un langage de balisage léger créer en 2004 par John Gruber et Aaron Swartz.
https://donate.wikimedia.org/
Ah, j'étais bien ennuyé avec cette histoire de fichier ".md" car ils sont la clef de la documentation sous GitHub.
Aide et syntaxe
Le pire avec cette histoire c'est que GitHub se mords la queue, pour trouver de l'aide sur les fichiers d'aide (de documentation) c'est dans github dans un fichier .md :https://github.com/luongvo209/Markdown-Tutorial/blob/master/README_fr.md
Là on est bien, c'est en français, il y a toutes les explications sur les fichiers Markdown merci à Luong Vo pour son travail de documentation, d'autres sujets chez lui son également très intéressants.
Outils
Originel en ligne par les créateurs du concept voici : dingusil converti votre markdown en HTML
L'outil très puissant en ligne : Stack Edit
Encore un peu de doc : Comment bien commencer avec Markdown
Amusons nous avec les fichiers Markdown !
vendredi 5 octobre 2018
Visual Studio - Team Explorer & GitHub - Ce qui manquait pour bien démarrer
Vous avec créé un projet avec Visual Studio vous souhaitez le mettre en gestion de configuration dans GitHub comment faire simplement dans l'article précédent nous avions installé Git et TortoiseGit pour ce faire ici nous allons utilisé les fonctionnalités Tema Explorer de Visual Studio.
D'abord dans GitHub on créé un Repositorie :
![]() |
| GitHub création d'un nouveau Repositorie |
GitHub vous fournit alors l'URL de ce repo quelque chose en .git que vous allez pouvoir utiliser avec Team Explorer de Visual Studio.
Vous avez créé votre Repo local en entrant le chemin de votre projet sur votre disque dur Team Explorer vous permet alors de Synchroniser votre Repo local :
![]() |
| Synchronisez votre Repo Local dans Github |
![]() |
| Publier le dépôt Git |
![]() |
| URL de votre Repo dans Gihub |
Team Explorer vous permet d'entrer l'URL de votre Repo Github. Vous pouvez ensuite cliquer sur "Publier" pour uploader votre projet dans GitHub.
Quand vous retournez dans l'Explorateur de solution vous voyez les "petits cadenas" signes que votre projet est maintenant en gestion de configuration.
![]() |
| Projet Visual Studio en gestion de configuration dans GitHub |
mercredi 19 septembre 2018
Vous cherchez une chaîne de développement multiplateforme pour Mobile ?
![]() |
| https://ionicframework.com/ |
D'abord le site de Supinfo m'explique que Ionic permet de construire mon application qu'une fois et de l'exécuter n'importe où car Ionic n'utilise que des technos Web portables comme HTML, CSS javascript.
![]() |
| https://cordova.apache.org/docs/en/latest/guide/overview/index.html |
Mais bientôt on vous explique qu'il faut également utiliser Cordova qui est un grand dépôt de plugin. Ionic utilise également AngularJS. L'utilisation de la mémoire et les performances sont à considérer dans l'utilisation de Ionic ...
Supinfo
A noter sur cette page que liens ne fonctionnent pas que le chapitre "démarrer avec Ionic" est introuvable, bref il faut poursuivre tout seul.
Une application développée avec Ionic est dite hybride car elle utilise le développement Web et le développement Natif.
Me seconde recherche me porte sur le site Développez.com
Un tuto sympa comme toujours sur le site de Developpez.com
On nous dit que Ionic s'appuis sur Angular pour la partie Web et sur Cordova pour la partie native. C'est bien plus clair qu'avec supinfo qui avait raté cette explication claire.
C'est toujours marrant mais rien ne nous dit qu'ils sont sous Linux comme si c'était une évidence mais sous Windows alors comment fait-on ?
https://github.com/SoatGroup/ionic3-movie-app
Les sources du projet sous Github
Installation
npmDonc en fait on peut peut-être bosser sous Windows ... à voir.
Un fois de plus ce tuto sur l'utilisation de Ionic par Développez.com est super bien fait on créé une application de bout en bout.
Je reviendrais peut-être, pour ma part je retourne à Xamarin.
jeudi 12 juillet 2018
Les outils pour réaliser un design Web
Tout à l'air particulièrement intéressant mais je n'ai trouvé rien de concret, il faut aller plus loin télécharger et installer des pluggings utiliser les ressources misent à disposition ...
Ce site s'appelle MATERIAL DESIGN
![]() |
| Material Design |
C'est en tous les cas un site très joli ...
![]() |
| Materiel Design |
Avec plein de chose à découvrir et le Web Design est toujours un sujet extrêmement délicat. Alors je reviens pour tenter d'en découvrir un peu plus.
Ce site est couplé avec GitHub, voici un des points d'entré :
![]() |
| Material Components |
Beaucoup de Matériels sont sous forme d'open source valables pour Android, iOS, Flutter. Créer par Google.
C'est énorme et en tant que Développeur et par la forces des choses Désigner, il ne faut pas passer à côté.
Par exemple, voici comment créer des icônes système ce qu'il faut faire et ce qu'il ne faut pas faire.
![]() |
| MATERIEL DESIGN System icons |
System icons
Voici la partie Web :
MATERIAL DESIGN - Web
Et voilà, c'est parti, ce sont les premiers pas pour utiliser MATERIAL DESIGN pour le Web. C'est très enrichissant et on apprend plein de choses sur le Design d'UI que l'on appelle maintenant UX !
Comment réaliser un bon audit de codes sources ?
C'est mon sujet du moment, il devrait m'intéresser pendant quelques temps.
Analyse statiques de code pour C#
SonarQube
![]() |
| SonarQube Developer Edition |
![]() |
| SonarQube Developer Edition - purchase order |
![]() |
| SonarQube - Solution Free & Open Source |
![]() |
| Community Edition |
![]() |
| SonarQube |
Autres outils d'analyse statique
https://pmd.github.io/
Online Documentation
https://pmd.github.io/pmd-6.4.0/pmd_userdocs_getting_started.html
Mince ! Pas de C# et pourtant il m'y ont fait croire avec leur CPD déteur de code copier collé ...
Par quoi continuer mon audit de codes sources ?
mercredi 23 mai 2018
C'est quoi un container Docker ?
Un container Docker permet d'embarquer une application qui s'exécute au sein du container. Docker se sert du Noyau Hote pour faire tourner l'application dans son container.
![]() |
| Container Docker c'est quoi ? |
Pour la suite et pour l'instant, je vous renvois vers cet article qui m'a fait découvrir ce qu'est un Container Docker l'article :
Docker : la technologie qui révolutionne le cloud
Mise à jour 29/05/2018 - Maintenant je vais un peu plus loin
C'est étonnant cette réussite de Solomon Hykes, en quelques années, quelques mois, il réussit a fédérer autour de ses "container" ou conteneurs en français toute l'industrie informatique qui se rallie au standard de Docker de facto comme ils disent certainement car il n'y a pas d'autre standard.
Voici la vision Microsoftienne de l'utilisation des conteneurs pour les microservices :
![]() |
| https://docs.microsoft.com/fr-fr/dotnet/standard/microservices-architecture/ |
Là on est au top de la techno dans l'Azure et les Containers ... au milieu du DevOps
Azure Container Service
Azure Service Fabric
C'est l'avènement des architectures en Microservices ... Monolithique vs Microservices ... bla bla bla
On plonge dans le vif du sujet.
Le projet de référence concernant .NET Core et les microservices sur GitHub : eShopOnContainers
Grâce à NET Core 2.0 et Docker engine, requis Visual Studio 2017
On passe sur le doc : Containerized-Docker-Application-Lifecycle-with-Microsoft-Platform-and-Tools-(eBook)_v1.1.pdf
Containers c'est mieux que Virtual Machine moins gourmant en ressources.
En bas de la page le bouton est cassé pour continuer de naviguer en français, utilisez le menu de gauche :
![]() |
| Introduction aux conteneurs et à Docker |
On y parle de Docker Hub :
![]() |
| Docker Hub by Docker |
L'utilisation de registres d'images privés est recommandée dans les situations suivantes :
- confidentialité
- limitation de la latence du réseau
Choisir .NET Core dans les cas suivants :
- projets multi-plateforme
- architecture basée sur les microservices
- plus faible encombrement par conteneur
Utiliser .NET Framework lorsque les applications :
- sont fortement dépendantes de Windows
- utilisent les API Windows non prise en charge
- vous utilisez des Nugets non dispo pour .NET Core
![]() |
| Quel OS comme cible avec .NET conteneur ? |
![]() |
| Images officielles .NET Docker |
Mais tout ceci est très Microsoftien ...
Par la suite dans l'architecture des applications basées sur les conteneurs et les microservices, il s'agit principalement de l'orchestrations des conteneurs comment spécifier à Docker par le Docker file qu'un conteneur s'exécute dans un processus que doit faire l'orchestrateur en cas de défaut d'un conteneur.
Mise en conteneur d'applications monolithiques
En premier lieu, dans les conteneurs, il s'agit de déployer des applications monolithiques ainsi on n'a rien à faire concernant l'architecture de l'application mais ce modèle atteint rapidement ses limites lorsque l'application grossie.Il faut également que l'application trouve dans le conteneur tout ce dont elle a besoin pour fonctionner ... sinon ... champignon !
Vision Microsoftienne : Publication d’une application basée sur un seul conteneur sur Azure App Service. Azure App Service est un excellent moyen de fournir des services évolutifs basés sur un seul conteneur. On publie l'application directement dans le conteneur à partir de Visual Studio.
Avec Docker, la prise en charge des conteneurs dans Visual Studio 2017 permet d'inclure tout ce que l'on veut dans l'environnement de l'application.
Remarques :
Les conteneurs sont par défaut "sans état".
Les conteneurs Docker ne sont pas obligatoires pour les architectures orientées services SOA et pour les architectures de microservices plus avancées.
Architectures Orientées Services SOA
Certaines personnes affirment que « l’architecture de microservice est une architecture SOA bien conçue ».Si vous savez créer une application basée sur des microservices, vous savez également créer une application orientée services plus simple.
Conseils pour une architecture en microservices
Une Database privée par microservice :
![]() |
| Cohérence entre microservices |
Communication entre microservices
On reste un peu sur notre faim, comme souvent avec ces longs articles à la manière de Microsoft, les vraies solutions de sont pas dévoilées ...On vous parle de l'isolation un peu comme dans les architectures multi-processus isolation des données. Tout ceci est bien théorique !
Conception en microservices
Déterminer les limites du modèle de domaine pour chaque microservice, non en fonction de la taille même s'il faut tendre à de petits services mais en fonction de la connaissance du métier.Communication directe de client à microservice et modèle de passerelle d’API
Les microservices ont des points de terminaison (End Point) ou port TCP.To Be Continued
Ce post est devenu trop "Microsoft dépendant", je pensais qu'en partant de Container Docker et Architecture en microservices on ne tomberait pas aussi rapidement et aussi profondément dans les griffes de l'Azure microsoftienne... C'est bon à connaître mais ce n'est pas seule utilisation des Container Docker.
Bref à compléter ...
I should not forget to go to the beach :-))
Have fun!
jeudi 3 mai 2018
GitLab comment exporter son Wiki ?
Vous utilisez GitLab et vous avez écris des pages Wiki mais comment faire pour les exporter et pour réutiliser vos pages dans un autre GitLab ou ailleurs dans un GitHub ?
Venez, c'est par ici, suivez moi.
![]() |
| GitLab - Les pages wiki de mon projet |
Nous voyons le bouton "Clone repository", cliquons dessus :
![]() |
| GitLab - Les pages wiki Clone repository |
Maintenant, on nous demande d'installer un outil "Gollum" ce n'est pas très joli (gollum il est lait ;)
Oui mais un Gem c'est quoi ? Gem
Et Gollum ? Gollum
Encore un de ces outils Linuxien ... Installer Gollum Wiki sur Ubuntu
Qu'elle Daube ! Sans parler de gollum/gollum
Syntaxe et explications sur les fichiers Gollum
On est bien avancé ! Et si on clonait tout simplement ... voici la commande Clone your wiki :
>git clone https://username@gitlab.societe.fr/MonProjet/Documentation.wiki.git
![]() |
| Clone de mon Wiki avec Git - Oui je sais ma console est verte |
On se retrouve alors avec un sous répertoire "Documentation.wiki" dans lequel on retrouve, pour chaque page wiki, un fichier .md bien connu des utilisateurs de Git c'est un fichier MarkDown.
![]() |
| GitLab - Mon Wiki cloné dans le répertoire "Mon projet.wiki" |
Et vous le comprenez en voyant le répertoire ".git" que ce répertoire est maintenant un repo git à part entière. Il vous suffit d'installer un éditeur de fichiers .md pour travailler sur votre wiki en local et de faire un git commit par la suite ... Pour retrouver vos pages modifiées dans GitLab, c'est super bien fait ! Non ?
Nous venons d'apprendre à développer la documentation de votre projet sous forme de Wiki dans Github.
CQFD !
jeudi 29 mars 2018
Git tuto rapide no bullshit
![]() |
| Git Tuto rapide |
Créer un nouveau dépôt Git
Pour créez un nouveau dossier, ouvrez le (placez vous dans le dossier à "giter") et exécutez la commande :>git init
vous créez ainsi un nouveau dépôt.
Cloner un dépôt Git
Créez une copie de votre dépôt local en exécutant la commande :>git clone /path/to/repository
Si vous utilisez un serveur distant, cette commande sera :
>git clone username@host:/path/to/repository
Les 3 Arbres
Votre dépôt local est composé de trois "arbres" gérés par git.Le premier est votre espace de travail qui contient réellement vos fichiers.
Le second est un Index qui joue un rôle d'espace de transit pour vos fichiers et enfin HEAD
qui pointe vers la dernière validation que vous ayez faite.
Ajouter & valider
Vous pouvez proposer un changement (l'ajouter à l'Index) en exécutant les commandes :>git add <filename>
>git add *
C'est la première étape dans un workflow git basique.
Pour valider ces changements, utilisez :
>git commit -m "Votre message de validation explicite"
Le fichier est donc ajouté au HEAD, mais pas encore dans votre dépôt distant.
Envoyer des changements
Vos changements sont maintenant dans le HEAD de la copie de votre dépôt local. Pour les envoyer à votre dépôt distant, exécutez la commande :>git push origin master
Remplacez master par la branche dans laquelle vous souhaitez envoyer vos changements par exemple developement.
Si vous n'avez pas cloné votre dépôt existant et voulez le connecter à votre dépôt sur un serveur distant, vous devez l'ajouter avec :
>git remote add origin <server>
Maintenant, vous pouvez envoyer vos changements vers le serveur distant sélectionné
Branches
Les branches sont utilisées pour développer des fonctionnalités isolées des autres. La branche master est la branche par défaut quand vous créez un dépôt. Utilisez les autres branches pour le développement et fusionnez ensuite à la branche principale quand vous avez fini.Créer une nouvelle branche nommée "feature_x" et changer la branche pour passer dessus utilisez :
>git checkout -b feature_x
Retourner sur la branche principale :
>git checkout master
et supprimer alors la branche secondaire :
>git branch -d feature_x
Une branche n'est pas disponible pour les autres tant que vous ne l'aurez pas envoyée vers votre dépôt distant :
>git push origin <branch>
Mettre à jour & fusionner
Pour savoir sur quelle branche vous êtes et dans quel état elle est :>git status
Pour mettre à jour votre dépôt local vers les dernières validations, exécutez la commande :
>git pull
Pour vous positionner sur la branche master :
>git checkout master
Dans votre espace de travail pour récupérer et fusionner les changements distants.
Pour fusionner une autre branche avec la branche active (par exemple master), utilisez :
>git merge <branch>
Dans les deux cas, git tente d'auto-fusionner les changements. Malheureusement, ça n'est pas toujours possible et il en résulte des conflits. Vous devez alors régler ces conflits manuellement en éditant les fichiers indiqués par git. Après l'avoir fait, vous devez les marquer comme fusionnés avec la commande :
>git add <filename>
Après avoir fusionné les changements, vous pouvez en avoir un aperçu en utilisant :
>git diff <source_branch> <target_branch>
Tags
Il est nettement recommandé de créer des tags pour les releases de programmes. C'est un concept connu, qui existe aussi dans SVN et c'est tout simple. Vous pouvez créer un tag nommé 1.0.0 en exécutant la commande :>git tag 1.0.0 1b3a1d62ff
Le 1b3a1d62ff désigne les 10 premiers caractères de l'identifiant du changement que vous voulez référencer avec ce tag. Vous pouvez obtenir cet identifiant avec :
>git log
Vous pouvez utiliser moins de caractères pour cet identifiant, il doit juste rester unique.
Remplacer les changements locaux
Dans le cas où, vous auriez fait quelque chose de travers (ce qui bien entendu n'arrive jamais ;) Vous pouvez annuler les changements locaux en utilisant cette commande :>git checkout --<filename>
Cela remplacera les changements dans votre arbre de travail avec le dernier contenu du HEAD. Les changements déjà ajoutés à l'index, aussi bien les nouveaux fichiers, seront gardés.
Si à la place, vous voulez supprimer tous les changements et les validations locales, récupérer le dernier historique depuis le serveur et pointer la branche principale locale dessus, procédez comme ceci :
>git fetch origin
>git reset --hard origin/master
Voilà, ce tuto est déjà terminé !
Merci à la page du site Ici mais je me serais bien passer de la mise en page disons trop ... heu comment dire ... ball shit justement !Have fun!
Références :
https://blog.imirhil.fr/2013/04/14/git-gestion-de-conf-aujourdhui.html
Plus qu'un article sur les Gestionnaires de conf CSV, SVN et les autres une vraie bonne critique de ce qui se fait en matière de gestion de configuration.
http://nvie.com/posts/a-successful-git-branching-model/
Gestion des branches un diagramme de toute beauté
http://rogerdudler.github.io/git-guide/index.fr.html
Cette page est vraiment pas ... cool mais bon c'est bien fait
Outils Redmine de gestion de projet - Workflow et Tracker ou Intéractions
Vous pouvez avoir travaillé avec Redmine sans connaitre la totalité du Workflow car on ne vous a jamais expliqué les différents rôles et les différentes actions possibles en fonction du rôle que l'on vous a attribué. Ceci n'est pas exhaustif malheureusement pour avoir la totalité des rôles et des workflows associés il faut être le "grand master central".
Mais voici quand même mes notes dans deux rôles principaux : le Client gestionnaire et le Responsable projet pour un type d’interaction : L'Anomalie
Workflow Redmine pour le Client gestionnaire
![]() |
| Gestion d'une Anomalie pour le Client gestionnaire |
Workflow Redmine pour le Responsable Projet
![]() |
| Gestion d'une Anomalie pour le Responsable projet |
J'appelle cela une interaction car il s'agit bien d'échange de quantité de travail entre les différents intervenants dans Redmine le terme utilisé en anglais est Tracker.
Voilà donc également les différents types d'interactions (ou Trackers) :
- Exigence
- Evolution
- Anomalie
- Assitance
- Organisation
- Tâche
Avec ça on a une bonne vision globale du "Workflow" dans Redmine. J'aurais aimé un graphique un schéma plutôt qu'un tableau mais je pense qu'il est difficile à réaliser entièrement vous pourrez vous même le faire pour explicité (rendre plus compréhensible) certaines partie du Workflow de Redmine.
Les modules de Redmine
L'onglet Configuration de Redmine permet de d'installer ou non différents modules :
![]() |
| Configuration de Redmine - Les modules |
Redmine est un outil très complet, collaboratif qui permet de travailler en toute sérénité avec une équipe de développement élargie.
- Suivi des demandes
- Suivi du temps passé
- Publication d'annonces
- Publication de fichiers
- Wiki
- Dépôt de sources
- Forums de discussion
- Clandrier
- Gantt
- Agile
- Revues de code
Voilà, on à vu très rapidement les éléments qui permettent de gérer le Workflow des tickets au sein de Redmine.
mercredi 14 mars 2018
C'est quoi le Release Management
DEV | OPS
Define Sprint Deliver Product Backlog | Monitor Release Pipeline Curtomers Operate
Le release management c'est automatiser l'étape entre le delivery Dev et le Release Pipeline Ops.
PowerShell/CLI
Scripts permettant d'automatiser toutes les étapesSecurity
Active directory
Team foundation Server Groups
Database Changes
SSDTHave rollback strategy
Triggering Releases
Command LineREST API
Bon alors évidemment là c'est pour vendre du Azure mais le principe serait le même sur d'autres infras si tant est que l'on puisse mettre en place les outils équivalents.
Azure
Azure Power ShellIaaS
PaaS
SaaS
Key Features
Configuration as Code
samedi 3 mars 2018
TortoiseGit et Tuto Git ce que manquait pour bien démarrer
Création d'un repo Git en local sur mon Disque Dur
Grâce à Git, je peux créer un "repo Git" où je veux, il me suffit de cliquer droit sur n'importe quel répertoire :
Bon ya encore une popup de daub(bip) à cliquer ...
![]() |
| Pffff c'est lourd c'est trucs linuxiens à la con(bip) |
Et voilà ce qu'il me maquait la liaison avec Github, jusque là on pouvait penser que c'était de la magie.
Création d'un repositorie distant dans mon Github
Dans mon Github, j'ai créer également un nouveau repositorie :
Liaison le Repositorie Git Local et le Repositorie Git Distant
Je retourne sur le repositorie locale et je fais Bouton droit -> TortoiseGit -> Settings
![]() |
| Bouton droit->TortoiseGit->Settings |
On progresse, on progresse
Il suffit d'entrer l'URL du repositorie Github distant, en cliquant sur OK un boite de dial :
Allons y Fetchons ... encore un boite de dial ...

Encore un petit OK ca devrait arriver ...

Voilà : git.exe fetch -v --porgress "RFID-CloverWiever" : Succcess
Cette fois on dirait bien cela y est !
Regardons les logs par curiosité :

Cette fois on y est ...
Voilà donc comment lié un repositorie locale et un repositorie distant dans Github grâce à TortoiseGit.
Have fun!









































