annuaire-pages-jaunes.jpg

Vous venez de vous faire avoir en recevant un annuaire Pages Jaune non désiré à votre domicile ? Vous avez versé une larme face à ce papier gâché qui servira seulement quand vous vous ré-hausser votre petit neveu à table ?

Il existe pourtant une solution simple pour éviter ce gâchis de papier et d'énergie. Cette solution se trouve sur :

http://www.recevoirmesannuaires.pagesjaunes.fr

Il suffit de renseigner vos coordonnées pour ne plus recevoir d'annuaire papier. C'est simple et pratique. Inscrivez-vous avant qu'il ne soit trop tard !

leader.jpg

Vous vendez du service ? votre société n'est pas "Leader" de son domaine ?

Voici 10 grandes idées pour transformer votre société et devenir "Leader" de votre domaine d'activité.

  1. Réaliser de l'OpenInnovation au travers d’événements comme des Hackathons / concours de développements / ateliers de conception ouverts.
  2. Rendre son système d'information accessible rapidement depuis les différents canaux au travers d'API simples à intégrer.
  3. S'intéresser aux nouvelles interfaces / relations homme-machine et se projeter sur l'avenir, investir sur les couches basses de votre système d'information et rendre vos interfaces les plus évolutives possibles.
  4. Penser "Multi-canal" dans toutes vos réflexions d'évolutions de votre système d'information.
  5. Analyser la valeur que pourrait produire vos données en les croisant avec d'autres données grâce au Big Data.
  6. Mettre en place des solutions 360° pour connaitre son client mieux que n'importe qui d'autre.
  7. Construire son système d'information sur des composants modulaires et investir sur les composants qui vous apporteront de la valeur.
  8. Ne pas hésitez à être précurseur sur les idées novatrices sur lesquelles vous croyez et sur lesquelles les autres croient aussi.
  9. S'associer à des partenaires pour apporter de la valeur rapidement à vos services / solutions.
  10. Se projeter sur les évolutions de la société, vos clients d'aujourd'hui ne seront peut-être pas ceux dans 5 à 10 ans.

Vous voilà prêt à conquérir le monde et à devenir un Leader !


Crédits photo : Kay Kim

latostadora_logoFR.png

L'été est de retour, je vous propose pour cette occasion de vous faire gagner des Tee Shirts Geek en partenariat avec Tostadora. La Tostadora propose et personnalise des Tee Shirts, des Sweat shirts, des coques pour iPhone et des sac en tissus.

concours-tostadora.jpg

Pour tenter votre chance de remporter l'un des 3 Tee Shirts en jeu, c'est comme d'habitude : très simple ...

  1. Allez faire un tour sur le site de Tostadora.
  2. Choisissez le Tee Shirt qui vous ferait plaisir.
  3. Laissez un commentaire en dessous de cet article sur Geeek.org.
  4. Pour multiplier vos chances de gagner, vous pouvez Twitter le message suivant :

Concours : 3 Tee Shirts Geek à gagner sur Geeek.org via @ltoinel : http://bit.ly/T1PsR2

Le tirage au sort sur Random.org qui désignera les 3 gagnants qui repartiront avec un Tee Shirt sera organisé le dimanche 6 juillet à 21h :

  • 2 gagnants seront tirés au sort parmi les commentaires.
  • 1 gagnant sera tiré au sort parmi les Tweet envoyés.

Bonne chance à vous tous et merci à la Tostadora pour la co-organisation de ce concours.

natural_plunge_pool.jpg

L'été est arrivé à grand pas avec la chaleur aussi, vous n'avez qu'une envie : aller vous baigner !

Voici quelques ressources intéressantes trouvées par hasard sur Internet ce Week-end qui vous permettront de construire une piscine 100% naturelle avec quelques centaines d'euros seulement.

Il existe de nombreuses sociétés spécialisées dans les piscines naturelles en Europe, mais l'expert du DIY (do it yourself - fabriquez-le vous-même) est David Pagan Butler un anglais. David partage ses connaissances et retours d'expérience au travers de livres / DVD qu'il commercialise sur son site Internet organicpools.co.uk.

Pour découvrir à quoi ressemble une piscine naturelle, voici une présentation en vidéo:

