domogeeek

Vous avez toujours eu envie de vous lancer dans un projet de domotique Opensource, voici les 5 ingrédients utiles pour réussir votre projet domotique si vous avez un peu l'esprit bricoleur.

1. Le kit Raspberry Pi

kit raspberry pi

Ce kit centralisera les informations de votre maison, sa faible consommation d'énergie et son faible encombrement font de lui une solution parfaite. Comptez 71€ pour un kit complet incluant Raspberry Pi 3, boitier et carte SD..

NB: Vous pouvez aussi partir sur un Raspberry Pi moins puissant, comme le 2 ou le zéro en fonction de votre budget.

2. Le dongle ZWave USB

dongle zwave aeotec

Ce dongle USB z-stick GEN5 supporte les dernières normes ZWave plus, il vous permettra d'interconnecter vos objets ZWave à votre Raspberry Pi. Comptez 54€ pour le modèle ZWave Plus et 30€ pour l'ancien modèle.

3. Le dongle 3G et une carte SIM Free à 0€

dongle 3G usb

Ce dongle 3G USB vous permettra d'envoyer et recevoir des SMS gratuitement grâce à une SIM Free à 0€ si vous êtes client Free. Il vous permettra d'être alerté par SMS en cas de fuite d'eau à votre domicile. Comptez un prix de 31€ pour ce Dongle 3G.

4. Des objets connectés ZWave

aeon labs compteur de consommation electrique

En fonction de votre projet, le catalogue des objets ZWave vous offre une large gamme de produits allant de 10 à 60€ en fonction de l'objet. Les marques les plus connues sont Fibaro et Aeotec.

Les objets ZWave les plus rependus sont les suivants :

5. Une stack logicielle opensource : Node-Red / MQTT / ZWave2MQTT

node red screenshot

Enfin, le dernier ingrédient concerne la partie logicielle. Pour cela je vous conseille :

  • Node-Red pour la programmation de vos scénarios. Il s'agit d'un excellent logiciel Opensource réalisé en Node par IBM.
  • Un bus MQTT mosquitto pour la centralisation des événements sur un bus de données.
  • ZWave2MQTT, mon bridge permettant d'interconnecter un bus MQTT à un réseau ZWave.

Voici un assemblage disponible sur GitHub que je maintiens : https://github.com/ltoinel/domogeeek

En synthèse, le coût du projet est de 150€ pour la box domotique Opensource et de 10€ à 500€ en fonction de la quantité d'objets que vous souhaitez déployer. A vous de jouer !

MySQL

Je vous avais parlé du script MySQL Tuning Primer il y a déjà quelques années. Celui-ci n'est malheureusement plus mis à jour depuis quelque temps déjà ...

Voici désormais Mysqltuner.pl, un nouvel outil Opensource écrit en PERL qui vous permettra d'analyser des problèmes de performance sur une base MySQL / Mariadb.

Pour l'utiliser, il vous suffit de réaliser un WGET pour obtenir le script :

$ wget http://mysqltuner.pl/ -O mysqltuner.pl

Et de l'exécuter avec un interpréteur PERL :

$ perl mysqltuner.pl  --user admin_user --pass admin_password

L'outil analysera l'ensemble des paramètres de votre base de données et vous générera un rapport complet des possibilités d'optimisation trouvées :

mysqltuner

C'est simple comme ... bonjour !

Tous les paramètres recommandés par l'outil ne sont pas forcement à appliquer, comme notamment le "query_cache" qui peut avoir des impacts négatifs sur votre site. Mais cela offre une bonne base de travail pour identifier l'origine des contentions de votre base de données.

Des options plus avancées sont disponibles pour aller plus loin dans l'analyse de votre base, pour les consulter, rendez-vous directement sur la page GitHub du projet Mysqltuner.pl.

nginx

