Linux & EMP NS Connection 

En ce début d’année, j’ai été amené à donner une formation de quelques jours à une promotion d’une centaine de personnes. J’avais à ma disposition des vidéoprojecteurs en réseau (de marque Epson), l’utilisation se faisant via un outil disponible uniquement sous Mac et Windows : EMP NS Connection.

Le hic dans mon cas c’est que je donnais une formation Linux et … je tourne sous Linux. Une première solution s’offre à moi : un projet libre datant de 2008 … mais sans succès.

Qu’à cela ne tienne : ayant mis au défi Wine de faire tourner Office 2010 (mission presque accomplie par ailleurs), j’ai décidé de tester la bête avec l’outil d’Epson et … bah ça tourne parfaitement ! Le logiciel s’installe correctement et s’execute tout aussi bien : multi-projecteurs, protection par mot de passe … Impec’ ! :)

Il n’y a qu’une fonctionnalité que je n’ai pas testé : la capacité à contrôler Powerpoint avec la télécommande (oui, je fais tourner Office 2007 aussi).

Détails : EMP NS Connection 2.50, Wine 1.3.10

Enjoy it !

Related Posts:

  • No Related Posts

Un peu de ménage et du changement pour la nouvelle année 

Et voilà une nouvelle année qui commence … et un billet inutile de plus dans le panier :)  Tout d’abord je tiens à vous souhaiter une bonne et heureuse année 2011 (voilà, ça c’est fait).

J’ai profité de ma journée pour faire un peu de ménage sur le blog. Quand j’ai commencé cette aventure (en février 2009), je publiais beaucoup de petites actus … ce qui n’est pas spécialement le but premier d’un blog. Comme ça me perturbait, j’ai décidé de supprimer les catégories et de cacher les billets concernés : ils sont encore accessibles mais ne sont plus affichés dans la recherche ou la liste des billets. Pour publier des actus je vais continuer d’envahir votre timeline Twitter et de les publier sur VIC. Le nettoyage de 98 billets fait, j’en viens à une petite annonce : je vais commencer à bloguer en anglais (ouais, on est mal barré). Et pour bien massacrer la langue de Shakespeare j’ai quelques billets assez fun dans ma corbeille : Queue FIFO en PHP avec Memcache (c’était mon occupation de cette nuit), traitement distribué en PHP (oui, j’ai décidé de maltraiter PHP) et d’autres surprises …

Have fun et récupérez bien du réveillon … parce que lundi c’est la reprise :)

Related Posts:

  • No Related Posts

DNSWatch.in : vérifiez les serveurs DNS des FAI 

Il y a quelques semaines j’avais eu la mauvaise expérience (et vous aussi, au moins une fois) d’avoir une propagation DNS lente en changeant un enregistrement : certains FAI ne distribuaient pas la bonne réponse. J’avais eu alors l’envie de savoir QUI ne répondait pas correctement, à n’importe quel moment. Malheureusement le boulot m’a occupé jusqu’à perdre de vue ce petit besoin … jusqu’à lundi.

Etant obligé de changer de serveur, je suis retombé sur la même problématique d’avoir certains FAI ne répondant pas correctement aux requêtes DNS pour un de mes domaines. Ayant un peu de temps libre j’ai décidé de le coder … Naquit DNSWatch.in en 24 heures chrono.

Le concept ? Pouvoir tester un enregistrement DNS chez tous les FAI (mondiaux + providers DNS alternatifs).

L’outil se présente sous la forme d’un formulaire où vous indiquez l’enregistrement à tester et son type. Vous pouvez également restreindre la vérification à une partie du globe.

 

Une fois le test lancé, un tableau avec la liste des providers interrogés s’affiche.

Exemple concret : img.dnswatch.in que je viens de créer.

Orange, Nerim et Belgacom ne répondent pas car ils bloquent l’accès à leurs serveurs depuis l’extérieur (voir ci-dessous). On voit bien que Free a du mal à propager le nouvel enregistrement contrairement aux autres, déjà à jour.

 

Reporteurs

