Author Archive for tomzx

Page 2 of 10

Getting things done

Objectif
J’écris ce message dans le but d’aider plusieurs d’entre mes amis qui semblent avoir des difficultés à se pousser à accomplir certaines tâches. Il s’agit ici d’une méthode élaborée par David Allen, l’auteur du livre Getting Things Done. GTD est une méthode simple qui a pour objectif de regrouper l’ensemble de ses tâches pour ensuite les sous-diviser en sous-tâches qui seront facilement accomplies. La méthode que je présente ici est tirée de cette méthode, mais plus spécifique aux tâches de nature

À prendre avec un grain de sel
Toutefois, je dois vous avertir. Bien que la méthode ait pour objectif de vous aider à focuser sur votre travail, il peut arriver que de la surutiliser puisse mener à une démotivation. En effet, si vous en venez à décortiquer vos tâches en une centaine de petites tâches, vous vous rendrez alors compte que vous en aurez pour un bon moment avant d’avoir fini. L’idée ici est simplement qu’il vous faudra être persistant et patient. Puisque vous avez un plan, vous serez donc en mesure de vous approcher peu à peu de votre objectif final. Il est sûr que ce n’est peu être pas aussi excitant que d’accomplir quelque chose d’un coup, mais si vous ne faite rien de tout vos petits moments passés à ne rien faire, vous pourriez accomplir pas mal de travail et être possiblement plus satisfait.

Ce que je tente de dire ici, c’est simplement qu’un gros projet ne s’accomplis pas de de lui même. Aussi, même si votre projet s’étale sur plusieurs jours/semaine/mois/années, et qu’il se complète, cela est déjà beaucoup mieux que de n’avoir jamais rien fait de son temps (je parle spécifiquement à ceux qui regardent trop facebook pour perdre leur temps ou encore youtube, mais pas ceux qui ont des objectifs spécifiques envers ceux-ci).

GTD, en gros
Bref, revenons sur le sujet. GTD est composé d’un ensemble d’étapes:

  1. Rassembler toutes les tâches qui doivent être accomplies
  2. Définir le type de tâches
  3. Former un plan d’action
  4. Agir (ou déléguer)

À la base, GTD s’applique sur des documents format papier. Il permet de définir ce qu’on doit faire pour toute “donnée”, que ce soit un chèque, une lettre d’un ami, le besoin d’acheter une lampe, un livre, des questions que l’on se pose, etc. Tout ce qui est dans notre tête et qui perturbe notre focus mental devrait être écrit sur une feuille de papier. Il est suggéré que d’écrire nos pensées sous forme papier libère l’esprit et je suis de cet avis. De cette manière, vous savez que vous avez un endroit où cette pensée ce trouve et vous serez en mesure de repasser dessus à un moment donné.

Passons donc à chacune des étapes et voyons ce qui doit être accompli.

Voici quelques aides-mémoire qui pourrons rapidement vous remémorer les quelques concepts imports de la méthode.

Rassembler toutes les tâches qui doivent être accomplies
Premièrement, il s’agit de mettre à un même endroit toutes les tâches qui doivent être résolues. Un endroit commun a pour objectif de permettre à notre esprit d’être à l’aise avec le fait que certaines pensées ne seront plus transportées avec nous à longueur de journée.

Commencez donc par faire une liste de toutes les tâches que vous avez à faire pour les prochains jours, puis les prochaines semaines et ainsi de suite. Par la suite, demandez vous quels sont les problèmes que vous avez actuellement et qui perturbent votre focus lorsque vous essayez de travailler. Finalement, regrouper toutes les lettres, textes, messages et autres sur lesquels vous devez poser une action (ou pas). On fait ça pour pouvoir ensuite passer à travers et déterminer ce qu’on doit faire de chacun des items.