Vous développez une application PHP à fort trafic ? Vous ne souhaitez pas que vos workers PHP soient sollicités à chaque requête entrante pour permettre une sollicitation HTTP plus importante ? Il y a pour cela plusieurs solutions :

  • Soit vous prévoyez d'utiliser un CDN si vous prévoyez un trafic très important provenant de plusieurs pays dans le monde.
  • Soit vous prévoyez d'utiliser un frontal Varnish / Squid qui se chargera du cache ce qui rajoute une cache réseau supplémentaire dans la chaîne d'appel des pages hors cache. Il faudra cependant de prévoir lui aussi de le redonder ...
  • Soit vous utilisez le module Fascgi_cache de NGINX si vous utilisez NGINX comme serveur Web.

Dans cet article je vais vous montrer comment mettre en place le cache NGINX Fastcgi pour mettre en cache les ressources retournées par PHP FPM afin de limiter les sollicitations inutiles et consommatrices de CPU au pool PHP-FPM.

Dans un premier temps vous devez définir une zone de stockage de votre cache dans le fichier nginx.conf, celui-ci aura comme rôle de stocker l'ensemble des éléments mis en cache. La taille du cache est à adapter en fonction de la taille de votre site Web et de la quantité de pages à mettre en cache.

fastcgi_cache_path /var/nginx/cache/ levels=1:2 keys_zone=microcache:10m max_size=1024m inactive=1h;

Une fois cette étape réalisée, vous devrez préciser l'utilisation de cache à l'endroit où vous sollicitez PHP FPM dans votre vhost :

location ~ \.php$ {
fastcgi_cache  microcache;
fastcgi_cache_key $scheme$host$request_uri$request_method;
fastcgi_cache_valid 200 301 302 5m;
fastcgi_cache_use_stale updating error timeout invalid_header http_500;

fastcgi_cache_bypass $no_cache;
fastcgi_no_cache $no_cache;

add_header X-Cache $upstream_cache_status;

.... etc
}

Vous devez maintenant jouer avec la variable no_cache pour définir une priorité de cache à NGINX en fonction des contraintes de votre site Web :

#Cache everything by default
set $no_cache 0;

#Don't cache if the URL contains a query string
if ($query_string != ""){
    set $no_cache 1;
}

#Don't cache if there is a cookie called PHPSESSID
if ($http_cookie ~* "PHPSESSID"){
    set $no_cache 1;
}

Une fois ces modifications réalisées vous n'aurez plus qu'à redémarrer la configuration de NGINX et faire un test :

$ sudo /etc/init.d/nginx reload
$ curl -X GET -I http://localhost

Si le header HTTP "X-Cache: HIT" est retourné après plusieurs appels, c'est gagné ! La durée du cache peut être ensuite adaptée via le paramètre : fastcgi_cache_valid

Pour plus de performances et limiter les I/O sur votre disque, vous pouvez créer un disque en mémoire afin qu'aucune lecture / écriture au cache sur votre disque ne soit réalisée par NGINX .

Pour cela, arrêtez le processus Nginx :

$ sudo /etc/init.d/nginx stop

Montez le répertoire de cache sur une partition TMPFS en mémoire :

mount -t tmpfs -o size=1G tmpfs /var/nginx/cache/

Redémarrez le processus NGINX :

$ sudo /etc/init.d/nginx start

Pour permettre à ce montage d'être réalisé automatiquement à chaque démarrage de votre serveur, la modification de votre fichier fstab s'impose :

$ nano -w /etc/fstab
/

Ajoutez la ligne suivante à votre fichier en faisant attention à ce que la taille du disque corresponde à la taille du cache défini dans NGINX :

tmpfs /var/nginx/cache/ tmpfs defaults,size=1G 0 0

Vous voilà avec un serveur NGINX équipé d'un cache capable de restituer des pages HTML au lieu du pool PHP qui lui est très consommateur en CPU et en ressources.

