juin 21, 2011
Un petit message pour vous parler d'une application mobile. Cette application se nomme Quizzy; elle est disponible sur iPhone et sur Android. Elle est gratuite.

Elle est développée par un ami : Yannick qui développe depuis 1 an environ des apps mobiles grâce à Titanium (je vous en avais parlé dans un précédent billet). Très simple d'utilisation, l'application est doté d'une base importante de quizz portant sur tous les domaines (cinéma, géographie, littérature, ...). Vous pouvez effectuer des quizz de 20 / 30 / 50 questions en mode déconnecté (très intéressant par exemple dans le métro de Lyon). Il est également possible d'afficher les résultats (par défaut, ces derniers ne le sont pas).
En plus du classement mondial (sur la communauté francophone), il est également possible de contribuer ses propres questions qui sont validés avant d'intégrer la base de quizz.
Voilà donc une application plutôt sympa qui permet de passer le temps tout en s'instruisant.
juin 01, 2011
Ces derniers temps, je me suis mis en quête de trouver une communauté Arduino francophone, ayant pour but d'échanger sur les différents projets réalisés, de pouvoir partager ces problèmes et avoir les réponses. Voici donc les différentes sources que j'ai pu trouver
Voici également un liste de projets assez sympa liés à l'Arduino
- hexapod-arduino, le concepteur a pour but de réaliser Bleuet (vous savez le petit robot dans la série Fx Effets Spéciaux)
- robot autonome dans ses déplacements, réalisé par un scientifique
Au vue de toute cette communauté plutôt éparpillé, je me dis qu'il serait bien d'avoir un premier point d'entrée sur le site arduino.cc avec l'ensemble de la doc traduite mais également des liens vers les différents projets francophones. Qu'en pensez-vous ?
mai 30, 2011
Dans ma découverte de l'Arduino, ma première envie fût de réaliser un tweet avec l'Arduino grâce à la détection de courant via une de ses entrées (ou changement d'état). On s'amusera par la même occasion à faire allumer une LED. Pour cela, nous aurons besoin d'une plaque de pratique, de différents composants électronique (LED, transistors, résistance), d'un Ethernet Shield et bien entendu de l'Arduino.
L'Arduino en lui même n'est pas capable de faire un tweet, en revanche, il est tout à fait à même de faire un appel réseau via un Ethernet Shield et la librairie Ethernet. Il vous faudra donc un ordinateur également relié au réseau et sur lequel sera présent le code permettant de faire le tweet. Je me suis basé sur ce tutoriel: Envoyer un tweet simplement en PHP avec OAuth pour tweetter. Le montage donne le résultat suivant :

Pour vous aider, voici une vision plus claire grâce un petit schéma. J'ai utilisé un transistor PNP BC32725, trois résistances de 110 Ohms, une LED. Attention au sens du transistor, vous risquez d'avoir des surprises ;-)

Pour les électroniciens, le schéma suivant vous donnera une meilleure vision du montage :