Le principe de la piscine naturelle est très simple, ne pas utiliser de produits chimiques et polluants pour fabriquer sa piscine et la maintenir opérationnelle. Dans les faits, l'idée est de reproduire un écosystème digne d'un aquarium où tous les éléments s'équilibres pour permettre d'avoir un eau propre de qualité.

D'une manière générale, ces piscines sont constituées de 40 à 50% de zone de regénération et de 50 à 60% de zone de nage. La zone de regénération permet de purifier l'eau grâce aux plantes aquatiques et aux micro-organismes présents naturellement dans l'eau. Au bout d'un certain temps, un écosystème se créé et la piscine s'équilibre toute seule permettant à moindre coût de se baigner dans une pure et propre.

Voici un modèle de piscine naturelle plus petite :

Pour partager ses connaissances sur le sujet et vous permettre d'être autonome dans la construction d'une piscine organique, David Pagan Butler fournit un PDF gratuit sur les principes de la piscine organique. Pour fabriquer votre propre piscine, il vous faudra principalement de l'huile de coude, de l'EPDM (film étanche), du gravier et un mécanisme pompe pour permettre à l'eau d'être filtré par la zone de regénération.

Le concept de la piscine organique est très simple et semble être assez accessible pour des petits bricoleurs.

apache-cordova-google-analytics.jpg

Vous souhaitez profiter de la nouvelle API Google Analytics Universal.js pour tracer les événements de votre application cross-platform Cordova / Phonegap  ? Cependant, vous rencontrez des difficultés pour faire fonctionner Google Analytics dans votre application ? Voici la solution pour permettre à Google Analytics de fonctionner correctement avec les contraintes des frameworks de développement mobile Phonegap / Cordova.

Paramétrage du tracker

La première étape consiste à indiquer à Google Analytics que vous souhaitez suivre l'activité d'une application mobile lors de la création du "tracker".

option-app-mobile.jpg

Modification de la librairie Analytics.js

La seconde astuce est de copier la librairie Analytics.js fournie par Google localement au sein de l'application. Il vous faudra ensuite commenter le morceau de code suivant permettant d'empêcher la librairie de fonctionner dans un wrapper Cordova ou PhoneGap.

if("http:"!=a&&"https:"!=a)throw"abort";

Cette petite astuce vous permettra que la librairie Universal s'initialise correctement lors de l'inclusion de la librairie dans votre page.

Désactivation des cookies

La dernière astuce consiste à désactiver l'utilisation de cookie pour identifier l'utilisateur, les pages étant chargées depuis le "file://" il est impossible à Google Analytics de gérer des cookies.

Pour cela le code suivant est à déclarer après réception de l’événement DeviceReady transmis par Cordova dès que celui-ci est initialisé. Cet évènement est nécessaire pour pouvoir utiliser correctement la propriété "device.uuid" qui vous indiquera l'identifiant unique du terminal basé sur les données du matériel accessibles par Cordova / Phonegap.

ga('create', 'UA-XXXXXX-XX', {
 'storage': 'none',
 'clientId':device.uuid
 });

N'oubliez surtout pas d'ajouter les bonnes autorisations au niveau de votre projet pour pouvoir utiliser cette fonctionnalité de Cordova / Phonegap.

Une fois la librairie chargée, il ne vous reste plus qu'à inscrire les informations de version de votre application dans le contexte :

ga('set', {
  'appName': 'myAppName',
  'appId': 'myAppId',
  'appVersion': '1.0',
  'appInstallerId': 'myInstallerId'
});

Ces paramètres vous permettront de créer des filtres intéressants par version depuis l'interface de suivi des indicateurs de Google Analytics.

Pour tracer chaque page vue et chaque événement spécifique, il vous suffira d'appeler les fonctions suivantes :

ga('send', 'screenview', {'screenName': 'Home'});
ga('send', 'event', 'video', 'started');

Enfin, sachez qu'il est désormais possible de tracer les exceptions Javascript de votre application au travers d'un simple "handler" d'erreur, pour cela :

window.onerror = function (errorMsg, url, lineNumber) {
    ga('send', 'exception', {
      'exDescription': 'Error: ' + errorMsg + ' Script: ' + url + ' Line: ' + lineNumber,
      'exFatal': false
    });
}