Pour allez plus loin dans votre tuning, vous pouvez ajoutez les "proxy pass" en cache si votre serveur agit en reverse proxy :

proxy_cache            STATIC;
proxy_cache_valid      200  1d;
proxy_cache_use_stale  error timeout invalid_header updating
                                   http_500 http_502 http_503 http_504;

Mais aussi en ajoutant les fichiers statiques en cache :

open_file_cache          max=10000 inactive=5m;
open_file_cache_valid    2m;
open_file_cache_min_uses 1;
open_file_cache_errors   on;

Enfin, pour terminer et pour vous débarrasser des IO inutiles sur votre serveur qui sont souvent le goulot d'étranglement de votre système, vous pouvez faire en sorte qu'OPCache garde tous vos fichiers PHP en cache mémoire. Pour cela, assurez-vous que votre module OPCache est fonctionnel et positionnez les paramètres suivants dans le fichier .ini dédié au module OPCache. Après un redémarrage de PHP FPM, les fichiers PHP seront gardés en mémoire et plus aucune vérification de mise à jour de ces fichiers ne sera réalisée par PHP. Cela signifie que vous devrez redémarrer PHP-FPM à chaque modification de code PHP pour que celle-ci soit prise en compte.

opcache.memory_consumption=128 # MB, adjust to your needs
opcache.max_accelerated_files=10000 # Adjust to your needs
opcache.max_wasted_percentage=10 # Adjust to your needs
opcache.validate_timestamps=0

De plus en plus de projets utilisent la conteneurisation comme outil d’accélération du déploiement de systèmes informatiques. Malheureusement ces nouvelles technologies autour de la conteneurisationsont pas sans impacts sur l'architecture de la solution mise en place et quand aux choix à réaliser avant de démarrer un projet.

Voici un ensemble de questions que je juge pertinents de se poser avant de démarrer un projet avec des containers Docker. Les containers apportent de nouveaux paradigmes auxquels nous n'avons pas encore suffisamment de reculs pour adopter des réflexes naturels.

1. Qui va déployer les patchs de sécurité sur les containers livrés ?

Si l'équipe de développement a en charge la livraison des images, il est donc nécessaire donc mettre en place une gouvernance commune avec les OPS quant aux mises à jour des patchs de sécurité des containers. Cela peut signifier une charge plus importante pour l'équipe de développement lors de la phase de maintenance applicative.

2. Combien de ressources physiques mes images vont consommer en production ?

Créer des containers et les déployer de manière magique sur un cluster c'est super, faut-il encore se poser la bonne question : de combien de ressources physiques ont besoin mes containers pour fonctionner ? Il faut se poser cette question dès le démarrage du projet pour anticiper les coûts d'infrastructure et anticiper les besoins en CPU / IO / RAM de chacun des containers.

L'erreur est de surcharger des machines physiques avec trop de containers et voir les performances de son application s'écrouler à cause du nombre de threads sur chaque container et la consommation mémoire des processus démarrés. L'autre erreur commune est de surestimer les I/O d'un NAS, trop de containers sur un même NAS peut créer des performances désastreuses en écriture.

3. Quelle stratégie de sauvegarde dois-je envisager ?

Comment mes données sont sauvegardées / mutualisées entre les containers ? Quelle solution NAS de haute performance dois-je retenir pour permettre à tous mes containers de mutualiser des données ? Dois-je plutôt mettre en place du Rsync ? Dois-je sauvegarder l'état de mes containers régulièrement ? Ou alors créer des volumes persistants sur mon hôte Docker ?

4. Quelle stratégie de déploiement dois-je prévoir pour atteindre les engagements de SLA pris ?

Dois-je favoriser une stratégie de déploiement de type Blue/Green pour permettre de l'AB testing ? Ou alors, dois-je réaliser un déploiement en mode "big-bang" sur mon cluster ?

5. Est-ce que l'architecture réseau mise en oeuvre respecte les principes de sécurité ?

