Bye bye Ubuntu Bonjour Debian

English: Debian GNU/Linux 6.0 ("Squeeze&q...

English: Debian GNU/Linux 6.0 (« Squeeze ») with GNOME. Polski: Debian GNU/Linux 6.0 (« Squeeze ») z GNOME. (Photo credit: Wikipedia)

 

Utilisant Ubuntu depuis 2006, j’ai pu constater les changements de la distribution au fil du temps. Si au début le bureau était celui de GNOME certes simple, mais très rapide pour la bête de course que j’avais, il s’est transformé au fur-et-à-mesure des mises à jours (tous les 6 mois) en devenant plus beau, plus sexy et plus gourmand en ressource.

 

Aussi lorsque mon PC portable est revenu à la vie, je me suis empressé de mettre à jour Ubuntu 9.10 vers son remplaçant au goût du jour. Les difficultés d’installations ont alors commencé. Ne disposant pas de lecteur optique fonctionnel, je me tourne donc vers une installation par clé USB. Un bug empêche alors l’installation du gestionnaire de démarrage GRUB sur le disque dur. Pour le contourner l’utilisation de l’ISO d’installation « alternate » me permit d’effectuer une installation en mode texte (semi-graphique). Enfin une Ubuntu récente ! J’ai préféré la 12.04 qui est une LTS dont le support va jusqu’en 2017. Au fil du temps Canonical (la société qui est derrière Ubuntu) a réduit la durée de support de ces produits non LTS. Cela ce comprend car avec le rythme de sortie des versions, une tous les 6 mois, cela fait beaucoup de version à maintenir. Ne souhaitant pas faire de mise à jour de version tout les 6 mois, l’utilisation d’une LTS est pour moi obligatoire, d’autant plus que les non LTS ont une durée de support de 9 mois seulement. Autant dire qu’une on LTS n’est pas destinée au grand public.

 

Une fois Ubuntu installé sur vieux portable, je commence à jouer avec en installant un bon vieux Netbeans. Je remarque alors des artefacts d’affichage qui n’est corrigé par aucune des différentes version disponibles du pilote graphique. Par ailleurs le bureau très beau devenait inutilisable à cause de ces bugs graphiques. C’est alors que je me suis dit pourquoi pas revenir à un OS reconnu pour sa stabilité et ayant un long historique ou pourquoi pas une distribution vraiment libre estampillée par la FSF ?

 

Finalement j’opte pour une Debian. Le bug de l’installateur de Ubuntu est en fait aussi présent dans celui de Debian dont est issu Ubuntu. L’usage de premier disque de la distribution DVD permit de mener à bien l’installation. Et voilà, mon vieux portable est mu par un OS stable et au goût du jour. Le bureau de Debian est assez jolie, plus sobre que celui d’Ubuntu et finalement cela me convient bien !

Publicités
Publié dans Uncategorized | Tagué , | Laisser un commentaire

La main dans le cambouis

English: Samsung Logo Suomi: Samsungin logo

English: Samsung Logo Suomi: Samsungin logo (Photo credit: Wikipedia)

De retour du réparateur, mon ordinateur portable était devenu muet. Pourtant l’OS indiquait bien la présence d’un périphérique audio et malgré tous les réglages que j’ai pu essayer, l’ordinateur restait muet comme une carpe. Je fini par me résoudre à la conclusion que le problème venait d’un élément non logiciel comme par exemple un haut-parleur non branché. Grâce à de la documentation trouvée sur le net (désassemblage d’un Samsung Q45) j’ai mis la main dans le cambouis pour désosser mon portable.

Je fis alors une découverte surprenante. Mon réparateur avait oublier de rebrancher les connecteur des hauts-parleurs ! Une fois cet oubli réparé, mon portable retrouva toutes ces cordes vocales et fit tonner le son grésillard de ces petits hauts-parleurs internes. Par la suite en voulant jouer avec la webcam intégrée je remarquai que le micro n’enregistrait aucun son. Mon portable était également devenu sourd ! Après quelques réglages infructueux, je repris les tournevis et remis le patient sur le billard… Le connecteur du micro était également débranché, Grrrrrr….. encore un oubli de mon réparateur !

Enfin maintenant mon portable est comme neuf: écran réparé, haut-parleur et micro rebranché, disque dur fonctionnel. A moi les joiesde l’informatique nomade !

Publié dans Uncategorized | Tagué | Laisser un commentaire

Réparation écran noir Samsung Q45

English: Typical computer shop in Montgallet s...

English: Typical computer shop in Montgallet street in Paris. Français : Boutique d’informatique typique de la rue Montgallet à Paris. (Photo credit: Wikipedia)

Mon ordinateur portable était en panne depuis 3 ans et comme je ne m’en servais pas je n’avais pas cherché à le réparer depuis. Étant de passage à Montgallet (Paris 12e) dans ce lieu mythique des passionnés de matériel informatique afin de changer l’alimentation de mon PC fixe qui a rendu l’âme au bout de presque 7 années de service, j’ai remarqué un grand nombre de magasin de réparation d’ordinateur portable. Je me suis dis que ce serait peut-être l’occasion de ressusciter mon ultra portable.

Le symptôme de mon Samsung Q45 était un écran noir qui bloquait le démarrage du système sur 1 beep long suivi de 2 beep court. L’expression « google est ton ami » fut encore une fois vérifiée. Le verdict: problème de carte graphique. Je me suis alors souvenu pourquoi je l’avais mis de côté. Sur les ordinateur portable il n’y a pas de carte graphique à proprement parler. Le contrôleur graphique (puce) est soudé à la carte mère. C’est donc un composant non remplaçable par l’utilisateur. Est-ce que les magasins de Montgallet allaient pourvoir m’aider ?

L’un d’entre eux (Solution mobile) décrivait exactement mon problème et présentait en toute transparence la solution. La réparation étant laborieuse, entre 200 à 300 soudures à refaire, le résultat n’est pas garanti. J’y suis allé et moyennant une centaine d’euro, mon ordinateur sorti des ténèbres. Mon vieux portable (vieux car il date de 2007) a donc repris du service. Restait encore à régler le problème du disque dur non reconnu par le BIOS et les hauts-parleurs qui n’émettent aucun son que j’ai découvert après avoir booter sur un disque USB.

Le disque dur non reconnu ne mettait en cause le disque lui-même car le réparateur avait essayé un disque neuf qui n’était pas non plus reconnu. Ce dernier m’a suggérer d’installer un pilote… hum hum, il ne savait pas qu’il parlait à un informaticien. Pas de reconnaissance du disque par le BIOS je n’ai aucune chance d’installer quoi que ce soit dessus. Le problème semblait être matériel et non logiciel. Le disque lui même n’étant pas en cause, je craignais qu’un autre composant sur la carte mère ne fût HS. Là encore « google est ton ami » : le coupable semblait être la nappe qui relie disque à la carte mère. Elle est très fragile. Constituée d’une sorte de circuit imprimé sur une feuille de plastique. Si on la plie le circuit imprimé casse. Or la mienne était bien pliée… Une dizaine d’euro plus tard grâce à EBay, mon portable reconnu le disque et une nouvelle vie, muette,  commença pour lui.

Publié dans Uncategorized | Tagué | Laisser un commentaire

Disparition de la barre de menu du bureau ubuntu Unity

Official Ubuntu circle with wordmark. Replace ...

Official Ubuntu circle with wordmark. Replace File:Former Ubuntu logo.svg. Español: logo de Ubuntu + marca denominativa Français : Logo officiel d’Ubuntu. Remplace File:Former Ubuntu logo.svg. (Photo credit: Wikipedia)

Hier mon bureau Ubuntu (Unity) semblait être malade. La barre latérale ainsi que la barre de menu en haut du bureau avaient tout simplement disparues. Impossible de lancer les applications ou de quitter la session (ou presque car CTRL-ALT-SUPRon peut quitter la session).

heureusement que sous Linux les terminaux virtuelles permettent de passer d’une session X à un terminal d’un coup de CTRL-ALT-F1 (F2, F3 etc). On se sent alors bien chez soi dans un terminal…. quoi qu’il en soit pour corriger le problème des barres Unity il suffit de lancer la commande suivante

unity --reset

La magie d’un système d’exploitation multi-tâche, multi-utilisateur qui gèrent correctement le multi-session (puisque dans le terminal virtuelle je suis aussi connecté sous le même utilisateur que dans ma session X) opère. Les barres de menus du bureau réapparaissent par enchantement.

Publié dans Paramétrage | Tagué | 4 commentaires

TracCronPlugin de nouveau maintenu

J’avais réalisé il y a plusieurs mois un plugin Trac pour lancer des tâches planfiées. Ce plugin, TracCronPlugin, a évolué quelque temps en fonction de mes besoins puis je n’y ai plus apporté de modifications malgrès les requêtes des utilisateurs.

Comme TracCronPlugin est en licence libre, je comptais bien sur une reprise du projet par un autre. C’est maintenant chose faite ! Après avoir marqué le projet que disponible à l’adoption, un utilisateur s’est manifesté. Je lui ai ouvert les droits en écriture sur PIPY ainsi que les droits sur TracHacks et voici TracCronPlugin de nouveau actif.

Imaginez vous Microsoft vous donner les sources de Windows 95 dont il ne se sert plus (pour gagner de l’argent) alors que vous aimeriez bien le (corriger) modifier ? Le libre c’est bien !

Publié dans Actualité | Tagué | Laisser un commentaire

Résoudre un Sudoku en Prolog

Sudoku layout

Sudoku layout (Photo credit: Wikipedia)

Prolog est un langage déclaratif qui décrit les problèmes plutôt que d’indiquer à la machine comment trouver la solution. La description se fait à travers l’écriture de prédicats logics et a pour avantage de faire réfléchir le programmeur sur la modélisation du problème…. C’est mon langage préféré mais je n’ai pas l’occasion de m’en servir dans ma vie professionnelle. La faute à ce langage à la mode qu’était Java et avec lequel j’ai débuté ma carrière il y a plus de 10 ans. Dans ce blog donc point de référence à Prolog jusqu’à aujourd’hui et ce billet sera pour corriger ce défaut.

Pour disserter sur Prolog j’ai choisi un exercice facile pour montrer le mécanisme de recherche de Prolog (la base du calcul  des prédicats)  et la programmation par contrainte qui permet de réduire grandement le temps de calcul. Cet exercice est le Sudoku 9×9.

Aperçu de Prolog

Prolog (Programmation Logique) peut être vu comme une base de connaissances où l’on ajoute des prédicats et des règles de déductions entre ces prédicats. Par exemple on peut dire à Prolog que Pierre est un garçon. Pour cela il suffit de décider que garçon(X) est un prédicat qui dit que X est un garçon où X est une variable. On apprend à Prolog que le prédicat garçon(X)  est vrai si X prend la valeur Pierre. En d’autre terme on apprend à Prolog que si X vaut Pierre alors X est un garçon. Ce qui s’écrit

garçon(X) :- X = 'Pierre'

C’est ce qu’on appelle une règle. On peut ajouter autant de règles que l’on veut. On ainsi dire que Paul est un garçon aussi.

garçon(X) :- X = 'Paul'

On peut alors interroger Prolog en lui demandant qui sont les garçons ? i.e on demande à Prolog de rendre vrai le prédicat  garçon(Y) où Y est une variable, alors Prolog répondra que pour cela il faut que Y prenne la valeur de ‘Pierre’ ou ‘Paul’.

Et la programmation dans tous ça ? Si on ajoute un prédicat qui dit que Pierre et Annie sont nos amis. Cela se fait par les instructions suivantes:

ami('Pierre').
ami('Annie')

On peut demander à Prolog les amis qui sont des garçons.
ami(X),garçon(X)

Prolog répond que X doit prendre la valeur de Pierre. On a l’intuition que cette manière de programmer en est bien une, on arrive à résoudre des problèmes via uniquement leur description qui devient alors le seul objectif du programmeur. La résolution c’est le travail de Prolog. Pour terminer de se convaincre on va illustrer par la résolution du sudoku 9×9.

Sudoku 9×9

Nous allons définir les valeurs possibles sur notre grille de sudoku. Il s’agit des nombre de 1 à 9. Les règles suivantes permettent de le faire en utilisant le langage de base et les listes.

takeout(A,[A|B],B).
takeout(A,[B|C],[B|D]):- takeout(A,C,D).
valeur(X):-takeout(X,[1,2,3,4,5,6,7,8,9],_).

Ainsi si on interroge Prolog en lui demandant de rendre vrai le prédicat valeur(X) alors on obtient les réponses

X=1;
X=2;
...
X=9

Ces valeurs doivent être placées dans les carrés 3×3. Nous définissons ainsi un tel carré par

carre([[A,B,C],[D,E,F],[G,H,I]]):-
valeur(A),valeur(B),valeur(C),
valeur(D),valeur(E),valeur(F),
valeur(G),valeur(H),valeur(I)

où la liste en argument contient les valeurs lignes par lignes.

A ce stade une interrogation du prédicat carré(X) nous renvoie toutes les valeurs sans respecter les règles du sudoku. Par exemple X prend la valeur d’une matrice remplie de 1. Pour continuer il faut décrire les règles d’unicité du sudoku.

L’unicité des nombres dans les carrés 3×3 se fait avec les prédicat suivants:

different(_,[]).
different(A,[B|C]):-
A \= B,
different(A,C).


tous_differents([]).
tous_differents([A|R]):-
different(A,R),
tous_differents(R).

Un carré 3×3 doit être remplis des valeurs de 1 à 9 mais toutes les valeurs doivent être distinctes. Donc le prédicat carré(X) devient:

carre([[A,B,C],[D,E,F],[G,H,I]]):-
valeur(A),valeur(B),valeur(C),
valeur(D),valeur(E),valeur(F),
valeur(G),valeur(H),valeur(I),
tous_differents([A,B,C,D,E,F,G,H,I]).

On remarque que la première solution met quelques instants avant d’être affichée. Pourquoi ? On touche ici à l’implémentation de la programmation logique sur nos processeur qui sont des machine de turing. En logique classique il n’y a pas de notion de séquence d’execution mais dans l’implémentation de Prolog il y a un ordre d’execution. Dans notre code la valorisation des cases se fait avant l’exécution du prédicat tous_differents/1 donc le programme énumère les carré jusqu’à ce qu’il en trouve un qui vérifie le prédicat tous_différents/1 ! Cela peut être long….

Discriminer au plus tôt

En règle générale il faut aider Prolog à discriminer les solutions potentielles le plus tôt possible. Dans notre cas il faut poser les prédicats qui imposent les règles d’unicité en premier. Notre prédicat devient


carre([[A,B,C],[D,E,F],[G,H,I]]):-
tous_differents([A,B,C,D,E,F,G,H,I]),
valeur(A),valeur(B),valeur(C),
valeur(D),valeur(E),valeur(F),
valeur(G),valeur(H),valeur(I).

Ce code est juste en théorie. Il fonctionne quand on passe des valeurs a carré/1 et qu’on demande de vérifier si le prédicat est vrai. Mais on veut aussi que cela marche en recherche de solution i.e. en passant une variable en argument de carré/1. Là ça coince, le prédicat est toujours faux !

La faute en incombe au test de différence dans

different(A,[B|C]):-
A \= B,
different(A,C).

Comme les variables ne sont pas valorisées, le test est faux. On aimerait bien que Prolog pose simplement la contrainte de différence et que, plus tard lors de l’exécution des prédicats de valorisation, les chemins sans solutions soient évités. Pour cela on va utiliser la programmation logique par contrainte.

Programmation logique par contrainte

Le compilateur gprolog est livré en standard avec le module de contrainte sur les domaines finis. Le compilateur multithreadé SWI-Prolog nécessite quant à lui le chargement manuel du module de contrainte sur les domaines finis en faisant:

use_module(library(clpfd)).

On utilise ensuite le prédicat infixé spécial au domaine fini pour spécifier la différence.Ainsi:

different(A,[B|C]):-
A #\= B,
different(A,C).

Dès lors prédicat carre/1 est quasi instantané et donne les solutions des carré 3×3.

La solution finale de cet exercice est alors une question réglée:

takeout(A,[A|B],B). 
takeout(A,[B|C],[B|D]):- takeout(A,C,D). 
valeur(X):-takeout(X,[1,2,3,4,5,6,7,8,9],_). 

different(_,[]). 
different(A,[B|C]):- 
    A #\= B, 
    different(A,C). 

tous_differents([]). 
tous_differents([A|R]):- 
    different(A,R), 
    tous_differents(R). 

carre([[A,B,C],[D,E,F],[G,H,I]]):-
    tous_differents([A,B,C,D,E,F,G,H,I]), 
    valeur(A),valeur(B),valeur(C), 
    valeur(D),valeur(E),valeur(F), 
    valeur(G),valeur(H),valeur(I).
concat_trois([A1,B1,C1],[A2,B2,C2],[A3,B3,C3],X):- 
    X = [A1,B1,C1,A2,B2,C2,A3,B3,C3]. 

lignes_differentes([[A1,A2,A3],[B1,B2,B3],[C1,C2,C3]]):- 
    concat_trois(A1,B1,C1,L1), 
    tous_differents(L1), 
    concat_trois(A2,B2,C2,L2), 
    tous_differents(L2), 
    concat_trois(A3,B3,C3,L3), 
    tous_differents(L3). 

colonnes_differentes([A,D,G]):- 
    A = [[A1,A2,A3],[A4,A5,A6],[A7,A8,A9]], 
    D = [[D1,D2,D3],[D4,D5,D6],[D7,D8,D9]], 
    G = [[G1,G2,G3],[G4,G5,G6],[G7,G8,G9]], 
    tous_differents([A1,A4,A7,D1,D4,D7,G1,G4,G7]), 
    tous_differents([A2,A5,A8,D2,D5,D8,G2,G5,G8]), 
    tous_differents([A3,A6,A9,D3,D6,D9,G3,G6,G9]). 

sudoku([[A,B,C],[D,E,F],[G,H,I]]):- 

    lignes_differentes([A,B,C]), 
    lignes_differentes([D,E,F]), 
    lignes_differentes([G,H,I]), 

    colonnes_differentes([A,D,G]), 
    colonnes_differentes([B,E,H]), 
    colonnes_differentes([C,F,I]),

    carre(A),carre(B),carre(C), 
    carre(D),carre(E),carre(F), 
    carre(G),carre(H),carre(I).
Publié dans Langage | Tagué | 2 commentaires

Streaming vidéo en mobilité sur N900

Image representing Bambuser as depicted in Cru...

Image via CrunchBase

A la création de Youtube, certain se demandait pourquoi on irait poster ses propres vidéo sur internet, sans contrôle de qui peut voir, sans contrôle de qui télécharge… L’usage à montré que le besoin de diffuser de l’information d’abord textuelle, puis visuelle en image et ensuite en vidéo a trouvé son public.

Mais tous ces usages ont en commun le fait d’être des description à postériori. Il s’agit de récits, de reportage ou de média d’événements passé. Le direct n’est encore à son balbutiement. Ainsi le seul direct qui existe n’est encore au stade du texte avec les services de microblogging comme Status.net (dont l’équivalent plus célèbre mais privateur de liberté est twitter).

Cependant la prochaine étape montre le bout de son nez avec un service de microblog vidéo en streaming. Il s’agit pour tout un chacun de diffuser en direct des vidéos comme il le ferait avec des messages courts. Quel intérêt ? L’actualité, la diffusion d’événement associatifs etc. L’existence des moyens trouvent les usages et non l’inverse.

Le service Bambuser est un exemple de streaming vidéo en mobilité. D’ailleurs pour explorer ce nouvel usage je vous propose de voir en direct le Festival de Cerf-volant en Salle de Grande Synthes le 19 et 20 janvier 2013. J’utiliserai le client pour N900. Les vidéos sont diffusées en temps réel si une connexion est disponible (3G, Wifi) sinon les vidéos sont stockées puis envoyées sur les serveurs de Bambuser. Les spectateurs ont accès au direct mais peuvent également revoir  les vidéos en différées car les vidéos restent accessibles après leur diffusion.

Publié dans Application | Tagué | Laisser un commentaire