Certains FAI refusent les requêtes DNS venant de l’extérieur (exemple : Orange, Nerim, …). Pour cette raison, j’en appelle aux volontaires qui ont une machine qui tourne derrière l’un des FAI concernés et qui souhaitent participer au projet. Un script (reporting proxy) sera fait sous peu et disponible sur GitHub. Les requêtes entre le master et les proxies seront signées. Plus d’infos ici (et à venir).

De la même manière, si vous souhaitez rajouter des serveurs DNS, des providers alternatifs ou autre … N’hésitez pas à envoyer un email à l’adresse indiquée.

 

Et comme je suis un gentil, le code source de cet outil sera prochainement libéré et disponible sur GitHub aussi ;-)

Ah, j’oubliais : le site utilise quelques petites fonctionnalités HTML 5.

Related Posts:

  • No Related Posts

W3 Total Cache : Page caching et Internet Explorer 

Utilisateurs WordPress, si vous avez installé W3 Total Cache, que vous utilisez la mise en cache de pages et que votre thème dispose de feuilles de styles alternatives pour Internet Explorer, alors ce billet peut vous être utile.

Etant de ce clan, j’ai fait une mauvaise découverte ce matin sur un wordpress … Le site distribuait les feuilles IE6 à tout le monde … Le problème ? La page a été affichée en premier, et donc mise en cache, par un internaute qui tournait sous Internet Explorer 6 (oui, quel malheur !) injectant ainsi les styles supplémentaires pour ce navigateur.

La solution réside dans la fonctionnalité “Rejected User Agents” de W3 Total Cache qui permet d’interdire la mise en cache pour certains navigateurs. Il suffit donc d’ajouter MSIE dans la liste, et plus aucune version d’Internet Explorer n’utilisera ou générera la “version cachée” d’une page.

Related Posts:

  • No Related Posts

Des informations Git dans son prompt 

N’avez-vous pas remarqué comme il est vite ennuyeux de devoir faire un git branch ou un git status pour savoir dans quelle branche on était et dans quel état était le dépôt ? Voilà une petite astuce pour ajouter ces deux informations directement dans votre prompt.

Ajoutez ceci à la fin de votre fichier ~/.bashrc :

function parse_git_branch {
  git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}

function parse_git_status {
  noupdated=`git status --porcelain 2> /dev/null | grep -E "^ (M|D)" | wc -l`
  nocommitted=`git status --porcelain 2> /dev/null | grep -E "^(M|A|D|R|C)" | wc -l`

  if [[ $noupdated -gt 0 ]]; then echo -n "*"; fi
  if [[ $nocommitted -gt 0 ]]; then echo -n "+"; fi
}

RED="\[\033[01;31m\]"
YELLOW="\[\033[01;33m\]"
GREEN="\[\033[01;32m\]"
BLUE="\[\033[01;34m\]"
NC="\[\033[0m\]"

case $TERM in
    xterm*)
        TITLEBAR='\[\e]0;\u@\h: \w\a\]';
        ;;
    *)
        TITLEBAR="";
        ;;
esac

PS1="${TITLEBAR}$RED\$(date +%H:%M) $GREEN\u@\h $BLUE\w$YELLOW\$(parse_git_branch)\$(parse_git_status) $BLUE\$ $NC"

Cette modification ajoute le nom de la branche en cours ainsi qu’un * si des fichiers trackés ont été modifiés mais pas ajoutés et + si des fichiers ont été modifiés mais le commit n’a pas encore été fait.
Le prompt est inspiré du prompt Gentoo. Quant à la barre des titres, elle est inspirée d’Ubuntu.

Enjoy it !

Related Posts:

MySQL & PHP : Scénarios de migration 

Il n’y a rien de plus frustrant que de se retrouver coincé en tentant de migrer une base de données en utilisant des techniques non adaptées au nouvel hébergement. Voici un petit billet qui vous liste les différents scénarios possibles de migration d’une base de données MySQL (en partant du principe que le site est en PHP).

 

J’ai une petite base de données (< 2 Mo)

Je dispose de PHPMyAdmin

PMA est l’outil le plus répandu de gestion de bases de données MySQL, par conséquent c’est le plus utilisé pour importer une base. Cet outil est limité par les directives du serveur web concernant la taille maximale des fichiers pouvant être envoyés par un internautes et le délai maximum d’exécution d’un script. Par conséquent, cette technique ne convient qu’aux petites bases (la limite se situe généralement entre 2 et 8 Mo).