Est-ce que l'architecture réseau entre les containers est bien multicouche ? Est-ce que les ports ouverts entre les containers sont correctement maîtrisés pour assurer une sécurité suffisante ?

6. Comment vais-je livrer et versionner mes containers pour les OPS ?

Qui met en place un registry docker ? Est-ce une fourniture des OPS ou de l'équipe de DEV ? Quelle stratégie de versionning mettre en oeuvre sur mes containers ? Dois-je versionner mes images depuis mon intégration continue à chaque build ou depuis ma plateforme de recette dès lors que mon container a atteint un niveau de qualité correcte pour partir en préproduction ?

7. Comment seront supervisées les ressources consommées par chacun de mes containers ?

Quels outils doivent être déployés pour superviser chacun des containers et permettre d'identifier les containers plus consommateurs en ressources que d'autres ? Comment mettre en place une stratégie de supervision sur les ressources consommées par mes containers ?

8. Quelle stratégie ai-je prévue pour assurer une redondance applicative de mes composants ?

Comment est assurée la haute disponibilité des mes containers ? Quelle stratégie de réplication active/active ou redondance, ai-je mis en place pour assurer la haute disponibilité de l'ensemble de ma solution ?

9. Quelle solution d'Auto-scalling ai-je prévue pour permettre de bénéficier de l'élasticité du cluster hébergeant mes containers ?

Comment sera gérée les montées en charge et baisse de charge sur la solution ? Comment j'utilise au maximum les fonctions de containérisation pour réduire les coûts d'infrastructure de la solution ? Quelle solution d'orchestration de mes containers dois-je déployer en production ?

10. Quelle solution de distribution de charge dois-je mettre en place au-dessus de mon cluster ?

Comment distribuer la charge réseau sur l'ensemble de mon cluster de manière uniforme ? Comme s'assurer que la distribution du trafic réseau dépend du bon fonctionnement de l'application adressée ? En cas de "failover", est-ce que la session de l'utilisateur sera correctement accessible au travers de l'autre nœud qui reprendra la session de l'utilisateur ?


Bref, voici une liste de questions clefs, malheureusement les réponses à ces questions dépendront beaucoup du contexte de votre projet et des enjeux métiers. Les choix pris pour répondre à chacune de ces questions peuvent avoir des impacts financiers importants sur votre projet, il est important de se les poser dès le démarrage de votre projet pour éviter des dépassement non maîtrisés sur le budget de votre projet.

karotz back

Votre Karotz a perdu la parole depuis un mois suite à un blocage de l'utilisation des API d'Acapela ? Voici une solution alternative aux API de Google Translate pour redonner une belle voix féminine à votre Karotz.

La solution est d'utiliser les API Watson d'IBM qui fournissent une API de Text To Speech de bonne qualité. Malheureusement, cette API ne fournit pas de flux audio MP3, il est nécessaire de réaliser une petite conversion du fichier pour permettre au lapin de le lire grâce à son lecteur madplay.

Pour cela j'ai réalisé un petit bridge simple en PHP qui permet de rendre l'API d'IBM utilisable sur le lapin qui est malheureusement allergique à l'HTTPS ...

Voici le code source du bridge : https://github.com/ltoinel/openkarotz-tts-ibm-watson

Il vous suffit de le déployer sur un serveur Web PHP ayant accès au Web et d'adapter les fichiers tts et tts.inc présents dans les répertoires /www/cgi-bin du lapin. Pour cela, faites un telnet sur le port 23 de votre lapin, authentifiez-vous avec le login "karotz" et modifiez les fichiers grâce à la commande "vi" en suivant les instructions décrites sur le repository Github en n'oubliant pas de réaliser une sauvegarde préalable de ces fichiers.

openkarotz ibm watson

Une fois la modification effectuée, n'hésitez pas à réaliser une purge du cache TTS du lapin via l'interface Web de l'Openkarotz pour vous assurer d'utiliser la nouvelle voix d'IBM Watson et pas les fichiers en cache sur votre Karotz.

