vendredi 24 avril 2015

Connaître la taille d'un dossier

Pour trouver la taille qu'occupe un répertoire sur votre disque, vous pensiez qu'il suffisait d'un simple ls -l ?

disk usage : du

Première solution, la commande du :

$ du -sh nom_du_dossier
Quelques explications :
  • du signifie "disk usage"
  • L'option h (pour "human readable") permet d'afficher la taille du dossier dans un format facilement lisible avec l'unité (K pour Kilo-octets, M pour Mega-octets, ...)
  • L'option s n'affiche la taille que pour le dossier spécifié. Sans cette option, la commande afficherait la taille de la totalité des sous-répertoires et fichiers contenus dans le dossier.
Pour avoir une liste des dossiers (ou fichiers) classés par taille du plus grand au plus petit :

$ du -smx * | sort -nr
  • L'option m affiche la taille en Mo. Pour le tri, nous avons besoin que tous les répertoires (ou fichiers) soient affichés dans la même unité.
  • L'option x permet de ne scanner que le répertoire demandé
Pour la commande sort, les options sont :
  • n trie par taille
  • r ordonne les résultats du plus grand au plus petit

ncdu

Sinon, vous avez une autre solution beaucoup plus pratique quand vous devez arpenter toute l'arborescence d'un serveur à la recherche d'un dossier trop gros à nettoyer. Il s'agit du programme ncdu. Vous l'installez à l'aide d'un simple sudo apt-get install ncdu puis vous le lancez à l'aide de la commande :

$ ncdu -x nom_du_dossier
Après l'initialisation du programme qui va parcourir en récursif tous les sous-dossiers, vous n'avez plus qu'à naviguer dans l'arborescence avec les flèches du clavier et la touche d pour supprimer un fichier/dossier. Il y a bien sûr d'autres racourcis dans l'application que vous pourrez consulter en tapant ?.

Mis à jour le 24/04/2015

jeudi 10 juillet 2014

Validation formulaire : Champ obligatoire en fonction de la valeur d'un autre champ (Symfony 2)

Vous avez un formulaire Symfony 2 et vous voulez qu'un champ soit obligatoire que si un autre champ a une valeur spécifique ? La solution est simple, mais il fallait y penser : utiliser les groupes de validation.

Prenons un exemple :
Vous avez l'entité suivante avec ses contraintes de validation :

use Symfony\Component\Validator\Constraints as Assert;

class Content
{
    private $id;

    /*
     * Type : Application / Vidéo / Texte
     *
     * @var integer
     * @Assert\NotBlank(message="Le type est obligatoire")
     */
    private $type;

    /*
     * Support : Mobile / Tablette
     *
     * @var integer
     * @Assert\NotBlank(message="Le support est obligatoire") 
     */
    private $support;

    /* ... */
}

Vous voulez que le champ support ne soit obligatoire dans votre formulaire que si le type sélectionné est "Application".

Commencez par créer une contrainte de validation de type Callback sur votre entité en ajoutant la méthode isTypeApplication. Attention, elle prend en paramètre un ExecutionContext, donc n'oubliez pas le use qui va avec :

use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\ExecutionContext;

/**
 * @Assert\Callback(methods={"isTypeApplication"})
 */
class Content
{
    private $id;

    /*
     * Type : Application / Vidéo / Texte
     *
     * @var integer
     * @Assert\NotBlank(message="Le type est obligatoire")
     */
    private $type;

    /*
     * Support : Mobile / Tablette
     *
     * @var integer
     * @Assert\NotBlank(message="Le support est obligatoire") 
     */
    private $support;

    /* ... */

    /**
     * Vérifie si le contenu est de type "Application"
     *
     * @param ExecutionContext $context
     */
    public function isTypeApplication(ExecutionContext $context) {
        if ($this->type == 'Application) {
            $context->validate($this, '', 'type_application_group', true);
        }
    }
}

