lundi 13 septembre 2010

Nettoyer automatiquement la liste de fichiers/documents récents

Il peut être intéressant de nettoyer les fichiers récents de certaines entrées sans pour autant supprimer toutes les entrées.

J'ai donc un exemple de script qui pourra vous aider dans ce sens.

Pour l'utiliser, créez un fichier (par exemple "monScript") et copiez-y le code suivant:

#!/usr/bin/perl
use strict;

###
# To configure everything
  # File to clean (actually only xml-built with boommark as keyword at the moment)
my $file = "/home/login/.recently-used.xbel"; #replace by your login
my $filter_keyword_bgn = "<bookmark ";
my $filter_keyword_end = "<\/bookmark>";

  # List of regexp to look for
my @searched_list = (
          "searched_keyword_1"
#        , "searched_keyword_1" # keyword2, etc...
             );

  # Actions: 1=leave only if keyword found ; 0=remove if keyword found
my $const_action  = 0;

###
# Must not be modified
my $copy = 1; # Initialize to 1 to copy the begining of the file

my $tmp_file = $file.".tmp";
my $tmp_regexp;

#Processing
if (-f $file ){
  #Filtered copy to a temporary file
    open (FILE_SRC , "<".$file);

    unlink $tmp_file if (-f $tmp_file);
    open (FILE_DST , ">".$tmp_file) or die();

    while (<FILE_SRC>){
        if ($_ =~ m/$filter_keyword_bgn/i) {
            $copy = !$const_action;

          #Loop on filter_keyword
            foreach $tmp_regexp (@searched_list) {
                if ($_ =~ m/.*$tmp_regexp.*/i) {
                    $copy = $const_action;
                    last;
                }
            }
        }
        print FILE_DST $_ if (1 == $copy);
        $copy = 1 if $_ =~ m/$filter_keyword_end/i;
    }

    close (FILE_DST);
    close (FILE_SRC);

  #Final copy from the filtered result to the original file
    #Erase the previous file
    unlink $file;

    #Open the files in read or write
    open(FILE_SRC, "<".$tmp_file);
    open(FILE_DST, ">".$file);

    #Copy the result to the original file
    while (my $len = sysread(FILE_SRC, my $buffer, 512))
    {
      syswrite(FILE_DST, $buffer, $len);
    }
    close(FILE_DST);
    close(FILE_SRC);

    #Remove the temporary file
    unlink $tmp_file;
}

Comme c'est du perl vous aurez besoin de ce paquet : perl

Rendez votre fichier exécutable et copiez-le dans un dossier bin inclus dans votre path (echo $PATH dans un terminal).

Pour le configurer: cherchez la liste @searched_list et mettez tous les mots clefs qui vous intéresse (rechercher des infos sur les tables dans perl si vous ne savez pas comment faire).

Vous pouvez choisir d'effacer ou ne laisser uniquement les entrées que vous mettez dans @searched_list grâce à la variable $const_action.

Il ne reste plus qu'à exécuter le script régulièrement en l'ajoutant à cron.

samedi 4 septembre 2010

Scanner HP scanjet 4600 et ubuntu

Bon, ce scanner, c'est une longue histoire, mais en résumé, c'est la cause de mes 3 précédents échecs avec Ubuntu et de retour à Windows.

Mais ça y est j'ai trouvé la solution!

Je n'ai rien créé, car j'ai trouvé la solution à mes problèmes ici:

Lien

Pour les non anglophones, voici une aide à l'installation (plusieurs manip' pas forcément évidentes sont au programme):

Prérequis:
Pour l'installation des packages via firefox, voir ici
Paquets: libusb-1.0-0, libusb-dev et gcc


Installation:
Récupérer les fichier depuis le site cité ci-dessus ou depuis les liens suivants:
hp4600-scanfullpage11.c > qui se chargera de lancer le scan de la page
fixhp4600output02.c > qui se chargera de corriger une différence de codage des couleurs entre la sortie du scanner (RGB) et un fichier bitmap (BGR). Si vous êtes curieux, essayez avec une image qui tire vers le orange, elle s'affichera dans des tons bleus. Plutôt étrange...