… ou pas

Si vous n’avez pas PMA sous la main, vous pouvez toujours vous rabattre sur des outils tels que BigDump. Cependant cet outil peut également être bloqué par le délai maximum d’exécution autorisé par le serveur, de même que certaines instructions MySQL ne sont pas lues. Si vous êtes intéressés par cet outil, vous trouverez un petit tuto ici.

 

J’ai une grosse base de données

Et un accès SSH !

Si vous avez un accès SSH, ne cherchez pas plus loin. Envoyez votre fichier SQL à la racine de votre site et utilisez la commande mysql pour importer la base.

mysql -u dbuser -p dbname < monfichier.sql

Si vous avez un fichier compressé, pensez à le décompresser avant d’exécuter la commande.

… ou pas

Une grosse base de données à importer mais pas d’accès SSH ? Pas de panique, il nous reste une solution : l’exécution de la commande mysql depuis un script PHP. De la même manière que si vous aviez un accès SSH, envoyez votre fichier SQL à la racine de votre site puis créez un fichier PHP qui contient :

<?php
passthru("nohup mysql -u dbuser -pmonmotdepasse dbname < monfichier.sql");
 ?>

Il est important ici de préciser le mot de passe de connexion dans la commande.

 

Aller plus loin : MySQLDumper

MySQLDumper est un outil écrit en PHP et Perl, il permet d’importer/exporter de très grosses bases en prenant en compte les limitations de durée d’exécution des scripts. Cette solution nécessite cependant d’avoir un accès suffisant chez l’hébergeur pour l’installer et l’utiliser.

 

Aucune solution ne fonctionne

Si aucune solution citée ici ne fonctionne, je pense que vous avez mal choisi votre hébergeur :)

Related Posts:

Git : simuler un stash avec un working tree séparé 

Dans certaines situations nous pouvons être amené à devoir modifier des fichiers sans les pousser sur le dépôt Git (exemple : fichiers de configuration en production). Ces modifications non commitées sont donc perdues à chaque checkout effectué sur l’arbre de travail.

Une solution simple pour protéger ces fichiers modifiés est l’utilisation de git-stash : pouvoir mettre de côté une pile de modifications pour faire d’autres modifications (pull, merge, checkout …) sur le working tree puis ensuite remettre ces fichiers en position. Un soucis se présente : la commande stash ne peut pas être utilisée sur un dépôt Git dont le working tree est séparé (voir exemple ici). Que faire donc ? Simuler le fonctionnement de stash avec des hooks.

Je présente ici deux méthodes différentes.

 

Remplacement de fichiers sans conservation de contexte

Cette méthode est rapide à mettre en place et utile si les fichiers modifiés ne changeront plus : un dossier contient les fichiers d’origine et les remet sur le working tree après le checkout.

Créez un dossier replaces/ dans le dépôt Git (distant), il contiendra les fichiers d’origine. Créez un fichier hooks/post-receive (et faites un chmod +x dessus) :

#!/bin/sh

echo "Checkout working tree ..."
git checkout -f

echo "Replacing non commited files ..."
WORKTREE=`git config core.worktree`
for i in $(find replaces -type f); do cp -af $i ${WORKTREE}$(echo $i | cut -d/ -f 2-); done


exit 0

git checkout permet de mettre à jour le working tree avec les nouveaux fichiers.

 

Remplacement de fichiers avec conservation de contexte

Cette méthode va réellement simuler le fonctionnement de stash : les fichiers modifiés sur le working tree vont être mis de côté avant le checkout puis replacés après.

Créez un dossier replaces/ dans le dépôt Git (distant), il contiendra les fichiers modifiés lors des réceptions de commits. Créez un fichier hooks/pre-receive (et faites un chmod +x dessus) :

#!/bin/sh

echo "Saving non commited files ..."
WORKTREE=`git config core.worktree`
for i in $( git status --porcelain -uno | awk -F ' ' '{print $2}'  ); do mkdir -p replaces/$(dirname $i); cp -a ${WORKTREE}${i} replaces/$(dirname $i); done

