Étienne a écrit 707 commentaires

  • # Avec GreaseMonkey

    Posté par  . En réponse au message Bloquer les RSS. Évalué à 2.

    Tu peux le faire avec la géniale extension GreaseMonkey [https://addons.mozilla.org/fr/firefox/addon/748].
    Voici un petit script qui pourrait t'intéresser.

    // ==UserScript==
    // @name RemoveFigaro
    // @namespace https://linuxfr.org/forums/12/24358.html
    // @description Remove figaro links from the web page http://www.paris-art.com
    // @include http://www.paris-art.com/*
    // ==/UserScript==

    var figaro = document.getElementsByClassName('depeches');
    for (var i=0; i < figaro.length; i++)
    {
        element=figaro[i];
        element.parentNode.removeChild(element);
    }
  • [^] # Re: SELinux?

    Posté par  . En réponse au message cron & rsync & fusesmb: "link_stat failed". Évalué à 2.

    Parceque ton environnement n'est pas le même. Ton .bashrc n'est pas lu lorsque tu lance ton script par cron. Pour récupérer l'environnement utilisé par cron, tu peux mettre
    env
    dans ton script, cela va t'afficher toutes tes variables d'environnement. C'est en général le principal problème lorsqu'un script marche sous un compte mais pas avec cron.

    Etienne
  • [^] # Re: Tu utilise Gentoo ?

    Posté par  . En réponse au message gmerge dans un top. Évalué à 3.

    Pour localiser le package d'où vient la commande tu peux faire
    rpm -q -f /sbin/gmerge

    Etienne
  • # partimage

    Posté par  . En réponse au message sauvegarde avec dd. Évalué à 3.

    Partimage ( http://www.partimage.org ) est fait pour ça et je te conseil cette solution.

    Dans ton cas, l'utilisation de gzip permettrait de gagner beaucoup de place. Il faut commencer par remplir toute la place de ton disque vide de 0 pour avoir une compression optimale avec
    dd if=/dev/zero of=toto; \rm toto

    Ensuite, tu boot sur ton livecd et un petit
    gzip < /dev/sda > /media/disk/sauvegarde_sda.gz
    Devrait faire nettement moins de 3 Go.
  • [^] # Re: Réponse profonde:

    Posté par  . En réponse au journal Réponse à des gens qui n'ont pas assez réfléchi. Évalué à 1.

    ... ée là, je chantais pour ...
  • [^] # Re: gcc lave plus blanc ?

    Posté par  . En réponse à la dépêche Sortie de GCC 4.3. Évalué à 3.

    Comme je le dis plus haut, c'est totalement sous optimal, tu es obligé de rappeler le type de ton conteneur pour indiquer le type des iterateurs
    Je pense que tu n'utilises pas assez de typedef, je le fait de façon systématique pour rendre le code plus lisible et les évolutions plus aisées. Mon seul regret est que, comme en C, cela ne déclare pas un nouveau type mais ne fait qu'un alias.

    (et des fois ça peut etre vraiment long, source d'erreur),
    Erreur qui est détectée à la compilation.

    et d'appeler explicitement begin et end.
    C'est l'idiome qui veut cela et c'est quand même l'idiome le plus standard du C++, c'est quand même la leçon numéro 0 quand on aborde les conteneurs, tu remarquera que les développeurs de Qt ont trouvé le concept suffisamment bien foutu pour l'utiliser dans leurs conteneurs.
  • [^] # Re: gcc lave plus blanc ?

    Posté par  . En réponse à la dépêche Sortie de GCC 4.3. Évalué à 2.

    Personnellement je trouve la combinaison de std::for_each et boost::lambda autrement plus élégante (et puissante) que le foreach de Qt.
    Cela permet par exemple d'écrire
    vector v(10);
    for_each(v.begin(), v.end(), _1 = 1);

    Ou encore
    for_each(v.begin(), v.end(), cout << *_1 << '\n');

    Etienne
  • [^] # Re: gcc lave plus blanc ?

    Posté par  . En réponse à la dépêche Sortie de GCC 4.3. Évalué à 3.

    Que suggères tu ? Que l'on utilise plus de bibliothèque autre que la stdlib et la libc ?

    Et je cite le message de Luc auquel tu réponds :
    Attention, il est normal de s'adapter aux widgets du framework. Ce que je considère de complètement anormal est de s'adapter relativement aux choses dont un équivalent est pourtant fourni en standard

    De mon côté je suggère que tu apprenne à lire les messages auxquels tu réponds.
  • [^] # Re: gcc lave plus blanc ?

    Posté par  . En réponse à la dépêche Sortie de GCC 4.3. Évalué à 2.

    Quel est l'équivalent standard du foreach de Qt ? Le fait est qu'il n'y en a pas, et que si Qt l'a introduit c'est bien parce que ce genre de truc est diablement pratique

    Si je me rapport à http://doc.trolltech.com/4.1/containers.html#the-foreach-key(...) ça a vraiment l'air de vouloir éviter de faire peur aux allergiques des iterateurs (ce que certains commentaires ici même tendraient à justifier). Parceque

    QMap<QString, int> map;
    [...]
    foreach (QString str, map.keys())
        qDebug() << str << ":" << map.value(str);


    S'écrit en C++
    QMap<QString, int> map;
    [...]
    for (QMap<QString, int>::iterator it=map.begin(); it != map.end(); ++it)
        qDebug() << it->first << ":" << it->second;


    Et on a l'avantage d'éviter la copie de QString et l'appel à map.value() qui fait une recherche dans la map (QMap pouvant être remplacé par std::map avec exactement la même utilisation).
  • [^] # Re: gcc lave plus blanc ?

    Posté par  . En réponse à la dépêche Sortie de GCC 4.3. Évalué à 2.

    - pour faire des trucs un peu intéressants en C++, il faut vite utiliser des template qui sont difficiles à comprendre, difficiles à utiliser et qui font ramer la machine. A l'inverse Qt est vraiment facile à appréhender, grâce à son excellente doc et aux "extensions" apportées au C++.

    Je remarque que Qt :
    - fournit des containers dont l'interface est plus que largement inspirée de la STL [http://doc.trolltech.com/4.0/qmap.html]
    - utilise de plus en plus de templates
    - utilise largement les templates en interne pour te fournir l'interface qui te convient (cf par exemple qalgorithms.h)


    J'ai d'ailleurs une question, comment fait-on pour trier un QVector ?

    Contrairement à ce que certains semble prétendre, je ne crois pas que "Les fans du C++ crachent sur Qt", que beaucoup (dont mois) considèrent comme une très bonne bibliothèque. En revanche, je crois que les développeurs Qt sont plus conscients que vous ne semblez l'être de la richesse du C++.
  • [^] # Re: A trier

    Posté par  . En réponse au journal Quelques idées pour redonner du tonus à Linuxfr. Évalué à 0.

    Genre lire ça http://dev.mysql.com/doc/refman/5.0/fr/constraint-invalid-da(...) et se retenir de ne pas rire.

    Il serait honnête de citer une version à jour http://dev.mysql.com/doc/refman/5.1/en/constraint-invalid-da(...) pour constater qu'il est désormais possible d'avoir un comportement conforme.
  • [^] # Re: gcc lave plus blanc ?

    Posté par  . En réponse à la dépêche Sortie de GCC 4.3. Évalué à 3.


    Pour le couple gcc/glibc, ce que je regrette c'est que les gens ne se rende pas forcement compte de ce qui est standard et ce qui ne l'est pas.
    Et malheureusement, je crois pas qu'il existe de moulinette qui donnerait la conformité du code (ISOC, POSIX, BSD, extension gcc, extension glibc, extension linux, ...).


    Il y a quand même l'option -std= de gcc, et également dans la glibc, il y a un certain nombre de define qui définissent ou non certaines fonctions (cf /usr/include/features.h).

    Cela dit, je te rejoins sur le fait que nombre de développeurs ne se soucient pas de la portabilité et activent tout par défaut sans séparer les parties spécifiques au système utilisé, ce qui oblige à aller taper dans tous les coins pour faire le portage. On se retrouve vite avec une soupe de #ifdef dans tous les fichiers.
  • [^] # Re: gcc lave plus blanc ?

    Posté par  . En réponse à la dépêche Sortie de GCC 4.3. Évalué à 6.


    Par exemple, aujourd'hui, il n'existe aucun compilateur C++ qui supporte à 100% et sans bug le standard du C++. Donc un code qui serait « parfaitement propre » (d'après cette définition) et qui utiliserait toutes les fonctionnalités du standard ne marcherait nulle part. Trop cool !

    D'un autre côté, un code qui supporterait un très large panel de compilateur et de plate-forme marchera sur plein de machines, en supportant les divers bugs et sous implémentation du standard sera « sale » mais beaucoup plus utile.


    Que les compilateurs n'implémentent pas tout le standard C++, soit, mais j'attends d'un compilateur qu'il implémente de façon standard ce qu'il implémente. Je ne sais pas si tu as eu à faire du C++ portable du temps de Visual Studio 6 mais c'était la plaie.

    Ça ne me dérange pas de devoir me restreindre à une partie du standard en fonction de la portabilité que je désir (d'autant qu'il n'y a pas grand chose à éviter en dehors de la directive export), mais ce que j'implémente je ne veux pas avoir à le coder une fois pour chaque compilateur. Et je ne veux pas non plus m'appuyer sur une spécificité d'un compilateur qui a toutes les chances de changer lors d'une version ultérieure.


    Étienne
  • # Install l'extension lightning de thunderbird

    Posté par  . En réponse au message EeePC sous Xandros. Évalué à 4.

    Le eeepc étant livré avec Thunderbird (le client de mail), tu peux installer l'extension lightning ( https://addons.mozilla.org/fr/thunderbird/addon/2313 ). L'extension va ajouter des fonctionnalités de calendrier à thunderbird.

    Etienne
  • [^] # Re: Gardez Thunderbird dans le nom!

    Posté par  . En réponse à la dépêche Le projet Milimail désire changer de nom. Évalué à 5.

    Ce n'est même pas un thunderbird patché, ce sont des extensions que l'on installe sur un thunderbird tout ce qu'il y a de plus propre.
  • [^] # Re: tout à fait ok

    Posté par  . En réponse à la dépêche Concours de t-shirts firefox 3. Évalué à 2.

    C'était simplement une précision pour ne pas laisser croire que le logo que tout le monde connais était le logo "officiel". Je n'avais nulle intention de te discréditer.
  • [^] # Re: tout à fait ok

    Posté par  . En réponse à la dépêche Concours de t-shirts firefox 3. Évalué à 3.

    Le logo officiel de debian n'est pas libre.
    C'est pour ça que personne ne le connait, qu'il n'est quasiment jamais utilisé et que celui qui est connu et utilisé est le logo libre. Même sur leur site c'est le logo libre qu'ils utilisent.

    Pour info : http://www.debian.org/logos
  • # Système de cache

    Posté par  . En réponse au message Page précédente du navigateur.... Évalué à 6.

    Je pense que c'est plutôt le système de cache du navigateur qui lui permet d'afficher la page consultée précédemment sans avoir à retélécharger la page.
    Il y a peut être un moyen de prévenir le navigateur de ne pas mettre les pages en cache en utilisant l'en-tête HTTP Expires ou bien avec un meta tag html du genre :
    <meta name="Pragma" CONTENT="no-cache">

    Etienne
  • # isinf isnan

    Posté par  . En réponse au message Reconnaitre -1.#IND. Évalué à 3.

    isinf(3) isnan(3) sont les fonctions que tu cherches.

    Etienne
  • [^] # Re: FollowSymlinks

    Posté par  . En réponse au message Apache plante avec php. Évalué à 2.

    Alors regarde du coté de ton php.ini, notamment doc_root. Et vérifie que ton option FollowSymlinks est bien activé pour ton répertoire. La config d'apache permet d'activer des options pour des parties du filesystem et il est possible que l'option que tu as rajoutée soit en fait supplantée par une autre ligne autre part dans la configuration.

    Etienne
  • [^] # Re: Centraliser la gestion des timer

    Posté par  . En réponse au message Passage de données au handler d'un timer. Évalué à 2.

    Tu peux passer par des API de plus haut niveau que POSIX. Par exemple la bibliothèque Qt fourni ce qu'il faut avec la class QTimer [http://doc.trolltech.com/4.3/qtimer.html]
  • # Centraliser la gestion des timer

    Posté par  . En réponse au message Passage de données au handler d'un timer. Évalué à 2.

    Je ne pense pas qu'il y ai de solution au niveau système pour ton problème. Ce que je ferai à ta place c'est d'utiliser un gestionnaire de timer, qui est le seule à recevoir les timer et qui gère une association entre un temps, un callback et une donnée.

    Tu aurai donc une fonction
    void registerTimer(const struct itimerval* timer, void *(*callback)(void*), void* arg);

    Dans une variable statique, tu te fait une liste de
    struct timer_callback
    {
        struct itimerval timer;
        void *(*callback)(void*);
        void* data;
    };


    Qui lui fait l'appel à setitimer, au moment où tu reçoit le SIGALRM (ou le SIGVTALRM ou encore le SIGPROF), tu appel tous les callbacks dont la tempo a expiré avec leur argument et tu les retire de ta liste.

    Si tu fait du code multithread bien sûr il faut faire attention à bien verrouiller ton tableau.
  • # FollowSymlinks

    Posté par  . En réponse au message Apache plante avec php. Évalué à 4.

    Aurais-je manquer quelque chose ?

    Google => "not within configured docroot" => J'ai de la chance
  • [^] # Re: Tes "virtual" sont mals placés

    Posté par  . En réponse au message Autour de l'héritage multiple et des méthodes virtuelles.. Évalué à 2.

    Nicolas a raison, il faut que B et C héritent "virtuellement" de A. Le problème sur lequel tu bloque maintenant, c'est que le compilateur ne sait pas, dans la classe D si property1() doit utiliser B::property1() ou C::property1(), il faut donc lui dire explicitement :

    class D : public B, public C {
    public:
    /* Ici on est obligé de définir property1(), sinon le
    * compilateur ne peut savoir si c'est property1 de B ou de C
    * qu'il veut
    */
    virtual bool property1()
    {
    return B::property1();
    }
    };


    Etienne
  • [^] # Re: Utilise les dumps

    Posté par  . En réponse au message Migrer de MySQL vers Prostgre. Évalué à 3.

    Tu peux regarder sur cette page, elle pointe vers des articles pour aider à cette conversion.
    http://www.postgresql.org/docs/techdocs.3

    Tu peux en particulier essayer ces deux scripts :
    http://www.omnistarinc.com/~fonin/downloads.php#my2pg
    ou
    http://www.xach.com/aolserver/mysql-to-postgresql.html

    Si tu réussis à faire quelque chose, tiens nous au courant.


    Étienne