Lire des DVD sous Linux

Fervent défenseur du logiciel libre et du monde du libre de manière général, je suis obligé de reconnaître certains de leurs inconvénients quand j’en vois. A leur décharge, la plupart de ces problèmes sont dû à des formats propriétaires.

En l’occurrence, le problème auquel j’ai été confronté était la lecture d’un DVD. Naïf que j’étais, j’ai vite déchanté quand je me suis rendu compte que VLC, le logiciel qui n’a jamais bronché quel que soit le format de fichier que je lui ai donné à manger, n’arrivait pas à le lire.

Quelques recherches m’ont permis de voir que ceci était dû à une librairie non activée de base car servant à faire sauter les protections des DVD. Je n’ai jamais bien compris cet acharnement des maisons d’édition à mettre des DRM partout alors qu’au final, elles ne causent du tort qu’à ceux qui ont légalement acheté le support. Mais ceci est un autre problème.

En tout cas, la librairie nécessaire à savourer son film se nomme libdvdcss. Sous Ubuntu, elle se trouve dans le paquet ubuntu-restricted-extras. Une fois la librairie installée (je recommande d’installer tout le paquet sans se poser de question, je suis sûr qu’il aidera pour lire un autre format propriétaire un autre jour), il va falloir l’activer afin que VLC puisse la prendre en considération. On va donc taper la commande :

sh /usr/share/doc/libdvdread4/install-css.sh

dans un terminal. Un petit redémarrage de VLC si celui ci était ouvert pendant les opérations et nous voilà prêt à sortir toute notre DVDtech dans l’univers du libre. Bon pour les Blu-ray on reviendra, VLC n’a pas encore les autorisations nécessaire à contourner les protections. Merci Sony !!

Réinstallation de mon PC fixe et organisation

Comme j’en avais parlé il y a quelques temps, je viens de finir de réinstaller mon PC fixe afin d’avoir un autre environnement linux que ceux que j’avais déjà. En l’occurrence, j’ai décidé de me faire violence pour utiliser Gnome 3, comme je me fais violence pour utiliser Unity. J’ai donc au départ voulu installer une Fedora afin d’avoir cet environnement de bureau tout en testant une distribution non basée sur Debian. Je voulais voir un peu ce que donnait les rpm et Yum. Après bien des déboires d’installation dû à beaucoup de disques durs et un partitionnement particulier recherché, j’ai fini par avoir ce que je voulais. Cependant, j’ai dû y renoncer au bout de 10 minutes de test. Je ne peux définitivement pas utiliser un OS sans bureau.

Ainsi donc, j’ai réfléchis à quoi installer et je me suis dit que j’allais tester la technique d’Ubuntu avec Gnome 3 au lieu d’Unity. Grand bien m’en a pris puisqu’en suivant cette procédure, on dispose d’un bureau tout à fait fonctionnel malgré Gnome 3.

Me voilà donc avec un double boot Ubuntu avec Gnome 3 et Windows 7. Au niveau des disques durs, j’ai 1 Seagate de 320 Go qui héberge mes OS (100 Go Ubuntu, 4 Go de swap, 216 Go de Windows), 1 Seagate de 250 Go pour du stockage normal et 2 Seagate de 80 Go sur lesquels je comptais mettre en place un RAID 1 pour avoir du stockage un peu plus sécurisé. Le problème de la non disponibilité des données sur les 2 OS est un problème de taille que je cherche toujours à résoudre.

Cette installation fera donc l’affaire jusqu’à ce que Gnome 3 m’énerve définitivement ou que je trouve comment réactiver le bureau sur une Fedora d’origine sans trop de difficultés (ou qu’une Ubuntu avec Mate voit le jour).

Problème lors de l’installation de Windows 7

Lors de ma dernière réinstallation de Windows 7 sur ma mon ordinateur fixe, j’ai rencontré une erreur me disant « Le programme d’installation n’a pas pu créer de nouvelle partition système ni localiser une partition système existante. »