Définir le type des tâches
Pour chacun des items que l’on a, on doit décider de quel type de tâche il s’agit. Est-ce un item qu’on doit éliminer? Garder pour être revue plus tard (on ne peut rien faire pour cette tâche actuellement) ou encore un item qui doit être gardé comme référence?

Si on peut s’en débarasser, alors on le jete et on ne se pose plus de question.
Si on doit le revoir plus tard, on le transfère dans la pile à être revue. Vous pouvez définir comment vous voulez revoir vos documents (chaque jours/mois/semaines/etc).
Si l’item est gardé comme référence, il faut s’assurer de bien le classer. Un document mal classé est l’équivalent de ne pas avoir de document et aussi bien l’avoir jeté.

Former un plan d’action
Pour chacune des tâches qui nécessite une action de votre part, vous pouvez définir un plan d’action. Il s’agit ici de lister les grands points de la tâche que vous aurez à accomplir. Dans mon cas, j’aime bien définir l’ensemble de la tâche à accomplir et si certains éléments sont à ajouter, je le fait au fur et à mesure. La méthode GTD elle, dit simplement de définir quel doit être la prochaine tâche que vous devez accomplir afin de faire avancer votre tâche.

Je préfère définir la tâche au complet car cela me permet de déceler les problèmes plus tôt et ainsi faire une planification. L’objectif est de me permettre d’optimiser ce que j’accomplis. Si je suis en mesure de définir un ensemble de tâche qui peut être accomplis d’un coup à un même endroit, alors je viens de me sauver beaucoup de temps. Un exemple grossier serait une personne qui fait une liste d’épicerie avant d’y aller. À l’opposé, ne pas faire une liste, et aller à l’épicerie, item par item, ne serait aucunement efficace. Bien que l’exemple soit bête, c’est un très bon exemple de compactage d’activités.

Agir (ou déléguer)
Avec votre prochaine action de définie, il ne vous reste plus qu’à faire celle-ci. Une tâche ne peut tristement pas s’accomplir par elle-même et il vous faudra donc mettre les efforts requis pour la mener à terme. En ayant suivi ces étapes, vous vous sentirez probablement un peu mieux de savoir que votre projet avance, même si ce n’est qu’à petit pas.

Dans mon cas, j’ai adopté cette mentalité surtout puisque j’ai remarqué que je perdais beaucoup de mon temps à ne rien “effectuer” du tout. Naviguer sur Internet de part et d’autre sans aucune raison, lire des articles sur l’informatique sans objectif précis, avoir des discussions sans but sont quelques uns des exemples de ce que je faisais. Et je ne suis pas fier de dire que c’était du temps bien employé.

Conclusion
Avec un peu de travail, même un 5 minutes par jour, on peut accomplir vraiment beaucoup de travail. Je crois qu’il vous faut voir à long terme, et arrêter de vouloir tout de suite. Par exemple, 5 minutes par jour pour apprendre une langue, ça représente 30h d’apprentissage par an. Ce n’est peut-être pas beaucoup, mais sachant qu’un enfant commence généralement à apprendre l’anglais vers la troisième année du primaire et à s’en servir tous les jours (écouter la télévision ou encore servir des clients anglais) vers le secondaire 5, ça fait presque 8 ans d’apprentissage, et donc 240h. Vous voyez, avec le temps, les choses peuvent prendre beaucoup d’envergure, enfin, seulement si on leur en donne.

Gérer facilement la mise à jour de son site

subversionTout développeur web sait qu’il peut être long et ennuyant de modifier les fichiers sur son serveur à distance afin de mettre les nouvelles versions de ceux-ci. Par FTP, la tâche peut être longue étant donné que le logiciel va lancer une commande FTP de suppression pour chaque fichier (si vous n’écrasez pas vos fichiers)… un peu long.

Voici ce que je vous propose. Premièrement, j’espère qu’en tant que développeur, vous avez appris à vous servir de SVN (Subversion). Il s’agit d’un simple outil qui vous permet de garder un historique de votre travail, et vous permet de revenir à des versions précédentes si nécessaire.

