asailor a écrit 107 commentaires

  • [^] # Re: On ne compte que les collègues de travail ?

    Posté par  . En réponse au sondage La proportion filles/garçons dans mon environnement de « travail ». Évalué à 6.

    Chacun son tux :o)
  • [^] # Re: Vert et Noir comme ...

    Posté par  . En réponse à la dépêche Bilan du sommet 2005 des développeurs du noyau Linux. Évalué à -1.

    Ce qui est dommage c'est d'avoir mis du blanc, le vert aurait suffit :o)
  • [^] # Re: Pas de liberté pour les ennemis de la liberté !

    Posté par  . En réponse à la dépêche La gendarmerie inventorie son parc et reverse ses contributions !. Évalué à 10.

    Les logiciels libres ne sont pas une solution contre le « mal » (puisqu'il n'y a pas de telle chose en dehors de toute interprétation) mais contre l'arbitraire. L'arbitraire arrive quand on ne peut avoir le contrôle sur quelque chose... ce qui n'est pas le cas avec les logiciels libres. Le jour où il y a des logiciels libres dont l'utilisation limites nos libertés (et ça doit déjà être le cas pour certains si on cherche bien) alors notre pouvoir est celui de lire le code et de dire : « ce logiciels fait cela » et continuer d'informer les gens pour que de telles applications soient freinées. Mais leur utilisation ne peut être controlée que dans le cadre de leur utilisation et non dans le cadre de leur concept ou de leur conception. On peut dire la même chose avec la connaissance. Quand on produit de la connaissance elle peut être utilisée pour le meilleure et pour le pire.
  • [^] # Re: Ben le contraire ...

    Posté par  . En réponse au sondage Au sol je préfère. Évalué à 2.

    > my closest friend linoleum

    linoleuuuuuuuuuuum !

    tin tin tin... tin tin tin

    [j'le fais bien NOFX nan ?]

    ;o)
  • [^] # Re: 50 50

    Posté par  . En réponse au sondage La raison principale de mon utilisation de logiciels libres :. Évalué à 1.

    Ici aussi tu peux garder ton script (-> save :o) et j'ai dit que c'était simple.

    Comme d'habitude, tu as toute la puissance du shell, si tu veux transformer les 200 derniers gif en png (+ scale 25%) auxquels tu as accédé et faire un scale 50% uniquement sur les jpg, sur tous les fichiers qui contiennent le motif ci-dessous :

    for file in `ls -tu *[1-9]0??[A-Z][a-z]* | grep -E "\.jpg|\.gif"`; do
    type=`file $file | awk '{print $2}'`
    if test "$type" == "GIF"; then
    convert -scale 25% $file ${file%.gif}s.png
    elif test "$type" == "JPEG"; then
    convert -scale 50% $file ${file%.jpg}s.jpg
    fi
    done

    Bien sûr on peut faire encore plus compliqué sur une arborescence de répertoires dans lesquels on choisit uniquement un sous ensemble selon la date, etc. etc. etc.

    shell power, c'est irremplaçable !

    Pour ce qui est du copyright, c'est pas très intéressant étant donné que :

    1/ par défaut la loi du copyright est applicable sur toute nos création sans mention explicite

    2/ tu peux très bien prendre une photo qui n'est pas à toi sur le web et mettre ton copyright dessus... d'où le point numéro 1 (la mention copyright ne suffit pas, il faut que tu puisses prouver la pérénnité de l'oeuvre, ce qui peut être délicat dans certains cas)

    :o)
  • [^] # Re: 50 50

    Posté par  . En réponse au sondage La raison principale de mon utilisation de logiciels libres :. Évalué à 5.

    en terme de fonctionnalités ou d'ergonomie (encore que, les goûts et les couleurs...)

    C'est vrai, comment tu fais ça avec Photoshop sur tes 2000 photos :

    for file in *.gif; do convert -scale 50% $file ${file%.gif}.png; done

    Et encore c'est un exemple très simple

    ???
  • # RTFM, RTFF

    Posté par  . En réponse au message petit accroc avec LaTeX. Évalué à 0.

    Il suffit de préciser le style que tu veux utiliser avec la commande "bibliographystyle", c'est dans tous les livres sur LateX.

    http://www.grappa.univ-lille3.fr/FAQ-LaTeX/15.8.html(...)
  • # Solution pour pas contents...

    Posté par  . En réponse au message Apt-get un peu trop intrusif.... Évalué à 0.

    Installe LFS !
  • # Un bon test

    Posté par  . En réponse au message Problème avec ubuntu. Évalué à 1.

    A mon avis avant de te lancer dans un installation la meilleure chose à faire est de tester une distribution live type "knoppix" (utiliser le noyau 2.6 si possible) et voir si tout est bien reconnu et si tout se passe bien.

    Bon courage, tu ne le regretteras pas.

    :o)
  • # xfs ?

    Posté par  . En réponse au message probleme graphique. Évalué à 1.

    > Could not init font path element unix/:7100, removing from list!

    as tu vérifié que le serveur de fonts (xfs) est bien démarré ?

    sinon :

    service xfs start
  • [^] # Re: strchr

    Posté par  . En réponse au message sscanf et expressions régulières. Évalué à 1.

    Pour le dire d'une autre façon (un peu plus technique), mais tu sembles avoir tout compris :

    sp_fin = strchr(buffer, '\t');

    on récupère l'adresse de la prochaine tabulation (depuis 'buffer' qui contient l'adresse du début de la chaîne de caractères) dans un pointeur

    if (sp_fin == NULL) {
    continue;
    }

    si le pointeur est NULL, pas de tabulation trouvée, on saute (= on prend la prochaine ligne avec le 'fgets')

    *sp_fin = '\0';

    ça veut dire exactement cela : on met le caractère '\0' à l'adresse pointée par 'sp_fin' (qui doit pointer vers un '\t')

    strcpy(champ1, buffer);

    la fonction 'strcpy' s'arrête au caractère de fin de chaîne de caractère '\0' que nous avons introduit artificiellement en prenant soin de conserver son adresse pour pouvoir revenir en arrière et remettre le '\t' au bon endroit par la suite

    sp_debut = sp_fin + 1;

    on avance d'une 'case' dans la chaîne de caractère (d'où l'intérêt d'utiliser des pointeurs typés et non pas des 'void *' sinon la machine saurait pas la taille de '+ 1' qui n'est pas la même pour tous les types)

    pour conclure, je dirais que ce n'est pas "accrobatique" mais juste qu'il n'y a pas de fonction toute faite pour cela et qu'il faut décrire vraiment ce que l'on fait, c'est ça le C :o)

    si tu veux que ton travail soit réutilisable, fais toi une fonction qui copie le champ suivant à partir d'une adresse et d'un délimiteur, par exemple :

    char *cpy_next_field(char *field_buffer, char *string, char delim)
    {
    char *sp;

    if ((sp = strchr(string, delim)) == NULL) {
    return NULL;
    }
    *sp = '\0';
    strcpy(field_buffer, string);
    *sp = delim;
    return sp + 1;
    }

    et tu testes la valeur de retour qui est soit NULL si rien n'est trouvé, soit l'adresse du début du champ suivant

    on peut donc maintenant écrire ton programme comme cela :

    while (fgets(buffer, MAX_CHAR_BY_LINE, fp_XF86Config) != NULL) {
    sp = cpy_next_field(champ1, buffer, '\t');
    if (sp == NULL) {
    continue;
    }
    sp = cpy_next_field(champ2, sp, '\t');
    if (sp == NULL) {
    continue;
    }
    sp = cpy_next_field(champ3, sp, '\n');
    if (sp == NULL) {
    continue;
    }
    printf("c1 [%s] c2 [%s] c3 [%s]\n", champ1, champ2, champ3);
    }

    ce qui est quand même plus clair... et si demain tu veux utiliser un autre délimiteur, pas de problème :o)
    (la petite subtilité que tu as dû voir est que le dernier champ est délimité par un retour à la ligne '\n')
  • [^] # Re: strchr

    Posté par  . En réponse au message sscanf et expressions régulières. Évalué à 1.

    Ah oui, si jamais la ligne n'est pas bien formatée (pas deux '\t' dans la ligne), le programme va planter car je ne teste pas la valeur de retour de strchr.

    Pour le faire vraiment propre, il faut rajouter cela après chaque strchr :


    sp_fin = strchr(...);
    if (sp_fin == NULL) {
    fprintf(stderr, "Error: bad format\n");
    exit(1);
    }


    Ou alors tu veux sauter ces lignes là :


    sp_fin = strchr(...);
    if (sp_fin == NULL) {
    continue;
    }
  • [^] # Re: strchr

    Posté par  . En réponse au message sscanf et expressions régulières. Évalué à 1.

    J'execute ce programme (test_read.c) comme ceci :

    ./test_read < test_read.txt

    après avoir compilé comme cela :

    gcc -W -Wall -ansi -pedantic test_read.c -o test_read

    avec le fichier suivant (test_read.txt, mélange d'espaces et de tabulations comme tu as spécifié) :

    aaa bbb ccc ddd eee
    111 222 333 444

    et j'obtiens :

    c1 [aaa] c2 [bbb ccc ddd] c3 [eee]
    c1 [111] c2 [222 333] c3 [444]


    --------
    #include <stdio.h>
    #include <string.h>

    #define MAX_CHAR_BY_LINE 1024
    #define MAX_STR 1024

    int main()
    {
    char champ1[MAX_STR], champ2[MAX_STR], champ3[MAX_STR];
    char *sp_debut, *sp_fin;
    char buffer[MAX_CHAR_BY_LINE];

    while (fgets(buffer, MAX_CHAR_BY_LINE, stdin) != NULL) {
    sp_fin = strchr(buffer, '\t');
    *sp_fin = '\0';
    strcpy(champ1, buffer);
    *sp_fin = '\t';
    sp_debut = sp_fin + 1;
    sp_fin = strchr(sp_debut, '\t');
    *sp_fin = '\0';
    strcpy(champ2, sp_debut);
    *sp_fin = '\t';
    sp_debut = sp_fin + 1;
    sp_fin = strchr(sp_debut, '\n');
    *sp_fin = '\0';
    strcpy(champ3, sp_debut);
    *sp_fin = '\n';
    printf("c1 [%s] c2 [%s] c3 [%s]\n", champ1, champ2, champ3);
    }

    return 0;
    }
    --------
  • [^] # Re: strchr

    Posté par  . En réponse au message sscanf et expressions régulières. Évalué à 2.

    J'ai oublié de remettre le '\t' après le strcpy n° 2 :-}


    [...]
    strcpy(champ2, sp_debut);
    *sp_fin = '\t';
    strcpy(champ3, sp_fin + 1);
    [...]


    Si tu veux un code qui conserve le contenu de 'buffer', sinon tu peux les enlever tous les 2.
  • # strchr

    Posté par  . En réponse au message sscanf et expressions régulières. Évalué à 2.

    Tu peux utiliser 'strchr' qui permet de chercher un caractère dans une chaîne de caratères.

    L'idée est de rechercher le séparateur de champ et de remplacer celui de la fin du champ par '\0' pour permettre d'utiliser strcpy qui copiera tout avec les espaces.

    Dans l'exemple ci-dessous tous les champs peuvent contenir des espaces, on peut faire un peu plus simple si seul le champ2 peut contenir des espaces.


    char *sp_debut, *sp_fin;

    while (fgets(buffer, MAX_CHAR_BY_LINE, fp_file) != NULL) {
    sp_fin = strchr(buffer, '\t');
    *sp_fin = '\0';
    strcpy(champ1, buffer);
    *sp_fin = '\t';
    sp_debut = sp_fin + 1;
    sp_fin = strchr(sp_debut, '\t');
    *sp_fin = '\0';
    strcpy(champ2, sp_debut);
    strcpy(champ3, sp_fin + 1);
    }
  • [^] # Re: Mais c'est déjà possible

    Posté par  . En réponse au journal Dans la série humour.... Évalué à 2.

    Je ne vois pas les couleurs (en plus j'aime pas /. il y a trop de trolls :o)... par contre je trouve que c'est une bonne idée les différentes catégories.

    Ceci dit, on pourrait remplacer les couleurs (ou ajouter aux couleurs) une décoration des boites, ça serait visuellement plus fort.
  • # Avant qu'on me le dise...

    Posté par  . En réponse au journal Dans la série humour.... Évalué à 2.

    Je c'est, c'est pas cool pour les daltoniens...
  • [^] # Re: Combat optimistes vs péssimistes

    Posté par  . En réponse au sondage Quand on n'aura plus de pétrole on aura. Évalué à 2.

    Moi aussi car selon la bible la fin du monde c'est toujours après (genre 2033 c'est pas l'âge du christ plus 2000 ans pour que ça tombe rond ?), vu qu'y en a bien eu au moins une demi-douzaine des fins du monde et qu'on est toujours là :o)

    C'est marrant comment les gens voient toujours des tas de problèmes partout alors que je suis sûr qu'on n'a pas du tout la moindre idée du genre de problèmes que ça peut causer de plus avoir de pétrole, vu que ça arrivera pas d'un coup comme ça et qu'en matière d'adaptation l'homme sait bien sauver sa peau même si il faut exterminer la moitié de la planète :))

    (d'ailleurs exterminer la moitié de la planète c'est un problème que pour la moitié des gens)
  • [^] # Re: ca sera mieux...

    Posté par  . En réponse au sondage Quand on n'aura plus de pétrole on aura. Évalué à 3.

    Avec les centrales nucléaire :o))
  • # Pour ne rien dire...

    Posté par  . En réponse à la dépêche Mathenpoche sous licence GPL. Évalué à 6.

    C'est génial, bravo pour votre travail, l'important est là, le libre viendra tôt ou tard :o)
  • [^] # Re: Avantage zsh ?

    Posté par  . En réponse à la dépêche Nouvelle version majeure de bash. Évalué à 2.

    La complétion est tellement bien faite sous ZSH que tu n'arrêtes pas de taper sur la touche [TAB].

    Si jamais tu ne sais pas quoi taper dans ton terminal, essayes [TAB] ça te donneras peut être une idée ;o)
  • [^] # Re: Microsoft pris dans la toile... chronique d'une mort annoncée

    Posté par  . En réponse à la dépêche Microsoft pris dans la toile... chronique d'une mort annoncée. Évalué à 1.

    Et que serait le développement du noyau linux si demain Linus arrêtait ? Les belles théories de la pérénité des LL seraient elles vraies, je n'en suis pas si sûr...
  • [^] # Re: Décrypthon sous linux

    Posté par  . En réponse à la dépêche Décrypthon sous linux. Évalué à 1.

    C'est en partie le problème que je décris plus haut :
    http://linuxfr.org/comments/311909.html(...)
  • [^] # Re: Décrypthon sous linux

    Posté par  . En réponse à la dépêche Décrypthon sous linux. Évalué à 3.

    Les protéines sont les outils moléculaires du monde vivant, presque toutes les réactions chimiques du monde vivant sont faites par des protéines. Elles possèdent aussi bien d'autres rôles comme dans la structure des cellules, la communication entre cellules (hormones, neurotransmetteurs, etc.), le mouvement cellulaire (contraction musculaire, mouvements des bactéries, etc.), la propagation de l'information (communication hormonale, nerveuse, etc.), la reconnaissance de formes (système immunitaire), etc., etc.

    Toutes ces fonctions sont déterminées par la forme 3D des protéines. Cette forme (et aussi les propriétés chimiques qu'elles portent) est difficile à obtenir de manière expérimentale (on ne peut pas l'observer directement), il se développe de plus en plus de méthodes « in silico » pour essayer de modéliser la manière dont les protéines se « replient » dans l'espace où quelle forme elles adoptent au final pour essayer d'en déduire leur fonction dans la cellule et / ou dans l'organisme.

    S'il est facile (maintenant) de séquencer un génome, c'est-à-dire connaître l'enchaînement des 4 petites molécules qui composent notre ADN, il est déjà moins facile de trouver les gènes correspondants, c'est-à-dire les parties de cet ADN qui « codent » pour les protéines (>95% de l'ADN chez les bactéries et <5% chez l'homme). Il est ensuite difficile (ça veut dire des années et des millions) de caractériser ces protéines et connaître leur(s) fonction(s). Or cette connaissance est la base de notre compréhension du monde vivant (elle n'est pas la seule bien entendu mais comme les protéines sont partout...).
  • [^] # Re: Décrypthon sous linux

    Posté par  . En réponse à la dépêche Décrypthon sous linux. Évalué à 0.

    C'est quoi l'intérêt d'un « gros éditeur de logiciel propriétaire » d'attaquer un maximum de machines sous linux ?