vendredi 25 avril 2014

NurseHelper et autres applications infirmières

    Le site OnlineLpnToRn a publié récemment un article sur les nombreuses applications existantes sur mobile et qui peuvent venir en aide aux infirmières et dans certains cas, à d'autres personnes du milieu médical.

    Parmi cette liste se retrouve NurseHelper, mon application développée depuis un peu plus de 6mois.
Cette liste est intéressante car elle permet de se rendre compte à quel point la technologie s’immisce un peu partout et peut venir assister les gens dans leur travail.

    Vous pouvez retrouver la liste des applications sur le site OnlineLpnToRn. Plus de 100 applications y sont répertoriées. Elles sont classées par catégories: générique, pédiatrie, médicaments, anatomie, etc

mardi 29 octobre 2013

Python 3 et requêtes web derrière un proxy

Dans le cadre du projet Luchiana, mon intelligence artificielle a besoin de se connecter à internet pour récupérer des informations. Dans certains cas, un proxy peut se trouver entre l'IA et internet. J'ai donc développé un petit module permettant d'accéder à internet à travers un proxy.

import urllib.request
import ssl


def connectProxy(type):
    proxy_info = {
    'user' : 'nom d utilisateur',
    'pass' : 'mot de passe',
    'host' : "ip ou nom du proxy",
    'port' : port # or 8080 or whatever
    }

    proxy_support = urllib.request.ProxyHandler({type : "http://%(user)s:%(pass)s@%(host)s:%(port)d" % proxy_info})
    opener = urllib.request.build_opener(proxy_support, urllib.request.HTTPHandler)

    # install it
    urllib.request.install_opener(opener)

Ensuite il suffit de faire un import Proxy dans votre projet et d'appeler la fonction avec un Proxy.connectProxy("typeConnection")
Le type de connection peut être https ou http selon les sites auxquels vous souhaitez accéder.

mardi 10 septembre 2013

Luchiana - Présentation de l'architecture logicielle

Après la présentation de l'architecture physique et matérielle, voici la présentation de l'architecture logicielle.
    Côté client, c'est simple. Il y a la partie principale, l'interraction avec l'utilisateur. Ce module s'appuis sur le module Audio pour la reconnaissance et la synthèse vocale si ces options sont activées. Sinon le module peut fonctionner en solo. Il repose également sur un module de gestion des connexions. C'est un client TCP asynchrone semblable à celui dont j'ai publié le code précédemment. Ce module de connexion s'appuie sur un module Sécurité qui permet de chiffrer ou déchiffrer le contenu échanger entre le client et le serveur.

    Côté serveur, c'est un peu plus complexe. L'idée est d'avoir un module par type d'action. Un module web permettant de rechercher sur internet, d'envoyer des maisl ou de tweeter, un module Math pour toutes les opérations mathématiques, un module TankBot pour l'intéraction avec mon TankBot et un module System pour l'interaction avec le système linux du Raspberry. On retrouve également les modules de connexion avec le serveur TCP et le module de sécurité pour le chiffrement des communications.
    L'essentiel du travail est réalisé par un module nommé Cerveau. Il se charge d'analyser la phrase donnée par l'utilisateur. Il cherche dans sa base de connaisance l'action ou la réponse associée.
La base de connaissances ressemble à de l'AIML.

Voici un exemple:
comment/appelles/?;Je m'appelle Luchiana./Mon nom est Luchiana.
Cette ligne signifie: si une phrase contient "comment", "appelles" et un "?" alors réponds aléatoirement: "Je m'appelle Luchiana." ou "Mon nom est Luchiana."
La partie précédent le ";" est ainsi celle relative à l'entrée de l'utilisateur. Celle qui suit le ";" est la réponse.
Les réponses peuvent également être ou nécessiter des commandes/actions:
donne|quelle/date/?;bash;date +%d-%m-%Y;Nous sommes le %OUT%
Ici on voit apparaitre le "|". Il signifie que l'un des deux mots qui l'entourent doivent être présent. On voit également "bash;date +%d-%m-%Y" qui signifie que le Cerveau doit exécuter cette commande avant de répondre. Le résultat remplacera le %OUT% dans la réponse.

