Styles

jeudi 14 juillet 2011

Linux - Comment convertir des vidéos MP4 (YouTube, DailyMotion...) en MP3 en leur appliquant un gain normalisé à 89dB (ReplayGain)

Les sites d'hébergement de vidéos comme YouTube ou Dailymotion contiennent un grand nombre de vidéos correspondant à de la musique : soit des clips vidéo, soit uniquement la musique et des photos statiques en guise de vidéo. Il peut être intéressant de récupérer la musique de ces vidéos et d'en faire des fichiers audio pour les écouter sur votre lecteur audio préféré.

Tout d'abord il faut télécharger les vidéos de YouTube ou Dailymotion sur votre disque dur au format MP4. Pour cela vous pouvez utiliser les nombreuses extensions de votre navigateur préféré vous permettant de faire cela. Sous Firefox, j'utilise Video Download Helper. Sous Chromium, j'utilise Easy YouTube Video Downloader.

Attention à ne pas utiliser le nom de fichier d'enregistrement par défaut proposé par ces extensions car il y a souvent des caractères spéciaux qui ne sont pas forcément supportés par votre système de gestion de fichier.

Dans le cas de Easy YouTube Video Downloader, le nom de fichier par défaut contient en premier caractère, un caractère spécial invisible à l'oeil nu mais pourtant bien présent (je le vois avec Dired sous Emacs). Pour être sûr de ne pas avoir de problème, renommez ENTIÈREMENT le fichier. Dans XFCE Thunar par exemple, sélectionnez le fichier et faites la combinaison de touches suivante : F2 Ctrl-a Suppr. Puis saisissez votre nom de fichier.

Vous êtes sous Linux Ubuntu, vous voulez convertir un ensemble de fichier vidéo MP4 provenant de YouTube ou Dailymotion, en fichier audio MP3. Vous voulez aussi que le niveau sonore de vos MP3 soit normalisé à 89dB tel que défini par ReplayGain.
Cette normalisation est importante pour éviter de devoir monter ou baisser le niveau sonore de votre lecteur de MP3 à chaque changement de morceau.

Tout d'abord, installez les modules suivants via le Gestionnaire de Paquets Synaptic :

- ffmpeg
- sox
- libsox-fmt-all
- mp3gain

Ensuite, créez vous un fichier MP4toMP3 avec le contenu suivant :

#!/bin/sh
for i in *.mp4; do
echo "$i"
ffmpeg -i "$i" -vn -acodec copy "${i%mp4}m4a"
sox "${i%mp4}m4a" "${i%mp4}mp3"
rm "${i%mp4}m4a"
mp3gain -c -r "${i%mp4}mp3"
done


Donnez les droits d'exécution à ce fichier :
chmod a+x MP4toMP3

Et voilà ! Placez vous dans le répertoire qui contient vos MP4 et lancez ce fichier de script MP4toMP3. Le script va convertir tous les fichiers MP4 du répertoire en MP3 et appliquer un gain normalisé à 89dB (ReplayGain).

Attention, il s'agit bien de l'application du gain sur tout le fichier, pas du stockage d'un "tag" REPLAYGAIN dans le fichier MP3. Comme cela, le fichier a le même niveau sonore quelque soit le lecteur MP3, même si ce dernier ne supporte pas la norme ReplayGain.

Vous pouvez maintenant lire tous ces fichiers audio avec votre lecteur MP3 préféré.

vendredi 1 juillet 2011

Apache Ant/Ivy versus Maven : Quel outil de construction maîtriser sur le long terme ?

Un projet démarre toujours un peu dans l'euphorie, et bien souvent dans le stress dès la première minute où vous vous rendez compte que vous êtes en retard sur les échéances dès la réunion de lancement du projet avec votre client.

Dans ces conditions, il est déjà intéressant d'avoir dès le début du projet, un squelette d'application "vide" mais "fonctionnant", du code et tout son outillage (son attirail) s'exécutant sans aucune fonctionnalité particulière.

On veut tous passer du temps à ajouter des fonctionnalité à un logiciel, pas perdre son temps à mettre en place une architecture standardisée comme Oracle Java EE par exemple. L'avantage d'un tel standard est de proposer des briques et des protocoles standards pour la plupart des applications d'entreprise : une couche présentation (JSF, Struts), une couche métier (EJB3), une couche de persistance (JPA2), des modèles de conceptions tout prêt à être utilisés (Java blueprints), etc.