Vous voilà prêt pour superviser votre application Cordova/Phonegap en production. Si vous souhaitez aller plus loin, sachez qu'il est aussi possible de superviser les temps de chargement et d'ajouter des champs personnalisés dans les indicateurs remontés à Google.

Vous pourrez vérifier que les indicateurs sont correctement collectés par Google au travers de la vue "Temps réel" proposée sur l'interface de suivi Google Analytics.

crucial-m500-ssd-1.jpg

Voici comme promis le résultat du concours Crucial. Vous avez été nombreux à être identifiés comme Expert ou Social, aucun anti-geek ne lit se blog ;-)

L'heureux gagnant du SSD Crucial M500 de 240 Go est le commentaire n°38 : nitrosurf

concours-crucial.jpg

Bravo à lui et merci à Crucial pour la co-organisation de ce concours.

A très bientôt pour d'autres concours ! Stay tuned !

envoye-special.jpg

Si jamais vous avez loupé l'excellent reportage diffusé hier soir sur Envoyé Spécial pour expliquer à vos parents comment fonctionnent les objets connectés, le voici :

Au programme : domotique, SmartTracker, SmartCity ... et surtout sécurité informatique.

La première personne au démarrage du reportage me ressemble beaucoup ;-)

domotique-arduino1.jpg

Les volets roulants sont souvent la première chose que l'on souhaite domotiser dans une maison, à la fois pour des raisons pratiques, mais aussi pour des raisons de confort l'été en cas de fortes chaleurs.

Venant de faire construire ma maison, j'ai fait le mauvais choix de retenir un fabricant de volets roulant proposant un système radio non ouvert et disposant de très peu de solutions de domotique (Bubendorff). Leur simple horloge me permettant de programmer les horaires d'ouverture et de fermeture coûte la bagatelle somme de 190€ et à ce prix-là, vous n'avez même pas la possibilité d'ouvrir vos volets avec votre téléphone.

Pour me permettre d'automatiser l'ouverture et la fermeture automatique de mes volets j'ai donc décidé d'utiliser un Arduino UNO équipé d'un shield Ethernet pour pouvoir communiquer avec lui à distance depuis mon réseau local ou mon Smartphone.

Le montage électrique est très simple :

  • Le Shield Ethernet est directement connecté à l'Arduino, ce shield permet à l'Arduino de communiquer avec mon réseau local.
  • Les deux relais qui me permettent de simuler l'appui sur la télécommande radio sont connectés sur les sorties 7 et 8 de l'Arduino. Ces deux relais peuvent être montés soit-même comme c'est le cas sur la photo, vous avez aussi la possibilité d'acheter ces deux relais 5V sur Internet prêts à brancher sur l'Arduino. Cela ne coûte que quelques euros.
  • Les deux relais sont connectés au bouton haut et bas de ma commande radio groupée via une petite soudure réalisée à la main. J'ai tout simplement glissé les fils en dessous des pattes existantes et utilisé de l'étain pour fixer les fils. Il faut juste penser à gratter un peu les pattes avec un tournevis plat pour une bonne adhérence de l'étain sur le circuit.


domotique-arduino2.jpg

J'utilise tout simplement l'alimentation 5V de mon Arduino pour alimenter les deux relais. Les sorties 7 et 8 sont quant à elles les sorties qui vont me permettre d'ouvrir et de refermer chacun des relais depuis le logiciel déployé sur l'Arduino.

domotique-arduino6.jpg

Les relais sont connectés aux boutons "haut" et "bas" de ma télécommande radio. Ces relais me permettent de simuler l'appui sur les boutons physiques de ma télécommande actuelle.

domotique-arduino5.jpg

J'ai ensuite développé un petit programme sur l'Arduino qui démarre un petit serveur Web capable de répondre à des commandes très simples transmises via des requêtes REST / JSON.

/*
   Arduino Bubendorff remote control
   Inspired from the Webserver sample code.
   
   @Author : Ludovic Toinel
 */



#define DEBUG false
#define BUFSIZE 255

#include <SPI.h>
#include <Ethernet.h>

// UP and Down Button
const int DOWN = 7;
const int UP = 8;

