jeudi 15 septembre 2016

Agent PTS

L'agent "Push The Scrum" ou PTS pour les intimes pousse les limites du Scrum à son paroxysme grâce à Polymer.

Je m'explique : l'approche Agile et la méthode Scrum possèdent deux notions importantes que l'on se doit de maîtriser :
- la mise en place de l'environnement de travail de l'équipe de développement et;
- l'increment ( livraison d'une partie de l'application fonctionnelle ).

Polymer de Google est donc très proche de cette vision.

1 ère question ? Pourquoi attendre de connaître le produit Backlog ( description des fonctionnalités du produit ) pour mettre en place un environnement ? Installons déjà un environnement multi-mega-polyvalent que nous maîtrisons Polymer.

2 ème question ? Comment vont-etre gères les incréments ? Les sprints Backlog ? En elements atomiques  Polymer, réutilisables.

Une formation ou des infos sur la méthode vous intéresse, Thérèse ? Contactez Micheline au 0671578914 ou twitter @dfaveris

+ Décrire l'appli sous forme de fichier RDF -> facilité la documentation, la maintenance...

dimanche 11 septembre 2016

Agent Endpoint

L'agent Endpoint : un guide pour l'exploration des Data.
#LittleData et #BigData

Un agent Fuseki représentant un Sparql endpoint
Fuseki, Virtuoso comme décrit sur smag0 / RDF facile.

SubClass of AgentDTS (DataSource )
SubClassOf AgentDTL ( DataLake ) Lucene, Spark...

Différence entre DataSource et DataLake :

- DataSource : Des données sont produites régulièrement, et on les utilise, analyse, exploite aussitôt pour prédire, détecter les tendances. Facile d'établir des outils d'analyse / parsing / traitement sur les flux.

- DataLake : Des masses de données informes sans structure difficilement exploitable, provenant de plusieurs DataSources.
Impossible de connaître réellement la profondeur du lac sans partir en exploration, en immersion ( masque, bouteille, palmes... ??? scaphandre ? sous-marin ??? )
Impossible de tout explorer, il faut bien connaître l'objectif que l'on veut atteindre et sélectionner les datas utiles, les filtrer...

-> Les niveaux de datas :

- DataSource, décrit plus haut, RdfStream
- DataLarme, signal,  petit, amené à disparaitre
- DataFlaque, quelques données, persistance moyenne d'une journée
- DataVerre, un paquet de données dont l'essentiel reste stable, les caractéristiques techniques d'un bâtiment ( superficie, matériaux de construction... ) Plus proche d'un fichier / groupe de fichiers déterminé ?  restreint ? établit ? que d'un serveur.
- DataBouteille idem que DataVerre, mais avec un peu plus de données , changé parfois par partie : ajouter, enlever un verre, échelle d'une grosse entreprise, d'un quartier de ville ?
- DataFilet, un flux continu de petites données : remontées d'un capteur iot, d'un compteur, d'un flux vidéo... Une part d'interprétation, peut être effectuée par ce capteur... RdfStream
- DataRuisseau, un flux moyen fournit par une DataSource
- DataRiviere ...
- DataFleuve...
- DataLake, DataEtang, DataMer, DataOcean...

Besoin d'outils adaptés à chaque type de données et d'utilisation : enregistrement, visualisation, fusion, exploitation, extraction, recherche de petite, de trésor,...
-> DataMining, 2D/3D visualisation, createRdf-js, DreamcatcherAutonome, DreamCatcherCollaborative...

Possibilité de croiser à l'intérieur de ces données d'autres explorateurs DataAnalyst, DataScientists,...

--> parfois nécessité d'établir en collaboration des pistes d'exploration, de modifier et/ou dupliquer une partie des données pour les rendre plus exploitables, en prenant en compte l'objectif de chacun, les possibles utilisations futures.

Agent Sma

Un agent représentant les systèmes multiagents holoniques, architecture informatique modulaire à base d'agents autonomes.