La méthode isTypeApplication qu'on vient d'ajouter, permet de re-valider le formulaire mais en utilisant cette fois le groupe de validation type_application_group lorsque le contenu est de type "Application".

Il n'y a donc plus qu'à utiliser ce groupe de validation pour la contrainte NotBlank sur la propriété support de notre entité pour obtenir au final :

use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\ExecutionContext;

/**
 * @Assert\Callback(methods={"isTypeApplication"})
 */
class Content
{
    private $id;

    /*
     * Type : Application / Vidéo / Texte
     *
     * @var integer
     * @Assert\NotBlank(message="Le type est obligatoire")
     */
    private $type;

    /*
     * Support : Mobile / Tablette
     *
     * @var integer
     * @Assert\NotBlank(message="Le support est obligatoire", groups={"type_application_group"}) 
     */
    private $support;

    /* ... */

    /**
     * Vérifie si le contenu est de type "Application"
     *
     * @param ExecutionContext $context
     */
    public function isTypeApplication(ExecutionContext $context) {
        if ($this->type == 'Application) {
            $context->validate($this, '', 'type_application_group', true);
        }
    }
}

vendredi 14 février 2014

Nombre de lignes/de mots d'un fichier

Aujourd'hui, étude d'une petite commande à la fois simple et pratique : wc (word cound).
Elle est souvent utilisée lorsqu'on a besoin de connaître le nombre de lignes d'un fichier ou encore, mais c'est moins fréquent, le nombre de mots. Si on la lance simplement sans argument, on aura :

$ wc nom_fichier
240 569 8980 nom_fichier

Les 3 nombres retournés sont respectivement
  • Le nombre de lignes
  • Le nombre de mots
  • Le nombre d'octets
En ajoutant un argument, on peut avoir seulement l'un de ces nombres :
-l : nombre de lignes
-w : nombre de mots
-c : nombre d'octets

Un autre argument, -m, nous permet d'obtenir un 4° nombre, le nombre de caractères :

$ wc -m nom_fichier

Et voilà, c'est déjà fini

vendredi 11 octobre 2013

jsWarrior : apprendre à programmer en s'amusant

JSWarrior
Aujourd'hui, petit moment de détente !
J'ai trouvé ce petit jeu qui permet de s'entraîner à programmer en javascript en s'amusant.

Le but du jeu est simple et bien expliqué

Il y a 7 niveaux à passer pour finir le jeu. A vous de jouer à JSWarrior!

Même si les premiers niveaux sont très faciles, ce n'est qu'un début, ça se complique rapidement.

Pour les feignants ou ceux qui sont vraiment bloqués . Voici la soluce de JSWarrior.

jeudi 10 octobre 2013

2 astuces GIT pour ignorer des fichiers

1. Ignorer des fichiers déjà versionnés

Permet de ne plus commiter un fichier déjà versionné. Pratique si vous avez un fichier de configuration versionné dans lequel vous avez mis votre configuration locale que vous ne devez pas commiter.
Il suffit d'exécuter la commande suivante :

git update-index --assume-unchanged path/to/file.txt

2. Ignorer localement des fichiers

Permet de ne pas avoir les fichiers ajoutés par votre IDE committés sans pour autant les ajouter dans le .gitignore du projet. (le projet n'a pas de raison d'avoir des fichiers spécifiques à un IDE dans son .gitignore)

Dans votre repo, ajouter vos règles locales spécifiques au repository dans le fichier .git/info/exclude

Ces règles ne sont pas commitées et ne sont donc pas partagées avec les autres développeurs.

lundi 19 août 2013

Terminal : Garder un programme en tâche de fond

Aujourd'hui, petite astuce avec le terminal. Vous avez lancé un programme en ligne de commande, par exemple gedit comme ceci :

$ gedit

Le terminal a bien lancé le logiciel mais ne vous a pas rendu la main.

Pas de panique! Il suffit de faire Ctrl+Z puis de taper :

