mercredi 23 mai 2018

C'est quoi un container Docker ?

On est en droit de se poser la question, disons qu'on est même obligé dans le métier du logiciel vous entendez maintenant ce mot de Docker avant c'était Machine Virtuelle. Mais surtout on se doit de trouver la bonne réponse.

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.


Docker c'est quoi ?
Container Docker c'est quoi ?

Voilà je tenais à avoir un début de réponse concernant ce sujet que je vais creuser jusqu'à utiliser maintenant des "container" plutôt que des machines virtuelles (plus lourdes et plus difficiles à utiliser du fait de cette lourdeur).

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/
https://docs.microsoft.com/fr-fr/dotnet/standard/microservices-architecture/

Microservices .NET Architecture pour les applications .NET en conteneurs
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 :

https://docs.microsoft.com/fr-fr/dotnet/standard/microservices-architecture/container-docker-introduction/
Introduction aux conteneurs et à Docker

Le gros .PDF c'est en fait la même chose que le site en ligne ... ? Donc on déroule le site, en français.
On y parle de Docker Hub :

Docker Hub by Docker

Il s'agit d'un registre pour votre collection d'images.
L'utilisation de registres d'images privés est recommandée dans les situations suivantes :
  • confidentialité
  • limitation de la latence du réseau
On peut générer des applications Docker avec .NET Framework ou .NET Core

Choisir .NET Core dans les cas suivants :
  • projets multi-plateforme
  • architecture basée sur les microservices
  • plus faible encombrement par conteneur
.NET Core est donc le choix par défaut lorsque l'on vuet créer des applications en 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
Finalement le choix n'est pas si simple :


Quel OS comme cible avec .NET conteneur ?

Le saviez-vous, il existe des Images .NET Docker officielles de Microsoft :

https://hub.docker.com/u/microsoft/
Images officielles .NET Docker

Ce qui devrait grandement nous faciliter la vie.

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 :


https://docs.microsoft.com/fr-fr/dotnet/standard/microservices-architecture/architect-microservice-container-applications/distributed-data-management
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.

Franchement ce schéma ne casse pas des briques

Conception d'applications de grande taille Questions à considérer.

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 comment exporter son Wiki ?
GitLab - Les pages wiki de mon projet

Nous voyons le bouton "Clone repository", cliquons dessus :

GitLab comment exporter son Wiki ?
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
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

Vous cherchez un tuto complet et ultra-rapide pour réaliser la gestion des configurations de vos codes sources avec Git ? C'est ici.
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

C'est quoi ou What is, le Release Management ? Ok c'est une étape vers l'acquisition de la culture DevOps mais encore ? C'est qu'elle étape au sein du processus Agile.

                        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 étapes
Security
Active directory
Team foundation Server Groups

Database Changes

SSDT

Have rollback strategy

Triggering Releases

Command Line
REST 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 Shell
IaaS
PaaS
SaaS



Key Features
Configuration as Code

samedi 3 mars 2018

TortoiseGit et Tuto Git ce que manquait pour bien démarrer

Vous ne vous en sortez pas avec uniquement Git en ligne de commande et même avec Git UI c'est pas encore ça. En installant TortoiseGit on espère bien que tout va s'arranger. Voilà ce qu'il manquait.

TortoiseGit

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)
Ce qui est cool avec git c'est qu'en supprimant le répertoire ".git" on est déconnecté du gestionnaire de codes sources. On peut faire un peu la même chose avec TFS mais c'est légèrement plus compliqué, il faut aller dans le fichier .csproj supprimer des lignes c'est délicat.

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
Dans TortoiseGit Settings -> Git -> Remote



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!

vendredi 2 mars 2018

Git avec TortoiseGit et GitLab - Comment merger deux branches ?

Effectuer un merge entre deux branches avec les outils TortoiseGit et GitLab autour de Git. Les concepts Git sont un peu différents, le checkout c'est pour se retrouver sur une branche. Le checkin c'est un commit. On peut faire un Puch ou un Fecth. Et pour m'y retrouver, j'ai avec moi TortoiseGit et Gitlab avec lesquels je vais varier les commandes et les plaisirs.

Je prends des notes rapides, ce n'est pas un tuto par la main mais plutôt pour compléter mes précédents posts sur le même sujet.

Un fois l'install de TortoiseGit effectuée :

https://tortoisegit.org/

Voici toutes les commandes Windows de TortoiseGit :



C'est énorme ! Toutes ces commandes ...

Git Commit -> "master" ... je suis donc dans la branche "master"

Je cherche à afficher les branches pour merger la branche "development" dans la branche "master" c'est :