Bref, l’idée ici est simple. À l’aide de la commande svn export, nous pouvons mettre à jour de façon rapide notre version en production. Bien sûr, pour pouvoir faire cela, il faut avoir un accès SSH à son serveur, ce que tout utilisateur d’un service d’hébergement partagé (shared) n’aura probablement pas. Si toutefois, vous travaillez sur un serveur dédié, alors voici ce que vous pouvez faire:

1. En local, établissez une copie de travail de votre dépôt SVN (celui-ci peut être situé n’importe où). L’idée est que votre ordinateur local soit en mesure de faire fonctionner vos scripts (PHP dans mon cas). Je travail actuellement avec une VM avec Fedora d’installé, et pour modifier les fichiers, je peux soit travailler directement de la VM, ou encore via FTP directement. Dans mon cas, je préfère travailler par FTP sur mon Macintosh avec TextMate, mais chacun ses préférences.

2. Avec une copie locale, vous êtes en mesure de faire vos modifications. Lorsque vous êtes satisfait, vous faites un svn commit de vos fichiers pour qu’ils soient enregistrés dans votre dépôt SVN.

3. À présent, vous pouvez mettre votre copie de production à jour en une seule commande, soit svn export.

Afin de me simplifier la tâche, je me suis fait un petit script qui fait svn export avec l’url nécessaire et il ne me reste donc plus qu’à simplement appeler le script pour que la mise à jour soit effectuée. Ainsi, plus besoin de jouer avec son FTP pour tout changer, quelques commandes de console et le tour est joué. Dans mon cas, une mise à jour prend environ 10-15 secondes, pour 10 Mo, ce qui est excellent (le dépôt SVN se trouve sur le serveur de production).

Ajouter une image à partir d’une URL distante

J’ai toujours détesté le processus de devoir télécharger une image pour ensuite l’uploader sur mon blog. Deux étapes, c’est toujours beaucoup trop comparativement à une seul. Enfin, j’ai découvert qu’il est possible de télécharger directement les images distantes en insérant l’url lorsque WordPress nous demande l’endroit du fichier “local”.

Programmer en objet PHP

Suite à mon article La programmation orientée objet, je vais vous introduire à la POO (programmation orientée objet) version PHP, ce qui me permettra par la suite de vous en apprendre plus sur la programmation à grande échelle.

Commençons donc par les bases. L’objet en PHP est semblable à celui dans les autres langages: il contient des attributs (variables) ainsi qu’un ensemble de méthodes nous permettant de le manipuler.

Afin de rendre ce texte aussi utile qu’agréable, voici donc un petit objet, qui est en fait une page html:

class Page {
	private $title = '';
	private $content = '';

	public function __construct($title = 'Titre par défaut', $content = 'Je suis du contenu')
	{
		$this->title = $title;
		$this->content = $content;
	}

	public function setTitle($title)
	{
		$this->title = $title;
	}

	public function setContent($content)
	{
		$this->content = $content;
	}

	public function render()
	{
		echo '<html>';
		echo '<head>';
		echo '<title' . $this->title . '</title>';
		echo '</head>';
		echo '<body>';
		echo $this->content;
		echo '</body>';
		echo '</html>';
	}
}

(oui, cette méthode render() est plutôt malpropre, mais pour les bien de la cause, on va souffrir un peu!)
Ainsi, avec cet objet, il m’est possible d’afficher une page HTML dont je peux modifier dynamiquement le contenu ainsi que le titre. Par exemple

$page = new Page();
$page->setTitle('Accueil');
$page->setContent('Ceci est un contenu vraiment intéressant!');
$page->render();

Me permet en 4 lignes d’afficher une page HTML complète (bien sûr il manque quelques tags pour la rendre valide w3c!)