$ bg

Et voilà, le programme reste ouvert en tâche de fond et le terminal vous a rendu la main !

lundi 20 mai 2013

Installer et configurer Apache/PHP/MySQL pour Symfony2 en 10 étapes

Vous venez tout juste d'installer la dernière version d'Ubuntu (13.04 à l'heure où j'écris), et souhaitez installer tout l'environnement nécessaire pour faire fonctionner Symfony 2 (version 2.2.1 à ce jour) et commencer votre première application ?
Voici la marche à suivre !
Mais tout d'abord, quelques petites précisions avant de commencer :
  • Ce tutoriel est un guide concis qui récapitule l'ensemble des étapes à suivre pour préparer votre serveur de développement et faire fonctionner l'installation de Symfony 2. Je n'explique pas en détail tout ce qu'on va faire..
  • Je pars du principe que vous voulez créer un site qui sera accessible à l'URL http://symfony et que le contenu du site sera placé dans le répertoire /home/nom_user/www/symfony/. A vous d'adapter si vous voulez modifier ceci.
Allons-y maintenant !

1. Installer Apache

sudo apt-get install apache2

2. Installer MySQL

sudo apt-get install mysql-server mysql-client

3. Installer PHP 5

sudo apt-get install php5

4. Installer PHPMyAdmin

sudo apt-get install phpmyadmin
Lors de l'installation, vous aurez droit à 2 questions :
1°) Quel serveur web reconfigurer pour exécuter phpMyAdmin ? Choissiez apache2
2°) Faut-il configurer la base de données de phpmyadmin avec dbconfig-common ? Choisissez Non

5. Installer les modules Apache nécessaires/utiles pour Symfony 2

D'abord le mod_rewrite qui permettra l'utilisation de la réécriture d'URL :
sudo a2enmod rewrite

6. Installer les modules PHP nécessaires/utiles pour Symfony 2

sudo apt-get install php5-intl
sudo apt-get install php-apc
sudo apt-get install php-pear
sudo apt-get install php5-dev sudo pecl install xdebug

7. Configurer PHP

Modifier les paramètres de PHP en éditant les lignes suivantes du fichier /etc/php5/apache2/php.ini :
short_open_tag = Off
date.timezone = Europe/Paris
Il faut ensuite configurer les modules nouvellement installés :
APC
Editer le fichier /etc/php5/conf.d/20-apc.ini, et ajouter les lignes suivantes :
apc.shm_size = 128M
XDebug
Créer le fichier /etc/php5/conf.d/20-xdebug.ini :
zend_extension = /usr/lib/php5/20100525/xdebug.so
xdebug.max_nesting_level = 250

8. Configurer votre site local

8.1 Fichier hosts

sudo nano /etc/hosts
Ajouter la ligne :
127.0.0.1 symfony

8.2 Virtual Host

On crée un nouveau VirtualHost pour notre site : sudo nano /etc/apache2/sites-available/symfony.conf
Dans l'éditeur coller cette configuration en remplaçant /home/mon_nom/www/symfony/web/ par le répertoire où vous voulez placer votre site :
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName symfony

    DocumentRoot /home/mon_nom/www/symfony/web/
    <Directory /home/mon_nom/www/symfony/web/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error-symfony.log

    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access-symfony.log combined
</VirtualHost>

