Articles

Affichage des articles du 2015

RFID RC522 on Raspberry PI with NodeJS

Image
It's kind of hard to succeed in this. Most of tutorials are uncomplete. Here is my compilation.

Everything is done on the PI

0) Install node
wget http://node-arm.herokuapp.com/node_latest_armhf.deb
sudo dpkg -i node_latest_armhf.deb

1) Update your PI: 
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo rpi-update
sudo apt-get clean

2) Configure the SPI group:
sudo groupadd -f --system spi
sudo adduser pi spi # assuming the pi account is the one that will access SPI
sudo nano /etc/udev/rules.d/90-spi.rules

Then add this to the file :
SUBSYSTEM=="spidev", GROUP="spi"

3) Configure the PI:
sudo apt-get install build-essential
sudo npm install -g node-gyp
sudo raspi-config
  under Advanced Options - enable Device Tree
  under Advanced Options - disable SPI
sudo reboot

4) Compile the spi_bcm2835 driver:
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.46.tar.gz
tar -zxf bcm2835-1.46.tar.gz
cd bcm2835-1.46
./configure
make
sudo make check
sudo make install
sudo modpro…

Angular 2.0 : Retour en grâce ?

J'ai très (très) longtemps fustigé Angular 1 et c'était encore le cas récement. Je reste d'ailleurs persuadé que la version 1 d'Angular a été faite par des javaïstes refoulés qui souhaitaient torturer des gentils développeurs JS.

Il y a plus d'un an, j'ai tenté pleins de framework.

J'ai vite délaissé Ember parce qu'il reprenait trop de concept de Angular1 et qu'il fallait au moins 3 fichiers ou fonctions (à l'époque) pour coller un "Hello World" dans une div. Et les promesses étaient encore une vision d'esprit seulement accessibles que via Q.JS...

React me semblait trop déconnecté du DOM et de ce que j'ai pu en lire, pas mal de monde pignait sur des problèmes de refresh de certains éléments dans un DOM complexe. De quoi pas donner envie...

J'ai biensûr regardé du coté de Backbone mais là c'était quand même beaucoup de boulot pour arriver à la fluidité de code que je souhaitais obtenir. Y'a même eu Knockout (il y a 3…

Quelques pas vers le management 3.0

Image
Chef de projet chez NCI ça doit essayer de savoir un peu tout faire. Développement, Veille Techno, Commercial, Management, Gestion de projet, etc.

Dans la série Management, voici mon talk fait lors des rencontres interactives organisées par Laurent Demontiers.
J'y donne quelques tuyaux pour gérer une petite équipe sans se prendre la tête à l'aide de méthodes Agiles issues KaiZen et du Management 3.0 (Jurgen Appelo).

Si tu veux mon avis sur Drupal

Image
"Quand on me demande mon avis sur Drupal"

AngularJS c'est d'la merde

J'ai jamais (jamais jamais) aimé AngularJS. Trop compliqué et du coup je ne l'ai pas utilisé pour mon taf pro. La dette technique engendrée est colossale et la complexité est trop importante à mon avis sur des projets qui dépassent le simple todo.

J'ai le même avis sur Ember... Désolé pour les filles qui codent encore en Ruby, et puis de toute façon je suis allergique aux hamsters et aux cochons d'inde.

Aller, un GIST de l'ami @porteneuve pour étayer ce propos :
https://gist.github.com/tdd/5ba48ba5a2a179f2d0fa

Donc fait plutôt ton front avec :
http://vuejs.org/ (Si tu aimes quand c'est simple mais super pratique)
http://backbonejs.org/ (Si tu aimes quand même quand c'est un peu compliqué)
- https://facebook.github.io/react/ (Si tu veux que ça torche sans trop tenter de comprendre pourquoi)

Note : Cet avis est susceptible d’évoluer dans le temps ;)

Evitez les conflits inutiles sous GIT

Image
Comme moi vous n'aimez pas perdre du temps, comme moi vous utilisez GIT et vous développez avec des outils comme SASS, Gulp ou Webpack qui vous facilitent grandement la vie.

Le problème quand on travaille à plusieurs sur GIT c'est de gérer les conflits lors d'un git pull. Le plus horripilant c'est quand ça se produit sur des fichiers que vous générez automatiquement à l'aide de Gulp par exemple.

- Les fichiers css compilés à partir de SASS
- Les fichiers js uglifiés (j'aime ce mot !)
- Les .map générés à partir des javascript ou css.

Ces fichiers là on s'en fout quand même pas mal puisque notre outil (Gulp en l'occurence) les régénérera pour nous automatiquement...

On ne peux cependant pas les ajouter au .gitignore car sinon on ne pourra plus déployer le projet avec une simple copie de fichiers.

Heureusement il existe un fichier de configuration git peu connu qui se nomme ".gitattributes". Comme le ".gitignore" vous devez le placer à…

Un avis sur RecalBox