Votre lapin parlera désormais grâce à la voix de Renée de l'API TTS d'IBM Watson, il ne vous restera qu'à implémenter le Speech to text et à utiliser les API de conversation d'IBM Watson pour rendre votre lapin aussi intelligent que Jarvis de Mark Zukerberg.

wsdl2phpgenerator

Vous avez déjà intégré des services SOAP en PHP ? C'est complexe et consommateur en temps, l'objet PHP "request" en entrée de la classe SOAPClient doit être construit avec parcimonie, une fois l'intégration du service terminée, le code PHP peut très vite devenir compréhensible si le service est complexe et si celui-ci possède des énumérations. Pour palier à cela et gagner en productivité sur l'intégration de services SOAP dans votre application PHP, la librairie wsdl2phpgenerator peut vous faire gagner un temps précieux.

Pour rappel, l'interface d'un service SOAP est décrite par un document XML qui se prénomme WSDL. C'est un document décrivant les messages d'entrée et de sortie d'un service.

Ce WSDL est :

  • Soit généré à partir du code du développeur développé au niveau du service, on appelle cette méthode de développement "code first" .
  • Soit fabriqué à la main par le développeur puis utilisé pour générer le code source du serveur, on appelle la méthode de développement "contract first".

wsdl

Pour générer un client SOAP dans votre application PHP avec Wsdl2phpgenerator, la méthode est très simple, tout d'abord ajoutez la librairie à vos dépendances de Composer :

$  composer require wsdl2phpgenerator/wsdl2phpgenerator

Fabriquez ensuite le script PHP que vous appellerez manuellement via PHP-CLI pour générer le code source de votre client Webservice :

$generator = new \Wsdl2PhpGenerator\Generator();
$generator->generate(
    new \Wsdl2PhpGenerator\Config(array(
        'inputFile' => 'http://www.webservicex.net/CurrencyConvertor.asmx?WSDL',
        'outputDir' => '/tmp/CurrencyConverter'
    ))
);

Réalisez dans un troisième temps le code qui appellera ce Webservice via les classes générées par Wsdl2phpgenerator:

require '/tmp/CurrencyConverter/autoload.php';

$service = new \CurrencyConvertor();
$request = new \ConversionRate(\Currency::USD, \Currency::EUR);
$response = $service->ConversionRate($request);

echo $response->getConversionRateResult();

Le service généré étend la classe SOAPClient de PHP, un tableau d'options peut être passé en paramètre du constructeur de la classe service générée pour préciser l'URL du WSDL, le timeout du service, le proxy HTTP à utiliser, les informations d'authentification de type Basic Auth ....

Vous retrouverez toute la documentation d'usage de cette librairie sur GitHub..

Une fois que vous aurez testé Wsdl2phpgenerator, plus jamais vous vous amuserez à fabriquer vos SOAPClient manuellement ;-)


Crédits du schéma : Philippe Le Hégaret

Blue Ocean Jenkins

Vous connaissez probablement Jenkins, cet automate OpenSource qui permet de définir une chaîne de compilation, tests et déploiement automatisée ? Jenkins est l'outil OpenSource le plus connu et utilisé aujourd'hui sur le marché. Malheureusement son IHM n'est pas tout le temps simple à appréhender, la configuration de jobs ne se fait pas de manière reproductible entre différents environnements.

Pour répondre à cette problématique, les Pipelines Jenkins ont été introduits dans la version 2 de Jenkins. Ces Pipelines permettent de décrire au sein d'un fichier Groovy l'ensemble des étapes qui seront utiles à la fabrication de votre logiciel. L'avantage avec les Pipelines est qu'il n'est plus nécessaire de configurer des jobs complexes dans Jenkins, cela se fait désormais au travers d'un fichier JenkinsFile présent directement dans votre code source.