Il s’avère que ce problème est un problème connu et se résout très facilement. Ce message apparaît car le disque dur sélectionné dans le BIOS comme boot n’est pas celui sur lequel on essaye d’installer notre système d’exploitation.

Un petit tour dans le BIOS pour passer en priorité de boot le disque sur lequel on veut installer Windows 7 et le tour est joué.

Ubuntu avec Gnome 3

Après le choix contestable de Canonical d’utiliser son propre environnement de bureau Unity sous Ubuntu au lieu de Gnome, on a vu un exode massif des utilisateurs vers d’autres distributions (j’en ai fait parti). Ils ont depuis légèrement revu leur copie puisque Gnome est revenu dans les dépôts officiel même s’il n’est toujours pas installé de base.

Afin de profiter de nouveau de notre environnement de bureau (même si celui ci a eu le temps de faire des choix bizarre de son côté), il existe deux manière.

La première consiste à aller dans sa console et de taper :

apt-get install gnome-shell

Après installation et un redémarrage, il suffit de choisir Gnome au lieu d’Unity dans LightDM (le remplaçant de GDM) et le tour est joué.

Le deuxième solution consiste à aller sur le site de Gnome et de cliquer sur le bouton correspondant à Ubuntu en bas de la page. Le lien va lancer la Logitèque Ubuntu et il n’y a plus qu’à installer.

Créer une pagination sur WordPress

Je trouve la navigation de base sur WordPress assez fouillis  En effet, passer de page en page pour retrouver un article n’est pas des plus pratique et je voulais pouvoir remonter de plusieurs pages d’un coup sans avoir à modifier l’adresse dans la barre du navigateur.

Ainsi, esprit WordPress oblige, j’ai cherché un plugin qui me permettrait ça. J’en ai trouvé deux que j’ai jugé digne d’intérêt. WP-Paginate et Simple Pagination. Tous les deux facilement configurables, l’étape la plus embêtante était de le intégrer dans la page.

Pour ce faire, il faut aller modifier le style des pages dans le menu Appearance -> Editor de WordPress ou à la main directement dans les fichiers. L’emplacement à modifier va dépendre du thème utilisé. Utilisant le thème TwentyEleven, la fonction d’affichage se trouve dans le fichier functions.php dans la fonction twentyeleven_content_nav. D’autres thèmes utilisent un fichier loop.php.

Afin de ne pas créer de bug si le plugin se trouvait désactivé pour une raison ou une autre, il suffit de rajouter une vérification de présence de la fonction au lieu de remplacer l’affichage. On aura ainsi une fonction qui ressemblera à ceci :

function twentyeleven_content_nav( $nav_id ) {
    global $wp_query;

    if (function_exists('<FONCTION DU PLUGIN>')) {
        <FONCTION DU PLUGIN>();
    }
    else {
        if ( $wp_query->max_num_pages > 1 ) : ?>
            <nav id="<?php echo $nav_id; ?>">
                <h3 class="assistive-text"><?php _e( 'Post navigation', 'twentyeleven' ); ?></h3>
                <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">←</span> Older posts', 'twentyeleven' ) ); ?></div>
                <div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">→</span>', 'twentyeleven' ) ); ?></div>
            </nav><!-- #nav-above -->
        <?php endif;
    }
}

La <FONCTION DU PLUGIN> peut être : wp_simple_pagination pour Simple Pagination ou wp_paginate pour WP-Paginate.

Les deux plugins permettent de faire la même chose avec les commentaires mais cette fonctionnalité m’intéresse beaucoup moins donc je ne l’ai pas mise en place. La procédure reste cependant la même mais dans le fichier comments.php autour des deux lignes contenant les fonctions previous_comments_link() et next_comments_link().

