01101


Service Web de météo temps réel

Un script écrit en PHP permettant de retourner sous format JSON les données météo de la station fournit en paramètre. Le service Web s'appuie sur les données du site www.weatherlink.com. Le service est déployé à l'adresse https://meteo-station.herokuapp.com et utilisé pour afficher les informations temps réelles sur le lac de Léry-Poses.

Le code source est disponible sur Github

vendredi 10 mars 2017


Angular

AngularJs est un framework javascript pour développer des applications Web, en l'ocurrence des SPA (Single Page Application). Les sites Web conçut avec Angular ne contiennent qu'une seule page.
D'ordinaire, un site renvoie au travers du serveur différentes pages HTML en fonction des demandes du client, le navigateur. Avec Angular, la démarche est différente, la page fournit par le serveur contient déjà la logique du site. Le rôle du serveur se limite alors à fournir les données à l'application chargée dans le navigateur.
Cette technologie est devenue possible depuis l'optimisation des moteurs d'exécution javascript dans les navigateurs. Dans une application Angular, c'est donc principalement le client qui travaille.
Pour cela, Angular offre un modèle de développement orienté MVC (modèle-vue-contrôleur), c'est à dire que les données, leur affichage et leur traitement sont codées de manière séparés.
Avec ces techniques, on peut se rapprocher des applications traditionnelles dites riches, à la différence qu'elle s'exécute dans un navigateur Web et donc à priori partout.

Voici un exemple maison qui m'a permis de me faire la main avec cette techno. Cette application présente des radiographies numériques effectuées sur des pièces de fonderie. Les photos de pièces ont été remplacées par des photos quelconques par souci de confidentialité, et pour les mêmes raisons, les radios ont été floutées :



Le code source est disponible sur Github

Pour cet exemple, afin d'établir la liaison entre l'application cliente AngularJs et la base de données MySql sur le serveur, j'ai utilisé l'api php-crud-api. Simple et efficace, je remercie les auteurs. Celle-ci permet de créer un service Web de type REST afin de communiquer avec la base de données. Ainsi la requête GET api.php/alliage renvoie sous forme de tableau javascript les lignes de la table "alliage" de la base de données.

dimanche 12 février 2017


Lecteur audio HTML5

Voici un petit lecteur audio multipistes avec visualisation du spectre. Il fonctionne en HTML5 et comprend les fonctions lecture aléatoire, pause, morceau précédent, suivant, boucle, volume... Bref idéal pour ce site.




Je me suis inspiré des travaux de Arun Kumar Sekar pour la partie lecteur, et de Wayou Liu pour l'afficheur spectral. Le lecteur complet est téléchargeable ici : player-audio-visualizer.zip.

dimanche 1er mai 2016


Informatique cognitive

IMB travaille activement dans le domaine émergent de l'informatique cognitive qui serait la 3ème ère de l'informatique (hardware, software, cognitive).

Pour inciter les étudiants, chercheurs, industriels à tester ces technologies capables d'extraire des concepts et leurs relations d'un texte par exemple, IBM met à disposition ses API dans le cloud.

Un exemple de traduction automatique, entrez votre texte en anglais :


Conférence de Jérôme Pesenti, vice-président, Core Technology, chez IBM Watson :

dimanche 3 avril 2016


Un autre sytème de traduction automatique à base de réseaux de neurones artificiels : https://demo-pnmt.systran.net/production#/translation

mardi 18 octobre 2016


Intelligence artificielle, une nouvelle étape ?

Le jeu de Go

En octobre 2015, AlphaGo fait le "buzz" en devenant le premier logiciel d'IA à gagner au jeu de Go contre un joueur professionnel. Pourtant ce jeu nécessite d'autres facultés que la "simple" exploration des combinaisons de solutions.

Pour ce faire, le programme utilise la méthode de Monte-Carlo (méthode probabiliste, utilisée notamment pour les recherches sur la fabrication de la bombe atomique) et deux réseaux de neurones profonds. Ces derniers sont une avancée technologique majeure car ils permettent la modélisation de données abstraites et la faculté d'auto apprentissage.

Le domaine de l'IA est de ce fait en plein essor. La reconnaissance vocale, faciale, les prédictions financières sont autant de domaines qui motivent la recherche sur ces nouvelles technologies. L'évolution est telle que le célèbre physicien Stephen Hawking s'inquiète : « L'intelligence artificielle pourrait mettre fin à l'humanité ».

Pour ma part, en tant que passionné d'informatique, de nouveaux territoires à explorer... Le robot Atlas de Boston Dynamics préfigure peut-être cette révolution :

samedi 27 février 2016


Découverte au Monde en Tique

