Nicolas Casanova a écrit 48 commentaires

  • [^] # Re: La chose à ne jamais faire

    Posté par . En réponse au journal L'étrange vague de spam visant free.fr. Évalué à 2 (+1/-0).

    J'adorerais pouvoir m'installer ça sur mon propre nom de domaine…

    Le code source utilisé pour le service est disponible sur Sourceforge (https://sourceforge.net/p/spamgourmet/code/HEAD/tree/) par contre, je n'ai pas trouvé la doc. d'installation du bidule.

  • # EncFS ?

    Posté par . En réponse au message Disque virtuel multiplateforme cryptée. Évalué à 2. Dernière modification le 08/03/17 à 15:02.

    Tu peux jeter un œil du côté de EncFS qui semble utilisable sous macOS. Apparemment, il y a même des façons de déchiffrer un volume EncFS sous Windows.

    Sinon, tu peux toujours avoir un simple dossier compressé avec 7zip : il me semble que si l'archive est verrouillée par un mot de passe, le contenu est chiffré par AES-256. Et 7zip existe pour un petit paquet de plates-formes, dont Windows, macOS et Linux.

  • [^] # Re: quelques idées

    Posté par . En réponse au message Conseil GUI. Évalué à 2.

    Par exemple avec Powershell (je parle de celui-ci même si c'est du mon de Windows car je le connais bien), je fais mon script avec à l'intérieur diverses fonctions que je viens appeler lorsque l'utilisateur utilise un bouton, une liste… dans l'interface.
    Mais jamais cette interface ne disparaît pour en laisser une autre et dérouler un script du haut vers le bas.

    Tu ne pourras pas faire la même chose en bash (mais je suis prêt à être contredit.)

    Tu pourrais envisager du Tcl/Tk (ou un autre langage couplé avec Tk pour l'interface : Python avec TkInter, Perl avec Tk). Puis depuis ton script Perl/Python/autre tu appelles tes commandes VBox*.

  • # Font Manager ?

    Posté par . En réponse au message Gestionnaire de polices. Évalué à 3.

    Tu peux peut-être regarder du côté de Font Manager.

  • # stat

    Posté par . En réponse au journal Visualisation automatique d'un fichier PDF créé avec l'imprimante virtuelle cups-pdf. Évalué à 4. Dernière modification le 06/12/16 à 11:21.

    USER=`ls -l $1 | awk '{print $3}'`

    Si le but de la ligne ci-dessus est de récupérer le propriétaire du PDF, ce n'est pas forcément très fiable (rien ne garantit que le propriétaire sera toujours dans la troisième colonne.)

    Il vaut mieux utiliser stat (qui, en plus, évite de recourir à un pipe) :

    USER=`stat -c %U $1`

    Après, évidemment, chacun fait comme il veut.

  • [^] # Re: Donc pour résumer…

    Posté par . En réponse à la dépêche C++17, Genèse d’une version mineure. Évalué à 2.

    Imaginons un peu, tu tombes un jour sur un logiciel open source sympa mais plus maintenu depuis 10-15 ans (allez, genre, autorealm. J'aimerai vraiment arriver à le recompiler lui… mais c'est du delphi, et je me sens pas motivé pour acheter une licence windows + whatever compilo juste pour moderniser et porter ce logiciel sous linux).

    Tu as (peut-être) été entendu (le dernier commit date de mai 2016) : « Ce logiciel a été écrit pour Windows, en Delphi et n'a plus été maintenu pendant des années ; décision a donc été prise de le réécrire dans des technologies plus modernes comme le C++, openGL et wxWidgets. »

  • [^] # Re: Merci ;)

    Posté par . En réponse au message Options boucle FOR. Évalué à 1.

    Là je sèche, je ne vois pas pourquoi ça ne marche pas

    Vraisemblablement à cause du fork. Tu crées un processus fils dans lequel NbIncid est bien incrémenté (ça se vérifie avec un set -x), sauf que cette variable NbIncid n'est pas le NbIncid du processus père, qui lui reste indéfiniment fixé à la valeur initiale qui tu lui assignes (0). Sous réserve que je ne dise pas de bêtises :)

    Pour t'en sortir, je te suggère d'utiliser un tube nommé :

    #!/bin/bash
    set -e 
    
    Colorize () {
       if [[ "$1" = *"$Exclud"* ]]; then
          echo -e "\033[41m$1\033[0m"
          NbIncid=$(($NbIncid + 1))
       else
          echo -e "$1"
       fi
       }
    
    clear
    
    echo -n "Entrez un mot clé ou le numéro d'incident: "; read Exclud
    echo -n "Entrez le nombre d'incident à lister: "; read NbVal
    
    NbIncid=0
    
    [ -p pipe_for_incvisu ] || mkfifo pipe_for_incvisu
    
    incvisu -t $NbVal > pipe_for_incvisu &
    
    while read Line; do
       Colorize "$Line"
    done < pipe_for_incvisu
    
    echo -e " \n$NbIncid incident(s) trouvé(s) correspondant(s)\n "
    
    rm -f pipe_for_incvisu

    Ça, ça devrait incrémenter correctement ton compteur.

  • [^] # Re: Merci ;)

    Posté par . En réponse au message Options boucle FOR. Évalué à 1.

    juste une petite remarque en passant. Ça (les doubles crochets) :

    if [[ "$1" = *"$Exclud"* ]]; then

    c'est une syntaxe Bash ; or ton shebang appelle /bin/sh. Pour ne pas laisser passer ce genre de choses, checkbashisms.pl aide bien (c'est dans un paquet appelé devscripts sous Debian).

  • [^] # Re: Plusieurs trucs bizarres…

    Posté par . En réponse au message références aux dossiers parents. Évalué à 1.

    use File::Basename;
    
    my $f = basename 'C:\Users\Desktop\SysCompare_v01\InputData\default_sysdumpdev_150319.xml';
    
    my @elems = split '_', $f, 2;
    
    print $elems[0];
  • # system() ?

    Posté par . En réponse au message Je voudrais lancer plusieurs script Perl à partir d'un autre script Perls.. Évalué à 2.

    Tu as consulté la commande system() ? Ça pourrait peut-être t'aider à avancer ; quelque chose comme

    use strict;
    use warnings;
    
    system script1.pl, default.xml, '*.xml';
    system script2.pl, data.csv;
    system script3.pl, data.csv;
    system script4.pl, data.csv;
    system script5.pl, data.csv;
    system script6.pl, default.xml, default.xml;
    system script7.pl, data2.csv, default.csv;

    Je n'ai rien testé, je te laisse le soin de le faire :-)

  • [^] # Re: Aucun rapport...

    Posté par . En réponse au message empêcher le champ vide à la fin du tableau. Évalué à 1.

    Tu peux tout faire en une seule regex avec un or (|):

    La doc. indique toutefois que c'est plus lent de recourir au OR que de le faire en deux opérations. Pas forcément très grave, mais il vaut mieux le savoir.

  • [^] # Re: En Perl

    Posté par . En réponse au message Help pour script. Évalué à 4.

    Avec éventuellement un BEGIN, sinon point d'en-tête de colonnes :

    perl -n -e 'BEGIN { print "Numero de serie,chiffrement du certif\n"} /^(\d+)/ and print "$1,"; /: (\w+)/ and print "$1\n"' input.dat
  • [^] # Re: coomand ?

    Posté par . En réponse au message traitement lot / compresser pdf. Évalué à 3.

    A quoi sert "command" dans le cas de ce script ?

    Ça sert (en théorie) à être sûr que tu vas appeler la commande qui suit et non pas une hypothétique fonction du shell qui porterait le même nom. Bon, ici, l'utilité ne me saute pas aux yeux, mais ça ne veut pas dire qu'elle n'existe pas :)

    Sinon, un help command renseigne sur command (qui est un utilitaire POSIX) :

    $ help command
    command: command [-pVv] command [arg ...]
        Runs COMMAND with ARGS ignoring shell functions.  If you have a shell
        function called `ls', and you wish to call the command `ls', you can
        say "command ls".  If the -p option is given, a default value is used
        for PATH that is guaranteed to find all of the standard utilities.  If
        the -V or -v option is given, a string is printed describing COMMAND.
        The -V option produces a more verbose description.
    
  • [^] # Re: Si j’ai bien compris

    Posté par . En réponse au message awk print $mavariable. Évalué à 2.

    On peut même se passer d'une variable $new_name intermédiaire et de l'appel à sed :

    for file in XXX.TTTT.*; do cp -p "$file" "${file/TTTT/YYYY}"; done
  • # Tableau HTML à partir d'une requête MySQL

    Posté par . En réponse au message crontab. Évalué à 2. Dernière modification le 30/05/15 à 13:42.

    Ce n'est pas bien compliqué a priori (je n'ai rien sous la main pour tester), il suffit de lire le manuel de MySQL :
    https://dev.mysql.com/doc/refman/5.0/en/mysql-command-options.html#option_mysql_html

    Surtout que la même réponse t'a déjà été donnée le 9 mai.

    #!/bin/bash
    
    exec 5<&1
    exec 1>reponse.html
    
    echo "<html><body>"
    
    mysql -H -h 127.0.0.1 -D Ecole -u root -pPianissimo2015 -e "select * from Eleve"
    
    echo "</body></html>"
    
    exec 1<&5 5>&-

    Au passage, il serait plus sage de :

    1. ne pas utiliser root pour requêter la base
    2. donner le nom de la base sur laquelle se trouve la table Eleve
  • # Et le message d'erreur ?

    Posté par . En réponse au message sortie sur un fichier csv. Évalué à 3.

    tout un coup cela ne fonctione plus je ne sais pas ce qui ne va pas;

    Tu ne risques pas de recevoir beaucoup d'aide si tu ne fournis même pas le message d'erreur…

  • [^] # Re: loop

    Posté par . En réponse au message Parsage sur plusieur fichier. Évalué à 1.

    je ne sais pas comment l'empeche a ce qu'il ne me traite pas le fichier Nr.0 une fois de plus

    shift est ton ami. Du coup, ton code deviendrait :

    my $file_0 = shift or die 'No file1'; 
    my @files = @ARGV or die 'No files';

    Le shift enlève le premier argument après l'avoir affecté à ta variable $file_0 ; du coup, tu ne la retrouves plus ultérieurement dans @ARGV.

  • [^] # Re: loop

    Posté par . En réponse au message Parsage sur plusieur fichier. Évalué à 1.

    voila l'erreur que cela me notifie

    mismatched tag at line 12, column 5, byte 629 at C:/strawberry/perl/site/lib/XML/Parser.pm line 187.

    http://linuxfr.org/forums/programmation-perl/posts/xml-parser#comment-1596952

  • [^] # Re: po

    Posté par . En réponse au message XML-Parser. Évalué à 1.

    Ce serait plus parlant si tu montrais un exemple de ton fichier référence et un exemple de ton second fichier. Parce que là, j'ai pas compris grand-chose.

  • [^] # Re: po

    Posté par . En réponse au message XML-Parser. Évalué à 1.

    il faut pour ça que tu t'intéresses au tableau @ARGV. La documentation est là : http://perldoc.perl.org/perlvar.html

    si tu appelles ton script perl comme ça.

    ./script.pl fichier.xml
    

    le nom de ton fichier.xml peut être récupéré dans ton script.

  • [^] # Re: po

    Posté par . En réponse au message XML-Parser. Évalué à 1.

    si j'ai bien compris (ce dont, je ne suis pas sûr), mettre ce genre de chose avant le parsefile :

    print( (split('_', 'd100spuptl25e0_sysdumpdev.txt',2))[0] . ',' );
  • [^] # Re: po

    Posté par . En réponse au message XML-Parser. Évalué à 1.

    Oui, c'est ce que je voulais dire.

    Pour ton erreur, elle me semble assez explicite :

    mismatched tag at line 12, column 5, byte 626 at C:/strawberry/perl/site/lib/XML/Parser.pm line 187.

    C'est ton fichier XML qui est mal formé ; s'il est exactement comme celui que tu montres dans ta question initiale, c'est ta balise <Profile> qui n'est jamais fermée. Il y a bien une balise fermante </profile>, mais ce n'est pas la même casse (un p minuscule au lieu d'une capitale), donc ton analyseur syntaxique est complètement perdu. D'où l'erreur.

  • [^] # Re: po

    Posté par . En réponse au message XML-Parser. Évalué à 1.

    Juste avant le parsefile, tu écris un print de ton nom de fichier suivi par une virgule et tu auras le résultat souhaité.

  • [^] # Re: po

    Posté par . En réponse au message XML-Parser. Évalué à 2.

    Avec XML::Twig, je ferais comme ça :

    use strict;
    use warnings;
    use XML::Twig;
    
    my $twig= XML::Twig->new(
                   twig_handlers => { 'Parameter' => sub { $, = ",";
                                                          print
                                                            $_->{'att'}->{'name'},$_->{'att'}->{'value'} . $,
                                                          }
                                    }
                   );
    
    $twig->parsefile('test.xml');

    ce qui donne : prim,2,second,3,copy,4,force,1,always,0,type,5,memory,allow,

    Ne resterait plus qu'à nettoyer la virgule finale.

    Après, comme toujours en Perl, il y a d'autres manières de faire.

  • # Awk ?

    Posté par . En réponse au message IFS= et imbrication. Évalué à 2.

    Hello,

    si tu ne t'interdis pas Awk, 15 lignes de script pourraient faire l'affaire (enfin, si j'ai bien compris le résultat à atteindre !) :

    #! /usr/bin/awk -f
    
    BEGIN {
        FS=";"
        OFS=";"
    }
    $1 ~ /AEQF/ {
        split($NF, Array, "|");
    
        for (hg in Array)
        {
            print "HOST;ADD", Array[hg], Array[hg]
        }
        print "HOST;ADD",$3,$5,$4,$7,$2,$8
    }
    $1 ~ /SEQI/ {
        print "HOST;DEL",$3
    }

    Chez moi, le script clapi_import.awk donne ça :

    ./clapi_import.awk sample.txt sample2.txt
    HOST;ADD;foo;foo
    HOST;ADD;bar;bar
    HOST;ADD;baz;baz
    HOST;ADD;bli;ju;blu;toto;bla;foo|bar|baz
    HOST;DEL;hop
    HOST;ADD;foo;foo
    HOST;ADD;bar;bar
    HOST;ADD;baz;baz
    HOST;ADD;bli;ju;blu;toto;bla bla;foo|bar|baz
                            #^^^^^^^ L'espace est bien repris
    HOST;DEL;hop