Ma préférence va actuellement à Simple Pagination pour son template de base qui s’intègre mieux dans ma page sans avoir à la retoucher mais les deux barres de navigation sont personnalisables.

Week End Be My App du 5 au 7 Octobre 2012

Je parle assez peu de moi dans mon blog et en tout cas si je le fais c’est pour donner un contexte à une résolution de problème que j’ai eu. Voilà l’article qui marque un changement vu qu’aucun problème ne va être résolu dans cet article. Je ne compte pas devenir un rédacteur de skyblog pour autant mais mon point de vue a quelque peu évolué.

L’évènement qui me fait sortir de ma discrétion à propos de ma vie est un évènement qui m’a réellement marqué et que je recommande à tout développeur / designer / marketer / hacker / IT fan est Be My App. Du vendredi 19H au Dimanche 22H (bien que nous ayons dû partir, plus tôt à cause du trajet Paris – Clermont-Ferrand qui n’est pas anodin), un weekend entier de développement sur le thème du NFC.

Be My App a, d’après ce que j’ai pu voir, des partenaires et une organisation aux petits oignons. Pas moins que JCDecaux, Orange, Intel, BeGeek, FrAndroid, Programmez, FrenchWeb, le Forum des services mobiles sans contact, le blog Avec ou sans contact, Fred Zone, Le blog des nouvelles technologies comme partenaires. Pour ce qui est de l’organisation, un timing parfait, une équipe connaissant son métier et des intervenants tout aussi qualifiés. Tout était fait pour que l’on puisse avoir tout le matériel, les outils et les connaissances à disposition pour travailler. Pour ce qui était des locaux, l’évènement s’est passé à l’IESA multimédia. De la place pour tout le monde, même si les organisateurs eux même n’en attendaient pas autant. Le seul petit détail négatif que l’on peut trouver était la profondeur des tables et leur inclinaison qui bien que très certainement pratique pour des feuilles de papier, s’avéraient un peu juste pour des laptops (d’autant plus pour les 17″). On faisait fie de ce détail assez rapidement cependant.

La première soirée a commencé avec ce que l’on appelait les « pitches » qui correspondent à la présentation des différentes idées proposées par les « porteurs d’idées« . 37 présentations ont été faites à ce moment là et chaque idée était votée par un jury de 5 « mentors« . Ces votes étaient finalement à titre indicatifs et n’influaient pas sur la suite. Ce qui influait était leur délibération qui a eu lieu après et au cours de laquelle 7 projets ont été choisis pour être en compétition pour le prix final. Durant cette délibération, un jeu servant au rattrapage d’une idée était organisé et correspondait à une sorte de sélection du publique. Chaque porteur d’idée allait tenter de collecter des jetons qui avaient été remis à chaque développeur lors de leur arrivé. Les jetons récoltés étaient ainsi comptés et les résultats remis aux mentors. 1 projet supplémentaire était ainsi rattrapé. Une fois les idées sélectionnées lançées, il était possible de rejoindre l’un des groupes ou, comme mes amis et moi avons décider de le faire portés par un très bon designer intéressé par notre idée, de développer son idée en tant que team dissidente.

Les hostilités étaient alors lancées pour une durée de 48H. A nous d’organiser notre temps comme nous le souhaitons pour nous reposer (fort peu) ou nous ravitailler (fort bien et fourni par les organisateurs de surcroît, nous évitant ainsi d’avoir à quitter les lieux et de risquer de nous perdre ou de perdre du temps) pendant le temps imparti. Deux petites pauses étaient prévues le samedi pour, à la mi-journée, faire un checkpoint vidéo puis, en fin d’après-midi, pour faire une sorte d’entrainement à la présentation du lendemain.