// Allowed commands
const String COMMAND_UP = "up";
const String COMMAND_DOWN = "down";
 
 
char buffer[BUFSIZE];
int index = 0;
String status = "UNKNOWN";

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xAA, 0xED };
IPAddress ip(192,168,1,4);

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

void setup() {
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  // initialize the digital pin as an output.
  pinMode(DOWN, OUTPUT);    
  pinMode(UP, OUTPUT);    
 
  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
 
#if DEBUG
  Serial.print("WebServer started at ");
  Serial.println(Ethernet.localIP());
#endif

}

void loop() {
 
  // listen for incoming clients
  EthernetClient client = server.available();
 
  if (client) {
   
    //  Reset input buffer
    index = 0;
    for (int i = 0; i < (sizeof(buffer)); i++) {
       buffer[i] = '\0';
    }

#if DEBUG    
    Serial.println("New HTTP client");
#endif

    // While new clients connect to the Arduino
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
       
        //  fill the buffer
        if(c != '\n' && c != '\r' && index < BUFSIZE){ // Reads until either an eol character is reached or the buffer is full
          buffer[index++] = c;
          continue;
        }  
        buffer[index] = '\0' ;
       
        client.flush();
         
#if DEBUG
        Serial.print("Request = ");
        Serial.println(buffer);
#endif        
       
        // Transform the char buffer into a String
        String request = String(buffer);
       
        //  we're only interested in the first part...
        int qr = request.indexOf('/') + 1;
        String command = request.substring(qr, request.indexOf(' ', qr));
       
#if DEBUG
        Serial.print("Command = ");
        Serial.println(command);
#endif    

        // Open
        if(command == "open") {
           
          digitalWrite(UP, HIGH);
          delay(1000);   // 1 seconde d'appui
          digitalWrite(UP, LOW);
          status = "OPEN";    
         
        // Close
        } else if (command == "close") {
                     
          digitalWrite(DOWN, HIGH);
          delay(1000);    // 1 seconde d'appui
          digitalWrite(DOWN, LOW);    
          status = "CLOSE";
         
        } else {
         
          // send a standard http 404 response header
          client.println("HTTP/1.1 404 OK");
          client.println("Content-Type: application/json");
          client.println("Connnection: close");
          client.println("Access-Control-Allow-Origin: *");
          client.println("Cache-Control: no-cache, no-store, must-revalidate");
          client.println("Pragma: no-cache");
          client.println("Expires: 0");
          client.println();
          client.println("{\"status\": -1, \"message\": \"command not found\", \"state\": \"");client.print(status);client.println("\"}");
          break;
        }
       
        // send a standard http response header
        client.println("HTTP/1.1 200 OK");
        client.println("Content-Type: application/json");
        client.println("Connection: close");
        client.println("Access-Control-Allow-Origin: *");
        client.println("Cache-Control: no-cache, no-store, must-revalidate");
        client.println("Pragma: no-cache");
        client.println("Expires: 0");
        client.println();
        client.print("{\"status\": 0, \"message\" : \"command succeeded\", \"state\": \"");client.print(status);client.println("\"}");
        break;
      }
    }
    // give the web browser time to receive the data
    delay(1);
   
    // close the connection:
    client.stop();
   
#if DEBUG
    Serial.println("Client disonnected");
#endif
  }
}

Les entêtes HTTP de cache sont volontairement désactivés pour éviter toute mise en cache de la données par le proxy HTTP d'un opérateur télécom. Les CORS "Access-Control-Allow-Origin" sont quant à eux activés pour me permettre de solliciter ces services REST depuis une interface HTML mise à disposition sur un autre domaine réseau.

Je peux désormais grâce à ce montage simple, gérer mes volets à distance et de manière automatique depuis un simple navigateur sur mon réseau local. Il me suffit pour cela d'ouvrir les URL suivantes :

Pour ouvrir : http://192.168.1.4/open Pour fermer: http://192.168.1.4/close

J'ai aussi la possibilité de continuer à utiliser manuellement la télécommande en cas de panne réseau.

Dans un prochain article : Le développement de l'interface sur Smartphone permettant de contrôler ses volets depuis n'importe où.

quel-geek-etes-vous.jpg