TortoiseGit -> Browse References



Affiche toutes les branches :

Oui c'est pas très fun comme interface
Alors après je me suis amusé, en ligne de commande :

>git checkout master
>git checkout development

Puis TortoiseGit Browser les deux sont bien synchros :



Et dans Gitlab :



Je pourrais cliquer sur le bouton "Merge request" dans Gitlab mais les commandes sont tellement simples.

Merger ma banche developpement dans la branch master

Je me lance donc en ligne de commande. Pour merger la branche development sur la branch master, il me suffit de faire :

>git checkout master
>git merge development

Et je n'oublie pas un petit :

>git push


Pour pousser les nouvelles modifications de la branch master sur le gitLab.

Je merge la branche développement dans la branche master - Vue départ
Voici ce que j'obtiens à l'arrivée :

Vue finale les deux branches sont mergées

L'étiquette du haut que l'on en voit pas bien c'est "development master".

That's All Folks !

Au passage, je me fais des zip de "master" et de "development" pour pallier à une éventuelle catastrophe :



Mais il n'y aura aucune catastrophe ça fonctionne impec !

Have great fun !

vendredi 29 décembre 2017

Windows 10 - Gestion du clavier

Me voici avec des problèmes de clavier dans Windows 10, je tape une touche et c'est une autre touche qui apparait sur l'écran. Que faire dans Windows 10 ? Comment vérifier la langue et les informations sur votre clavier dans Windows 10 ? La réponse est ici :

Accédez au menu Démarrer - Choisissez : Paramètres
Tapez "clavier" dans la barre de recherche.


Tapez Clavier dans la textbox de recherche
Et vous accéderez au clavier ... mais là attention :

Le bouton est bien caché !

En effet il vous faudra obtenir l'écran suivant pour accéder aux options :
Vous trouvez le bouton "Options"

Et enfin vous tombez sur le informations du clavier
Voilà, bon c'est surtout pour me familiariser avec le nouveau "design" de Windows 10. Mais cette information sur la configuration de votre clavier n'est vraiment pas facile à trouver ...

Windows 10 : C'est tout comme avant mais tout différent ... ;)

Plantage totale de Windows 10 - Souris et clavier perdu

Mise à jour mars 2018 : Avec un PC ThinkCentre Windows 10 Intel(R) Core(TM) i5-4590 CPU @ 3.30 Ghz un matin ma souris disparait sous mes yeux alors qu'il ne se passe rien de particulier sur la machine.

Plus de souris et plus de clavier. Redémarrage, le clavier s'allume avec le démarrage du dos et une fois la main passée à Windows 10 il s’éteint et plus rien.

Accès à distance on peut pas changer les driver USB et pas non plus faire de Windows Update.
Disque dur système installé dans une autre machine idem !

Conclusion j'ai été obligé de réinstaller Windows 10 !

Vous avez eu le même problème, n'hésitez pas à témoigner dans les commentaires ci dessous.
Merci Crocrosoft !

mercredi 13 décembre 2017

L'objectif DevOps - Les outils du DevOps

Vous cherchez les outils à configurer, à utiliser pour aller vers l'objectif DevOps, on va essayer de faire une liste des étapes et des outils correspondants, afin de savoir où chercher pour faire du DevOps.

Atteindre l'objectif DevOps c'est mettre en place, partout où c'est possible, les bonnes pratiques qui vont permettre de maîtriser au plus prêt le développement de logiciels.

DevOps c'est avant tout une culture ...

DevOps se base sur l'open source ...

Termes associés au DevOps

Tera Form
Value Stream Mapping
Windows Container
Prometheus Monitoring
 

La Démarche DevOps c'est quoi ?
Ce schéma est pas mal pour rendre compte de l'implication que doivent avoir les Devs et les Ops pour faire du DevOps pour réaliser l'objectif DevOps.

La démarche du DevOps

Mesurer l'existant dans toute la chaine de production, pour chacune des opérations, mesurer le temps par exemple afin d'automatiser des parties assez longue qui pourrait être par exemple scriptées rendre plus efficace.

Les pratiques du DevOps

Infrastucture as Code (IaC)
  l'infra est décrite dans le code afin de pouvoir rétablir une infra rapidement, facilement
  correspondante à une version du code identifiée
Continuous Integration
Automated Testing
Conitnuous Deployement
Release Management
App Performance Montoring
Load Testing & Auto-Scale

Julien Stroheker

DevOps Hands On Labs

https://microsoft.github.io/PartsUnlimitedMRP/
Manufacturing Resource Planning

To Be Continued!