Au cours des 48H de code, de nombreuses personnes, plus compétentes les unes que les autres dans leurs domaines, sont venues nous aider à forger notre projet, à trouver les points d’attaque marketing, à étoffer l’idée de base que nous avions afin de, petit à petit, la voir vivre. L’aspect recherche d’un business model systématique a été une grande découverte pour moi. En effet, la plupart des idées que j’ai amené à maturité n’étaient destinées qu’à mon usage personnel ou à être diffusées de manière open source et sans attente de rétribution financière. La manière de monétiser une application mobile était une recherche particulièrement intéressante. D’ailleurs, Be My App va organiser des conférences à ce sujet le Mardi 16 Octobre et je regrette déjà de ne pas pouvoir y participer (Be My App Comment monétiser votre application mobile ?)

Un autre checkpoint vidéo était organisé le dimanche à la mi journée avant l’arrêt du code à 18H. Une légère pause (la plupart du temps la finalisation des slides de présentation) jusqu’à 19H était octroyée puis les présentations finales avaient lieux. Ces présentations étaient faites devant tous les membres du jury et donc étaient intéressantes même pour les team dissidentes puisqu’elles permettaient potentiellement de se faire repérer. En effet, en plus des mentors de la première sélection, un certain nombre de membres liés aux différents sponsors venaient participer aux choix. Ayant dû partir après notre présentation, je n’ai pas tous les détails de la fin des décisions mais ce qui était annoncé était le passage de toutes les team sélectionnées puis le vote des jury pour choisir les gagnants.

En résumé, ce weekend était une expérience particulièrement géniale. L’ambiance était extrêmement chaleureuse et le contact avec les gens était très facile. Ça se sentait que tout le monde était là pour rencontrer des gens et s’éclater. Cela a été aussi l’occasion de voir naître des projets particulièrement prometteurs que l’on verra peut-être en place et prendre en notoriété au fil du temps.

En ce qui concerne ma team, nous avons eu l’occasion de commencer, et presque finir mais maintenant que les 48H sont passées nous pouvons prendre le temps de faire les choses bien, notre projet nommé Hook (NFCard lors de la présentation du Vendredi). Vous pouvez suivre l’avancement de cette application sur les pages facebook et twitter créées à cet effet.

En tout cas comme dit au début, je recommande à toute personne ayant la possibilité de se rendre à ces évènements Be My App d’y aller et j’espère réellement pouvoir y retourner dès que possible. Je félicite encore les organisateurs pour leur travail et la vivacité qu’ils ont su amener à tout le weekend.

PS : Les photos de l’event

Fix a bluetooth connexion on Windows (for a Logitech V470 mouse)

Here’s an article I wrote two times. once in french and once in english. Therefore, I hope to give an answer to that recurrent problem on the internet. I spent a lot of time searching without finding any clear answer.

I had a few weeks ago some problems with my Bluetooth card in my computer. I was encountering constant disconnections no matter which OS i used. To be sure the problem wasn’t due to my mouse controller, i tested with other devices and nothing changed. After a chaotic return at the customer service (the first time my computer had to be in an intern’s hands) my laptop came back functional.

But this morning, a simple boot on my Windows was enough to fail all my communication devices (Wifi, Ethernet, Bluetooth). After a short reboot on Ubuntu to be sure the problem was due to the drivers and not to the devices, I uninstalled every devices with the device manager (Right clic on Computer -> Manage -> (on the left) Device manager -> Right clic on every problematic device -> Uninstall)

Once every driver uninstalled, i rebooted to let Windows use generic drivers. I downloaded then the offical drivers on the Asus website and installed them one by one.

After an other reboot, the Internet connection was back but the Bluetooth still wasn’t functional. I uninstalled an other time the Bluetooth drivers and I rebooted again. The Bluetooth was back but with generic drivers. The connection with my Bluetooth mouse was enabled but wonky and had deconnections.

A last installation of the Bluetooth Driver and a last reboot let me finally have a functional Bluetooth card.

A last problem persisted. The mouse had deconnections like before but the problem wasn’t present on Ubuntu. I had to go in the bluetooth card properties and Right clic -> Properties -> Power managment tab -> Uncheck « Allow the computer to turn off this device to save power ».