Pour bien démarrer avec les Pipelines Jenkins, voici 5 ressources qui vous permettront de bien comprendre cet outil pour vos projets.

1- La présentation des Pipelines Jenkins en vidéo au Devfest

Voici la vidéo de la conférence de Jean-Philippe Briend (CloudBees) qui détaille l'utilisation des Pipelines qui seront au cœur de Jenkins 3 qui sortira l'année prochaine. Cette vidéo est une très bonne introduction de l'utilisation des Pipelines.

2- Installation de Jenkins sur votre environnement Windows

Vous avez vu la vidéo et vous souhaitez tester Jenkins Pipelines ? Une image Docker officielle vous permettra de démarrer un serveur Jenkins très rapidement sur votre environnement Windows :

$ docker pull jenkins
$ docker run -p 8080:8080 -p 50000:50000 jenkins

Une fois l'image démarrée, vous n'aurez plus qu'à vous rendre sur l'URL suivante via votre navigateur http://localhost:8080 pour accéder à l'interface de Jenkins. Si vous utilisez Boot2docker sous Windows, vous devrez utiliser la commande suivante pour connaitre l'IP de votre image Boot2docker afin de pouvoir vous connectez à l'interface d'administration de Jenkins :

$ boot2docker ip

3 - Exemples de Pipelines réutilisables

Des exemples de Pipelines sont mis à disposition sur l'espace GitHub Jenkins. Dans le répertoire "pipeline-examples", vous trouverez de nombreux exemples réutilisables pour votre projet :

  • ansi-color-build-wrapper
  • archive-build-output-artifacts
  • external-workspace-manager
  • get-build-cause
  • gitcommit
  • github-org-plugin
  • ircnotify-commandline
  • jobs-in-parallel
  • load-from-file
  • maven-and-jdk-specific-version
  • parallel-from-grep
  • parallel-from-list
  • parallel-multiple-nodes
  • push-git-repo
  • slacknotify
  • timestamper-wrapper
  • trigger-job-on-all-nodes
  • unstash-different-dir

Parmi ces exemples, vous remarquerez qu'il est possible d'intégrer facilement Slack à votre Pipeline, cela est d'autant plus facile via l'utilisation du plugin Slack pour Jenkins qui dispose de la propre instruction Jenkins Pipelines :

slackSend channel: '#jenkins-latest', color: 'good', message: 'Slack Message', teamDomain: 'beedemo', token: 'token'

4 - La documentation officielle

Une fois votre serveur démarré et un fichier JenkinsFile initialisé, voici les deux ressources très riches le sujet des Pipelines et la structuration du fichier JenkinsFile:

Vous vous posez des questions sur la syntaxe de certaines instructions ? Vous trouverez sur DZONE une Refcardz dédiée aux Jenkins Pipelines. C'est aujourd'hui la seule ressource sur Internet la plus complète pour appréhender la DSL Groovy Jenkins Pipelines. Elle détaille toutes les commandes standards fournies par Jenkins.

5 - Thème Jenkins Blue Ocean

Vous voilà prêt pour démarrer votre premier projet Jenkins Pipelines, n'oubliez pas d'installer le plugin Jenkins "Blue Ocean" pour bénéficier de la nouvelle interface Web Jenkins en version beta. Les développements de cette nouvelle interface ne sont pas encore terminés, mais elle offre une représentation visuelle intéressante des Pipelines réalisés.

Cette interface peut être facilement activée via la page d'administration des plugins Jenkins.

Vous voilà prêt, si vous rencontrez des difficultés, un tag "jenkins-pipeline" sur Stackoverflow vous permettra de probablement trouver des réponses à vos questions.

docker logo

Vous utilisez Docker mais vous rencontrez quelques difficultés pour réduire sa consommation boulimique d'espace disque ? Voici 3 commandes pour libérer votre système des nombreux containers inutilisés et gourmands en espace disque.

