Benoît Sibaud a écrit 9301 commentaires

  • [^] # Re: Autre méthode

    Posté par  (site web personnel) . En réponse à la dépêche Dans les kiosques cet été 2011. Évalué à 5.

    La subtilité c'est que l'arrondi peut avoir lieu à des précisions différentes suivant là où il est effectué, le CPU faisant les calculs sur 64 bits en double, alors que la FPU les fait sur 80 (donc à chaque passage de l'un à l'autre, y a apparition/disparition de précision). Et que l'endroit où est effectué l'arrondi dépend des optimisations du compilateur, donc des options de compilation (et du compilateur).

    Bref cela peut amener au contre-intuitif (A+B) != (A+B) suivant qui fait l'addition. Et je parle bien de dire que (1/3+1/3+1/3) != (1/3+1/3+1/3), et pas de (1/3+1/3+1/3) != 1 qui n'est pas surprenant en calcul flottant.

  • [^] # Re: Autre méthode

    Posté par  (site web personnel) . En réponse à la dépêche Dans les kiosques cet été 2011. Évalué à 5.

    C'est pire que cela en fait, cf le bug 323 ouvert depuis 11 ans chez GCC, et qui va le rester, le flottant peut passer par les registres plus précis de la FPU aussi...

    #include <iostream>
    
    double foo(unsigned nb) {
            double sum = 0.9;
            for (unsigned i=0; i<nb;++i) sum+=0.1;
            return sum;
    }
    
    int main() {
            double diff = 1.0 - foo(1);
            std::cout << diff << std::endl;
    }
    

    Résultat attendu : 0 (c'est le cas en GCC 4.4)
    Résultat obtenu : -2.77556e-17 (GCC 2.95 à 4.0 au moins, sur x86)

    Palliatifs : déclarer sum comme volatile et utiliser -ffloat-store (Do not store floating point variables in registers, and inhibit other options that might change whether a floating point value is taken from a register or memory.)

    Codage en binaire (IEEE float 32 bits, double 64 bits, long double 80 bits), prenons le cas des float par exemple :

    • 1.0 = (-1)^0 . 2^(127-127) . (1.00000000000000000000000)
    • 0.1 ~ (-1)^0 . 2^(123-127) . (1.10011001100110011001101...)
    • 0.9 ~ (-1)^0 . 2^(126-127) . (1.11001100110011001100110...)

    Le problème rencontré est dû à la précision excessive dans l'unité de calcul en virgule flottante (FPU). Les calculs en interne sont plus précis que les résultats renvoyés.

  • [^] # Re: Autre méthode

    Posté par  (site web personnel) . En réponse à la dépêche Dans les kiosques cet été 2011. Évalué à 9. Dernière modification le 07 août 2011 à 17:34.

    Je n'ai pas lu l'article, mais ça avait l'air marrant alors j'ai testé rapidement en C++ :

    #include <iostream>
    #include <limits>
    #include <typeinfo>
    
    using namespace std;
    
    template <typename T> void swap1(T & A, T & B) {
      T oldA = A;
      T oldB = B;
      A = A + B;
      B = A - B;
      A = A - B;
      if (!((A==oldB) && (B==oldA))) {
        cout << "swap+\ttype=" << typeid(T).name()
         << "\tavant A=" << oldA << "\tB=" << oldB
         << "\taprès A=" << A << "\tB=" << B << endl;
      }
    }
    
    template <typename T> void swap2(T & A, T & B) {
      T oldA = A;
      T oldB = B;
      A ^= B;
      B ^= A;
      A ^= B;
      if (!((A==oldB) && (B==oldA))) {
        cout << "swap^\ttype=" << typeid(T).name()
         << "\tavant A=" << oldA << "\tB=" << oldB
         << "\taprès A=" << A << "\tB=" << B << endl;
      }
    }
    
    template <typename T> void letsTest(void (*swap)(T&, T&)) {
      T a;
      T b;
    
      a = 42; b = 69; (*swap)(a,b);
      a = numeric_limits<T>::max(); b = 42; (*swap)(a,b);
      a = numeric_limits<T>::min(); b = 42; (*swap)(a,b);
      a = numeric_limits<T>::max(); b = numeric_limits<T>::max(); (*swap)(a,b);
      a = numeric_limits<T>::min(); b = numeric_limits<T>::max(); (*swap)(a,b);
      a = numeric_limits<T>::max(); b = numeric_limits<T>::min(); (*swap)(a,b);
      a = numeric_limits<T>::min(); b = numeric_limits<T>::min(); (*swap)(a,b);
    }
    
    int main() {
      letsTest<char>(swap1);
      letsTest<bool>(swap1);
      letsTest<short>(swap1);
      letsTest<int>(swap1);
      letsTest<long>(swap1);
      letsTest<long long>(swap1);
      letsTest<unsigned short>(swap1);
      letsTest<unsigned int>(swap1);
      letsTest<unsigned long>(swap1);
      letsTest<unsigned long long>(swap1);
      letsTest<float>(swap1);
      letsTest<double>(swap1);
      letsTest<long double>(swap1);
    
      letsTest<char>(swap2);
      letsTest<bool>(swap2);
      letsTest<short>(swap2);
      letsTest<int>(swap2);
      letsTest<long>(swap2);
      letsTest<long long>(swap2);
      letsTest<unsigned short>(swap2);
      letsTest<unsigned int>(swap2);
      letsTest<unsigned long>(swap2);
      letsTest<unsigned long long>(swap2);
    }
    

    Les cas erronés (résumé : le premier swap ne marche pas sur les bool et tous les flottants) :

    swap+ type=b avant A=1 B=1 après A=1 B=0
    swap+ type=b avant A=1 B=1 après A=1 B=0
    swap+ type=b avant A=1 B=1 après A=1 B=0
    swap+ type=f avant A=3.40282e+38 B=42 après A=0 B=3.40282e+38
    swap+ type=f avant A=1.17549e-38 B=42 après A=42 B=0
    swap+ type=f avant A=3.40282e+38 B=3.40282e+38 après A=-nan B=inf
    swap+ type=f avant A=1.17549e-38 B=3.40282e+38 après A=3.40282e+38 B=0
    swap+ type=f avant A=3.40282e+38 B=1.17549e-38 après A=0 B=3.40282e+38
    swap+ type=d avant A=1.79769e+308 B=42 après A=0 B=1.79769e+308
    swap+ type=d avant A=2.22507e-308 B=42 après A=42 B=0
    swap+ type=d avant A=1.79769e+308 B=1.79769e+308 après A=-nan B=inf
    swap+ type=d avant A=2.22507e-308 B=1.79769e+308 après A=1.79769e+308 B=0
    swap+ type=d avant A=1.79769e+308 B=2.22507e-308 après A=0 B=1.79769e+308
    swap+ type=e avant A=1.18973e+4932 B=42 après A=0 B=1.18973e+4932
    swap+ type=e avant A=3.3621e-4932 B=42 après A=42 B=0
    swap+ type=e avant A=1.18973e+4932 B=1.18973e+4932 après A=-nan B=inf
    swap+ type=e avant A=3.3621e-4932 B=1.18973e+4932 après A=1.18973e+4932 B=0
    swap+ type=e avant A=1.18973e+4932 B=3.3621e-4932 après A=0 B=1.18973e+4932

    Et le second swap ne marche pas sur les flottants.

  • [^] # Re: prix

    Posté par  (site web personnel) . En réponse à la dépêche Concours linuxembedded.fr. Évalué à 1.

    Bof perso j'avais déjà discuté de ce point avec un des organisateurs sur place aux RMLL, en leur conseillant de faire une dépêche... Ta question était mal formulée, laissant entendre qu'il fallait forcément une carte dès le début, qu'elle est requise, nécessaire, obligatoire.

  • [^] # Re: Argh !

    Posté par  (site web personnel) . En réponse à la dépêche Concours linuxembedded.fr. Évalué à 7.

    Il faut très probablement lire « Open Source » au sens définition de l'Open Source Initiative, soit en gros une définition équivalente à celle de logiciel libre avec les 4 libertés.

    Et donc ne pas lire « open source » littéralement, au sens « le code est regardable, mais on touche juste avec les yeux ».

  • [^] # Re: Redite

    Posté par  (site web personnel) . En réponse à la dépêche Vers la fin du Flash ? L'interopérabilité serait-elle vainqueur ?. Évalué à 5.

    Ceci étant dit, d'après les pythies (*) de LinuxFr.org :

    amessage, André Pousse, BeOS, Branson, BSD, ce perroquet, l'internet libre français, Napster, Planète Linux, "ça" (et en particulier « ça fait trois fois qu'il est mort »), Charles Bronson, citefutee, cryptoloop, DTML, Emacs, Farenheit, Flash, Freeamp, gaim, Helmut Newton, Microsoft, Hurd, "il", internet, Kadreg, la culture, le ftp, le lien, le pape, le projet MicroBSD, le roi, le troll, le web, l'hirondelle, l'industrie du disque, Linux @ Business, Linux, Linuxfrench, Linux populaire, Linux-Pratique, Lmule, Lyon 1, Maemo, Mandrake, DLFP, son blog, son chat, MS-OOXML, Napster, Netscape, OpenBSD Journal, Pierre Tramo, Pompidou, popup, Oracle, RMS, Shawn lane, Suse, Templeet, Ulice, United Linux, usenet, wiki et XFree sont morts.

    (*) je voulais mettre « oracles », mais Oracle et troll sont morts paraît-il.

    Tandis que toujours suivant nos analystes, BoomTchak est mourant et qu'une radio qui parlait des logiciels libres va mourir.

    Par contre ils hésitent encore concernant la mort de Dyndns, Kde-look, google, ZDnet, knoppixfr.org, du lien (il était pas mort précédemment lui ?), du troll (idem), Looking Glass, du livecd et de Tribune libre.

    Et là je ne parle que des titres des commentaires... Visiblement, comme dirait Mark Twain, « The reports of my death are greatly exaggerated. »

  • [^] # Re: Redite

    Posté par  (site web personnel) . En réponse à la dépêche Vers la fin du Flash ? L'interopérabilité serait-elle vainqueur ?. Évalué à 3.

    Ouais mais je parlais de « Flash va mourir ». Il s'avère juste qu'il est mort avant de mourir donc. Et d'ailleurs c'est arrivé avant https://linuxfr.org/nodes/25782/comments/1124085 (journal d'avril 2010).

  • [^] # Re: prix

    Posté par  (site web personnel) . En réponse à la dépêche Concours linuxembedded.fr. Évalué à 3.

    C'est mieux en lisant les liens donnés : « un simulateur de Mini2440 avec Qemu »

  • [^] # Re: Redite

    Posté par  (site web personnel) . En réponse à la dépêche Vers la fin du Flash ? L'interopérabilité serait-elle vainqueur ?. Évalué à 6.

    Après une recherche sur l'ensemble des dépêches, journaux, forums et commentaires présents en base de données sur la chaîne « Flash va mourir », je peux dire que la première occurrence est dans ton commentaire.

  • [^] # Re: •Le titre est obligatoire

    Posté par  (site web personnel) . En réponse à la dépêche FreeBSD 9 pointe le bout du nez. Évalué à 2.

    Non, une coquille en modération.

  • [^] # Re: Modification

    Posté par  (site web personnel) . En réponse au journal INCROYABLE, Free va enfin respecter la GNU GPL. Évalué à 2.

    Euh non c'est relativement facile d'avoir de l'ADSL sans box. J'ai toujours un vieux modem Alcatel SpeedTouch Ethernet par exemple. Juste que je n'ai pas accès à la TV par ADSL et à la ToIP via mon FAI.

  • [^] # Re: Quel est le changement voulu

    Posté par  (site web personnel) . En réponse à l’entrée du suivi Adresse e-mail d'un compte fermé toujours prise. Évalué à 2 (+0/-0).

    C'est plus simple de demander un changement de l'adresse de courriel du compte alors... Changer le LOGIN1 pour LOGIN2 pose des problèmes (d'URL notamment). Mais fermer LOGIN1 et virer son adresse de courriel, puis ouvrir LOGIN2 avec la même adresse ne pose pas de souci technique.

    À noter que garder l'adresse d'un compte à la fermeture permet de filtrer certains pénibles type spammeurs, auteurs de propos haineux, etc. et aussi empêche d'ouvrir 10 comptes avec une même adresse. A priori si quelqu'un choisit de fermer son compte, ce n'est pas pour en ouvrir un autre en général.

  • [^] # Re: plus c'est gros, mieux c'est

    Posté par  (site web personnel) . En réponse au journal Quatre AS dans la manche . Évalué à 5.

    HAL-9000

  • [^] # Re: Quelle technologie ?

    Posté par  (site web personnel) . En réponse à l’entrée du suivi Regex pour ajouter d'un meta robots='noindex,nofollow' pour les proxys ?. Évalué à 2 (+0/-0).

    Ce n'est pas spécialement un appel à contribution, c'est une entrée dans le suivi de LinuxFr.org, pour déclarer un bug/fonctionnalité que l'on pourrait ajouter, et pour ne pas oublier de le faire/d'en discuter plus tard.

  • [^] # Re: Quelle technologie ?

    Posté par  (site web personnel) . En réponse à l’entrée du suivi Regex pour ajouter d'un meta robots='noindex,nofollow' pour les proxys ?. Évalué à 2 (+0/-0).

    Je ne comprends pas la question.

    Au niveau LinuxFr.org, le but serait juste d'éviter qu'une version du site via un proxy ne soit indexée par les moteurs de recherche (parce que ça nuit à la recherche d'infos sur notre site). Donc nous avons juste à identifier les proxys concernés (*), et à ajouter une entête HTML pour eux.

    Les proxys qui ne sont pas indexés, on s'en fiche (que ça soit un proxy d'entreprise, un proxy Tor ou autre).

    (*) pour ceux auxquels je pense c'est trivial, via le User-Agent.

    Ceci dit il est fort possible que ça soit finalement suffisamment marginal pour être inutile de s'en préoccuper plus.

  • [^] # Re: Rêvons…

    Posté par  (site web personnel) . En réponse au journal Du vote par correspondance. Évalué à 3.

    En France, l'enveloppe est donnée dans le bureau de vote.

    Par contre tu peux venir avec ton (tes) bulletin(s) papier (reçu(s) par courrier postal avec les professions de foi).

  • # Retour sur les erreurs de l'élection AFE de 2006

    Posté par  (site web personnel) . En réponse au journal Du vote par correspondance. Évalué à 4.

    Le vote électronique arrive en France, enfin, pour l'élection des représentants d'une partie du peuple, la partie du peuple qui a préféré émigrer.

    (je pense sur le enfin, perso ça ne fait pas rêver des votes sans contrôle citoyen, comme dans ma ville d'Issy les Mx... cf mes journaux sur le sujet et ma page perso)

    Trois rapports accablants d’experts ont été produits à l’occasion de l'élection de 2006 :

    • celui de François Pellegrini http://www.ordinateurs-de-vote.org/IMG/pdf/rapport_pellegrini.pdf « L'utilisation de tout système conduisant à une dématérialisation de l'information du suffrage est à proscrire. (...) Dans les cas où il est nécessaire de mettre en oeuvre un mécanisme de vote à distance (...) le mécanisme le plus fiable reste le vote par correspondance papier. » « je ne pense pas que la sincérité d'un scrutin dématérialisé tel que celui-ci puisse être garantie »
    • celui de Bernard Lang http://www.datcha.net/ecrits/liste/evote-internet-2006.html « Cependant, il est peu vraisemblable, voire invraisemblable, qu'un seul expert puisse réunir toutes les compétences spécialisées requises par un système de cette complexité, compte tenu de l'importance des détails dans cette entreprise. » (alors pensez donc pour le citoyen lambda)
    • et un troisième de Andrew W. Appel. http://www.ordinateurs-de-vote.org/spip.php?article168 « I observed many things about the process of the election that will make it impossible for the assesseurs to certify with any confidence that the election is conducted accurately and without fraud »
  • [^] # Re: Compte fermé

    Posté par  (site web personnel) . En réponse à l’entrée du suivi Compte Utilisateur Spam - Loise. Évalué à 2 (+0/-0).

    Et les commentaires supprimés.

  • [^] # Re: Licence ?

    Posté par  (site web personnel) . En réponse au journal No coment. Évalué à 4.

    Comme une multinationale européenne qui porterait plainte contre un éditeur américain pour violation de brevet logiciel ? (les brevets logiciels n'étant pas sensés exister en Europe). La réponse est oui. Elle passe souvent par une existence juridique dans l'autre pays, pour déposer une plainte.

  • [^] # Re: Licence ?

    Posté par  (site web personnel) . En réponse au journal No coment. Évalué à 3.

    Je ne suite pas juriste mais, si il me semble qu'en général (y a toujours des exceptions), les délits sont évalués selon « la loi du lieu où ils sont passés » (Lex loci delicti commissi), « lieu du fait générateur ou lieu du dommage ressenti ». En l'occurrence, le serveur et l'association LinuxFr sont en France, donc droit d'auteur et absence de Fair use du droit anglosaxon du copyright.

  • [^] # Re: Source / Via

    Posté par  (site web personnel) . En réponse au journal No coment. Évalué à 2.

    J'ai remplacé l'affichage de l'image par un lien vers la page en question. Ainsi la source est citée et la question de la licence ne se pose plus.

  • # Wha on a un business model pour LinuxFr.org

    Posté par  (site web personnel) . En réponse au journal De la juste répartition entre travail et contribution salutaire.. Évalué à 10.

    Bon là c'est sûr on tient le business model pour LinuxFr.org... On va vendre aux entreprises le droit de contacter leurs employés qui passent leur vie sur le site. On pourra mettre un gros bandeau rouge, une popup, etc., n'importe quel moyen de contacter en privé lesdits employés, d'abord gentiment et non intrusivement, puis avec du flash avec video et audio en plein écran. Je contacte l'INPI pour le dépôt de brevet.

    Ensuite on vendra aux employés un service stopboss pour éviter les relances du chef. Et un service pour passer à travers le filtre...

  • # Un article à lire sur le sujet

    Posté par  (site web personnel) . En réponse au journal HS - carte d'identité et empreinte de l'index gauche . Évalué à 3.

    Cf http://www.maitre-eolas.fr/post/2011/07/02/Pour-en-finir-avec-la-binationalit%C3%A9

    « Quand un citoyen français a une autre nationalité, deux souverainetés se heurtent, et aucune ne peut l’emporter. L’autre Etat a tout autant que la France le droit de décider qui sont ses ressortissants, et le législateur français n’a aucun pouvoir pour limiter la transmission de cette autre nationalité. »

    « Sans parler de la haïssable idée (...) qu’il y aurait des Français moins bons que d’autres, car ils seraient contaminés par un élément d’extranéité. »

  • [^] # Re: R210 avec un dual quad core ?

    Posté par  (site web personnel) . En réponse à la dépêche Migration LinuxFr.org terminée. Évalué à 3.

    quadcore avec la technologie Hyperthreading.

    Tout à fait.

    # cat /proc/cpuinfo | grep -E "siblings|core id|physical id"|sort -u
    core id : 0
    core id : 1
    core id : 2
    core id : 3
    physical id : 0
    siblings : 8

    -> 1 processeur, 4 cores, doublement par hyperthreading

    (j'ai mis à jour les caractéristiques dans la dépêche)

  • # À trop l'y faire, réponse sobre

    Posté par  (site web personnel) . En réponse à la dépêche Migration LinuxFr.org terminée. Évalué à 7.

    Je pense également que les membres de LinuxFR ont trop d'articles à rédiger/modérer pour devoir se plonger dans le système et corriger les bugs par eux mêmes.

    ça tombe bien, le site est contributif et collaboratif, tout le monde peut rédiger des dépêches, pas uniquement les membres de l'équipe du site, mais chaque visiteur.

    Mai bien entendu, vous n'êtes pas obligés de me croire...

    OK, ça marche, on fait comme ça.