Attention ! Si vous utilisez Apache 2.4 (intégré dans les dernières versions d'Ubuntu), il faut remplacer les lignes :
    AllowOverride All
    Order allow,deny
    allow from all

par :
    Require all granted

On active le VirtualHost que nous venons de créer :
sudo a2ensite symfony
On prépare le répertoire où l'on placera notre site Symfony :
cd ~
mkdir www

Il ne reste plus qu'à redémarrer apache :
sudo service apache2 reload

9. Installer Composer

Installer d'abord le module curl pour nous permettra d'installer facilement Composer :
sudo apt-get install curl
Puis installer Composer :
cd ~
curl -sS https://getcomposer.org/installer | php

Pour simplifier son utilisation, nous allons le rendre exécutable n'importe où sur le système :
sudo mv composer.phar /usr/local/bin/composer
Désormais, pour utiliser composer, il suffira de saisir directement n'importe où :
composer

10. Enfin, installer et configurer Symfony2

cd ~/www
composer create-project symfony/framework-standard-edition symfony/ 2.2.1

Mettre à jour les vendors :
composer update
Définir les droits sur les répertoires cache et logs :
$ sudo setfacl -R -m u:www-data:rwX -m u:`whoami`:rwX app/cache app/logs
$ sudo setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwx app/cache app/logs

Il ne vous reste plus qu'à vérifier que tout s'est bien passé et que Symfony 2 est prêt à fonctionner en vous rendant à l'URL suivante dans votre navigateur :
http://symfony/config.php
Vous devriez avoir un joli message sur fond vert :
Your configuration looks good to run Symfony
Il ne vous reste plus qu'à cliquer sur le lien "Configure your Symfony Application online" pour terminer votre configuration de Symfony 2.

Conclusion

Et voilà ! Si tout s'est bien passé, vous êtes en mesure de créer un site avec Symfony 2 sur le serveur de développement que vous venez juste d'installer et de configurer.


mardi 11 décembre 2012

Rafraichissement

Aujourd'hui, simple petit rafraîchissement de l'interface du blog. Merci aux nouveaux modèles Blogger.
Personnellement, je le trouve un peu plus ... clair et aéré !
Non ? Vous ne trouvez pas ?

lundi 8 octobre 2012

Supprimer les répertoires .svn sous Linux

.svn ! Ca vous dit quelque chose ? Mais si : ces fameux répertoires cachés qui s'incrustent partout dans vos dossiers sur les vieilles versions de SVN !

Besoin de les supprimer ? Il y a 2 méthodes :

  1. Tous les effacer un par un à la main (ce qu'on aimerait éviter de faire)
  2. Les supprimer de manière intelligente : avec une seule commande linux.

Assez d'introduction, venons-en aux faits !

Tout d'abord, on vérifie (histoire de pas supprimer n'importe quoi) ce qu'on va effacer en affichant les résultats de la recherche de tous les dossier ".svn" dans le répertoire courant (et tous les sous-répertoires) :

find . -name '.svn' | more

Ca y est ? Vous êtes sûr de vous ? Alors allons-y pour le grand ménage :

find . -name '.svn' | xargs rm -rf

samedi 2 octobre 2010

MacBuntu : un thème Mac OS pour Ubuntu simple à installer

Fan de l'interface Mac OS X mais envie de garder Ubuntu ?
Pas de problème ! MacBuntu est là pour vous !

Macbuntu est un projet similaire à Mac4Lin mais beaucoup plus complet et surtout dédié à Ubuntu. Le package comprend tous les éléments nécessaires pour imiter l'apparence de Mac OS X sur Ubuntu Linux.

Tout est en place dès l'installation : Fond d'écran, thème Plymouth, Compiz, Metacity, ...


Admirez :


Convaincu ?
  • 1° étape
    Télécharger Macbuntu.

  • 2° étape
    Décompresser l'archive

  • 3° étape
    Aller dans le répertoire et lancer le script install.sh

C'est fini !

lundi 9 novembre 2009

CSS : Enlever les pointillés autour des liens lors du clic (dans Firefox)

Cliquer sur un lien occasionne un contour pointillé disgracieux autour de celui-ci que Firefox ajoute automatiquement.

Jusqu'à présent, je pensais que le navigateur étant le seul fautif on ne pouvait rien faire pour l'empêcher... Mais je suis tombé sur une astuce CSS qui permet de désactiver cet effet. Il suffit d'appliquer à ses liens le style :

a:focus {
    outline:0
}

mardi 9 juin 2009

Définir une IP fixe

Pour définir une IP fixe à votre ordinateur, il faut éditer le fichier /etc/network/interfaces, avec nano par exemple :
$ sudo nano /etc/network/interfaces
et le modifier comme ceci :
# The loopback network interface
auto lo
iface lo inet loopback
# The first network interface
auto eth0
iface eth0 inet static
address 192.168.0.1
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.10

Explications :
auto eth0 : active automatiquement l’interface eth0
iface eth0 inet static : configure votre interface réseau en "static" (l'autre choix aurait été "dhcp")
address 192.168.0.3 : configure l’adresse IP statique privée.
network 192.168.0.0 : précise le réseau sur lequel se "trouve" l’adresse IP.
netmask 255.255.255.0 : définit le masque sous-réseau.
gateway : définit la passerelle (l’adresse de votre routeur)

Ensuite, il faut sauvegarder le fichier et relancer votre réseau avec la commande :
$ sudo /etc/init.d/networking restart
A présent, vous pouvez vérifier votre adresse IP statique avec un :
$ ifconfig

lundi 23 février 2009

Changement de thème


Aujourd'hui, un peu de changement visuel : installation d'un nouveau thème de bureau Gnome : Dust Cold
Pour l'installation, il suffit d'utiliser la même méthode que la dernière fois et le tour est joué !

lundi 2 février 2009

Compiz Fusion désactivé ?

Depuis quelques temps, Compiz Fusion ne s'active plus au démarrage. Et pourtant, il est bien marqué comme actif avec Compiz Fusion Icon :
Du coup, je me retrouve obligé de le resélectionner avec Compiz Fusion Icon pour l'activer.
Je fais donc appel à toi, lecteur : si tu connais la solution à mon problème, n'hésite pas à me l'indiquer dans les commentaires ! Merci d'avance :-)

[Edit]
Solution trouvée ! Merci à Metal3D qui a donné la réponse dans son commentaire :)

mardi 14 octobre 2008

Linux c'est bien pour travailler, mais c'est tout !

Aaaaargh ! Opera a encore planté ! Et quand ce n'est pas lui, c'est Firefox !

Trop c'est trop, j'ai besoin de le dire haut et fort : après quelques mois sous Ubuntu Linux, il y a déjà plusieurs points qui m'agacent quotidiennement !

- Premièrement, les plantages réguliers de Firefox !
- J'ai essayé d'installer Opera, d'abord pour tester les sites que je développe dessus; et aussi parce que j'ai découvert ses widgets dont certains sont bien sympathiques. Seul hic, celui-ci fait comme Firefox : il plante souvent !
- Le lecteur Flash ? Quand il ne rame pas atrocement, il fait planter le navigateur !
- Evolution ? Ah oui c'est très bien, je suis arrivé à mettre un filtre sur mes mails en entrée, depuis, impossible d'en faire d'autres !
- Gimp ? Je n'ai toujours pas compris pourquoi il faut changer la taille du canevas, puis celle des calques. A croire qu'ils sont incapables de s'adapter tout seuls quand c'est nécessaire. Et puis quelle interface ! Sérieusement, ce logiciel veut égaler Photoshop ? Bon courage, il y a du boulot !
- Si on passait aux jeux maintenant .... ah non, c'est vrai, linux ce n'est pas fait pour jouer ! La majorité des éditeurs ne se donnent pas la peine de faire des jeux pour ce système d'exploitation. J'admets tout de même qu'Urban Terror fonctionne bien.. après avoir réglé quelques difficultés (ici et ), sinon ça aurait été trop facile.
- Côté simulation de voitures, je cherche toujours.... www.racer.nl ? Il n'est plus développé pour linux et sa prise en main est impossible. Une autre ? Ah non, il faut aller voir sous Windows avec Live For Speed qui est vraiment bon ou GRID qu, bien que plus axé arcade, n'est pas trop mal.

Bon d'accord, je serais de mauvaise foi si je ne reconnaissais qu'il y aussi des avantages. Par exemple, pour travailler :
- Open Office remplit plutôt bien sa part du travail pour ce que je lui en demande.
- Développer proprement avec Eclipse en UTF8 ne pose plus de problèmes, et il est beaucoup plus stable que sous Windows.
- On ne pense plus aux virus, la sécurité est exemplaire et les droits sur les fichiers, bien qu'un peu énervants par moment, jouent très bien leur rôle.


Bref, désolé pour le coup d'gueule ... mais fallait pas me planter une fois de plus entre les doigts !

mardi 30 septembre 2008

PHP : Dernier élément d'une chaîne de caractères

Astuce PHP du jour...

Pendant que Patrice s'amuse avec les dates, je vais vous dévoiler une astuce plus simple que vous connaissez peut-être déjà :

Lorsqu'on veut récupérer le dernier caractère d'une chaîne, la première solution qui nous viendrait à l'esprit serait :
$lastCharacter = substr('bonjour', strlen('bonjour') - 1), 1);