Supprimer tous les containers arrêtés

Les containers Docker arrêtés ne sont par défaut pas supprimé du système de fichier de l'hôte, pour supprimer définitivement ces containers non utilisés, la commande est la suivante :

docker rm $(docker ps -qa --no-trunc --filter "status=exited")

Supprimer toutes les images intermédiaires non référencées

Des images Docker intermédiaires sont créées lors de la fabrication des images, pour supprimer l'ensemble des images intermédiaires non référencées par des images labellisées, voici la commande à exécuter :

docker rmi $(docker images --filter "dangling=true" -q --no-trunc)

Supprimer tous les volumes associés à des containers arrêtés

Enfin, si les deux précédentes commandes ne suffisent pas, vous avez la possibilité de supprimer l'ensemble des volumes associés à des images intermédiaires, pour cela, vous pouvez utiliser la commande suivante :

docker volume rm $(docker volume ls -qf dangling=true)

Ces 3 commandes sont normalement suffisantes pour supprimer l'ensemble de l'espace occupé par des containers inutilisés. Vous pouvez les positionner un alias bash pour simplifier leur utilisation, pour cela éditer votre fichier "~/.bashrc" et positionnez l'alias suivant :

alias docker-clean='docker rm $(docker ps -qa --no-trunc --filter "status=exited") && docker rmi $(docker images --filter "dangling=true" -q --no-trunc)'

Il vous suffira d'utiliser la commande "docker-clean" pour libérer votre système des nombreuses images et containers inutiles.

C'est bientôt Noël, il vous manque toujours des cadeaux pour vos proches technophiles ? Vous ne savez pas ce qui leur ferait plaisir cette année ? Voici comme chaque année ma sélection de 5 idées de cadeaux High-Tech tendance pour ce Noël.

Go Pro Hero 5 : La caméra 4K miniature et étanche

Voici la première idée au top de la liste, la toute dernière Go Pro Hero 5 capable de shooter de magnifiques vidéos 4K 100% compatibles avec votre TV 4K achetée l'année dernière. Cette Go Pro équipée d'un écran tactile est actuellement en promo sur Amazon au prix de 406,49€ au lieu de 430€. Elle est étanche jusqu'à 10m sans protection supplémentaire et vous fournira des vidéos à couper le souffle dans toutes les conditions.

go pro hero 5 4K

LaMetric Time : L'horloge Wi-Fi avec applications

Voici un cadeau original, il s'agit d'une horloge Wifi capable d'afficher l'heure mais aussi, et surtout, tout un tas d'indicateurs tiers provenant d'internet. Sa connexion Wifi lui permet de se mettre à jour en temps réel et ainsi d'afficher le nombre de vos followers sur Twitter, la météo ou votre nombre de feeds RSS non lus ... L'ultime gadget des technophiles connectés !

LaMetric Time est issu d'un projet Kickstarter, cette superbe horloge connectée est commercialisée au prix de 165,64 €

lametric

Airy : Le purificateur d'air naturel

En 24 heures, environ 50 mètres cubes d'air passent, par effet de cheminée, dans le système AIRY. Les odeurs, poussières fines et polluants sont filtrés par le substrat. Par polluants, on entend principalement les composés organiques volatils (COV) tels que le formaldéhyde, l'ammoniaque, le toluène, le benzène et le trichloréthylène. Ces substances nocives sont « brisées » par les micro‑organismes présents dans le substrat et transformées en acides aminés et en glucose (sucre) non toxiques. La plante absorbe par ses racines les anciens polluants devenus désormais de précieux nutriments.

Airy est livré avec un livre de 100 pages sur les plantes purifiantes. Ce projet Kickstarter est commercialisé au prix de 79,90€.

airy

Thorkey : porte-clefs organiseur compact

Voici probablement la nouvelle génération de porte-clefs pratiques et élégants. Il vous permettra de stocker l'ensemble de vos clefs dans un seul endroit compact.