Référence :
- systèmes multi-agents (Jacques Ferber)
- méthode Diamond ( these Jean-Paul Jamont )

smag0UiServer - Serveur bi-directionnel temps réel pour échanger des informations avec le projet Smag0

# smag0UiServer
Un serveur bi-directionnel en temps réel pour échanger des informations avec le projet Smag0, sur lequel on greffe les modules qui nous intéressent, Thérèse.

Contact & questions via twitter : @dfaveris #smag0



Utilise node.js (v6.5.0), express, socket.io
Testé avec Chrome (Version 53.0.2785.101 m (64-bit)), Microsoft Edge 38.14393.0.0) , Firefox (v48.0.2)
# code source

Après les nombreux tests effectués pour implémenter une interface utilisateur simple mais complète pour le projet Smag0, il apparaît clairement que de nombreux éléments sont redondants entre les projets.

On va donc ici tenter de les synthétiser, afin de fournir une base de travail réutilisable, et éviter de se reposer les mêmes questions pour tous les projets.

L'interface utilisateur de Smag0 doit permettre :

  • d'enregistrer des informations, et de les consulter de manière la plus simple qui soit
  • de partager ces informations
    • en les enregistrant sous forme de fichier
    • en les mettant à disposition sur un serveur
    • en proposant la collaboration
Je ne reviendrais pas sur les raisons qui me poussent à utiliser le format RDF, je me suis déjà largement étendu sur le sujet sur le blog du projet.

Le choix a été fait d'utiliser Node.js mais la discussion est ouverte, et la solution proposée ici se veut adaptable à d'autres environnements.
--> prérequis : installation de node.js et npm.


Les fichiers de base : 

  • créons un dossier "smag0UiServer".
  • à intérieur, on aura besoin d'un fichier "index.js" qui gérera notre serveur.
  • Ajoutons un dossier "public" dans lequel on mettra un fichier "index.html" qui sera la page visible de notre serveur.
  • Dans notre répertoire, lançons la commande " npm init ". Ceci créé un fichier package.json, bien utile aux dépendances de node.js . Répondez aux questions selon les caractéristiques de votre projet. Seule chose à veiller : gardez bien "index.js" comme point d'entrée (entry point).  Mon package.js à cette étape ressemble donc à ça.
commit  (les différents "commit" que vous trouverez dans cet article vous fournissent le code de l'étape que l'on vient de réaliser).

Pour construire une application à partir de rien, vous pouvez toujours vous référer aux nombreux cours existants, comme celui-ci, mais ce n'est pas le but ici.
On va plutôt tenter de factoriser l'expérience acquise au cours de nos expérimentations, notamment en s'inspirant de DreamCatcher Autonome pour cette partie serveur (socket.io -> temps-réel, multi-user).

Pour l'architecture, le routage, nous avions utilisé le module Express, et pour la communication entre notre page "public/index.html" et le serveur, nous avions utilisé socket.io.
Installons maintenant ces deux modules node, par l'invite de commande dans notre répertoire "smag0UiServer" :
  • npm install express socket.io --save
n'oubliez pas le "--save", car c'est ça qui met à jour votre fichier " package.json " de ces deux dépendances.

Ceci vous créé par la même occasion un dossier "node_modules" dans lequel sont stockés les modules de node.

commit ( un fichier .gitignore a été utilisé ici pour le pas envoyer ce dossier inutilement sur github )


Entrons maintenant dans le vif du sujet.


Un peu de code, côté serveur :


On va s'attaquer au fichier "index.js" pour lui demander de nous afficher la page "public/index.html"
Ouvrez le fichier "index.js" et collez lui le code suivant :


// Setup basic express server
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
var port = process.env.PORT || 3000;
server.listen(port, function () {
console.log('Server listening at port %d', port);
});
// Routing
app.use(express.static(__dirname + '/public'));

Pour s'assurer que ça fonctionne écrivez également quelque chose dans le fichier "public/html", un truc du style "si cette phrase s'affiche, c'est OK !!! " . Peu importe ce que vous y écrivez, de toute façon, il y a peu de chances que ça reste bien longtemps...

