JaguarWan a écrit 331 commentaires

  • [^] # Re: presque 20 ans pour ma part

    Posté par  . En réponse au journal Le PC a 25 ans !!. Évalué à 3.

    Quitte à pas être portable... /o\

    <code mode="pourquoi faire simple">
    extern int syscall();

    int main(void)
    {
       const char _h[16] = {
                 0x48, 0x65, 0x6c, 0x6c, 0x6f,
                 0x20, 0x57, 0x6f, 0x72, 0x6c,
                 0x64, 0x20, 0x21, 0x0a, 0x00
                 };
       (void) syscall(0x04, 0x01, _h, sizeof _h - 1);
       (void) syscall(0x01, 0xF000);

        /* NOTREACHED */
       return 42;
    }

    </code>
  • [^] # Re: presque 20 ans pour ma part

    Posté par  . En réponse au journal Le PC a 25 ans !!. Évalué à 2.

    <code mode="fascist">
    #include <stdlib.h>
    #include <stdio.h>

    int main(void)
    {
        printf("Hello world !\n");
        exit(EXIT_SUCCESS);
    }
    </code>

    Ce qui est bien avec le C c'est qu'il y a toujours une autre façon de coder le truc :)

    Il ne reste plus qu'à attendre qu'un expert de comp.lang.c passe pour donner la véritable version canonique du Hello World (je suis sûr d'avoir raté un autre détail subtil; par exemple utiliser _Exit(2) aurait-il été plus propre dans l'absolu que bêtement appeler exit(3) ? :D )
  • [^] # Re: :)

    Posté par  . En réponse au message explication d'un script. Évalué à 2.

    Hmm, en fait je ne vois pas trop à quel moment le pas est censé intervenir, lors de la création du gros appendfile ou lors de la synthèse ?

    Le script prend tous les fichiers commençant par MY du dossier indiqué en paramètre, et les ajoute un par un à appendfile si et seulement si $jour (calculé à partir du nom de fichier) est dans les clous ($jour >= date_deb et $jour < date_db+nbjour).

    Donc même si le script ne marche pas très bien, logiquement on ne peut qu'avoir des images en trop ou en moins dans appendfile (donc des sorties différentes).

    Ou alors, il se trompe completement en lisant le jour et tombe sur une valeur qui passe toujours le test, auquel cas tu auras effectivement systématiquement l'ensemble des images du dossier dans appendfile.

    Je pense qu'il serait intéressant d'ajouter:

    echo "Fichier courant: $i JOUR=$jour ANNEE=$annee date_deb+nbjour=$max"

    juste avant:
    if [ "$jour -ge $1" -a "$jour -lt $max" ]

    pour voir si le script interprète correctement les noms de fichiers (la méthode étant quelque peu rustique, c'est une possibilité à considérer).
  • # :)

    Posté par  . En réponse au message explication d'un script. Évalué à 3.

    Tu as encore des soucis avec ce programme on dirait... Je ne pense pas que ce script shell soit la cause de tes ennuis, mais voici grosso modo ce qu'il fait:


    #!/bin/bash

    # ce script necessite neuf arguments, on verifie qu'ils sont bien la
    if [ $# -ne 9 ]; then
       echo Il manque un ou plusieurs arguments:
       echo La syntaxe est:
       echo $0 date_deb nbjour maille long_min long_max lat_min lat_max dossier sortie
       exit -1
    fi

    # separateur de dossiers
    sep=/
    # executable realisant la concatenation
    concat=concat
    # executable realisant la synthese
    synthese=syntheseV
    # dossier courant
    dir=$(pwd)

    # $9 est le dossier de sortie, on se place dedans
    cd $9

    # on verifie s'il existe un 'appendfile' dedans, on le supprime le cas echeant
    if [ -e appendfile ]; then
       echo Removing old appendfile
        rm appendfile*
    fi

    # on revient dans le dossier courant
    cd $dir


    my=MY*
    k=0

    # pour tous les fichiers commencant par MY du dossier de travail ($8):
    for i in $8$my; do
      # declare un entier deb contenant la taille du nom du dossier de travail ($8)
      # cela permet de travailler par la suite sur le nom de fichier commencant en MY
       declare -i deb=`expr length $8`
       # on ajoute 19 a deb
       deb=`expr $deb+19`

       # on prend une sous chaine de longueur 7 a partir du deb ieme caractere de $i
      # donc cela revient a selectionner les asterisques dans le nom de fichier suivant:
      # dossier_de_travail($8)/MY?????????????????*******
       fin=`expr substr $i $deb 7`
      # taille est egal a 7 - la longueur de la sous chaine recuperee a l'instant
       taille=`expr 7 - length $fin`

       # on declare un entier jour
       declare -i jour

     
       case "$taille" in
       "0")
      # si la taille vaut 0, on donne a jour la valeur des 3 premiers caracteres de $fin en base 10
       jour=10#`expr substr $fin 1 3`
       ;;
       "1")
      # idem avec deux caracteres de fin
       jour=10#`expr substr $fin 1 2`
       ;;
       "2")
      # toujours pareil, avec un seul caractere
       jour=10#`expr substr $fin 1 1`
       ;;
     
       esac

       # ne pas confondre avec $sep qui vaut /
       sepa=_

       # on reinitialise deb a la longueur du dossier de travail
       deb=`expr length $8`
      # cette fois-ci on commence a 15
       deb=`expr $deb+15`
       # on recupere une sous chaine de taille 4 a partir de $deb dans le nom de fichier $i
      # cela revient a recuperer les asterisques dans le nom suivant:
      # dossier_de_travail($8)/MY?????????????****xxxxxxx
       # (x represente la partie d'ou on a extrait le jour tout a l'heure)
       annee=`expr substr $i $deb 4`
     
       # on declare max, contenant l'addition de date_deb ($1) et nbjour
       declare -i max=`expr $1+$2`

      # on a initialise k a zero avant la boucle
        if [ $k -eq '0' ]; then
        # si k = 0 (premier fichier de la liste), on definit appendfile sous la forme suivante:
        # appendfileANNEE_DATEDEB_MAX
        # avec MAX l'addition de date_deb et nbjour
         appendfile=appendfile$annee$sepa$1$sepa$max
         # on met k a 1, on ne repassera plus ici par la suite, donc
         k=1
       fi

      # si la valeur jour qu'on a trouve dans le nom de fichier est superieure ou egale
       # a date_deb et strictement inferieure a MAX:
       if [ "$jour -ge $1" -a "$jour -lt $max" ]; then
         # on appelle concat dans le dossier original avec le nom du fichier, et appendfile
         $dir$sep$concat $i $9$appendfile
       fi
    done

    echo Construction des images et statistiques
    # ici on appelle syntheseV dans le dossier original en lui repassant tous les
    # parametres du script et le fichier appendfile qu'on vient de creer au dessus
    $dir$sep$synthese $1 $2 $3 $4 $5 $6 $7 $8 $9 $appendfile



    Rien de bien sorcier comme tu vois, je pense que le problème est dans ton executable syntheseV de la dernière fois.
  • # &#9829; Intel &#9829;

    Posté par  . En réponse au journal Putain, c'est beau. Évalué à 5.

    Sur mon nouveau laptop, j'ai un chipset i945gm. Il faisait partie de l'équation lors du choix: je m'étais dis "bon les chipsets intel sont gérés en libre, ça sera probablement pas super mais bon".

    Et bien en fait j'en suis rudement content de ce chip à l'usage ^_^

    - Il accélère TuxRacer comme mon ancienne nVidia, avec les reflets sur la glace et tout, sans bugs graphiques, contrairement au driver libre pour ma Radeon 9250 (reverse engineering oblige).[1]
    - Pas besoin de Option "XaaNoOffscreenPixmaps" "false" pour avoir une bonne accélération 2d, c'est rapide et efficace de base.
    - La sortie gl2 de MPlayer marche bien avec (apparemment ça passe par le scaler hardware comme xv, donc ça pixellise pas en fullscreen contrairement à ma geforce 5700), ça s'avèrera commode si je veux bidouiller avec Composite ou AIGLX.

    Bref, autant le driver avec daemon binaire pour le chip wifi intel 3945 est nauséabond (faudrait que le responsable de la section GPU dirige aussi la team wifi ¬¬), autant là je trouve que c'est du vrai bon support matériel. Ça fait plaisir de voir une firme qui supporte son matériel sous Linux avec sérieux et sans y aller à reculons ♥

    [1] ceux qui ont lu mon journal d'il y a quelque temps (https://linuxfr.org/~JaguarWan/22144.html ) se rappelleront peut être aussi qu'à ce moment je n'avais pas encore la 3d... En fait en patchant le support du curseur souris matériel ça a activé le direct rendering, et donc la 3d.

    Pour ceux qui voudraient bricoler leur Xorg 6.9, le patch (venant de http://www.fzu.cz/~kolorenc/d620/#x ) a été accepté par Patrick Volkerding aujourd'hui, donc il est désormais disponible dans toutes les bonnes crèmeries => là par exemple ftp://ftp.scarlet.be/pub/slackware/slackware-current/source/(...) :)

    Désolé pour cette énorme "note de bas de page" /o\
  • [^] # Re: body: {background-color: white;}

    Posté par  . En réponse au journal Agora 1.3.2 is Août. Évalué à 4.

    Et bah ils ne l'ont pas mis, le
    body: {background-color: white; }
    , ce que l'auteur du précédent commentaire, moi même ainsi tous les utilisateurs qui ont spécifié une couleur autre que blanc pour le fond de leur navigateur, déplorons.

    Hop, je déplore vigoureusement: :'(
  • [^] # Re: paquets Fedora...

    Posté par  . En réponse au journal ATI 1, nVidia 0.... Évalué à 4.

    Effectivement sous Slack on peut lire les MP3 et les PDF out of the box (les PDF avec xpdf ou le fabuleux kpdf, hein, pas cette bouse d'Acrobat Reader®), il y a le JRE de base et le JDK dans extra/, mais je n'ai jamais eu le plugin Flash préinstallé.

    D'ailleurs j'en suis bien aise, ça m'évite d'avoir à filtrer les immondes réclames en flash qui défigurent certaines pages web.
  • [^] # Re: /dev/meme

    Posté par  . En réponse au journal coup de gueule sur les journaux. Évalué à 5.

    Nope, c'est un char device qui permet d'accéder à la mémoire collective des utilisateurs du système (il en faut un minimum conséquent, c'est pour ça que tu l'as jamais vu sur ta machine).[1]

    Par exemple, sur le serveur de dlfp:

    # cat /dev/meme
    \_°<~ coincoin
    pan ! pan !
    Pierre Tramo
    J2EE
    ploum
    boulangère
    la cabale n'existe pas !
    Ton clavier se blo
    Mort au pa
    Segmentation fault - core dumped.

    Oups, c'était trop gros et c'est pas passé. M'enfin t'as le core dump ici:
    https://linuxfr.org/~Floxy/22238.html

    [1] http://en.wikipedia.org/wiki/Meme
  • [^] # Re: Revez pas !

    Posté par  . En réponse au journal AMD rachète ATI... c'est officiel. Évalué à 10.

    La vraie raison, c'est que comme tous les geeks, les concepteurs de GPU n'aiment pas rédiger la doc.

    Donc ils s'amusent comme des fous à concevoir une belle puce bien virile sous les aisselles, et ensuite ils pondent le driver de mémoire en s'aidant des schémas tâchés de café qu'ils ont gribouillé sur des coins de nappe durant la conception. Ce driver leur sert ensuite de documentation.

    Donc c'est "Use the source, Luke", sauf que les managers impériaux qui les supervisent préfèrent garder le source en captivité (ce qui peut rendre le driver neurasthénique et par conséquent plantogène). De toute façon, les managers se foutent de la doc du moment que le GPU se vend et ne viole pas le chat des clients la nuit.

    Vu la qualité des drivers ATI, c'est pas possible autrement /o\
  • [^] # Re: moi ma mere...

    Posté par  . En réponse au journal Ah ! Les femmes .... Évalué à 4.

    Pour ces stupides insectes qui ont tendances à devenir fou amoureux des écrans ou de toute forme de source lumineuse, j'ai trouvé un truc pas mal. À défaut d'une moustiquaire, j'ai mis du tissu anti pollen dans l'encadrement de la fenêtre.

    Les trous sont suffisamment fins pour empêcher les insectes de rentrer (on voit les papillons de nuit et leurs copains les moustiques s'exciter bêtement à travers), et ça résiste même à la pluie. Bref, c'est pas mal pour avoir la paix la nuit tout en conservant un peu de lumière.
  • [^] # Re: encore un

    Posté par  . En réponse au journal L'été est manchot, extrême manchot !. Évalué à 6.

    Comme Ubuntu ? /o\
  • [^] # Re: Compilation

    Posté par  . En réponse au message erreur de compilation. Évalué à 3.

    J'ai trouvé ce qui faisait planter ton programme; la segmentation fault est causée par l'utilisation d'une variable i non initialisée dans CreateImgEcart().

    J'ai supposé peut être abusivement que i dans ce contexte devait faire référence aux coordonnées du pixel courant, il faudrait donc vérifier ça auprès du programmeur original :)

    Il y avait d'autres petites erreurs liées à la mémoire que j'ai corrigées, on ne sait jamais. Je n'ai pas touché au reste.

    J'ai mis en ligne le source modifié ici:
    http://mammouth.tuxfamily.org/syntheseW.c

    et un patch indiquant toutes les modifications là:
    http://mammouth.tuxfamily.org/syntheseW.diff
  • [^] # Re: trop pas sécure

    Posté par  . En réponse au journal Quand La Caisse d'Épargne s'y met aussi.... Évalué à 2.

    Tout dépend du paramètre 'action' du formulaire, en fait. S'il pointe sur une page en https, alors peu importe si tu étais déjà en https ou en clair, les données qu'elles soient en GET ou POST seront envoyées chiffrées via SSL, et d'ailleurs la page d'arrivée aura la belle barre d'adresse jaune.

    Par contre, si tu vois un bon gros <form action="http://pas-secure-pour-un-sous.com/auth.cgi" method="get"> là tu peux légitimement t'inquiéter (et la barre d'adresse restera blanche, indiquant que tu t'es fait avoir) :)
  • [^] # Re: Pointeur

    Posté par  . En réponse au journal Test de l'installateur graphique debian.. Évalué à 4.

    Passer d'un vieux noyau 2.4 avec un simple support APM à un fringuant 2.6 avec ACPI et CPUfreq, ça peut faire des merveilles pour réduire la température dégagée par nos plaques chauffantes high tech.

    Quand j'étais encore sur mon P4 2.6 (aka four à induction), je gagnais bien 10° avec CPUfreq (1.3 ghz -> 2.6 en gouverneur ondemand).
  • [^] # Re: Compilation

    Posté par  . En réponse au message erreur de compilation. Évalué à 2.

    Alors, j'ai créer un dossier input où j'ai placé des fichiers vides intitulés comme suit:
    jaguarwan@selenyx:~/input$ ls
    le2004_1_6_ecartypeHH.raw le2004_1_6_nbvalueHH.raw
    le2004_1_6_ecartypeVV.raw le2004_1_6_nbvalueVV.raw

    J'ai aussi créer un dossier output, que j'ai laissé vide, et j'ai ensuite appelé le programme comme cela:

    (gdb) run 1 15 0.125 -25 20 0 25 input output sortie
    Starting program: /home/jaguarwan/syntheseW 1 15 0.125 -25 20 0 25 input output sortie
    ********************
    Chargement des données

    Program exited with code 0377.
    (gdb)

    Apparemment il faut des fichiers raw qui contiennent quelque chose de correct... L'idéal serait que tu mettes en ligne les fichiers qui produisent le crash, ou que tu me donnes une méthode pour en générer :)
  • [^] # Re: Compilation

    Posté par  . En réponse au message erreur de compilation. Évalué à 2.

    OK, j'ai récupéré les headers NCSA HDF, et j'arrive maitenant à compiler syntheseW. Sur ma machine, lancer le programme sans paramètre ne le fait pas planter, par contre.

    jaguarwan@selenyx:~$ gcc -g syntheseW.c -lm -o syntheseW
    jaguarwan@selenyx:~$ ./syntheseW
    ./syntheseW [date_deb][nb_jours][maille][long_min][long_max][lat_min][lat_max][dossier entre][dossier sortie][appendfile]
    jaguarwan@selenyx:~$

    Pourrais-tu m'indiquer les paramètres avec lequel tu lance le programme ? En renommant un fichier vide quelconque en écarttype.raw, je devrait pouvoir reproduire le crash :)
  • [^] # Re: Compilation

    Posté par  . En réponse au message erreur de compilation. Évalué à 2.

    C'est intéressant qu'il plante même quand on ne lui passe pas d'argument.

    Pour voir où il plante dans gdb, il faut utiliser la commande bt (backtrace), qui affichera la liste des fonctions appelées et la ligne de code fautive.

    Si tu postes le code source complet (avec /mnt/porto/sdb1/otig/frison/lib/hdf4/hdf.h) et le fichier raw qui le fait planter, je pourrais jeter un coup d'oeil.
  • # Compilation

    Posté par  . En réponse au message erreur de compilation. Évalué à 4.

    "-lm" indique à gcc de compiler le programme en utilisant la bibliothèque de fonctions mathématiques, donc c'est pour ça que quand tu l'enlèves gcc arrête tout en disant qu'il ne trouve pas les fonctions cos, sqrt (racine carrée), etc...

    "-g" permet de compiler avec les informations de debug, c'est un bon réflexe pour trouver ce qui ne va pas, mais il faut l'ajouter sans enlever les autres paramètres:

    gcc -g -Wall -lm syntheseW.c -o syntheseW

    Par contre, pour voir ce qui ne va pas il faut ensuite lancer le programme dans un debugger, gdb en l'occurence.

    gdb ./syntheseW

    Cependant, même en trouvant où le programme plante, corriger l'erreur ne sera peut être pas trivial.

    Bonne chance :)
  • # Konqueror über alles

    Posté par  . En réponse au journal Quand La Caisse d'Épargne s'y met aussi.... Évalué à 10.


    Connaissez-vous une extension similaire à User-Agent Switcher mais qui ne permettrait de changer l'UA que pour certains domaines seulement (Genre: si domaine=example.com => utiliser l'UA: Machin/1.0)


    Konqueror fait ça de base, et c'est bien pratique pour les sites fourbes (pendant un moment j'étais obligé de me travestir en IE sur le site de la Société Générale pour avoir le digicode virtuel).

    Tools > Change browser identification > Configure

    Comment ça tu voulais une extension Firefox ? /o\
  • # C'est un vieux bug spécifique à Mandriva

    Posté par  . En réponse au message pile d'appels bug kde (origine du bug inconnue). Évalué à 2.

    En recherchant "kded sigfpe" sur google, on tombe là dessus:
    http://linuxfr.org/forums/9/16257.html

    En bref, la solution:
    "Il s'agit d'une défaillance de kat. Un urpme kat résoud le problème."
  • # Chez moi ça marche™

    Posté par  . En réponse au message Qualité du driver radeon libre ?. Évalué à 3.

    Enfin j'ai pas essayé Quake 3, mais Enemy Territory et Counter Strike (sous Wine) tournent très bien.

    Le morceau de mon xorg.conf susceptible de t'intéresser:

    Section "Device"
    Identifier "RADEON"
    Driver "radeon" # DRI Radeon driver
    VideoRam 131072 # 128 MB VRAM
    Option "AGPMode" "8" # AGP 8x
    Option "AGPSize" "128" # AGP aperture size
    Option "RingSize" "8"
    Option "BufferSize" "2"
    Option "UseFBDev" "false"
    Option "AccelMethod" "XAA" # Use XFree86 Acceleration Architecture
    Option "XaaNoOffscreenPixmaps" "false" # Faster RENDER acceleration
    Option "RenderAccel" "true" # Enable the hardware render acceleration
    Option "BackingStore" "true" # Faster double buffering
    Option "EnablePageFlip" "true" # Enable page flipping for 3D apps
    Option "ColorTiling" "true"
    Option "DPMS"
    BusID "PCI:1:0:0"
    EndSection


    Tu utilises un Xorg récent ? Sinon, tu peux aussi tenter de mettre à jour Mesa (ou carrément passer en version cvs, il me semble qu'il y a pas mal d'améliorations concernant les pixel shaders ces derniers temps).
  • [^] # Re: Ça a l'air stable

    Posté par  . En réponse au journal Driver NTFS pour linux avec lecture/ecriture. Évalué à 2.

    Effectivement, j'avais oublié l'esperluette salvatrice devant test et j'ai pas voulu reposter juste pour ça ^_^'

    Ça serait bien qu'on puisse éditer les commendaires.
  • [^] # Re: Ça a l'air stable

    Posté par  . En réponse au journal Driver NTFS pour linux avec lecture/ecriture. Évalué à 10.

    L'endianness d'un système définit dans quel ordre sont stockés les octets en mémoire.

    En envisageant la mémoire comme un tableau:

    En little endian, on commence par le poid faible (LSB=least significant byte).
    --------------adresses mémoires -------->
    0xDEADBEEF = EF BE AD DE
                            ^ lsb       ^ msb

    En big endian, on commence par le poid fort (MSB=most significant byte)
    --------------adresses mémoires -------->
    0xCAFEC0DE = CA FE C0 DE
                             ^ msb       ^ lsb

    Big endian (ppc, sparc, 68k...) paraît le plus intuitif à première vue, mais le little endian (x86, alpha...) a l'avantage de pouvoir accéder à l'octet de poid faible avec un accès mémoire de taille variable (genre si on a 0x1, en mémoire 01 00 00 00 donc, avec un movb al, $ADRESSE on retrouve bien 1, idem avec un movl eax, $ADRESSE). En big endian ça ne passe pas car le LSB change de place suivant la "largeur" du type utilisé. D'où le fameux test en C:

    int test = 1;
    if ( *(char *) test == 1) {
        /* little endian */
    } else {
        /* big endian */
    }

    Il existe aussi des machines middle endian, des vieux vax je crois, qui utilisent une règle encore un peu plus tordue :)
  • [^] # Re: C'est la faute à Ubuntu

    Posté par  . En réponse au journal Serveur Debian compromis. Évalué à 10.

    Je même certain que c'est le vil forban Shuttleworth qui les a piraté pour voler le code source de Debian et le leaker sur les réseaux p2p avant la sortie officielle !!1!
  • [^] # Re: Apwal !

    Posté par  . En réponse au journal Regrouper les fonctionnalités sous la souris. Évalué à 3.

    Tu veux probablement parler de Kommando ?

    http://www.kde-apps.org/content/show.php?content=29514

    J'avais testé à l'époque, mais comme j'ai le bouton droit pour le menu K, le milieu pour la liste des fenêtres, et que j'aime bien que ça ne fasse rien quand je clique gauche sur le bureau...

    D'ailleurs, je trouve qu'un clic droit sur le bureau qui fait apparaître le menu K c'est plutôt rapide, on a directement le curseur dessus, et pour peu qu'on veuille utiliser un soft de la zone 'Most used applications' on a juste a bouger le curseur de quelques pixels.