lundi 11 décembre 2017

Outil de gestion de projet - Redmine

Parmi les outils de gestion de projets voici Redmine. Quel sont ses particularités que peut-on faire avec Redmine ? Wikipédia nous dit que c'est une application web libre développée en Ruby sur la base du Framework Ruby on Rails.

http://www.redmine.org/
Outil de gestion de projet - Redmine

On ne peut pas dire que le site soit sexy ;-(

Fonctionnalités

cross plateforme, cross database open-source
MySQL, Postgres, SQL Server, ...
Un Wiki par projet
Un Forum par projet
Multilingue
Notification par emails

Fonctionnalités marquantes

Utilisation de la syntaxe Textile pour les pages de Wiki.

Dommage ce n'est pas du markdown

Références

https://projet-plume.org/fr/fiche/redmine

Installation

Il faut créer une Base de Donnée vide, tous les scripts cross plateforme sont donnés.

Sous Windows; il faut installer Ruby MRI puisque cet outil tourne grâce à Rubi On Rails.

Pour l'instant

Je ne vais pas plus loin, on voit bien qu'il y à tout ce qu'il faut pour installer et configurer pour Redmine. Ma prochaine étape sera donc de l'utiliser ...

Workflow avec Redmine mise à jour le 15/03/2018

Parcourant la documentation, j'ai trouvé les workflows de redmine et c'est, je dirais, la partie configuration la plus importante de Redmine : configurer les workflows permettant aux différents rôles de changer d'états les "Tickets".

Workflow exprimé en table du rôle "Client gestionnaire"

Ces tableaux vous permettent de vous rendre compte d'une configuration des workflows Redmine dans la vie réelle.

Avantages

Redmine est très populaire et gratuit
Augmente considérablement la productivité des équipes

Inconvénients

Oui l'interface est austère, la gestion des documents est simpliste, Google drive ou Dropbox font mieux.
Certains module sont réellement sommaires.

Alternatives à Redmine
Jira, Gladys, Teamleader, SocialJsProjet, Wimi ...

Have fun!

lundi 4 décembre 2017

Tuto Git - C'est quoi le meilleur hébergeur ?

Vous recherchez le meilleur hébergeur pour votre projet afin de gérer les versions et les codes source avec Git. Vous avez remarquer que sur GitHub vous projets sont open source et ce n'est pas la licence que vous souhaitez alors que faire ?

Alors il existe GitLab ... Atelier de génie logiciel ? Mon dieu que ce terme est "has been" et pourtant c'est bien ça.


https://about.gitlab.com/
GitLab - Atelier de Génie logiciel
Pas facile de s'y retrouver dans ce monde ... Ici je crois qu'il va vous falloir installer Linux ... Bref, je souhaitais juste prendre une note sur cet atelier car il semble l'un des plus utilisé dans le monde Linux je suppose pour les Windowsiens on peut peut-être créer un container ...

GitLab est un outils leader de l'intégration continue, en effet il a l'air de prendre en compte la totalité de l'automatisation de la chaine de production.

Je me suis posé une question que fait GitLab que ne fait pas Team Foundation Server et là, pas de réponse concrète, la petite guéguerre habituelle ... c'est qui le meilleur, bref.

C'est une forge, j'aime ce terme car ce n'est pas une métaphore en provenance du BTP (Bâtiment).

It's winter time but don't forget to go to the beach!

lundi 13 novembre 2017

Les outils du Big Data

Vous cherchez à comprendre ce qu'est le "Big Data" comment l'appréhender avec quels outils ? Je vais tenter d'écrire cet article à ce sujet pour trouver les meilleures solutions.

Le Big Data, c'est vraiment la mode en ce moment, quels ton les outils qui permettent de faire du Big Data. Vous comprenez, lorsque l'on me parle d'intelligence artificielle c'est avec perplexité que j'écoute les gens me dire qu'ils vont en mettre dans leur site e-commerce. Et pourtant ...

J'aime bien la métaphore du barrage et du lac. Au début on a des données qui coulent en rivière et ne sont pas exploitées alors on pose un barrage sur la rivière, les données commencent à se stocker et deviennent utilisables dans une forme de lac.

Mots clefs :

Hadoop : analyse de sentiments


Big Data - hadoop
Big Data - hadoop

nandzik - Big Data Smart Data

Des bases de données rapides :
Exasol
MemSQL

Kudu : repose sur Hadoop

Phoenix and Drill

Vous l'avez compris comme moi c'est la pagaille tout le monde veut faire du Big Data et tout le monde y va de sa solution. Je creuserai quand j'en aurait la nécessité.

To Be Continued!

jeudi 26 octobre 2017

Blogs où trouver de vraies solutions ?

Voici un blog cool, une communauté qui à l'air sympa. Oui je suis outré par la démarche Internet de "Comment ça marche" un forum de mer(bip) avec aucune solution. Vous avez un problème, avec "Comment ça marche" vous restez avec.

Je ne sais pas comment ces gens ont fait mais leur système de blog est si pourri qu'il n'y a jamais de solution, ils agrègent des posts merdiques sans faire de modération, du coup vous vous retrouver à lire des posts interminables sans intérêt écris par des benêts et en bas toujours pas de solution à votre problème. Par contre il sont référencés entête dans les pages.

Alors dès que je peux, je cite les blogs qui eux fournissent de véritables solutions, voici une communauté intéressante à étudier : hack.guides


pluralsight - A reliable resource for just-in-time answers

C'est assez curieux comme approche toutes ces pages qui sont là exposées ... Certainement pour le SEO et après ils vendent des cours en ligne mais les articles sont réellement de qualité.

Hristo Georgiev - Introduction to Angular test-driven development
Il s'agit d'utiliser "karma" pour faire du TDD et ça à l'air assez complet. Donc voilà une vraie solution pour un vrai problème.

Have Fun!

mardi 17 octobre 2017

Générer la documentation à partir des codes sources

Vous cherchez un outil de génération de la documentation à partir des codes sources, on va voir ce que nous avons aujourd'hui sur le marché.

C'est toujours extrêmement pénible pour des raisons de normes qualité essentiellement d'avoir à produire des documents qui sont en fait la "paraphrase du codes sources" je le dis souvent si vous n'êtes pas capable de lire les codes sources ce n'est pas la peine de travailler dans l'édition logicielle.

Mais souvent cet argument est mal compris voir mal perçu. Alors pour faire taire toutes les critiques, écrivons des sources codes correctement documentés et générons automatiquement les docs pour le service qualité à partir de nos sources codes.

C'est compliqué d'avoir déjà des templates de sources codes agréables à utiliser. Donc une des fonctionnalités importante, essentielle du générateur de documentation c'est le "Template personnalisable" ainsi on pourra conserver nos propres Templates si chéris. En effet la plupart du temps les générateurs de doc ont le défaut de vous imposer le Template ...

Par la suite, je suis surpris de découvrir que chaque langage à son générateur de doc. Je tombe alors sur Wikipédia qui nous parle de Doxygen :
http://www.stack.nl/~dimitri/doxygen/
Generate documentation from source code

Wikipédia - Doxygen

https://www.stack.nl/~dimitri/doxygen/
http://www.stack.nl/~dimitri/doxygen/download.html

L'avantage : il est multilangage mais surtout pour le langage C/C++. Personnellement j'ai essayé de le mettre en place à partir des sources codes que j'avais en C/C++ avec des templates que j'affectionne particulièrement, je n'y suis pas arrivé, mes Templates ne lui plaisent sans doute pas mais je ne désespère pas.

Je vous laisse découvrir les autres générateurs sur la page de Wikipédia : Ici

Voilà, je tenais surtout à prendre note de Doxygen. Pour le reste cette génération automatique de doc ce n'est pas et cela ne sera jamais, la panacée. Soit la doc est pourrie soit on pourri le code avec des balises de génération de doc. Le code c'est la bible, la seule chose qui compte mais allez expliquer ça à une bande d'incapables qui trouve cela trop compliqué à lire.

Si vous avez d'autre de vos outils préférés qui featurerisent les même contraintes :
  • Template configurable de façon souple
  • Multilangage
N'hésitez pas à nous en faire part en commentaires.

Have fun!

mercredi 30 août 2017

Calcul du nombre Cyclomatique d'un code source - Outil McCab de Verifysoft

Vous êtes développeur et vous avez à faire à un logiciel de plusieurs dizaines de  milliers de lignes de codes sources, comment l'appréhender ? On me parle de l'outil McCab alors je prends note ici pour creuser un peu plus la prochaine fois.

http://www.verifysoft.com/fr_mccabe_metrics.html

Verifysoft Technologie
Mesure de la complexité d'un logiciel.

Il me semble que McCabe est un terme générique qui désigne la complexité cyclomatique d'un logiciel introduite par Thomas McCabe en 1976.

Pour une fonction, le nombre cyclomatique est égal au nombre de points de branchements conditionnels dans la fonction. Chaque fonction devrait avoir un nombre de cas de tests au moins égal au nombre cyclomatique.

Les outils de Verifsoft sont en Java et en C++ ...