Pour tester, il ne vous reste plus qu'à exécuter le serveur, grâce à la commande
 node . 

N'oubliez pas le point : il designe le répertoire courant, et par défaut le fichier index.js. En cas de doute, vous pouvez également taper
node index.js

Le terminal devrait maintenant vous indiquer "Server listening at port 3000", ce qui signifie que vous pouvez consulter la page publique (public.html) en vous rendant à l'adresse "http://127.0.0.1:3000/" ou équivalent à "http://localhost:3000/".

Si la phrase "si cette phrase s'affiche, c'est OK !!!" s'affiche dans votre navigateur, vous avez remporté cette étape.

commit

Établir la communication entre la page publique et le serveur : 


Selon les préconisations de socket.io,
ajoutez à la fin de notre fichier "index.js", les lignes suivantes :

//Socket.IO
  io.on('connect', function(){});
  io.on('event', function(data){});
  io.on('disconnect', function(){});

!! ATTENTION : A CHAQUE MODIFICATION DU FICHIER " INDEX.JS" , il faut couper le serveur (Ctrl+C) et le relancer (node . ), pour qu'il prenne en compte les modifications.

et dans le fichier "public/index.html", supprimez la ligne "si cette phrase s'affiche, c'est OK !!!" et remplacez-là par le code suivant :

<!DOCTYPE html>
<head>
<title>Dreamcatcher / Smag0 Socket.IO</title>
<!-- GENERAL LIBRAIRIES -->       
<script src="/socket.io/socket.io.js"></script>
<script>
          var host = window.document.location.host;
          var socket = io(host);
socket.on('connect', function(){});
socket.on('event', function(data){});
socket.on('disconnect', function(){});
console.log(socket);
</script>
</head>
<body>
Version avec Socket
</body>
</html>

Si tout se passe bien, (après avoir arrêté le serveur (Ctrl+C) et l'avoir redémarré (node .), la consultation de la page "http://127.0.0.1:3000" devrait maintenant afficher "Version avec Socket", et dans la console Javascript de votre navigateur, la définition de la socket devrait s'afficher,...
 et seulement ça. Si d'autres lignes s'affichent, y'a un problème.

commit

Éventuellement, une petite erreur au sujet d'un fichier "service-worker.js" introuvable peut apparaître. C'est une nouvelle fonctionnalité des navigateurs.
Vous pouvez ignorer cette erreur, ou créer un fichier "service-worker.js" vide dans le répertoire racine ou dans le répertoire "public".

A ce stade, nous avons notre serveur (index.js) qui fournit une page publique (public.index.html) et la communication est maintenant établie entre ces deux éléments...

La base est là...

Passons maintenant aux choses sérieuses, et développons les différentes fonctionnalités évoquées précédemment...

Contact :
twitter : @dfaveris #smag0

Source du serveur smag0UiServer https://github.com/scenaristeur/smag0UiServer







mercredi 7 septembre 2016

Agent Fap - Formation à la Programmation

L'agent Fap est l'agent qui v po us aide pour votre Formation à la Programmation.
Avec lui, vous commencez par établir votre profil, et votre niveau.
Vous déterminez ensuite vos attentes, vos compétences et vos contraintes.
L'objectif étant de trouver les formations qui vous correspondent le mieux.

lundi 5 septembre 2016

Agent Cra - Conception Réalisation d'Application

L'agent Cra est un service de Conception, Réalisation d'Application.
Il vous propose des méthodes, des outils pour mener à bien votre projet.
La méthode Diamond est un point de départ pour l'analyse de vos besoins, mais  elle peut être adaptée, ou vous pouvez proposer vos propres méthodes.

Cra s'appuie sur les principes éprouvés de la programmation objet (héritage, reutilisabilite...), et intègre ceux de la programmation orientée agent (modularité, autonomie, perception de l'environnement...)

Cra s'appuiera aussi sur les méthodes Agile, en proposant des outils Scrum, Xp...