After all those annoying steps, here i’m back with my Logitech V470 Bluetooth Mouse connected to my Asus G73JH on Windows 7 with no Bluetooth dongle or other trickery.

Rétablir une connexion bluetooth sous Windows (pour une souris Logitech V470)

Voici un article que je vais écrire deux fois car je le rédigerais une fois en français et une fois en anglais. Je vais faire ceci afin que la réponse à ce problème récurent figure enfin sur internet. J’ai passé de très nombreuses heures à rechercher et n’ai jamais trouvé de réponse claire.

J’ai rencontré il y a quelques temps des problèmes avec la carte bluetooth de mon ordinateur. Il y avait des déconnexions constantes quel que soit l’OS que j’utilisais. Afin d’être sûr que le problème ne venait pas de ma souris, j’ai testé avec d’autres périphériques et le problème restait le même. Après un retour au SAV chaotique (le premier retour avait dû voir l’oeuvre d’un stagiaire) ma machine est revenue fonctionnelle.

Seulement voilà, ce matin, un simple démarrage sous Windows a suffit à ce que tous mes périphériques de communication tombent en panne (Wifi, Ethernet, Bluetooth). Après un reboot sous Ubuntu pour être sûr que le problème venait bien des pilotes et pas du matériel, j’ai désinstallé tous les périphériques à l’aide du gestionnaire de périphériques (clic droit sur Ordinateur -> Gérer -> (Sur la gauche) Gestionnaire de périphériques -> Clic droit sur chaque périphérique problématique -> Désinstaller)

Une fois tous les pilotes désinstallés, j’ai redémarré afin de laisser Windows utiliser des pilotes génériques. Une fois ceci fait, j’ai téléchargé sur le site d’Asus tous les pilotes nécessaires et les ai installés un par un.

Après redémarrage, le bluetooth n’étais toujours pas fonctionnel mais la connexion internet était rétablie. J’ai de nouveau désinstallé le pilote de la carte bluetooth puis j’ai encore redémarré. Là, le bluetooth était rétablit mais avec des pilotes génériques. La connexion de ma souris s’établissait donc mais s’interrompait au bout d’un instant.

Une dernière réinstallation du pilote de bluetooth et un dernier redémarrage m’ont enfin permis d’avoir une carte fonctionnelle.

Un dernier problème persistait encore. La souris se déconnectait comme avant sauf que le problème n’avait pas lieu sous Ubuntu. Il m’a fallut aller dans les propriétés de la carte bluetooth et faire clic droit -> Propriétés -> Onglet Gestion de l’alimentation -> Décocher la case « Autoriser l’ordinateur à éteindre ce périphérique pour économiser l’énergie »

Après ces nombreuses étapes me voilà de nouveau avec ma souris bluetooth Logitech V470 connectée à mon Asus G73JH sous Windows 7 sans dongle supplémentaire ou autre supercherie.

Installer le SDK Android sous Windows avec l’installateur

Lorsque j’ai souhaité installer le dernier SDK Android sous Windows, un problème est survenu. En effet, le SDK était incapable de trouver le JDK pourtant déjà installé. Les recherches sur internet donnaient comme solution de procéder en appuyant sur retour puis suivant. Cela avait l’air de fonctionner avec beaucoup de personnes. Cependant, ceci ne m’a pas permis de résoudre mon problème.

J’aurais pu contourner ceci en dé-zippant juste la version compressée mais je voulais la version de l’installateur.

La solution a finalement été d’ajouter une variable d’environnement JAVA_HOME. Pour ce faire, il suffit de faire un clic droit sur Ordinateur -> Propriétés -> (Sur la gauche) Paramètres Système avancés -> (En bas) Bouton « Variables d’environnement … » -> (En bas) Bouton « Nouvelle… » -> Nom de la variable : JAVA_HOME et valeur de la variable : Adresse de l’emplacement du JDK.