Mais en lisant un peu mieux la documentation PHP, on voit qu'il y a beaucoup plus simple et rapide, et qui en plus évite le calcul de la longueur de la chaîne :
$lastCharacter = substr('bonjour', -1);

En effet, il faut savoir que si le paramètre start de la fonction substr est négatif, on part de la fin de la chaîne, ainsi avec -1 on commence juste avant le dernier caractère et on récupère donc le dernier caractère de la chaîne.

mercredi 24 septembre 2008

Réinitialisation du Glofiish X500 avec Linux Ubuntu

Voici la suite de la série ETEN Glofiish X500 / Ubuntu.

La question posée lors du dernier billet était "Peut-on flasher la ROM et installer Windows Mobile 6 sur le X500 en se passant de Windows sur le PC ?"

Réponse en demi-teinte : Oui et Non !

Oui, car c'est possible en installant la ROM directement à partir d'une carte Micro SD
Non, car pour pouvoir installer la ROM à partir de la carte Micro SD, il faut d'abord exécuter 1 fois le programme spécifique à la mise à jour qui ne fonctionne que sous Windows.

Je vais donc donner la solution pour ceux qui ont gardé un Windows quelque part et qui se disent qu'il va enfin pouvoir servir à quelque chose depuis le temps :)
Pour les autres, allez voir à la fin du billet où je donne une piste possible qui permettrait peut-être de se passer totalement de Windows.