Ce porte-clefs en aluminium est actuellement en promo sur Amazon au prix de 19,95€ au lieu 29,99€. Ce porte clef est commercialisé avec différents accessoires tiers comme un ouvre bouteille, un tournevis ... Vous retrouverez sur Amazon de nombreux autres modèles.


organisateur clefs

Leelbox : Casque de réalité virtuelle pour jeux et films compatibles

Je termine par une idée de cadeau originale pour tous les possesseurs de Smartphone, voici le Leebox, un casque de réalité virtuelle pour Smartphone.

Ce casque compatible avec les iPhone et de nombreux Smartphones Android est commercialisé actuellement au prix de 34,99€ au lieu de 99,99€ sur Amazon. Il en existe de nombreux modèles, vous en trouverez pour certains avec un casque audio et pour d'autres avec une manette Bluetooth. Bref, ce petit Gadget accessible est probablement le must-have de ce Noël 2016.

leelbox

Très bons préparatifs de Noël! J'espère que cette liste vous aura donné quelques idées !


Crédits photo cadeau de Noël : mac9416

qui veut gagner une carriere de developpeur

Vous avez malheureusement manqué le DevFest Nantes 2016 qui s'est déroulé il y a quelques jours à Nantes et qui a rassemblé pas moins de 1500 développeurs ?

J'ai une très bonne nouvelle pour vous, l'ensemble des enregistrements vidéos vient d'être publié sur le Net, vous pouvez les voir et les revoir au travers de cette longue playlist Youtube.

Parmi ces vidéos, voici la Keynote de fin extrêmement drôle, qui plaira, je pense, à beaucoup d'entre vous.

Un grand merci à toute l'équipe pour cette superbe session 2016 ! Rendez-vous l'année prochaine pour un événement encore plus grand ;-)

.

a la recherche du tresor perdu livre

À la recherche du trésor perdu est une chasse au trésor réalisée sous la forme d’un livre de 11 énigmes.

Un coffre au trésor a été caché quelque part en France métropolitaine par un mystérieux libraire. Pour retrouver le trésor, décryptez les énigmes du livre qui vous permettront de localiser l’endroit précis où il est enterré...

Il ne vous restera plus qu’à le déterrer pour que le coffre contenant 150 pièces d’or et d’argent et de 50 pierres précieuses (diamants, saphirs, émeraudes, etc.) d’une valeur totale estimée de 50 000 euros vous appartienne !

Pour que le projet puisse se faire, les éditions Trésor ont lancé un financement participatif sur Kiss Kiss Bank Bank. En échange de 20 € vous recevrez le livre des 11 énigmes en avril 2017. Plus de 20 000 € ont d'ores et déjà été collectés, si vous avez l'âme d'un aventurier, n'hésitez pas à participer à ce projet qui se termine dans 8 jours.

Pour participer au financement de ce projet, rendez-vous sur la page de financement participatif de Kiss Kiss Bank Bank.

amazon bon reduction

Amazon enchaîne les offres promotionnelles en ce moment, du 14 au 20 Novembre 2016, si vous achetez un ou plusieurs produits reconditionnés pour un montant supérieur ou égal à 200€, vous pouvez bénéficier d’une réduction immédiate de 50€. Et ceci sans aucune limite sur le nombre de commandes passées ...


Comment bénéficier de cette offre promotionnelle ?

  • Sélectionnez un ou plusieurs produits disponibles sur cette page et éligibles à l’offre, pour un montant de 200€ minimum.
  • S’il existe des offres d’autres vendeurs pour le même produit, sélectionnez l’offre Amazon Offres Reconditionnées.
  • Ajoutez les produits sélectionnés à votre panier et poursuivez la commande: la remise s’applique au moment du paiement.

C'est la bonne occasion de faire quelques économies sur ses courses de Noël ;-)

offres amazon bon reduction