Une fois cette variable ajoutée, relancer l’installateur et tout se passera bien.

On peut aussi, si l’on veut, ajouter l’emplacement du SDK Android au Path global de Windows afin d’accéder aux commandes directement depuis la console. Il suffit de faire pareil qu’au dessus sauf qu’on modifie la variable nommée « Path« , et on y ajoute à la fin l’emplacement de l’installation précédé d’un point-virgule.

Installer Java sous Linux et l’ajouter au Path de l’interface graphique

Je suis un utilisateur de Java depuis quelques années maintenant et malheureusement, depuis le passage à la version 7, il n’y a plus d’installateur automatique pour les versions autres que RPM (gageons que ce soit temporaire). Voici donc la procédure pour avoir un Java fonctionnel et facilement upgradable par la suite.

Tout d’abord, il faut commencer par télécharger le JDK et le JRE qui nous intéresse sur la page officielle de Java. Il faut bien sûr prendre la version tar.gz et pour ma part je prend la version 64bits. Je me retrouve donc avec les fichiers :

jre-7u7-linux-x64.tar.gz
jdk-7u7-linux-x64.tar.gz

Je créé ensuite un dossier java dans le dossier /opt/ puis y déplace le JDK et le JRE à installer à l’aide des commandes :

mkdir /opt/java
mv jre-7u7-linux-x64.tar.gz jdk-7u7-linux-x64.tar.gz /opt/java/

On décompresse ensuite les deux archives puis on les renomme respectivement en jre et en jdk :

tar -xzf jdk-7u7-linux-x64.tar.gz
tar -xzf jre-7u7-linux-x64.tar.gz
mv  jdk1.7.0_07 jdk
mv  jre1.7.0_07 jre

Il ne reste plus qu’à enlever les deux fichiers d’archives et on a les fichiers d’exécution de Java à leurs places définitives. L’avantage de cette mise en place est qu’il n’y aura qu’à remplacer les fichiers à l’intérieur des dossiers jdk et jre par les nouvelles version de Java. Ce sera ainsi le seul changement qu’il y aura à apporter par la suite pour mettre à jour sa version.

Maintenant qu’on a des emplacements de Java suffisamment génériques pour résister aux changements de versions, il faut les inclure au PATH. Il y a plusieurs solutions en fonction de ce que l’on désire mettre en place. Pour ma part, je voulais inclure Java partout (sous entendu y compris dans l’interface graphique) afin que les programmes qui en ont besoin le trouve facilement. De plus, ceci me permet de lancer facilement mes programmes sans mettre la direction absolue de mon installation.

Je vais maintenant détailler différentes possibilités d’installation :

  • La première permet d’ajouter Java au PATH console d’un seul utilisateur. Il suffit pour ce faire de rajouter les lignes :
export PATH=$PATH:/opt/java/jdk/bin:/opt/java/jre/bin
export JAVA_HOME=/opt/java/jre/bin

à la fin du fichier .bashrc de l’utilisateur.

  • La deuxième permet d’ajouter Java au PATH console de tous les utilisateurs du système. Il suffit de rajouter les même lignes qu’au dessus mais dans le fichier : /etc/bash.bashrc
  • La dernière, et celle que j’ai utilisé, permet de modifier le PATH de tout le système. Elle consiste à modifier le fichier /etc/environment. On modifie la ligne PATH et on rajoute une variable JAVA_HOME au fichier de cette manière :

PATH= »/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/java/jdk/bin:/opt/java/jre/bin »
JAVA_HOME= »/opt/java/jre/bin »

De nombreux détails sur les variables d’environnements et leurs utilisations sont présentes sur les pages officielles d’Ubuntu.

Après un simple redémarrage de l’ordinateur, les configurations seront prises en compte. Nous voici donc avec un Java facilement upgradable utilisable partout.