Pour rappel, notre objectif est de faire un tweet depuis un changement d'état (électrique) via une des entrées de l'Arduino. Dans le schéma ci-dessus, j'ai utilisé un interrupteur pour simuler le changement d'état. Je vous laisse voir pour les utilisations possibles en modifiant l'interrupteur par un capteur ;-)
Maintenant, passons au code qui sera dans l'Arduino :
#include <Ethernet.h>
#include <SPI.h>
byte mac[] = { 0xzz, 0xzz, 0xzz, 0xzz, 0xzz, 0xzz }; // l'adresse MAC est indiqué sur l'Ethernet Shield
byte ip[] = { xxx, xxx, xxx, xxx }; // l'adresse ip pour le shield
byte server[] = { yyy, yyy, yyy, yyy }; // l'adresse ip de la cible (qui permettra le tweet)
// Cette variable permet de savoir si un tweet a déjà été effectuée
bool tweet = false;
Client client(server, 80);
void setup() {
pinMode(7, OUTPUT); // on définit le pin 7 en sortie (qui servira pour allumer la LED)
Serial.begin(9600);
Ethernet.begin(mac, ip); // on configure l'ethernet
delay(1000);
}
void loop() {
Serial.print("Etat pin 2 : ");
int val = analogRead(2); // on lit l'état de l'entrée Analogique 2
Serial.println(val);
if(val >= 900 && !tweet) { // si la valeur du pin A2 est supérieur à 900 on considère un changement d'état et donc on lance le tweet
analogWrite(7, 255);
sendTweet();
analogWrite(7, 0);
}else{ // sinon on attends 2 sec
delay(2000);
}
}
// l'envoi du tweet via le code PHP se fait ici
bool sendTweet() {
Serial.println("connecting...");
if (client.connect()) {
Serial.println("connected");
client.println("GET /tweet.php HTTP/1.0");
client.println();
delay(2000);
do { // on fait "tourner" le script pour récupérer tout l'appel HTTP
char c = client.read();
Serial.print(c);
} while((client.available()));
if (!client.connected()) { // on clôt la connexion une fois la requête HTTP faite
Serial.println();
Serial.println("disconnecting.");
client.stop();
tweet = true; // on bloque ici les tweets potentiels suivants
}
}
}
Une fois embarquée sur l'Arduino, vous pouvez effectuer vos premiers tests. En fermant l'interrupteur, l'Arduino lancera un appel réseau sur le serveur que vous aurez défini et effectuera le tweet. Et voilà le tour est joué. Pour refaire un tweet, il vous faudra faire un reset sur l'Arduino.
Bon amusement ;-)
mai 26, 2011
Depuis un petit moment, j'ai laissé de côté ce blog, pour plusieurs raisons : le travail, l'animation sur le portail www.titanium-news.com, mais également car depuis quelques temps, je bidouille sur Arduino : une carte intégrant un microprocesseur en open-source, mais également un IDE également en open-source. Je vais dans les prochains temps me remettre à écrire plus ardemment, enfin je l'espère.
Le site arduino.cc fourmille de documentation, de spécifications et d'exemple à propos de l'Arduino. Pour ma part, j'ai acheté le module sur Lextronic, et j'ai reçu le colis sous 3 jours. Je recommande également de se munir d'un kit contenant différents composants électronique, des fils et une plaque de pratique (exemple de kit sur le store.arduino.cc). Cela vous permettra de ne pas être bloquer au premier tutoriel.
Une fois que vous aurez reçu tout ces éléments, vous pourrez commencer, tout comme moi, à vous amuser. Vous aurez cependant assez rapidement besoin de notions en électronique afin de ne pas faire griller vos composants (comme une de mes LEDs dernièrement). Pour ma part, la découverte de l'Arduino m'oblige à reprendre mes bases d'électronique (auxquelles je n'avais pas touché depuis près de 10ans, l'IUT c'est loin déjà ;-) ).
Quelques idées de projet sont présentes dans mon esprit et je vais essayer de les mettre en place. Pour vous faire profiter de mes expériences, j'ai créé deux nouvelles catégories dans le blog : Arduino et Electronique.
Bonne bidouille.
mars 02, 2011
J'ai eu le retour de différentes personnes n'ayant pas compris totalement le mode de fonctionnement du service de push notification chez Apple. Je vais donc donner différents détails qui je l'espère permettrons de mieux comprendre le fonctionnement.
Il est important de distinguer 3 entités :
- le terminal iOS utilisé ;
- le service de push chez Apple (que j'appellerais APNS) ;
- le service de push chez l'éditeur de l'application (que j'appellerais PushService) qui comporte une base de données.
Le fonctionnement est le suivant :
- L'application est installé sur le téléphone d'un utilisateur. Ce dernier active les notifications pushs. Le terminal envoi une requête au PushService avec son UDID (Identifiant uniquement sous la forme d'une chaîne hexadécimale).
- Lors de l'arrivée d'un nouveau contenu, le PushService récupère l'ensemble des UDIDs enregistrés. Il se connecte ensuite à l'APNS via un socket SSL et transmet le message. Il est possible de définir le type de notification : soit badge, soit alerte, soit un son; accompagné d'un message.
- Les serveurs de pushs APNS chez Apple envoient ensuite la requête aux différents téléphones
- Les utilisateurs reçoivent sur leurs terminaux les notifications.
Le délai est très souvent de quelques secondes entre l'envoi par PushService et la réception sur le terminal). PushService doit régulièrement effectuer une action complémentaire auprès du service de push Apple : récupéré la liste des UDIDs qui ne doivent plus recevoir de push notifications (ex : terminal indisponible, compte utilisateur apple fermé, etc...). Si cette action n'est pas réalisée, Apple se permettra de rendre indisponible l'envoi de push.
A noter qu'actuellement, aucun service de push n'est disponible sur Android. Mais il semblerait que les développements soient en beta dans les labs.
févr. 28, 2011
- on me propose le meilleur poste de ma carrière (dans une société que je ne connais pas de nom bien entendu), on discute durant une heure, vient ensuite la proposition d'entretien de visu. A ce moment-là, on me fait comprendre que l'on désire me voir vite. Problème : je dois débourser quelques centaines d'euros pour m'y rendre car ce dernier ne veut pas prendre les frais en charge. Chers recruteurs, n'oubliez pas que je suis déjà en poste et donc que j'ai autre chose à faire que de jeter par la fenêtre 400euros en transport / logement pour une heure d'entretien !
- on me contacte pour rejoindre une société; avec laquelle j'ai été en contact ou je suis en relation directe ou indirecte. Très souvent, ce sont des stagiaires qui ne connaissent pas les clients de leur SSII ou qui n'ont pas accès à l'historique des recrutements. Bref, je prends cette approche comme une sorte d'incompétence de la part de la société...
- lors d'un entretien, on m'a indiqué que la participation et l'intéressement était considéré comme du salaire fixe ! J'ai cru m'étouffer en entendant cela !
- on me demande mes défauts / qualités, trop souvent demandés lors d'entretien. Quel est le réel intérêt de cette question ! Selon les contextes professionnels, les défauts peuvent se transformer en qualité et vice-versa, tout dépend de la personne et ce n'est pas en 2h d'entretien que l'on peut voir cela.
- on me fait de la PNL : cet outil est un pure gag pour moi, surtout quand le candidat la connaît et sait comment la contourner. Il peut donc complètement modifier l'avis du recruteur.
L'ensemble des points ne sont que des exemples et ce ne sont pas les seuls... mais ils sont trop souvent présents lors des phases de recrutements. Je m'adresse donc à vous recruteurs : mesdames, messieurs, lorsque vous recrutez:
- mettez les moyens qu'il faut pour faire réellement venir le candidat au sein de votre société (même si vous devez pour cela payer leurs déplacements) ;
- ne mettez pas des stagiaires (seul à seul) dans les phases de recrutements, notamment lors des entretiens face à des candidats expérimentés, personnellement je prends cela pour un manque marquant de sérieux ;
- arrêtez de nous faire croire mont et merveille... nous ne sommes pas des juniors, on ne croit plus à vos promesses, on désire des faits réels et écrits sur le papier.
Je relative cependant mon discours en indiquant que certains recruteurs sont de réels pros qui savent comment réaliser les entretiens et ne suivent pas bêtement le manuel du recruteurs pour les nuls.
Et vous, avez déjà eu ce type d'expérience, n'hésitez pas à en faire part ici.
févr. 09, 2011
Je suis actuellement à la découverte de Python. A cet effet, je regardais la méthode pour me connecter à une base de données MySQL. J'ai passé pas mal de temps à configurer mon environnement, j'en profite donc pour vous faire profiter de mes remarques pour l'installation et la configuration du module permettant l'intéraction BDD \<-> langage. Je travaille sous Mac OS X (Snow Leopard) avec MAMP et voici les différentes étapes permettant de se connecter à une base de donnée MySQL depuis Python.
Etape 1 : installé MySQL depuis les sources
Décompresser le fichier depuis le dossier où se trouve le fichier :
tar xzvf mysql-5.1.55.tar.gz
cd mysql-5.1.37
./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-shared --with-plugins=innobase
make (cette étape prends quelques minutes, on est tout de même en train de compiler MySQL)
sudo make install
On s'arrête maintenant là pour la partie Server de MySQL.
Etape 2 : installé le module Python MySQLdb
On commence tout d'abord par définir dans l'environnement où se trouve les commandes MySQL via cette command
export PATH=\$PATH:/usr/local/mysql/bin/
Vérifier ensuite que vous avez installé setuptools, le cas échéant, vous pouvez télécharger sur le site.
Il faut ensuite télécharger et décompresser le fichier suivant : MySQLdb
Effectuer ensuite les commandes suivantes :
sudo python setup.py clean
sudo python setup.py build
sudo python setup.py install
Testez ensuite le module est bien installé. Pour cela, faites les commandes suivantes:
cd (il est conseillé d'être dans un autre dossier que celui où se trouve le module MySQLdb)
python
>>> import MySQLdb
Si aucune erreur ne s'affiche, c'est que le module est bien disponible.
Etape 3 : connexion depuis un script Python
Tout est prêt maintenant, je vais tenter de me connecter via le script de base (via la documentation)
conn = MySQLdb.connect(host = "localhost", user = "root",passwd = "root",db = "mysql")
cursor = conn.cursor()
cursor.execute ("DESCRIBE user")
rows = cursor.fetchall()
for row in rows:
print row
cursor.close ()
conn.close ()
Cependant une exception se lève
En effet, vous n'utilisez pas le mysql compilé précédemment mais celui de MAMP, il faut donc rajouter un paramètre supplémentaire :
Relancez votre script et le tour est joué, vous êtes connecté à votre base de donnée MySQL MAMP.
Source :
Installing MySQL on Snow Leopard
Writing MySQL Scripts with Python DB-API
Documentation officielle
févr. 07, 2011
Je participe depuis quelques jours à un autre blog en français, avec @yannickgrammont et @las92i, parlant de Titanium : titanium-news.com. Nous y aborderons l'ensemble de l'actualité, les mises à jour du SDK Titanium. Quelques tutoriels y verront également le jour. Un compte Twitter est également présent @titanium_news.
Titanium est un outil permettant le développement d'applications sur mobile et/ou sur desktop. Développé par AppCelerator, il est en constante amélioration et prends en compte différents SDK natifs mobiles : iOS et Android. Blackberry est actuellement en cours de portage et devrait arriver prochainement.
janv. 24, 2011
Cela fait plusieurs années que l'on en parle, c'est dorénavant de l'actualité chaude. Depuis quelques années déjà, certaines entreprises ou institutions mettent en garde la communauté afin de migrer rapidement sur IPv6. Dans 8 jours, il n'y aura plus d'adresse IP v4.
Quelques rappels sur l'IP v6. Son développement a démarré en 1993. L'adressage permet d'avoir un nombre beaucoup important d'adresses : sur 128 bits, soit 2^128 adresses au lieu de 32 bits (2^32) pour IP v4. La sécurité est également accrue grâce à l'intégration native d'IPSec. Il est également à noter que tous les systèmes d'exploitation récents supportent cette nouvelle version d'IP v6.
Les impacts de cette migration sont techniques et donc financiers. En effet, il ne suffit de pas de cliquer sur un bouton, il faut parfois mettre à jour le code, mais il peut être également obligatoire de changer les équipements physiques qui ne seraient plus compatibles avec cette nouvelle version. La migration peut également impacter les services en production et ainsi les rendre indisponible un certain temps. Bref, c'est une grosse migration à réaliser avec un protocole strict et bien défini; tout ceci avec l'objectif de réaliser la migration en un clic de souris ;-)
Quelques articles à propos de la migration vers IPv6 :
Je rajoute ce widget, proposer par iNetCore, pour voir le temps restant
janv. 21, 2011
Cette question fait suite à la question posée lors d'un cours par un étudiant de Master 2.
Pour commencer une définition de la veille s'impose : à l'heure où le développement des entreprises s'avère étroitement lié à leur capacité d'adaptation et d'anticipation, disposer des bonnes informations devient une nécessité, pour prendre des décisions argumentées et mener les actions adéquates (source). La lecture de cette définition reflète tout l'intérêt de réaliser de la veille : anticiper et s'adapter à l'évolution dans le monde des entreprises.
- sur la technologique : évolution des langages de développement et de leurs écosystèmes, nouveaux outils et méthodes. Pour cela, le veilleur passe par les sites référents dans son domaine, les blogs et sites d'actualités spécialisées, mais également en réalisant des tests et/ou des benchmarks par lui-même.
- sur l'économie : c'est en effet une suite logique de la veille technologie, je dirais même que les deux sont totalement complémentaires et indispensables l'une pour l'autre. A ce niveau, le veilleur s'empare de la presse et des médias plus traditionnel, cela lui permet de connaître le contexte dans lequel il évolue.
Une veille régulière permet l'innovation et la possibilité pour une entreprise de rester fortement concurrentielle. Trop souvent, les entreprises et formations restent trop le nez dans le guidon et oublient de permettre la réalisation de cette tâche. Il est primordial de réaliser de la veille, à la fois pour l'entreprise mais également pour soi-même.
En conclusion, j'adresse deux messages :
- aux responsables et managers: "Permettez à vos équipes de réaliser de la veille, les bénéfices seront alors conséquents".
- aux opérationnels : "N'oubliez jamais de rester à niveau sur l'actualité, il en va de votre évolution future..."