Bon, maintenant voyons ce qui se passe vraiment. Premièrement, on a écrit la définition de notre objet, notre page doit avoir un titre et un contenu. Ce sont nos deux variables privées ($title et $content) car par défaut, un objet veut garder ses attributs (variables) à lui seul. Il en est le seul propriétaire et veut donc être le seul qui peut avoir le plaisir de les modifier. Bien sûr, il est possible de permettre aux autres de modifier ces variables en les rendant publiques, mais pourquoi gâcher le plaisir de notre objet???

Par la suite, on déclare deux méthodes qui permettent de modifier les variables par leur intermédiaire: setTitle($title) et setContent($content). La méthode __construct (débutant en PHP5) est l’équivalent du constructeur en C++. Lorsqu’on fait new Page(), il appelle le constructeur en lui donnant aucun attribut, il se contentera donc d’utiliser ceux par défaut. Finalement, la méthode render() permet l’affichage dans le navigateur du contenu précédemment affecté par les deux méthodes setTitle et setContent.

Pour ceux qui ne comprennent absolument rien de ce qui vient d’être dit, passons en mode ralenti :)

$page = new Page();

Ceci déclare un nouvel objet Page. Pour que PHP puisse utiliser un objet, il faut que celui-ci existe. Donc, en faisant new Page(), on dit à PHP “SVP mon Dieu, crée une Page sans attributs”. PHP, notre Dieu, fait. $page = permet d’attribuer ce nouvel objet à une variable pour le manipuler par la suite.

$page->setTitle('Accueil');

Ici, on dit à notre objet, par l’intermédiaire de la flèche qui signifie que l’on descend dans la branche d’héritage, que l’on veut qu’il exécute sa méthode setTitle avec comme paramètre le texte Accueil. Cela aura pour effet de modifier la variable interne $title de notre objet pour ‘Accueil’.

$page->setContent('Ceci est un contenu vraiment intéressant!');

Comme précédemment, on demande à notre objet d’exécuter sa méthode setContent pour modifier sa variable $content cette fois-ci. On lui attribut le texte ‘Ceci est un contenu vraiment intéressant!’.

$page->render();

Finalement, on demande à notre magnifique objet d’exécuter sa méthode render(), sans argument, qui retourne ses deux attributs formatés pour afficher une page HTML.

On voit donc que la POO en PHP est très similaire à celle en C++ ou autre langage OO. C’est compréhensible … on emploi les mêmes termes pour désigner les mêmes choses, non?

En conclusion, avec ce bref introduction à l’OO, je serais en mesure de vous montrer des scripts qui pourront vous permettre de gagner soit du temps, ou encore d’avoir bien du plaisir à voir la puissance que vous avez entre les mains. Enfin, il suffit seulement de savoir ce que l’on veut faire et comment on va s’y prendre pour y arriver.

Pas de son sur Debian Etch

Modif: Si vous êtes aventurier, vous pouvez installer Debian Lenny (la version suivante de Debian) à partir des repositories actuels et ne pas avoir à vous soucier de ce problème qui devrait être généralement réglé par les drivers intégrés au nouveau noyau (2.6 dans le cas de Lenny alors que Etch utilise encore 2.4).

Bon, j’ai récemment eu quelques problèmes à installer mes drivers audio sur Debian Etch (4.0_r3). J’ai finalement trouvé la solution après quelques temps de recherche. La voici :) (Merci a farrell2k du forum debian.net)

Source: http://forums.debian.net/viewtopic.php?t=26835

1. download the latest alsa drivers from the alsa project site

2. su and become root, then do a uname -r to find your kernel version.

3. then apt-get the appropriate linux-headers. Mine was linux-headers-2.16.18-4-486.

4. cd to the extracted alsa source and run ./configure –with-kernel=/usr/src/linux-headers-2.16.18-4-486 (or whatever yours is).

5. run make…wait, then make install and wait.

6. run alsaconf and pick your card.

7. reboot and adjust volume with whatever mixer.

Categories