Ce qui fait que pour la plupart des applications d'entreprise, c'est à dire de gestion de l'information, il n'y a même plus à concevoir quoique ce soit : il ne reste plus qu'à programmer les règles métier et le fonctionnel. Il s'agit d'ailleurs de plus en plus de "configuration" ou de "génération" des composants standards et outils "sur étagère" plutôt que de "programmation" proprement dite.

C'est à la fois une bonne chose (la réutilisation se généralise) et une moins bonne chose pour l’ingénieur en informatique: la conception devient un art mineur et rare dans le monde de l'entreprise. Ce qui a pour conséquence d'offrir de plus en plus de travail à des techniciens et analystes métiers, plutôt qu'à des ingénieurs. Architecte Java ne veut maintenant plus rien dire si ce n'est pour désigner quelqu'un qui connait l'architecture standard Java et sait la mettre en place. Ce n'est plus quelqu'un qui conçoit, mais quelqu'un qui applique. Un architecte logiciel à proprement parlé n'est et ne doit pas être lié à des standards : il doit être capable de définir l'architecture adéquat à un besoin donné en respectant toutes les contraintes qualités qu'on est en droit d'attendre aujourd'hui d'une application logicielle.

Dans ce contexte, il est important de maîtriser à fond quelques outils qui seront présents quelque soit le type de logiciel. Il s’agit de tous les outils de développement : EDI, outils de construction, outils d’analyse de la qualité du code, outils de tests du code, outils de gestion des versions, d’intégration continue. Il est intéressant de passer du temps à maîtriser complètement ces outils, car ils ne seront pas remis en cause dans une dizaine d’année.

Pour ma part, dans le monde Java, je me suis concentré sur les outils suivants : Apache Ant et Ivy, JUnit, Checkstyle, PMD, Jenkins et les bibliothèques standards de la version Java SE.

De plus, j’essaie de maîtriser complètement mon EDI préféré : Emacs.

Par contre, même des technologies dites standards, ne le seront plus au bout de 5 ans, comme par exemple les technologies suivantes qui sont devenus obsolètes :

- toute la couche client de Java SE (AWT, Swing, Java Sound, Java2D, Applets, ImageIO, Accessibility) est maintenant remplacée par JavaFX 2.

- toutes les vieilles couches serveur sont obsolètes : EJB 1 et 2 remplacées par EJB3, les anciennes version d’hibernate remplacées par JPA, même Spring devient obsolète face à JSR-330 (supporté par Spring après coup via des astuces) et de nouveaux frameworks qui suivent cette nouvelle norme comme par exemple Google Guice.

Et bien sur, tout ça sera à revoir dans 5 à 10 ans. Ce qui fait tout drôle aux nouveaux venus dans le monde de l’entreprise informatique, c’est qu’ils vont être confronté à de nombreuses applications qui n’auront même pas franchi le gouffre entre Java 1.4 et Java 5. De nombreuses applications Java peuvent maintenant être appelées des « application legacy » au même titre que des applications codées en Cobol.

Il faut donc s'attendre à tout et maîtriser des outils suffisamment souples, extensibles et personnalisables pour s'adapter à tout type de situation. Ce qui ne va pas dans le sens des outils qui se basent surtout sur des "conventions" plutôt que sur de la configuration, comme par exemple Maven qui structure déjà un projet Java.

Dès que vous sortez de la convention et du comportement standard des plugin Maven, vous allez devoir hacker un plugin Maven pour vous adapter à votre contexte projet. Maven est intéressant pour démarrer un projet rapidement mais dès qu'un projet se complexifie, il y aura toujours des tâches très spécifiques et "tordues" à accomplir. C'est le propre d'un projet qui a son identité propre : si ce n'était pas le cas, ce ne serait pas un projet de développement, mais uniquement un projet de génération de code ou d'installation de composants sur étagère.

Mon vécu sur les outils Ant/Ivy et Maven m'a appris que Ant, par sa simplicité, sa personnalisation, son extensibilité et sa simplicité permet de survivre à des projets complexes et historiquement chargés. Maven, (considéré par certains comme l'EJB2 des outils de construction) permet de démarrer rapidement des projets complets sans avoir à se poser trop de questions sur comment est construit réellement le logiciel. Mais avec le temps qui passe, on est toujours confronté à ces questions précises sur ce qui se passe réellement en arrière plan, et comment changer ces détails.