Procédure de flashage de la ROM



  1. Avant toute chose, il est fortement conseillé de brancher l'appareil sur le secteur voire de s'assurer que la batterie est pleine. Surtout, ne pas brancher le X500 à l'ordinateur avec le cable USB.

  2. Télécharger le programme de mise à jour de la ROM pour le X500 disponible sur la page dédiée au téléchargement du site Glofiish France

  3. Exécuter le fichier téléchargé, et passer les étapes d'installation jusqu'à la fenêtre dont le titre est END USER UPDATE.

  4. Aller dans le dossier des fichiers temporaires qui est localisé :
    - Pour Windows XP dans : C:\Documents and Settings\<username>\Local Settings\Temp
    - Pour Windows Vista dans : C:\Users\<username>\AppData\Local\Temp
    (où <username> est donc en toute logique à remplacer par votre login de session Windows)

  5. Récupérer dans ce dossier les fichiers temp.dat (environ 60 Mo) et USBDLUpdate_Console.exe (environ 4 ko) et les copier dans vos documents. Quitter le programme de mise à jour de la ROM qui ne nous servira plus à rien maintenant

  6. Renommer le fichier temp.dat en temp.bin

  7. Copier les 2 fichiers sur une carte microSD fraîchement formatée (système de fichiers FAT impérativement).

  8. Insérer la carte mémoire dans le X500 et placer l'appareil en mode "Bootloader". Pour ceci, garder appuyés les boutons POWER et VOICE COMMANDER (le bouton avec un rond dessus sur la gauche de l'appareil, sous les boutons de volume), appuyer sur Reset avec votre stylet. Lâcher le bouton Reset sans relâcher les 2 autres boutons.

  9. La mise à jour va alors commencer et le X500 va se flasher avec la ROM à partir de la carte mémoire microSD. La mise à jour prendra plus de temps qu'une mise à jour classique avec le cable USB via l'ordinateur du fait du taux de transfert moins élevé de la carte mémoire.

  10. Lorsque le message "USB host is not connected yet..." s'affichera, la mise à jour sera terminée. Il ne restera donc plus qu'à redémarrer le X500 (via un soft ou un hard reset si le soft ne fonctionne pas)