C'est en arpentant cette rue improbable de la capitale que je découvrais le Monde en Tique, petite librairie informatique où j'allais sans le savoir rencontrer la passion. Je ne suis pas particulièrement croyant, mais est-ce l'atmosphère quasi spirituelle du lieu, ce que je découvris ici allais m'élever dans la quête d'absolu. Feuilletant un livre de programmation je lu ceci :

(require srfi/41)

(define (flot-nb-entiers-a-partir-de n)
   (stream-cons n (flot-nb-entiers-a-partir-de (+ n 1))))

(define (non-divisible-par? k)
   (lambda (n) (not (zero? (remainder n k)))))

(define (crible flot)
   (stream-cons (stream-car flot)
        (crible (stream-filter (non-divisible-par? (stream-car flot))
        (stream-cdr flot)))))

(define flot-nb-premiers (crible (flot-nb-entiers-a-partir-de 2)))

(stream->list 5000 flot-nb-premiers)


Après enquête, il s'avère que cette langue mystérieuse s'appelle Scheme, un dialecte de Lisp. Ce passage où fleurissent parenthèses et autres curiosités syntaxiques pourrait s'écrire en français :

en utilisant la librairie des listes infinies (flots)

definir flot-nb-entiers-a-partir-de n comme l'association de n avec flot-nb-entiers-a-partir-de n+1

definir le predicat non-divisible-par?

definir la fonction crible qui construit un flot constitue de chacun de ces entiers restant apres avoir supprime les multiples des entiers inferieurs

on obtient le flot des nombres premiers en partant de n >= 2

on affiche les 5000 premiers nombres premiers


C'est en fait une traduction du crible d'Eratosthène pour énumérer les nombres premiers. Vous vous demandez peut-être ce qui a pu retenir mon attention. Si vous vous penchez sur la ligne :

"définir flot-nb-entiers-a-partir-de n comme l'association de n avec flot-nb-entiers-a-partir-de n+1" 

Vous entreverrez peut-être une fenêtre sur l'infini. 

Quand je suis sorti, la lumière d'une fin d'hiver se faufilait dans la rue Maître Albert, pourtant étroite. J'ai voulu crier ma découverte, la proférer aux âmes errantes de la capitale. Les mots se sont tus à peine germés, les passants de ce samedi ne semblant pas particulièrement réceptifs. Il y a des joies solitaires, celle-ci m'éclaire, une question me vient : et si notre créateur parlait Scheme ? Aurait-t-il préparé ce qu'il allait advenir à l'univers dans des petits carnets griffonnés de parenthèses et de fonctions récursives ?

Depuis ce jour, ma bibliothèque se peuple de traités sur la programmation fonctionnelle, la récursivité, la logique propositionnelle.  Cette langue est d'une pureté, d'une élégance et d'une puissance qui dépasse de loin ce que ma culture impérative me laissait imaginer. Où va-t-elle maintenant m'emmener ?

Je remercie les créateurs Gerald Jay Sussman et Guy L. Steele pour m'inviter à prendre le large à bord de leur bateau étrange. Le pavillon est hissé, le symbole lambda flotte dans le vent. Que vogue notre imagination en quête de paysages symboliques exotiques. L'horizon reste à inventer.


Île en vue

Après plusieurs mois de navigation au large, porté par un souffle nouveau, grisé par l'ivresse de la découverte, j'aperçu une île. Situé dans l'océan Informatique, l'archipel des Achetehemelles est immense. On ne cesse de recenser de nouveaux sites, autant d'îlots de données à explorer. Je m'apprêtais donc à accoster, émerveillé par les couleurs du lagon, l'atmosphère paradisiaque de ce petit bout de terre et intrigué par ce panneau érigé sur la plage HOP. Cette île s'appelle Hop. Elle est peuplée d'une poignée de chercheurs s'intéressant à la programmation diffuse. Et oui, on est bien loin du continent désormais. Lorsque j'amarrai le bateau, je fus surpris par la taille du port en proportion de la faible superficie de l'île. J'appris plus tard le rôle majeur que constituait les communications au sein des systèmes diffus. Aussi, les voyageurs qui transitent dans cette région parlent tous un dialecte du Scheme, appelé Hop comme cette île. Les premiers mots que j'appris pour dire bonjour : 

(define-service (hello/world)
  (<HTML>
    (<BODY>
       "Hello World!")))

(define (say-hello)
  (<HTML>
    (<BODY>
       (<A> :href "/hop/hello/world" "click me"))))

(define-service (hello)
  (say-hello))

(say-hello)


Voici les explications dispensées par une des plus éminentes personnalités insulaire :


Expériences

Intrigué par les possibilités de ce nouveau langage et surtout son approche originale de la programmation web, je fus bien sur tenté par quelques expérimentations...


Dans les nuages

En levant les yeux vers le ciel, je découvrais bientôt une autre implémentation de Scheme pour le web. WeScheme s'exécute quelque part dans les nuages (les spécialistes parlent de cloud computing). Impossible de résister à un premier vol.