Bref, Maven me semble aller dans le sens inverse du principe KISS. De plus Ant/Ivy est aussi "puissant" et générique qu'on le souhaite si on passe ne serait-ce que le temps d'un seul livre, à apprendre ce qu'il est capable de faire :

Ant In Action est un bon livre sur Apache Ant/Ivy et va jusqu'au bout de la logique de Ant pour montrer qu'on peut tout faire avec et ce en faisant un minimum d'adhérence aux spécificités d'un projet. J'ai adoré construire de bout en bout un fichier build très simple mais très puissant et surtout très lisible : je suis capable de faire tous les types de traitement que je souhaite et réutiliser mon fichier build.xml dans chacun de mes projets.

samedi 25 juin 2011

Digital Transmission Content Protection sur Wikipedia Français

J'essaie régulièrement de soumettre des articles en Français à Wikipedia dans les domaines que je connais. Je viens de créer aujourd'hui la page Digital Transmission Content Protection, mécanisme de protection du contenu diffusé sur des appareils multimédias notamment par un protocole comme DLNA. Cela sert notamment dans le domaine de l'IP TV.

vendredi 20 mai 2011

Comment apprendre quelque chose le plus rapidement possible ?

Quelle est la seule et unique manière d’apprendre quelque chose dans ce bas monde ? La pratique. Seule la pratique permet d’acquérir au plus profond de soi les éléments d’un domaine de compétence particulier.

La pratique passe par l’exécution d’exercices. Dans ce contexte, les formations doivent se baser principalement sur les exercices plutôt que de long discours théoriques. La théorie s’assimile par la pratique, et on peut très bien introduire les nouveaux concepts au fur et à mesure, chaque exercice mettant en œuvre les éléments acquis dans le passé et 1 ou 2 nouveaux éléments à acquérir.

Un livre électronique pour l’apprentissage du langage Python reprend ces principes et propose de passer par une série d’exercices plutôt que de faire l’énoncé de toutes les particularités du langage. Il s’agit de Learn Python the Hard Way. Cela semble vraiment la manière la plus efficace et donc la plus rapide pour « apprendre » à programmer en Python.

L’auteur conseil de ne pas faire de copier/coller car un des éléments essentiels d’un programmeur est de savoir taper sur son clavier. C’est évident, mais c’est finalement un des secrets de la productivité : savoir taper à la machine et puis aussi : maitriser ses outils de développement.

mercredi 16 mars 2011

Comment exécuter du code par projet dans Emacs

Pour personnaliser Emacs, les emacsiens que nous sommes ont l'habitude de mettre toute notre personnalisation dans le fichier ~/.emacs sans même avoir besoin de structurer ce fichier. Or j'ai besoin de gérer une configuration particulière par projet, le terme projet correspondant ici à un ensemble cohérent de fichiers permettant de produire un certain nombre de livrables clairement identifiés (un peu comme le fichier build.xml pour Apache Ant).

Dans Emacs, il existe quelques fonctions bien pratiques pour faire cela. Par exemple, j'ai besoin de définir localement et de façon spécifique selon le fichier ouvert, certaines variables comme la variable compile-command pour un projet écrit un python. Je veux une configuration bien particulière pour ce projet. Pour cela, j'utilise les Variables de Répertoire et met le code suivant dans mon .emacs :
(dir-locals-set-class-variables 'python-dev
'((python-mode . (
(eval .
(set
(make-local-variable 'compile-command)
(concat "python " (buffer-file-name))))))))