Ces fichiers sont des sources, il faut donc les compiler:
Ouvrez un terminal et placez vous dans le répertoire où vous avez enregistré ces 2 fichiers.
Puis:
sudo mkdir out
sudo gcc -o out/hp4600-scanfullpage11 hp4600-scanfullpage11.c -lusb
et
sudo gcc -o out/fixhp4600output02 fixhp4600output02.c

Vous avez 2 jolis exécutables qui vous permettent de scanner désormais.

Pour permettre leur reconnaissance par le système, copiez-les au bon endroit et avec les bons droits (ainsi il sera possible de les exécuter de n'importe où):
sudo chmod 4711 ./out/*
sudo mv ./out/* /bin
sudo rmdir ./out
Utilisation:
Scan: hp4600scanfullfile nom_du_fichier_scanne.bmp
Correction: fixhp4600output02 nom_du_fichier_scanne.bmp > nom_du_fichier_final.bmp


Je suis en train de finaliser un script qui lancera les 2 dans la foulée, avec une option de conversion en pdf. Une fois achevé, sage ich euch bescheid :D



lundi 17 mai 2010

Astuce: association automatique de fichier avec une application

Je me suis installé il n'y a pas longtemps de petites applications en java. Pour les lancer il faut saisir la ligne de commande suivante:
java -jar monArchive.jar

Et via le gestionnaire de fichier (disons Dolphin),  la commande par défaut va ouvrir Ark pour explorer l'archive.

J'ai voulu changé cela pour que ce soit automatiquement exécuter avec Java. Voici comment j'ai procédé:

Sur le fichier:
Clique droit => Ouvrir avec => Autres

Puis dans la fenêtre qui s'ouvre, saisir:
/usr/bin/java -jar %f

le %f signifie que le chemin complet vers le fichier sera transmit en paramètre à java.

Sélectionner "Mémoriser l'association entre l'application et ce type de fichier".

Si vous utilisez un autre gestionnaire de fichier, la manipulation est sensiblement identique : ce qui compte ici, c'est /usr/bin/java -jar %f qui permet de faire l'association au niveau du système (ce qui signifie que dans un terminal exécuter un fichier d'extension jar aura le même résultat).



Si vous voulez le faire à la mano, c'est un peu plus complexe, mais tout se passe dans le répertoire suivant:
cd $HOME/.local/application


Le fichier "maître" est mimeapps.list
Sous la balise [Added Associations], pour chaque nouvelle ligne on retrouve une association sous la forme suivante:
application/monTypeDeFichier=mesAssociations
ou
type/monTypeDeFichier=mesAssociations

avec :
monTypeDeFichier: le type du fichier avec lequel l'association est faite

mesAssociations: le nom du (ou des) fichier(s) qui définissent les associations (extension: .desktop). Ces fichiers se trouvent dans le même répertoire (enfin, il y a certains points que je n'ai pas encore éclairci). Après chaque nom de fichier, il faut utiliser le caractère ;
Pour ma manipulation, on aura:
application/zip=java.desktop;


Et voici le contenu de ce fichier (java.desktop):
[Desktop Entry]
Exec=/usr/bin/java -jar %f La ligne de commande
MimeType=application/zip; àCompléter
Name=java Le nom qui apparaît dans clique droit => Ouvrir avec
NoDisplay=true àCompléter
 Type=Application àCompléter

Note:
Les options suivantes sont optionnelles et permettent:
Terminal=true d'exécuter dans un terminal (par exemple pour avoir les messages de retour d'erreurs)
TerminalOptions=--noclose pour que la fenêtre ne soit pas fermée à la fermeture du fichier

vendredi 14 mai 2010

Impots sur le revenu 2010: télédéclaration, firefox et ubuntu lucid

Merci à Argos du forum Ubuntu-fr pour son astuce que je reprends ci-dessous.
Lien
Bien,

j'ai commencé aujourd'hui ma télédéclaration et un problème est survenu lorsque j'ai voulu utiliser mon certificat.


Le message d'erreur était:

UNE ERREUR EST SURVENUE.
L'ensemble des données précédemment saisies ont été correctement sauvegardées.

Nous vous invitons à vous reconnecter et à poursuivre votre télédéclaration.
www.impots.gouv.fr

Nous vous prions de bien vouloir nous excuser pour la gêne occasionnée.


Ce problème est lié à la version de java utilisé avec ubuntu Lucid.

Il y a donc 2 solutions:
- la première ne pas passer par le certificat mais en utilisant les numéro de télédéclarant, numéro fiscal et le Revenu fiscal de référence. (suivez les indications sur le site)

- la seconde est destinée à ceux qui comme moi veulent utiliser leur certificat. La manipulation consiste à utiliser le plugin Java de Sun à la place de celui de votre distribution.
Notez ces étapes dans un fichier texte et fermez firefox.
  1. Via votre gestionnaire de paquets, désinstallez le paquet Icedtea6-plugin
  2. Rajouter la source deb http://fr.archive.ubuntu.com/ubuntu karmic-updates main multiverse
  3. Ajouter les paquets sun-java6-plugin, sun-java6-jre et sun-java6-bin
  4. Lancez firefox: ça devrait marcher (vous aurez juste un avertissement sur l'OS utilisé, mais cela n'empêche pas de télédéclarer). Pour ma part il a fallut redémarrer le PC, mais c'est parce que j'ai triffouillé un peu.

N'oubliez pas à la fin de:
  1. désinstaller le paquet sun-java6-plugin
  2. supprimer le dépôt karmic
  3. réinstaller le paquet Icedtea6-plugin

jeudi 13 mai 2010

Paquets ubuntu: installation via firefox

Ces informations sont en grandes parties inspirées de l'excellente documentation Ubuntu:
http://doc.ubuntu-fr.org/apturl.
Si vous n'utilisez pas firefox ou rencontrez des difficultés, n'hésitez pas à vous y rendre.

Au cours de mes différents posts, vous verrez certainement des liens vers des paquets ubuntu permettant leur installation directement depuis votre navigateur.

Ces paquets sont caractérisés par l'utilisation d'URLs commençant par apt:// . Pour vérifier si cela fonctionne, cliquez sur le lien suivant: apturl

Comme cela n'a pas fonctionné (vu que vous lisez ces lignes), voici la démarche à suivre:
  1. Uniquement pour KDE: à installer le paquet apturl via synaptic ou tout autre gestionnaire de paquets.
  2. Ouvrez un nouvel onglet dans votre firefox et aller à l'adresse about:config
  3. Saisissez les clefs suivantes:
    network.protocol-handler.app.apt en chaîne de caractères. Valeur /usr/bin/apturl
    network.protocol-handler.app.apt+http en chaîne de caractère. Valeur /usr/bin/apturl
    network.protocol-handler.warn-external.apt en valeur booléenne. Valeur true
    network.protocol-handler.warn-external.apt+http en valeur booléenne. Valeur true

Jackd: Installation

Avant de commencer, l'ensemble des informations dont j'ai eu besoin se retrouvent sur le site dédié à la MAO et linux:
http://www.linuxmao.org/
Il m'a fallu jongler entre de nombreuses pages, je tente donc de résumer pour que cela fonctionne vite. Pour aller plus loin, je vous invite à aller sur leur site, très bien fait.



jackD est un serveur de sons dédié à la gestion temps réel de vos flux audio.

Il permet notamment de faire le lien entre vos applications audios et d'éventuels périphériques MIDI (comme un clavier maître M-Audio Oxygen 61).

Ce paquet est disponible dans votre distribution Ubuntu Lucid sous le nom de jackd. Pour faciliter son utilisation, je conseille également d'utiliser le paquet qjackctl qui propose une interface graphique de contrôle.

Un des problèmes que j'ai notamment rencontré concernait l'utilisation conjointe de pulseaudio et jackd. (Permettant de continuer à avoir les autres sons système: amarok, you-tube, ...).  Mais je vais aborder cela plus loin.


Après avoir installé ces paquets, il vous est possible de lancer le serveur jack via la GUI qjackctl.
Pour lancer le serveur, cliquez simplement sur démarrer (mais vérifiez les réglages auparavant).

Dans les réglages, sélectionner bien les périphériques d'entrées et de sortie (normalement hw0).

Concernant les autres champs, je vous conseille de laisser les valeurs par défaut. Après avoir suivi des conseils de chasseurs de X-runs, j'ai toujours eu pire qu'avant.
Cependant, si vous voulez allez plus loin, ce site vous en dira plus sur les options. 

Une fois le serveur jackd lancé, il m'a été impossible de continuer à utiliser Amarok et plus généralement d'entendre les sons venant précédemment de pulseaudio.

Qu'à cela ne tienne... L'utilisation du paquet pulseaudio-module-jack m'a permis de résoudre ce problème. Il faut cependant rajouter un petit script exécuté après le démarrage du serveur de son:
  1. Créer un nouveau ficher (pour ma part enregistré dans ~/.pulseaudio/scripts/) et le ficher se nomme useJack
    Dans ce fichier saisir les lignes suivantes afin de lancer les modules d'interface jackD <=> pulseaudio:

    #load pulseaudio jack modules
    #!/bin/bash
    
    pactl load-module module-jack-sink
    pactl load-module module-jack-source

    Puis rendez votre fichier exécutable.
  2. Fournissez ce fichier (dans mon cas ~/.pulseaudio/scripts/useJack) à qjackctl:
    Bouton réglages: onglet options.
    Il existe là un champs nommé Exécuter un script après le démarrage qui n'attend que le chemin vers votre script.
Pour ma part, cette étape m'a posé pas mal de souci. Cf. mon post sur le forum ubuntu.




Information supplémentaire:
Dans mon cas, ce n'était pas nécessaire, mais si vous commencez à vous enregistrer, faire de la MAO (musique assistée par ordinateur), alors l'usage du temps réel sera nécessaire pour jackd:
Utilisez un noyau temps réel: linux-rt


Puis, autorisez votre utilisateur à prendre le contrôle en temps réel:
  1. Rajoutez-vous dans le groupe audio:
    • Soit via le GUI disponible dans Système -> Administration -> Utilisateurs et groupes
    • Soit via la ligne de commande:

      sudo nano /etc/group
      

      et ajouter votre nom d'utilisateur à la ligne commençant par audio

  2. Autoriser le groupe audio à gérer le temps réel:

    sudo nano /etc/security/limits.conf

    Puis rajoutez ces lignes à la fin de votre fichier:

    # Support Temps réel pour le groupe audio
    @audio  -  rtprio   80
    @audio  -  nice     -10
    @audio  -  memlock  500000 #(à adapter; pour une valeur sans limite :"unlimited")

  3. Enfin sélectionnez l'option Temps réel dans l'interface de réglage de qjackctl

Oxygen 61: Installation

Je viens de m'acheter un clavier maître MIDI M-Audio pour travailler un peu mon piano loin de chez moi.

  • Installation:
    Pour pouvoir l'installer, rien de plus simple, il est directement reconnu (avec Ubuntu LUCID Lynx).

    A noter tout de même, la nécessité d'installer le serveur audio jackD pour permettre de synchroniser les flux MIDI (souvent MIDI via alsa). J'en détaille l'installation ici.

  • Utilisation:
    Voici une liste de logiciels que j'ai installé et testé. Ainsi qu'une rapide description de ceux-ci:
    • ZynAddSubFX: Interface simple permettant l'association de banques de son avec les flux MIDI.
    • Jalmus: Petite application proposant des exercices destinées à l'apprentissage du piano.