Désormais, il sera possible de flasher la ROM du Glofiish X500 sans Windows. Il suffira de reprendre la procédure d'installation ci-dessus directement à l'étape 7 avec les fichiers temp.bin et USBDLUpdate_Console.exe que vous aurez bien pris soin de conserver.

Il est peut-être possible de se passer totalement de Windows en lançant le programme de flashage de la ROM sous Linux grâce à Wine ou autre programme du même genre. Mais n'ayant pas testé cette solution, n'hésitez pas à me laisser un commentaire si vous avez essayé et que ça fonctionne !

mercredi 17 septembre 2008

Light bot : apprendre à programmer en s'amusant


Aujourd'hui, petit moment de détente !
J'ai trouvé ce petit jeu Flash qui permet d'apprendre à programmer en s'amusant.

Le but du jeu est simple : allumer les case bleues à l'aide du robot.
Pour le diriger, il faudra lui donner une séquence de commandes tel qu'avancer, tourner, sauter, allumer, etc...

Pour réussir, vous avez 1 programme principal et 2 fonctions où vous pouvez placer un nombre limité d'instructions. A vous de trouver comment optimiser les tâches répétitives à l'aide des fonctions !

Il y a 12 niveaux à passer pour finir le jeu. A vous de jouer à Light Bot!

[Edit du 18/09/2008]
Apparemment certains arrivent sur ce billet en cherchant la solution de Light Bot. Donc pour tous les feignants ou ceux qui sont vraiment bloqués (le niveau 10 est particulièrement difficile). Voici la soluce de Light Bot.


Source : Koreus

mardi 16 septembre 2008

Notificateur de Flux RSS Google Reader

Lorsque vous suivez tellement de flux RSS qu'une page Netvibes devient vite inadaptée, il est temps de passer à un vrai lecteur RSS. A ce moment, du lecteur RSS de bureau au lecteur RSS online, de multiples solutions s'offrent à vous.

Pour ma part, ayant besoin de suivre mes flux préférés de partout, j'ai choisi la solution en ligne de Google : Google Reader.
Seulement voilà, c'est bien beau d'avoir le lecteur de flux RSS, il faut aussi pouvoir savoir quand de nouveaux articles sont publiés. J'ai donc cherché une solution pour avoir, de même que le Gmail Notifier, un programme qui s'insère facilement dans ma barre des tâches et m'informe tout en restant discret.

J'ai trouvé la solution : Gr Notify. Ne prenez pas peur devant cette page d'accueil aussi austère, l'installation est très simple :
- Cliquer sur le lien Download Now
- Cliquer sur le lien grnotify-1.0.0-RC2
- Télécharger le fichier en cliquant sur le lien grnotify_1.0.0-RC2_all.deb
- Une fois le fichier téléchargé, vous n'avez plus qu'à aller là où vous l'avez enregistré puis double-cliquer pour exécuter le programme. Un assistant d'installation vous guidera pour finaliser l'installation.

Enfin, si vous voulez que comme votre notificateur Gmail, il se lance à chaque démarrage de votre session, il vous suffit de suivre la même procédure pour le placer dans la liste des programmes à lancer au démarrage.