mouling a écrit 89 commentaires

  • [^] # Re: La solution

    Posté par  . En réponse au message Equivalent en Perl de Hashcode en Java. Évalué à 1.

    Ou pareil en plus court, parce que quand même, décomposer des multiplications en additions, pour ensuite faire des soustractions, c'est un peu fastidieux...
    J'étais tellement content d'avoir un truc qui marche, que je me suis empressé de le couler dans le marbre !

    sub hashCode {
      my $hash = Math::BigInt->new();
      my $MAX_VALUE = Math::BigInt->new('9223372036854775808');
      my $MIN_VALUE = Math::BigInt->new('-9223372036854775807');

      foreach(split //,shift) {
       $hash->bmul(31);
       $hash->badd(ord($_));
       while ($hash->bcmp($MAX_VALUE)>0) {
        $hash->bsub($MAX_VALUE);
        $hash->bsub($MAX_VALUE);
       }
       while ($hash->bcmp($MIN_VALUE)<0) {
        $hash->badd($MAX_VALUE);
        $hash->badd($MAX_VALUE);
       }

      }
      return $hash->bstr();
    }
  • # La solution

    Posté par  . En réponse au message Equivalent en Perl de Hashcode en Java. Évalué à 1.

    Merci à tous pour vos remarques et très bonnes suggestions, qui m'ont permis de trouver une solution ! Ca m'enlève une énorme épine du pied, et comme j'avais séché sur le pb un petit bout de temps, j'en suis tout content.

    Je partage donc cette solution avec vous ; elle reprend les idées de Fred, jigso et TortuXm consistant à ''remettre dans le domaine'' toute addition/soustraction qui sorte du min et du max d'un entier codé sur 64 bits.

    Comme il faut utiliser Math::BigInt, il faut bien prendre soin de passer par les méthodes idoines pour l'arithmétique et les comparaisons de ce type d'objets (cf http://search.cpan.org/~tels/Math-BigInt-1.89/lib/Math/BigIn(...) ), d'où un code un peu verbeux, et pas forcément optimisé, mais la performance est secondaire pour le problème qui m'occupe ici.
    Voici, donc :

    sub hashCode {
     my $hash = Math::BigInt->new();
      my $MAX_VALUE = Math::BigInt->new('9223372036854775808');
      my $MIN_VALUE = Math::BigInt->new('-9223372036854775807');
      foreach(split //,shift) {
       my $tmp = Math::BigInt->new();
       $tmp=$hash->copy();
       for ($i=1 ; $i<=30 ; $i++) {
        $hash->badd($tmp);
        if ($hash->bcmp($MAX_VALUE)>0) {
         $hash->bsub($MAX_VALUE);
         $hash->bsub($MAX_VALUE);
        }
        if ($hash->bcmp($MIN_VALUE)<0) {
         $hash->badd($MAX_VALUE);
         $hash->badd($MAX_VALUE);
        }
       }
       $hash->badd(ord($_));
       if ($hash->bcmp($MAX_VALUE)>0) {
        $hash->bsub($MAX_VALUE);
        $hash->bsub($MAX_VALUE);
       }
      }
      return $hash->bstr();
    }
  • [^] # Re: Hash ?

    Posté par  . En réponse au message Equivalent en Perl de Hashcode en Java. Évalué à 1.

    Ah, ça me plait d'autant plus comme solution que c'est ce que j'avais essayé de mettre en place... mais sans succès.
    Outre le fait qu'avec les objets BigInt, il faut passer par les méthodes ad-hoc pour les opérations arithmétiques ($x->badd($y), $x->bmul($y)...), même en décomposant, je n'y arrive pas.

    Dans la fonction, il y a deux opérations : une multiplication par 31 et une addition.
    Pour la multiplication, j'essaye pourtant de gérer les deux bornes inférieure et supérieure, mais même en la décomposant en une série de 30 additions, et en vérifiant qu'on est bien dans les bornes et en corrigeant par (2*MAX - 1), je ne retrouve pas la sortie attendue, même pour le cas d'une chaîne courte.

    Je me demande sur le fond comment, dans un cas de multiplication, un langage qui code sur 64 bits opère : est-ce qu'il décompose en une série d'additions ou de soustractions (qui devrait être gérable) ou fait-il une seule transformation qui nécessiterait de travailler en Perl non plus avec BigInt mais plutôt au niveau des bits ?
  • [^] # Re: Hash ?

    Posté par  . En réponse au message Equivalent en Perl de Hashcode en Java. Évalué à 2.

    Le problème, c'est que je ne comprends pas comment se comporte Java une fois qu'il atteint la valeur max de son long.
    J'ai fait un test idiot comme ceci :

    public static void testlongHashCode() {
    long h = Long.MAX_VALUE;
    System.out.println( " h vaut : "+h);
    h++ ;
    System.out.println("h vaut : "+h);
    }

    qui me renvoie :
    h vaut : 9223372036854775807
    h vaut : -9223372036854775808
    Ca me laisse penser qu'il passe du MAX au MIN, mais je n'ai pas les compétences pour interpréter ce comportement et le reproduire en Perl.
  • [^] # Re: Quel est ton but ?

    Posté par  . En réponse au message Equivalent en Perl de Hashcode en Java. Évalué à 1.

    Mon but est de reproduire en Perl exactement le même comportement que celui de la méthode Java, pour substituer mon code Perl au code Java existant.
    Le code existant, en l'occurrence, crée des clés numériques à partir d'urls, qui servent de clé primaire dans une BDD ensuite ; j'ai donc besoin de reproduire cette fonction de transformation à l'identique.
    J'avais aussi regardé les modules Digest, mais aucun ne semblait reproduire le comportement du HashCode java que je dois cloner...
  • [^] # Re: Prix

    Posté par  . En réponse au journal Dell promeut Linux Ubuntu (enfin presque). Évalué à 1.

    arf, le site de Dell est plein de petits pièges...
    J'avais effectivement comparé la config Ubuntu avec une configuration bénéficiant d'une remise (choix "Multimédia" > Inspirion 6400 proposé dans une confg à 699¤ au lieu de 749¤) que j'avais un peu remaniée ensuite. Si on refait les tests à partir d'une config de base sans remise, ce n'est pas la même chanson, bien sûr...

    J'en conclus que les multiples remises de Dell n'aident pas à beaucoup de lisibilité dans les prix, mais surtout que tant que ce genre de remises aura cours sur les machines équipées de Windows sans que les machines Ubuntu en bénéficient, ces dernières auront du mal à rivaliser...
  • # Prix

    Posté par  . En réponse au journal Dell promeut Linux Ubuntu (enfin presque). Évalué à 2.

    Aurais-je la berlu ? Me serais-je trompé ?
    En sélectionnant la même config matérielle sur les versions Windows et Linux de l'Inspirion 6400, j'obtiens une facture à 740 ¤ côté Windows, et 815 côté Linux. Avec une différence de prix comme celle-ci (75¤, + 10%), ils ne risquent pas de vendre beaucoup de configs Linux...

    [la config]

    Composants
    PROCESSEUR Intel® Pentium® Dual-Core T2130 Processor (1.86GHz,533MHz,1MB L2 cache) N-Series modifier
    LOGICIELS SUPPLÉMENTAIRES Ubuntu Edition version 7.04 modifier
    GARANTIE MATÉRIELLE Garantie de base service aller et retour valable 1 an modifier
    ECRAN LCD Ecran large WXGA TFT de 15,4 pouces (1280x800) modifier
    MÉMOIRE 2048 Mo de mémoire bicanale SDRAM DDR2 533 MHz [2x1024] modifier
    DISQUE DUR Disque dur SATA 120 Go 5400 tpm modifier
    CARTE GRAPHIQUE N-Series - Carte graph. Intel® Media Accelerator 950 jusqu'à 256 Mo de mém. graph. partagée modifier
    LECTEUR OPTIQUE Fixed Internal 8X DVD+/-RW Drive for N-Series modifier
    BATTERIE PRINCIPALE Batterie Lithium-Ion 9 cellules (85 Wh) modifier
    LECTEUR DE DISQUETTE Pas de lecteur de disquette modifier
    CLAVIER Clavier intégré - Français (AZERTY) modifier
    Accessoires
    CONNECTIVITÉ SANS FIL Mini-carte PCI sans fil Intel® Pro Wireless 3945 802.11a/b/g (pour processeurs Core Duo) modifier
    SACOCHES Pas de housse de transport modifier
    LINUX SUPPORT No Ubuntu Support modifier
    COUVERTURE DOMMAGES ACCIDENTELS Aucune couverture contre les dommages accidentels modifier
    Egalement inclus dans votre système
    SYSTÈME D'EXPLOITATION No OS SKU - Linux Ubuntu Selected
    Référence de l'offre Gedis N0864005a
    Informations sur la commande Commande Inspiron - France
    Documents de livraison N-Series - Documentation en français et câble d'alimentation européen
    Modem Modem données/fax Dell™ v92
    Assistance technique standard Garantie de base service aller et retour valable 1 an
    Commande Internet Dell Commande Internet Dell.
    CD DE RÉINSTALLATION DELL CD de ressources N-Series - contient les diagnostics et les pilotes
    LOGICIEL AUDIO No Sound Blaster®Audigy®Audio Software Option
    Alimentation Adaptateur 65 W CA
    COULEURS Non QuickSnap® capot LCD
    APPLICATIONS MICROSOFT® Pas d'application logicielle
  • [^] # Re: Choisir un portable...

    Posté par  . En réponse au journal Dell promeut Linux Ubuntu (enfin presque). Évalué à 4.

    Tu vas un peu vite en besogne : le choix de l'équipement "Connectivité sans fil" se fait page 2 après avoir validé tout le reste (proc, mem, DD, etc.) page 1, et on peut à ce moment-là cocher le matériel qui va bien :
    [ ] Mini-carte PCI sans fil Intel® Pro Wireless 3945 802.11a/b/g (pour processeurs Celeron)
    [x] Mini-carte PCI sans fil Intel® Pro Wireless 3945 802.11a/b/g (pour processeurs Core Duo)
    Comme ça, le warning sur la compatibilité disparait, et tu peux acheter les bestiau !
  • # Par cette chaleur...

    Posté par  . En réponse au journal Yafray 0.0.9. Évalué à 9.

    ...yabon !
  • [^] # Re: Donc Ubuntu est politique...

    Posté par  . En réponse au journal Analogie entre faire une choucroute et x idéologies politiques (de comptoir). Évalué à 4.

    impossible, il n'y a pas de compte choucroot sous Ubuntu.
  • [^] # Re: mac mini

    Posté par  . En réponse au journal Qube et compagnie. Évalué à 1.

    achètes-en deux !
  • [^] # Re: Hmm ... MOUAHAHAHAHAHAHA

    Posté par  . En réponse au journal Petites blagues de Geek. Évalué à 1.

    un bon vieux ctrl-s dans la console en question ... si il connait pas, il va chercher longtemps.

    Pour ceux qui, comme moi, ne connaissaient pas le ctrl-s et ont une approche assez prudente des expériences nouvelles pour ne pas le tenter directement, voici une liste de raccourcis bash :
    http://linuxfr.org/tips/44.html
  • [^] # Re: Aller plus loin...

    Posté par  . En réponse au journal Installation de kubuntu 5.10. Évalué à 1.

    Oui, c'est assez déroutant au départ de ne pas avoir de compte root sous Ubuntu... mais c'est un choix, qui est expliqué sur le (très bien fourni) wiki d'Ubuntu-fr :
    Devant le nombre impressionnant1) de personnes affectant un mot de passe au compte root2) sous Ubuntu, essayons d"expliquer comment Ubuntu gère les droits d"administration et expliquons le fonctionnement de sudo et gksudo/kdesu.

    La suite et les explications sont là : http://doc.ubuntu-fr.org/applications/sudo?s=root
  • [^] # Re: oui mais non...

    Posté par  . En réponse au journal Regarder FreeTV à distance. Évalué à 1.

    Ah, tiens donc, je ne savais pas.
    Effectivement, Légifrance est plein de bons pères de famille ; quant à Google, il est souvent mon ami, mais pour le coup, il me fait un peu la tête (ou bien je m'y prend mal, bref)... je trouve tout de même, au détour de la faq juridique de Creative Commons :
    "Le respect de la destination et l’usage de la chose louée en bon père de famille fait partie des règles communes aux baux des maisons et des biens ruraux." ( http://fr.creativecommons.org/menu3/main_faqjur.htm )
    Et d'autres petites choses, souvent relatives aux baux.

    En tout cas, mea culpa, j'avais mal interprété le terme, et merci pour la précision !
  • [^] # Re: oui mais non...

    Posté par  . En réponse au journal Regarder FreeTV à distance. Évalué à 2.

    à des fins non commerciales et en bon père de famille.

    J'avoue que j'ai cru un moment que tu avais ajouté le "père de famille" à la pogne pour rire. Mais non ! c'est bien là :
    http://adsl.free.fr/cgv/CGV_FORFAIT_hors_opt_01012006.pdf

    Mais alors, qu'est-ce qu'on fait si on n'est pas père de famille ? On peut pas souscrire chez Free ?
    Les CGV et autres CLUF, c'est tout un poème...
  • # Mode "coup de gueule"

    Posté par  . En réponse au journal This is not a VALID free content. Évalué à 1.

    Je sais pas si on peut écris des petits coups de gueule ici, je vais m'y essayer

    Oh, ça n'a pas l'air complètement interdit :)
    http://www.google.fr/custom?q=intitle:%22journal+de%22+%22co(...)

    Les "petits" coups de gueule ont quand même moins la cote :
    http://www.google.fr/custom?q=intitle:%22journal+de%22+%22pe(...)
    Autant y aller franchement !
  • [^] # @home ?

    Posté par  . En réponse à la dépêche Sortie d'Asterisk 1.2. Évalué à 2.

    Si c'est pour chez toi, Asterisk@home est sûrement ton ami : http://asteriskathome.sourceforge.net/

    Dans la FAQ, on lit notamment :
    "2.1 Hardware Requirements

    A 500MHz PIII with 128 Megs of RAM should easily meet the needs of the average home use."
    (cf http://asteriskathome.sourceforge.net/handbook/index.html#Se(...)
  • [^] # Re: Une mise à jour ?

    Posté par  . En réponse au journal Firefox RC3 est sorti. Évalué à 4.

    La RC3 n'est, à cette heure, dispo qu'en anglais (cf http://www.mozilla.org/projects/firefox/ ). C'est peut-être pour cela qu'aucune mise à jour ne t'est encore proposée ? En tout cas, en ce qui me concerne, rien de nouveau sous le soleil de ma RC2_fr, je suppose que c'est l'explication. Pour en être sûrs, Tao Paï Paï nous dira s'il a la version en angliche !
  • # Pourquoi se limiter à trois tiers ?

    Posté par  . En réponse au journal Cherche livre sur le 3 tiers. Évalué à 1.

    Une bonne référence sur les applications client-serveur 4 tiers :
    http://www.marcel-pagnol.com/fr/oeuvre/dramaturge_8.htm

    Tu mets d'abord un tiers de curaçao. Fais attention : un tout petit tiers. [etc.]
  • [^] # Re: good news !!!

    Posté par  . En réponse à la dépêche Xara Xtreme passe sous GPL et se rapproche d'Inkscape. Évalué à 7.

    Inkscape est un fork de Sodipodi en février 2004 (cf http://linuxfr.org/2004/02/13/15414.html ). La dernière version de Sodipodi, la 0.34, date de ce moment ; depuis, pas grand chose côté Sodipodi, tandis qu'Inkscape avance à bonne allure. Il semble bien que le fork ait concentré tous les efforts de développement, et que Sodipodi soit cliniquement mort...
  • [^] # Re: .

    Posté par  . En réponse au journal Ubuntu OEM. Évalué à 2.

    Tout est expliqué là :
    http://wiki.ubuntu-fr.org/applications/sudo(...)

    Pourquoi il n'y a pas de mot de passe root ? - Explication quant au compte root et Ubuntu
    Devant le nombre impressionnant de personnes affectant un mot de passe au compte root sous Ubuntu..."
    [etc]
  • [^] # Lapin compris

    Posté par  . En réponse au journal Patchez firefox ! (beta). Évalué à 6.

    recherche sur le quoi ??
  • # Un bon début...

    Posté par  . En réponse au journal Web OS. Évalué à 9.

  • [^] # Re: index.html

    Posté par  . En réponse au message Page d'acceuil Apache.... Évalué à 1.

    La ligne DirectoryIndex contient bien index.php

    Ta ligne DirectoryIndex ne contient-elle pas autre chose aussi ? Qqch du genre "index.html" ?...

    Quand tu lui demandes une URL sans spéficier de fichier, Apache prend la liste de DirectoryIndex dans l'ordre : à chaque nom de fichier spécifié, il regarde s'il y a un fichier correspondant dans le répertoire demandé, et s'il trouvre, bingo! il te l'affiche (ou exécute le script, peu importe, l'important est qu'il s'y arrête).

    Une cause possible de ton problème peut donc être que ta ligne DirectoryIndex vaut qqch comme :
    DirectoryIndex index.html index.php
    Si c'est le cas, deux solutions : virer le fichier index.html (ce que tu as fait, ai-je lu ci-dessous), ou bien mettre "index.php" en premier dans DirectoryIndex.

    Et si ce n'est pas ça le pb... ben mince alors, c'est bizarre ton truc !
  • [^] # Re: CA MARCHE !

    Posté par  . En réponse au message [MySQL] un GROUP BY un peu spécial. Évalué à 1.

    arf, j'y avais bien pensé, mais en bas de la page de doc sur le CREATE VIEW, on peut lire :

    Cette commande a été ajoutée en MySQL 5.0.1.

    et tant que la 5 sera en Development Release, pas question que je m'y risque !
    Bon, soyons positifs : plus le temps passe, plus je cette échéance approche, et la résolution du problème itou !