Les français sont des adeptes des nouvelles technologies. C'est la conclusion d'une étude menée par les experts en solution de mémoire et de stockage de Crucial.fr, l’Institut d’études Opinion Way et le site Le Journal du Geek.

Cette étude a permis d'identifier que 89% des sondés se sont montrés « techno-compatibles ». La répartition des 5 profils identifiés est la suivante :

  • L’expert (9%) : Passionné, très actif et pratiquant le multi-tasking (84%), l’expert adore les nouvelles technologies. Suréquipé avec une moyenne de 9 produits, il est attiré par les nouveautés, aime avoir ce qui se fait de mieux et recherche la performance (43%). Il prend plaisir à en parler : La Geek-attitude assumée.
  • Le social (29%) : Très intéressé et attiré par les nouvelles technologies, le social se considère comme expérimenté (96%). Il donne des conseils à sa famille et ses amis (69%) et exprime son opinion sur des blogs et des forums (68%).
  • Le prudent (26%) : Méfiant à l’égard d’un secteur qu’il a encore du mal à appréhender, c’est un débutant qui cherche à se perfectionner (98%). La prise de risque est exclue et le cap de l’achat n’est franchi qu’à condition que le produit ait fait ses preuves. 54% s’informent via les comparateurs de prix sur Internet et 73% achètent en grande distribution.
  • Le pragmatique (25%) : C’est un débutant qui fait face à un domaine qu’il juge compliqué et très changeant (71%). Près de 89% des pragmatiques se décident avant tout en fonction des prix et attendent qu’ils baissent pour acheter. Environ 25% dépensent de 200 à 499 € par an on produits de nouvelles technologies. Bien que désireux d’apprendre et de se perfectionner, toute folie budgétaire est proscrite.
  • L’anti-geek (11%) : Novice et désintéressé (79%), son rapport aux nouvelles technologies est distant. Il possède l’équipement de base (5,7 produits en moyenne) et déclare pouvoir se passer des nouvelles technologies. 69% décident d’acheter avec l’avis de leurs proches.

Pour permettre à chacun de déterminer son techno profil, Crucial.fr propose un calculateur de Geekitude que vous trouverez ci-dessous :

Et vous quel est votre profil ? Expert je suppose ? ;-)

Partagez votre profil sous forme de commentaire ci-dessous, l'un des commentaires remportera ni plus ni moins un disque SSD Crucial M500 de 240 Go.

Le tirage au sort sera réalisé le dimanche 8 juin à 21h via Random.org.

N'oubliez pas de partager cet article à vos amis !

C'est déjà la fin du concours permettant de vous faire gagner un Starter Kit Arduino.

Le grand gagnant du concours tiré au sort sur Random.org est le commentaire 37 : Dirty Henry

random-arduino.jpg

Il remporte un kit de démarrage Arduino d'une valeur de 63,25€ et commercialisé sur le site de Farnell.

Le kit contient tous les éléments électroniques pour démarrer un projet sur Arduino Uno :

  • 1 Arduino Board Rev3
  • 1 Straight single line pinhead connectors 2,54 40x1
  • 1 Breadboard, 840 tie points
  • 1 Set of 70 breadboard jumper wires
  • 5 10K Ohm Resistors 1/4W
  • 5 2.2K Ohm Resistor 1/4 W
  • 10 220 Ohm Resistors 1/4W
  • 5 330K Ohm Resistors 1/4W
  • 5 100nF capacitor polyester
  • 5 10nF capacitor polyester
  • 3 100uF electrolytic capacitor 25Vdc
  • 1 4,7K Ohm Thermistor
  • 1 70..100K Ohm LDR VT90N2
  • 3 5mm RED LED
  • 1 5mm GREEN LED
  • 1 5mm YELLOW LED
  • 1 10Kohm potentiometer, pcb terminals
  • 2 BC547 Transistor in TO92 Package
  • 1 Piezo buzzer
  • 5 PCB Pushbutton, 12x12mm size
  • 2 4N35 Optocoupler DIL-6 package
  • 2 Tilt sensor
  • 1 Diode 1n4007
  • 1 MOS Irf520
  • 1 USB cable

Merci pour vos nombreux commentaires.

A très bientôt pour d'autres concours !