Image
Cette semaine j'ai reçu mon Raspberry Pi². Si je l'ai commandé c'est principalement pour installer la distribution RecalBox dessus, après avoir lu l'article de Korben à ce sujet.

Elle a pleins de choses géniales cette distrib, mais si vous voulez vraiment jouer alors il va falloir attendre encore un peu. En effet la version actuelle (au 08/03/2015) n'est pas totalement utilisable par les novices.

Quand je dis qu'elle a pour elle pas mal de choses :
- Elle s'intalle facilement (NOOBS)
- Les jeux sont fluides !
- Elle se configure simplement (dès qu'on a compris que ta touche 'S' sert à valider !). La configuration des manettes est particulièrement bien faite, c'est un vrai plaisir.
- Elle a fait le buzz et donc risque de devenir rapidement populaire.
- Elle est Made In France et le petit gars qui s'en occupe est très réactif.

Bon après, forcément,il y a pas mal de choses qui ne fonctionnent pas bien pour le moment :

- La gestion des dong…

Transferer des données encodées en ZLIB via Socket.IO entre PHP et NodeJS

Je suis en train de réaliser une plateforme d'impression dans le cloud pour ma boite. Pour éviter de saturer la bande passante j'ai pris l'initiative de compresser les flux d'impressions avec la librairie ZLIB qui est prévue pour le cross-platform.

Quand on l'utilise via les sockets entre PHP et NodeJS ce n'est pas une partie de plaisir si on passe à coté d'un petit truc bien vicieux :

Coté PHP : il faut encoder en base64 le flux compressé, ce qui donne :

$printData = file_get_contents(__DIR__."/monfichier.prn"); $printData = zlib_encode($printData, ZLIB_ENCODING_DEFLATE); $printData = base64_encode($printData);
$printData peut ensuite être envoyé via un WebSocket Elephant.IO.
Apparté : Si vous souhaitez utiliser des certificats cryptés pour vos tests de dev avec Elephant.IO, ça ne marche plus dans la version 1.X. J'ai fait une pull-request à Wissembly pour améliorer ça.
Coté NodeJS : Il faut "require" la librairie zlib (intégrée à Node)…

Comment j'ai fait... une borne d'arcade

Image
Depuis tout petit j'avais toujours rêvé d'avoir une borne d'arcade. Quand j'étais ado, j'ai découvert les émulateurs et j'ai pu retrouver les jeux de mon enfance. Il y a quelques années, j'ai craqué et j'ai fabriqué ma borne d'arcade.

Pour les côtés, j'ai pris des dalles de plancher à 7€
Pour la découpe, après un plan rapide, j'ai découpé les côtés. sur un côté j'ai tracé le placement des diverses planches de la face et j'ai tenté de retrouver un look rétro années 80
En me renseignant sur divers forums de bornes d'arcade faite maison, la plupart des gens étaient unanimes pour mettre des roulettes car le bois une fois monté pèse une tonne. Conseil très judicieux que je vous invite à suivre !
J'ai fait découper les planches de face de la borne et je les ai montées avec des petites équerres.
J'ai renforcé la structure par une planche sur le dos et une planche du milieu.
Une fois debout, j'ai affiné l'angle d'a…

GPIO RaspberryPI : Versions 1A, 1B, 1B+, 2

Image
Je vous pose ça là, ça peut servir !

RaspberryPI 1
Raspberry PI 2

Robot Arduino - Lego

Image
La semaine dernière j'avais promis à l'ainé de la famille de lui fabriquer un Robot "Wall-e".

J'ai récupéré il y a quelques semaines chez mes parents une partie de la tonne de Lego Technics qui dormait tranquillement dans le grenier depuis 25 ans.

Une fois les moteurs trouvés, la 1ère chose était de réussi à faire fonctionner les moteurs Lego avec un Arduino.

J'ai retrouvé 2 types de moteurs : 2 de 4,5v et 2 de 9v.

Moteur de 4,5v
Moteur de 9v
La carte arduino pouvant sortir 5v, j'ai initialement penché pour les 4,5v. Comme n'importe quel moteur à courant continu, en inversant la polarité on fait tourner le moteur en sens inverse. Par contre inverser la polarité sur un Arduino ca n'est pas possible sans un petit montage.

J'ai trouvé cette carte (Arduino Motor Shield L293D) sur Amazon à 9€ :

Elle dispose de 4 interfaces pour les moteurs et permet en plus de gérer 2 servo. Autre gros avantage elle dispose d'une entrée pour brancher une alimen…

Ca fait longtemps...

J'ai tenté pas mal de choses depuis le dernier post, et j'ai de quoi réalimenter ce blog.

J'ai tenté d'utiliser Ghost. C'est vraiment un bon moteur de blog, reste qu'il est payant ou qu'il faut le maintenir à jour. J'ai des journées déjà bien remplies et tellement d'autres choses à faire que je vais remigrer sur blogger.