(dir-locals-set-directory-class
"c:/Users/jrx/src/tests/" 'python-dev)
Je construit la variable locale compile-command avec le nom du fichier affiché dans le buffer. Cela marche pour tous les fichiers qui sont dans le répertoire défini par l'instruction dir-locals-set-directory-class et tous ses sous-répertoires. On peut bien sûr imaginer sortir les instructions set, make-local-variable dans une fonction à part histoire de clarifier les choses.

On peut aussi créer des fichiers .dir-locals.el dans chaque répertoire que l'on veut personnaliser, mais je n'aime pas trop ça parce qu'on se met à écrire dans un répertoire projet des fichiers qui n'ont rien à voir avec le projet en soi. Et puis, il peut y avoir des répertoires où on n'a pas les droits en écriture.

samedi 12 février 2011

Gérer une équipe comme on devrait enseigner les mathématiques

Qu'est-ce qui est vraiment au fondement même de l'informatique ? D'où viennent les véritables progrès de cette discipline ? L'informatique paraît encore jeune et beaucoup de nouveautés apparaissent mais est-ce vraiment des innovations ou de simple créations ?

La plupart des choses qu'on appelle nouveauté en informatique, ne sont en fait que de nouvelles créations sans originalité fondamentale : un nouveau framework Web, de nouvelles librairies performantes, des nouveaux langages pour dire toujours la même chose.

Les véritables nouveautés en informatique ne viennent que d'une seule source : les mathématiques. On a beau chercher recréer des centaines de fois la roue, ce n'est toujours qu'une roue, et un framework Web est toujours un framework Web. La science informatique (computer science) est la branche des mathématiques qui a pour seul objectif le progrès et la nouveauté.

Or les mathématiques sont souvent mal perçues, car plus considérées comme un moyen de sélection à l'école plutôt que l'outil parfait pour la résolution des problèmes. La justification de l'apprentissage de certains concepts en mathématique à l'école est uniquement basée sur le fait que l'élève en aura besoin pour les classes supérieures. Mais comment faire comprend à un gamin qu'il faut qu'il s'intéresse et s'investisse dans les mathématiques uniquement parce qu'il risque d'utiliser ce savoir dans 2 ans ? Un peu de psychologie enfantine fait aisément comprendre que ça ne peut pas le motiver.

Ce qui motive le plus, c'est de résoudre des problèmes pratiques pour lesquels l'élève peut se sentir investi d'une responsabilité ou d'une curiosité naturelle. Les cours de mathématiques pourraient être adapté pour proposer à l'élève un apprentissage progressif en poussant l'élève à se poser les bonnes questions et demander au professeur des outils pour l'aider à résoudre son problème.

Une très bonne (et très belle en plus) réflexion sur le sujet est la présentation Math is not linear du professeur de Mathématique Alison Blank. Faire toucher du doigt aux élèves ce qui est intéressant dans les mathématiques est vraiment une tâche primordiale d'un professeur. Dans l'idéal le professeur ne fait qu'aider les élèves en leur offrant des problèmes intéressants, en provoquant des questions qui poussent à réfléchir, en donnant, quand le besoin se fait sentir les outils nécessaires pour la résolution des problèmes.

Le parallèle peut être fait avec les personnes en charge de gérer une équipe. Le plus important pour un gestionnaire est de savoir faire fonctionner une équipe, déléguer sans imposer un diktat qui n'aurait pour conséquence que la démotivation. Le mieux en tant que chef d'un projet est de savoir poser les bonnes questions et les bons problèmes pour que chaque membre de l'équipe propose leur propres solutions et prennent volontairement leurs responsabilités. C'est ici que l'expérience du chef de projet est primordiale car il doit savoir détecter dans toutes les solutions ou propositions, les problèmes à venir, les manques éventuels, et doit pouvoir mettre en perspective les solutions vis à vis des objectifs du projet (périmètre, délais, coûts, qualité, communications, ressources, risques et achats).

Mais le chef de projet doit résister à la tentation de dire ce qu'il faudrait faire, même s'il a une idée précise de la solution. Si sa solution est la meilleure, elle réapparaitra d'elle même dans les réponses des membres de l'équipe. Le chef de projet sera souvent surpris du fait que sa solution n'est finalement pas toujours la meilleure.

samedi 5 février 2011

Comment bien utiliser OpenID

L'enfer est pavé de bonnes intentions, c'est bien connu. OpenID est une bonne intention qui, si vous ne la maitrisez pas, vous rendra la vie infernale. J'ai eu la douloureuse occasion de m'en rendre compte récemment quand j'ai décidé d'attribuer un vrai nom de domaine (www.jeromeradix.com) à mon blog ici présent (jradix.blogspot.com). Mal m'en a pris ! J'avais naïvement cru que tout cela se passerait sans douleur, c'est tout l'inverse qui se passa.

Ce blog étant porté (à la date de ce billet) par blogger.com, je profite automatiquement d'un système de consolidation des autorisations pour l'identifiant OpenID du blog : http://jradix.blogspot.com/

J'ai utilisé cet identifiant OpenID dans de nombreux sites web. Résultat : tous ces sites Web me connaissent en tant que jradix.blogspot.com, pas en tant que jeromeradix.com ! Quand j'ai associé mon nouveau nom de domaine à mon blog, j'ai n'ai plus eu aucune possibilité de me connecter sur tous les sites utilisant mon OpenID jradix.blogspot.com.

Le seul moyen de retrouver mes comptes sur les sites Web est donc de passer par ce processus très fastidieux :
  1. remettre mon blog sur jradix.blogspot.com
  2. me connecter en OpenID jradix.blogspot.com sur le site Web duquel je veux changer/ajouter l'openID jeromeradix.com
  3. une fois connecté, je remets mon blog sur jeromeradix.com
  4. je demande ensuite au site de modifier l'OpenID de mon compte (ou ajouter un nouvel OpenID) pour utiliser jeromeradix.com
  5. le site me demande alors de saisir le nouvel OpenID du compte (jeromeradix.com) et essaye d'authentifier cet ID
  6. je suis redirigé sur la page blogger.com d'autorisation d'accès au site pour mon OpenID jeromeradix.com
  7. le site met alors à jour l'OpenID du compte dans sa base de données.

On voit bien ici, les limites d'un tel processus. Si vous avez une centaine de sites Web sur lesquels vous avez un compte associé à votre OpenID, il va falloir aller sur chacun de ces sites et recommencer l'opération.

Heureusement, je n'ai pas un grand nombre de comptes protégés par OpenID, utilisant plutôt Keepass pour générer/stocker mes mots de passe. Keepass limite le risque de se faire voler ses comptes car vous pouvez avoir un mot de passe fort différent pour chaque compte. Si un de vos comptes est compromis pour je ne sais quelle raison (malveillance interne au site Web suite à la démission d'un prestataire furieux, ... ces choses arrivent plus souvent qu'on ne veut bien le croire ! regardez Wikileaks...) seul ce compte est perdu, les autres restent sécurisés car ils n'ont pas le même mot de passe.

Avec OpenID, vous centralisez l'accès à tous vos comptes sur tous vos sites Web. Si par malheur, votre compte OpenID est perdu, vous perdez tous vos comptes sur tous les sites en même temps. Tout cela sans parler du risque de Phishing inhérent à OpenID, ou de la nécessité impérieuse aujourd'hui de réduire votre dépendance et promouvoir votre indépendance...

Pour celui qui veut encore utiliser OpenID, de bonnes pratiques s'imposent donc à lui malgré tout :

- Définir un ID OpenID sur son propre nom de domaine : cela veut dire acheter un nom de domaine et héberger une page contenant deux balises <link> dans le <head> :
<link rel="openid.server" href="http://www.blogger.com/openid-server.g"></link>
<link rel="openid.delegate" href="http://jradix.blogspot.com/"></link>

La première ligne indique le serveur dans lequel vous stocker vos autorisations OpenID (pour moi, c'est le serveur blogger.com). La deuxième ligne indique quel est le compte OpenID sur ce serveur d'autorisations qui doit être utilisé pour représenter par délégation votre OpenID. J'ai mis ça dans la page correspondant à www.jeromeradix.com.

- S'enregistrer sur tous les sites Web avec l'OpenID correspondant à votre nom de domaine : pour moi, je me connecte maintenant avec l'OpenID : http://www.jeromeradix.com/

Ainsi, grâce à ça, vous n'êtes plus dépendant de votre fournisseur de service OpenId, ni de l'hébergeur de votre site Web. Vous pouvez très bien changer les deux et toujours retrouver vos comptes sur les différents sites sur lesquels vous vous êtes enregistré en OpenID.

Pour plus d'information, consulter la page Using your own URL as your OpenID.

La leçon de tout ça, est de savoir de qui vos comptes dépendent : de votre fournisseur de nom de domaine ? de l'hébergeur de votre site Web ? du service OpenId qui héberge vos autorisations ? de votre carte de crédit qui a déjà expirée et qui est pourtant la seule qui est enregistrée chez votre fournisseur de nom de domaine ?

A peser le pour et le contre, je pense que je vais préférer gérer mon compte/mot de passes avec Keepass et me faire personnellement des backups comme nous décrit très bien jwz.

A noter aussi que des doutes et des abandons apparaissent aussi chez les promoteurs de la première heure de l'OpenID.

samedi 29 janvier 2011

Comment créer un flux RSS à partir de n'importe quelle page Web

Le service StackOverflow.com a cela de magnifique qu'il permet de faire émerger de l'ensemble vague et indistinct des interrogations que se posent les informaticiens entre eux, les meilleurs questions et les meilleures réponses à celles-ci. Nombreuses sont, pourtant les questions sans intérêts ou trop particulières pour être bénéfique aux lecteurs curieux. La plupart du temps ces questions trouvent leur réponse dans les manuels de référence en ligne de chaque outil. Un simple RTFM suffirait, mais, bonté de la nature humaine, des âmes charitables prennent le temps de former les nouveaux venus à l'informatique. C'est aussi et surtout pour faire monter leur compteur de réputation. Ce n'est pas un mal en soi de pouvoir conjuguer vanité des uns et ignorance des autres et qu'en jaillisse une vérité.

Tous les sujets imaginables sont abordés, il faut donc s'exercer à rechercher finement ce qui est intéressant pour soi-même sans être submergé par des questions qui ne nous concerne pas. L'outil de recherche de stackoverflow est puissant, il permet de faire une recherche par tag (en saisissant [python] par exemple), de ne choisir que les questions qui ont un nombre de votes supérieur à une valeur (par exemple vote:5), etc. La FAQ sur les options de recherche est ici la bienvenue.

Pour pouvoir m'instruire à parler couramment le python, j'ai entrepris de consulter régulièrement les meilleurs questions et réponses concernant ce langage. Pour ce faire, stackoverflow.com ne permettant pas d'avoir de flux RSS correspondant à une recherche particulière, je me suis construit mon propre flux RSS grâce à l'outil en ligne feed43.com. Ce service permet de récupérer le code source d'une page web et d'en extraire du contenu grâce à des modèles de correspondance (matching patterns). On peut ensuite mettre en forme ce contenu dans un flux RSS qu'on pourra réutiliser dans n'importe quel lecteur de flux RSS. Feed43.com va régulièrement consulter la page Web en question et va mettre à jour le flux RSS en conséquence. Et voilà, on a donc les moyens de créer des flux RSS pour n'importe quelle page/service du web qui n'en propose pas.

Par exemple, je me suis créé un flux RSS rassemblant de bonnes questions (votes >= 5) sur python ([python]) ayant une réponse acceptée par l'auteur de la question (hasaccepted:1) et n'étant pas fermée pour diverses causes (closed:0). Dans feed43.com, j'ai configuré le flux de cette manière :
Je peux maintenant avoir dans mon lecteur de flux RSS préféré, les meilleures questions python avec réponse.

Grâce à feed43 je me suis constitué quelques flux RSS à partir de sites web qui n'en proposent pas, notamment pour analyser des résultats de recherche sur pajemploi (pour avoir les changements dans les salaires minimum en vigueur), sur ZDnet (pour n'avoir que les news Open Source)... Ce service est bien sûr dépendant des modifications des pages consultés : votre flux ne marchera plus si les pages scrutés ont été refondues.

samedi 22 janvier 2011

Comment s'arrêter en plein milieu d'une installation Linux Gentoo

Malgré les aléas que j'ai eu à subir dans le passé avec Gentoo, je me suis mis en tête de lui redonner encore sa chance avec un autre de mes vieux PC, un ordinateur portable Turion64 / 512 Mo de mémoire.

M'étant converti à cette nouvelle religion qu'on appelle Python, j'apprécie d'autant plus Gentoo Portage, système de gestion de paquets codé en ce langage.

Le manuel Gentoo est complet et décrit chaque étape de l'installation. Il n'y a pas d'installateur ("installer" pour les anglicisants) proprement dit comme on peut avoir l'habitude sur les autres distributions Linux ou *BSD : chaque étape est manuelle. On amorce ("boot") l'ordinateur sur un CDROM Gentoo minimal, et grâce aux quelques commandes de base disponibles, on installe petit à petit des partitions, des systèmes de fichiers, le réseau, le système portage...

Chaque étape est manuelle, ça à l'avantage de permettre une configuration personnalisée pour chaque élément du système. De plus, on apprend beaucoup plus facilement à repérer ce qui constitue votre système et où sont placés les principaux fichiers de configuration.

Un désavantage de cette méthode c'est que vous ne pouvez pas lancer l'installation et attendre que ça se finisse complètement à la fin. Vous devez passer par chaque étape manuellement. Pour réaliser une installation propre de Gentoo, en prenant en compte le temps qu'il vous faut pour adapter la configuration à vos besoins et votre ordinateur, il vous faudra environ une demi-journée. Et puisque rien n'est automatisé, soit vous faites l'installation de bout en bout, soit vous êtes contraints pour les autres aspects de votre vie (vie familiale, besoins naturels...) de cesser toute activité. Dans ce dernier cas, je conseille de faire au moins toutes les étapes jusqu'au changement de la racine du système ("chroot").

Après ça, vous pouvez vous arrêter quand bon vous semble et arrêter votre ordinateur, par un "halt" ou un "reboot" par exemple. Quand vous voudrez continuer votre installation, vous n'aurez plus qu'à amorcer sur le CD, et réaliser les quelques opérations suivantes :

# Montez toutes les partitions de votre nouveau
# système sur les répertoires adéquats, par exemple :
mount /dev/hda5 /mnt/gentoo
mount /dev/hda7 /mnt/gentoo/var
mount /dev/hda8 /mnt/gentoo/tmp
mount /dev/hda9 /mnt/gentoo/usr
mount /dev/hda10 /mnt/gentoo/home

# Activez le swap sur la partition de swap de votre
# nouveau système
swapon /dev/hda6

# Montez les répertoires proc et dev
mount -t proc none /mnt/gentoo/proc
mount -o bind /dev /mnt/gentoo/dev

# Changer la racine du système en cours
chroot /mnt/gentoo /bin/bash
env-update
source /etc/profile
export PS1="(chroot) $PS1"

Et voilà, vous pouvez maintenant reprendre le cours de votre installation manuelle Gentoo là où vous l'aviez laissée avant d'arrêter votre ordinateur.

jeudi 20 janvier 2011

Le langage de programmation le plus en vogue en 2010

Il semblerait que je sois un être moyen puisque je suis la tendance au plus près : il y a quelques mois, je passais de mon langage favori, Perl, à un nouveau language favori : Python. Il s'avère que nombreux sont ceux qui font ce même chemin. C'est notamment ce que montre l'index TIOBE des languages les plus utilisés dans le monde. TIOBE vient d'attribuer une distinction à Python : Meilleur langage de 2010 :

En effet, Python est le langage qui, en 2010, a le plus progressé en terme de nombre d'utilisateurs et de part de marché. Il est même passé devant C#. On peut noter que PHP est juste au dessus mais est plutôt dans une tendance baissière. Les personnes à TIOBE note bien que ce sont beaucoup de mongeurs de perl qui se sont converti à Python :

"Python est devenu le standard "de facto" pour le scripting système (étant en cela, un successeur de Perl), mais il est utilisé pour beaucoup plus de types d'application différents aujourd'hui. [...] Comme Python est facile à apprendre, de plus en plus d'universités utilisent Python pour enseigner les languages de programmation"

mercredi 19 janvier 2011

Un greffon de recherche Firefox pour les manuels Linux

N'ayant pas trouvé de greffon Firefox de recherche intéressant sur les manuels Linux, je me suis construit le greffon linux-die-net.xml suivant à mettre dans C:\Program Files\Mozilla Firefox\searchplugins :
<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
<ShortName>Linux Manuals</ShortName>
<Description>Linux Manuals on linux.die.net</Description>
<InputEncoding>UTF-8</InputEncoding>
<Url type="text/html" method="GET" template="http://www.die.net/search/">
<Param name="q" value="{searchTerms}"/>
<Param name="sa" value="Search"/>
<Param name="ie" value="UTF-8"/>
<Param name="cx" value="partner-pub-5823754184406795%3A54htp1rtx5u"/>
<Param name="cof" value="FORID%3A9"/>
<Param name="siteurl" value="www.die.net%2Fsearch%2F#914"/>
</Url>
<SearchForm>http://linux.die.net/</SearchForm>
</SearchPlugin>

Relancer Firefox et il doit maintenant être disponible dans votre liste des moteurs de recherche.