Luchiana - Présentation de l'architecture physique

Voici une petite présentation de l'architecture de Luchiana. Pour rappel, Luchiana est un projet personnel d'intelligence artificielle. Le but est de pouvoir lui parler, lui poser des questions et même lui faire réaliser des actions comme l'envoie de mail ou encore contrôler la lumière de l'appartement.

La solution se base sur un code en python hébergé sur un raspberry pi. J'utilise le mode client/server.



D'un point de vue physique, c'est très simple. On retrouve la box pour l'accès à internet et qui permet au raspberry d'être accessible de l'extérieur et sur le réseau. Ensuite les différents éléments (lampes, volets, télé, ...) sont reliés au raspberry via les pins GPIO. Sur ces pins on peut brancher des emetteurs infra-rouge, ondes radio etc. J'ai également branché sur la prise jack un émetteur radio TankBot.

Les clients sont au nombre de 3: 
- un client web permettant la discussion en mode texte
- un client en ligne de commande avec reconnaissance et synthèse vocale
- un client Android avec reconnaissance et synthèse vocale.


lundi 9 septembre 2013

Elementary OS Luna

Juste une petit article pour présenter mon bureau et la distribution que j'utilise: Elementary OS.

Elementary OS est une distribution basée sur Ubuntu. Elle se veut simple, rapide et élégante. L'équipe de développement a créé quelques logiciels comme Music, Gaia, Pantheon-Terminal, etc
A l'origine, le projet Elementary était un thème d'icônes, puis un thème gtk. Désormais, il s'agit d'une distribution à part entière qui utilise Pantheon, son propre shell.
Par défaut on a un bureau géré par Pantheon avec Wingpanel ( la barre du haut) et Plank (le dock minimaliste).

mardi 18 juin 2013

Droidconfr

BugDroid Francais
Pour la première année, la Droidcon a eu lieu en France. 2 jours totalement dédiés a Android sous toutes ses formes. Beaucoup d'annonces et de démonstrations ont eu lieu. On a principalement pu voir:
-Genymobile qui a présenté son émulateur Android basé sur une image x86 et qui ajoute des fonctionnalités de gestion de la batterie de l'émulateur ou encore le GPS. L'émulateur prend aussi en charge open GL et offre de très bonnes performances
-Intel a annoncé un nouveau smartphone x86 a moins de 300€ avec de très bon résultats sur Antutu (>30000)
-Motorola a présenté sa suite RhoMobile permettant de développer en cross plateforme.
-Alcatel a mis a disposition sur son stand des tablettes et smartphones et surtout un smartphone sous Firefox Os
-Alain Regnier, consultant sur les solutions google a par ailleurs fait une conférence sur les Google Glasses. Il a présenté le hardware ainsi qu'une démo de quelques applications.

Cette droidcon a rassemblé beaucoup de monde et a été un réel succès. Merci aux organisateurs et aux intervenants d'avoir proposé un événement Android en France.

jeudi 16 mai 2013

Google IO13: Les nouveautés Compute Engine


Alors que ce déroule en ce moment à San Francisco la Google IO, on a appris il y a quelques jours que Google allait changer l'OS par défaut disponible sur sa plateforme IaaS, Google Compute Engine. Auparavant, l'OS était Google Compute Engine Linux, un Linux modifié par Google pour coller à sa plateforme. Désormais, ce sera donc Debian, la distribution communautaire qui sera proposée. 

Debian comme os par défaut pour le cloud Google


A côté de cela, c'est à la suite de la keynote d'ouverture que l'on a appris l'ouverture à tous les développeurs de Compute Engine.
De plus, le support du php a été ajouté à AppEngine afin de toucher plus de développeurs.
Google cloud storage devrait aussi être de la partie courant 2013.

App Engine and Compute Engine news features

Avec ces nouveautés, Google espère clairement rattraper voir dépasser Amazon sur son terrain et il faudra suivre les annonces au cours de l'année du côté de Mountain View pour savoir ce qui se trame aujourd'hui dans l'antre du géant.