exit 0

 

Ensuite, créez un fichier hooks/post-receive (avec le droit +x qui va bien), il reprend le script de la première partie en ajoutant la suppression des fichiers après commit :

#!/bin/sh

echo "Checkout working tree ..."
git checkout -f

echo "Replacing non commited files ..."
WORKTREE=`git config core.worktree`
for i in $(find replaces -type f); do cp -af $i ${WORKTREE}$(echo $i | cut -d/ -f 2-) && rm $i; done
# Cleaning folders
for i in $(find replaces -type d | tail -n +2); do rmdir $i; done

exit 0

 

Voilà, les hooks sont en place et seront executés automatiquement lors de vos push sur le dépôt. Merci à Keruspe pour avoir mis fin à ma prise de tête sur la prise en charge des sous-dossiers.

Related Posts:

Start-Up Week-end Paris : des pizzas, du fun et … de l’imprévu 

Ce week-end (8 au 10) a eu lieu la 3ème édition du Start-Up Week-end Paris à Télécom ParisTech. Pendant tout un week-end, des personnes d’horizons différents (marketeux, devs, …) se retrouvent pour monter des projets qui, par la suite, peuvent se concrétiser … ou pas. Oui, on a 54 heures pour monter une boîte !

J’ai décidé d’y aller pour me faire un petit week-end geekerie et coding (pour changer), accompagné de waxzce, JLequertier et blouerat. 18 projets ont été sélectionnés pour le week-end parmis une quarantaine de projets présentés vendredi soir. La petite équipe nantaise a rejoint le projet Reputeo.us pitché par _Mickael_D_ et _PoC_, accompagné de fulbert_lecoq, BaBaptiste et KlodR.

L’idée du projet est d’apporter la possibilité aux hôtels et restaurants de récupérer les avis des clients au moment de l’addition, le tout avec des outils pour pouvoir gérer leur e-réputation.

Manger de la pizza pendant 54 heures

S’il y a un premier concept auquel il faut être préparé c’est bien celui de la nourriture. On a eu droit à de la pizza tout le week-end, qu’on agrémentait de Mac-Do, Quick et autres joyeusetés bien grasses. Autrement dit, si vous faites un régime : ne venez pas au Start-Up Week-end.

Travailler pendant 54 heures

Deuxième concept auquel il faut être prêt : vous ne venez pas pour vous reposer, “heures supplémentaires” est le mot d’ordre du week-end ! Développeurs, n’ayez pas peur de découvrir le samedi à 3h du matin que le schéma de base n’est pas bon et qu’il faut tout reprendre :D

Peu ou pas de repos pendant 54 heures

Troisième et dernier concept à gérer : le repos est quasi-inexistant durant le week-end, alors attention à la reprise le lundi ! :)

 

Voilà pour la partie sale du week-end, j’en viens aux points sérieux et aux raisons qui vous pousseront à aller au prochain Start-Up Week-end :

Vous souhaitez lancer un projet

Le Start-Up Week-end est un bon moyen de vous essayer au pitching et de voir si votre projet tient la route. Il vous permettra également de vous essayer à la gestion de projet et à la gestion d’équipe.

Vous avez une idée mais ne souhaitez pas la gérer

Pitchez votre idée et constituez une équipe complète et … have fun !

Un week-end pour grossir son réseau

Ce week-end est également un bon moyen de rencontrer des gens, aussi bien des développeurs que des marketeux ou encore des business angels.

L’occasion de changer de carrière

La vague de projets, de stress et de rencontres peut aussi vous amener à découvrir de nouvelles voies de carrière et pourquoi pas de trouver un job, tout simplement !

 

Un week-end, c’est court !

Après le week-end de folie, de boulot, de mal bouffe et de non sommeil, tout le monde se retrouve à pitcher les projets devant un jury composé d’une vingtaine de personnes pour élire les 3 meilleurs projets. Après délibération, le projet Reputeo.us est arrivé en tête, juste devant Breizhbook, AfterTheWeekend et Bet2Buy. VICTOIRE \o/
Je félicite encore une fois les porteurs de projets, l’équipe, le staff et finalement tout le monde pour ce week-end :)

Gagnant ou pas, ce week-end est l’occasion de découvrir du monde et pourquoi pas de lancer de nouveaux projets. En ce qui concerne Reputeo.us, le projet va bel et bien continuer avec son équipe !

 

Reputeo.us sur le web

Si vous êtes Nantais, vous pourrez assister au Start-Up Week-end Nantes courant janvier 2011 !

Related Posts:

  • No Related Posts

Organisation : appliquer la méthode GTD avec Gmail 

Trop d’emails à lire ? Des soucis d’organisation de votre compte Gmail ? Emails perdus dans la masse de vos archives ? Voici un billet qui pourrait vous être utile. Pour commencer, je vais faire un très léger rappel/résumé de la méthode GTD (Getting Things Done).

Rappel

La méthode GTD est une méthode d’organisation inventée par David Allen, je vous conseille d’ailleurs d’acheter le livre si vous ne l’avez pas. L’image ci-dessus est une version light de cette technique de tri dont voici les grandes lignes traduites :

  • Un nouvel élément arrive dans votre corbeille d’arrivée
  • L’élément est bloqué : on le jette ou on le met dans une liste de référence en attendant un déblocage
  • Sinon, si la résolution/l’action prend moins de 2 minutes on l’exécute
  • Dans le cas contraire, on peut délayer … ou déléguer

Maintenant que j’ai donné les grandes lignes, on va pouvoir voir comment appliquer cette technique sur une boîte Gmail.

Prérequis

Ce billet se base sur les fonctionnalités Priority Inbox de Google et Superstars disponible dans les Labs.

Boîte de réception

La boîte de réception est la fameuse corbeille d’arrivée du système GTD. Avec la fonctionnalité Priority Inbox, on va même pouvoir appliquer deux niveaux de tri en entrée.
Quand un élément est traité, il doit être archivé. Ainsi ne restent dans la boîte de réception que les éléments formant une TODO-List à court ou moyen terme.

Dossier ’suivi’ (starred)

Le label starred de Gmail va constituer la boîte de références, et le lab Superstars va permettre d’avoir plusieurs types de références. Dans la boîte de références sont rangés tous les éléments ne formant pas une TODO-List mais pouvant servir plus tard : emails d’information, identifiants de connexion, …

Le lab Superstars permet de paramêtrer les icônes que nous voulons, personnellement j’ai activé les suivants :

Dans l’ordre d’apparition : information, important, urgent, inconnu, validé et à faire suivre.

Ainsi ma boîte de références ressemble à ça :

Pour le reste : il y a le reste

Pour tous les autres éléments : traités, inutiles, autres … Il suffit d’utiliser la fonction Archiver, ils restent ainsi consultables via le label All Mails.

Pour certains, le plus dur va être de vider leur boîte mail avant de pouvoir appliquer cette méthode :D

Enjoy it !

Related Posts:

  • No Related Posts

NetBeans 6.9 : activer le retour automatique à la ligne 

S’il y a bien quelque chose qui peut vite devenir frustrant sous NetBeans, c’est bien la ligne à ralonge qui oblige à faire du scroll horizontal. Fonctionnalité demandée depuis plus de 2 ans, l’équipe peine à rendre disponible le retour automatique à la ligne sur ce célèbre IDE. Cependant, il existe un paramètre permettant de l’activer (testé et approuvé sur la version 6.9).

Bien que présente dans la nightly build cette fonctionnalité n’a toujours pas été activée par défaut dans la version finale de NetBeans 6.9, on est donc obligé de toucher à un petit fichier de configuration avant de pouvoir jouer avec les options de l’éditeur.

Editez le fichier netbeans.conf qui se trouve dans le dossier etc/ de votre installation NetBeans, ajoutez le paramètre suivant dans la variable netbeans_default_options :

-J-Dorg.netbeans.editor.linewrap=true

Redémarrez l’éditeur puis rendez-vous dans Tools > Options > Editor > Formatting : vous pouvez désormais activer l’option Line Wrap à votre guise.

Note : cette fonctionnalité ne semble pas activée par défaut car elle pourrait causer des dysfonctionnements dans certains cas.

Enjoy it !

Related Posts:

  • No Related Posts