pifou a écrit 327 commentaires

  • [^] # Re: ème

    Posté par  . En réponse au journal Mon petit jeu pour navigateur et (pas grand chose de) plus. Évalué à 1.

    Coté Ubuntu il faut installer le package hunspell-tools … c'est sûrement la même chose coté Debian.

  • [^] # Re: ème

    Posté par  . En réponse au journal Mon petit jeu pour navigateur et (pas grand chose de) plus. Évalué à 2.

    Merci pour ce retour.

    J'ai regardé de plus près cette histoire de dictionnaire. Il semblerait qu'Hunspell soit la référence actuellement (Firefox, OpenOffice) et remplace MySpell. Comme dit plus haut le problème c'est que ça se base sur histoire de lemmes/drapeaux qu'il faut analyser pour trouver la totalité des mots possibles.

    Mais, tout semble avoir été prévu dans les scripts fournis dans le package hunspell-tools : http://stackoverflow.com/questions/13725861/generate-all-word-forms-using-lucene-hunspell

    J'ai fait un test rapide, et en effet le dictionnaire "unmunché" du package hunspell-fr semble bien complet (conjugaisons …). J'essaye de faire une nouvelle version de Begglo dès ce soir.

    Pour l'option pour des mots plus long, ce n'est pas très difficile mais ça demande un peu plus de boulot.

    Je te tiens au courant (je vais sûrement ajouter une icône d'information pour suivre les évolutions du jeu).

  • [^] # Re: ème

    Posté par  . En réponse au journal Mon petit jeu pour navigateur et (pas grand chose de) plus. Évalué à 2.

    Glop! Glop ! routard galactique,

    Cette histoire de dictionnaire est assez étrange, comme je l'ai indiqué au dessus, je me base sur le dictionnaire "french" d'ispell (/usr/share/dict/french).

    C'est vrai que je ne vois vraiment pas ce que viens faire "fco" la dedans :

    $ cat /usr/share/dict/french | grep fco
    fco

    et pourquoi "radin" n'y figure pas :

    $ cat /usr/share/dict/french | grep radin
    gradin
    gradins
    radiner
    radinerie

    Il serait peut-être temps de mettre un coup de jeune à ce dictionnaire … en effet d'après les informations du package wfrench ça n'a pas bougé depuis 2003 :

    This French wordlist is no longer maintained upstream.
    The new "upstream" version was made by Nicolas Sabouret nico@debian.org
    adding some missing words in the dico file.

    -- Nicolas Sabouret nico@debian.org Fri, 5 Sep 2003 10:24:53 +0200

    En voyant que Firefox me souligne "fco" en rouge et pas "radin", je viens de penser que je pourrais plutôt utiliser ce dictionnaire … et en effet, il est facilement trouvable : /usr/lib/firefox-9.0.1/dictionaries/fr_FR.dic et il semble plus cohérent :

    $ cat /usr/lib/firefox-9.0.1/dictionaries/fr_FR.dic | grep fco
    saufconduit/S.

    Par contre, il faut que je regarde comment analyser la partir après le "/" pour reconstruire tous les mots possibles à partir d'une racine. En effet il n'y a souvent que le féminin d'un mot, j'imagine qu'il faut reconstruire le masculin et le pluriel avec l'indication après le "/".

    $ cat /usr/lib/firefox-9.0.1/dictionaries/fr_FR.dic | grep "content"
    contente/F.()
    contentement/S.
    contenter/a0a+()
    contentieuse/W.()
    contention/S.
    contentive/F.()
    contentée/F.()

    Alors que c'est beaucoup plus simple avec wfrench :

    $ cat /usr/share/dict/french | grep "content"
    content
    contenta
    contentaient
    contentais
    contentait
    contentant
    contente
    contenté
    contentée
    contentées
    contentement
    contentent
    contenter
    contentera
    contenterai
    contenteraient
    contenterais
    contenterait
    contenteras
    contentèrent
    contenterez
    contenteriez
    contenterions
    contenterons
    contenteront
    contentes
    contentés
    contentez
    contentieuse
    contentieuses
    contentieux
    contentiez
    contentions
    contentons
    contents

  • [^] # Re: dico

    Posté par  . En réponse au journal Mon petit jeu pour navigateur et (pas grand chose de) plus. Évalué à 2.

    Comme je l'ai indiqué dans mon journal :

    J'ai utilisé les dictionnaires (français, breton, anglais, espagnol, allemand …) disponibles dans les packages ispell et aspell

    Pour être plus précis cela correspond aux fichiers stockés dans /usr/share/dict/ de ta distrib' Linux préférée. Pour ton exemple :

    $ cat /usr/share/dict/french | grep "baise"
    baisemain
    baisemains
    baiser
    baisers

    Ce qui est étrange c'est qu'il manque des mots moins "limites" que "baise" : der (la der des ders), réa …

    Si tu trouves des dictionnaires "libres" mieux fourni je suis preneur.

  • [^] # Re: Et les accents (bug ?)

    Posté par  . En réponse au journal Mon petit jeu pour navigateur et (pas grand chose de) plus. Évalué à 7.

    Je profite de ton message pour expliquer un peu le fonctionnement de la recherche des mots dans le dictionnaire. Comme tu peux le voir, j'ai généré un fichier dictionnaire par langue (http://fr.orange-pagesperso.pagesperso-orange.fr/begglo/dict.fr.json, http://fr.orange-pagesperso.pagesperso-orange.fr/begglo/dict.en.json …).

    Chaque fichier JSON contient un tableau associatif ayant pour clé la longueur des mots (3, 4 et 5). En valeurs il y a liste des mots possibles au format "clé mot".

    Afin d'optimiser le temps de recherche, chaque mot est transformé en clé via la moulinette suivante :
    - Remplacement des caractères accentués par la version sans accent (èéê=>e, à=>a …)
    - Tri des lettres pour générer une "clé"

    Par exemple ça va donner pour les mots "laper", "parle", "parlé", "perla" la même clé "aelpr".

    Donc pour trouver tous les mots correspondants à cette clé je n'ai qu'à parcourir les différents tableaux (mots de 3, 4 et 5 lettres) et chercher les éléments correspondant à la RegExp "a?e?l?p?r".

    C'est donc grâce à cette technique que je peux retrouver les différentes versions accentuées d'une même graphie sans accent (aeegr=>agrée, agréé, égare, égaré, garée, ragée).

  • [^] # Re: Sympa

    Posté par  . En réponse au journal Mon petit jeu pour navigateur et (pas grand chose de) plus. Évalué à 3.

    Oui, c'est une bonne idée. J'avais d'ailleurs déjà pensé à ce système dans le cadre d'une adaptation à la saisie par clavier : la seconde rangée serait alors remplie automatiquement lors de la frappe des touches.

  • [^] # Re: sambaedu ?

    Posté par  . En réponse au message réseau pour une petite école. Évalué à 1.

    Si tu travailles avec l'éducation nationale, je te conseille de demander aux instituteurs (professeurs des écoles) de contacter l'inspection afin d'avoir un support de l'EATICE du secteur. Avec un peu chance tu auras à faire à quelqu'un de "technique" sinon il aura sûrement des contacts à te donner auprès d'écoles du secteur ayant mis en place ce type de réseau (via une association, la mairie ou simplement d'un instit motivé).

  • [^] # Re: Je te moinse...

    Posté par  . En réponse au journal [HS] Pluvieux, Heureux. Évalué à 2.

    Par contre, depuis 10 à 15 épisodes, il a pris l'habitude de démarrer une phrase, de s'interrompre et de reprendre le début de sa phrase

    Ah, j'avais l'impression qu'il faisait ça depuis le début de son émission ! Le plus lourd c'est qu'il a gardé cette "bonne idée" aussi dans son bouquin … c'est encore plus énervant à lire qu'à entendre.

  • [^] # Re: C'est bien

    Posté par  . En réponse au journal Cigarette électronique : 2 mois avec. Eldorado de la nicotine ? Hum .... Évalué à 10.

    Ayant eu des parents fumeurs toute ma jeunesse (dont un mort à 60 d'un cancer des poumons et l'autre qui a du mal à s'arrêter plus de 3 mois de suite), je peux te dire que finalement ça peut aider à prendre aussi la résolution de ne jamais commencer.

    Quand je suis arrivé au lycée, voici les "doses" de fumée passive que j'avais :
    - Dès le petit déj mes 2 parents fumaient
    - Ensuite direction l'abri bus où mes "collègues" fumaient
    - Arrivée au lycée technique, hop 90% des élèves fumaient … donc à moins de faire son asocial tu as du mal à y échapper (pause, repas …)
    - Le soir, soit je retrouvais la bonne ambiance clope à la maison soit je l'a retrouvais le week-end dans les bars avec mes amis (dont 90% fumaient)

    Bref, cette sur-exposition ne m'a jamais donné envie de commencer … de plus je trouvais ça vraiment ridicule le coté "branleur" du choix de commencer à fumer (alors que finalement c'était beaucoup plus "rebelle" de ne pas fumer dans le contexte de l'époque - fin des années 90).

  • [^] # Re: Non, mais ...

    Posté par  . En réponse au journal Point de vue : un IDE est il un outil de programmation indispensable ?. Évalué à 7.

    Ayant commencé à faire de Java sous emacs avant l'apparition d'Eclipse (1999), je peux te dire que lorsqu'un gars de chez XXX (IBM France ?) ayant travaillé sur le JDT a présenté Eclipse en 2002 (DESS=Master 2), ça a été la révolution (voir la révélation). Il faut bien imaginer qu'avec Java, rien que l'histoire des exceptions à catcher/thrower est une galère sans IDE à moins de naviguer dans ta javadoc à chaque écriture de ligne ou à connaître l'API par cœur.

    Revers de la médaille : j'ai noté que de plus en plus les nouveaux développeurs (technicien ou ingénieur) sont incapables de travailler sans IDE (souvent Eclipse). Par exemple la génération de package est une grosse boite noire, ils ne savent même pas ce que contient un ear/jar/war qu'ils envoient à un client. Je ne parle même pas des frameworks utilisés sans aucun recul. A la limite ce n'est pas trop gênant tant qu'il sont en phase de développement, par contre quand on passe en qualification/intégration/recette/production ça devient embêtant d'avoir des personnes ne pouvant pas expliquer un problème sans leur IDE (qui n'est pas connecté sur ces serveurs). Certains ne savent même pas utilisé un bon grep/awk (voir tout simplement une ligne de commande) dans les logs pour faire de l'analyse.

    Voila, c'était le moment vieux con ! Jeunes développeurs ne prenaient pas le paragraphe d'au-dessus comme une attaque, quand je dis "de plus en plus", c'est que le phénomène existait déjà quand je suis sorti d'étude et il y a bien sûr encore beaucoup de très bons développeurs sortant actuellement des écoles/fac.

  • [^] # Re: Ode à OSM !

    Posté par  . En réponse au journal OpenStreetMap : pourquoi vous devriez l'utiliser. Évalué à 1.

    Attention, aux mauvaises surprises avec ce système de placement par défaut de Google Maps ! Pas plus tard que la semaine dernière, je voulais aller chez un amis habitant dans une nouvelle rue résidentielle (qui a tout de même plus d'un an) en "périphérie" de Quimper, comme je ne me souvenais plus trop de la route j'ai démarré le calcul d’itinéraire de Google Maps (Navigation) qui a essayé de m'envoyer au centre ville car il ne connaissait pas l'adresse. Le plus embêtant c'est qu'il ne t'indique pas qu'il a pris une adresse par défaut … je préfère encore dans ce cas avoir une erreur me disant que l'adresse n'est pas connue comme te l'a fait OSM pour "Bordeaux".

  • # Orange Découverte ?

    Posté par  . En réponse au message [RÉSOLU] Abonnement internet ponctuel. Évalué à 3.

    Bonjour,

    Il existe Orange Découverte qui permet de prendre un abonnement internet pour 21€/mois sans engagement sur une ligne fixe (donc il faut déjà payer les 16€/mois à FT) : http://abonnez-vous.orange.fr/residentiel/forfaits/decouverte.aspx

    Après je ne sais pas si les 2 offres (ligne fixe+Orange Découverte) sont vraiment activables pour seulement quelques jours sans à avoir à payer le mois entier.

    En tout cas, s'il existe de meilleurs solutions, je suis aussi preneur.

  • [^] # Re: (ouhhhh le vilain exilé fiscal)

    Posté par  . En réponse au journal Thèse or not thèse, that is the question.... Évalué à 2.

    Et un clapier a lapin a paris, ca va pas taper dans lles 6 chiffres? Et encore, ca c'est quand t'arrives a un trouver un et le signer…

    C'est bien connu, Paris représente 100% des habitants et de la surface de la France …

    Et ya quoi comme resto dans la cambrousse en france? De la grande cuisine? ya pas de "chez dede", bar/bistro/pmu dont l'andouillette frite est repute jusqu'a st jean sur vilandiou? Et quand t'es local, t'en as pas marre de bouffer des gallettes en bretagnes, du canard dans le sud ouest et de la choucroute en alsace? Je suis pas em vadrouille tous les week ends.

    Oh le beau cliché … mais si un jour tu reviens en France, tu ne seras donc pas surpris de voir tous les parisiensfrançais avec un béret sur la tête et une baguette de pain sous le bras. D'ailleurs ce n'est pas pour rien que Citroën relance la gamme DS.

    Personnellement j'habite et je travaille près de Lannion et quand je cherche un resto je ne suis pas limité aux crêperies :
    Dans le pas (trop) cher :
    http://tetedegoinfre.fr/
    Le tire bouchon
    http://tootibon.blog.free.fr/
    Le Bar de la Plage à beg leguer,
    La gourmandine
    Le Bornéo
    http://www.cotesdarmor.com/destination-vacances/savourer/restaurants/restaurant-latitude-greve-blanche
    Le Coz Pors

    Dans le milieu de gamme +:
    http://www.aubonaccueil-perros.com/index.php?_id_o=00004&_id_m=02
    http://www.hotel-restaurant-lecostemor.fr/restaurant-perros-guirec
    La clarté
    Le levant

    Dans le haut de gamme étoilé (mais avec des menus dans les 25€ tout compris le midi) :
    http://tiallannec.free.fr/FR/Restaurant.htm
    http://www.lagapa.com/#/restaurant-gastronomique/le-restaurant
    http://www.la-ville-blanche.com/accueil1.html
    http://restaurant.michelin.fr/restaurant/france/22700-perros-guirec/la-clarte/2dqlvz2

    Et j'en ai sûrement oublié plein.

  • [^] # Re: C'est dommage, l'idée était belle.

    Posté par  . En réponse au journal envolée du cours de Bitcoin. Évalué à 5.

    Je ne discutait pas du fond du sujet, je trouvais juste très marrante ta phrase, elle est d'une logique implacable, on peut la ressortir sur n'importe quel sujet. Après effectivement si tu rajoute un Z dans ton équation, ça devient moins risible que :

    Quelle est la différence entre une Galaxy Tab 2 10.1 et une Galaxy Tab 2 10.1 3G à part la compatibilité 3G ? AUCUNE

    Si tu veux mon avis sur le sujet entre location/achat, je pense que s'il y avait une recette miracle qui marche pour tout le monde ça se saurait depuis longtemps. Le problème dans ce thread c'est que tout le monde y va de son ressenti/expérience en oubliant un paramètre très important : personne ne peut prédire à l'avance quel système sera effectivement plus "rentable" au bout de X années ! Il y a trop de paramètres dans l'équation : prix des loyers, lieux, rénovations, coût du prêt et renégociations possibles, prix d'achat, inflation, déflation, anticipation des accidents de la vie, copropriété … Comme tu le dis, c'est une question de choix et de risques que chacun prend en espérant ne pas être perdant.

  • [^] # Re: C'est dommage, l'idée était belle.

    Posté par  . En réponse au journal envolée du cours de Bitcoin. Évalué à 2.

    assurance d'un côté, assurance de l'autre. Quelle différence à part que l'une est obligatoire? AUCUNE.

    Elle est très marrante cette phrase, si on enlève la plus grosse spécificité de l'équation d'un coté c'est sûr qu'il n'y aura plus de différence.

    Reprenons ta logique :
    X+Y d'un coté, X de l'autre. Quelle différence à part que l'une a plus Y ? AUCUNE … merci Captain Obvious.

  • [^] # Re: Pas supporté par Android ...

    Posté par  . En réponse au journal Une tablette avec RJ45 ?. Évalué à 3.

    Je confirme, que la différence Wifi/Ethernet peut vraiment ce ressentir. Mon expérience me montre que quand je fais du télétravail j'ai intérêt à utiliser mon réseau 100mb/s plutôt que le Wifi.

    C'est peut-être le fait de passer par un VPN, mais en Wifi je ressens une lourdeur extrême sur l'accès aux disques réseau de l'intranet. Le plus "incroyable" étant que la qualité de la téléphonie sur IP (Cisco) est vraiment très dégradée (mes interlocuteurs m'entendent de façon hachée) en Wifi alors que j'imagine que le flux nécessaire est largement en dessous de la capacité de mon Wifi (je n'ai qu'un seul autre réseau Wifi détectable depuis chez moi) … elle même limitée par mon accès ADSL (8mb/s).

  • [^] # Re: Cartographie des résultats

    Posté par  . En réponse au journal Vocabulaire incorrect : les véritables résultats. Évalué à 1.

    Je suis surpris de la coupure franche entre les 2 parties. Je m'attendais à retrouver des résultats serrés dans les départements limitrophes de la zone dure des dissidents chocolatins. En fait à part les Deux-Sèvres (43%/57%) et la Haute-Vienne (38%/62%), les écarts sont vraiment très important (20%/80% voir 5%/95%).

    Comme quoi le découpage en département/région reflète assez bien les différentes cultures françaises.

  • # MathML

    Posté par  . En réponse au message Des maths et du texte. Évalué à 1.

    L'idéal serait de générer tes formules grâce à MathML. Les navigateurs récent doivent gérer proprement ce format : http://www.mozilla.org/projects/mathml/demo/texvsmml.html.

    Tu peux aussi utiliser MathJax http://www.mathjax.org/ qui permet d'afficher joliment des formules LaTeX/MathML dans une page Web via JavaScript.

  • [^] # Re: Dans le même style en Ruby

    Posté par  . En réponse au journal Sleipnir : proxy quick & dirty pour bien coder. Évalué à 1.

    Oui, ça ne serait pas bien compliqué de faire évoluer le script Ruby … mais d'un autre coté la version actuelle me va très bien, c'est super simple vu qu'il n'y a pas de configuration à réaliser.

    Sinon je me suis aussi servit de mon proxy pour modifier à la volée du code HTML (afin d'enlever le "quirks mode" des pages d'une application) :

        if ! filename.nil? && filename=~/\.html$/
          to_server.each_line do
            |line|
            line.gsub!(/<!-- Put IE into quirks mode -->/, "                                ")
            to_client.print line
          end
        else
          loop do
            to_server.read(4048, buff)
            to_client.write(buff)
            break if buff.size < 4048
          end
        end
    
    

    Il faut juste faire attention à ce que la taille du fichier ne change pas (content-length).

    Depuis que j'ai ce proxy, je m'amuse bien à modifier des IHM en quelques minutes.

    Merci encore pour l'idée de départ.

  • # Dans le même style en Ruby

    Posté par  . En réponse au journal Sleipnir : proxy quick & dirty pour bien coder. Évalué à 4.

    Super idée, j'utilisais déjà un petit proxy Ruby écrit par Torsten Becker https://gist.github.com/74107 pour de sombres histoires d'ouvertures de flux qui ne passaient pas derrière un VPN … j'y ai donc ajouté la possibilité de remplacer un fichier "serveur" par un fichier local au proxy.

    L'utilisation est simple, il suffit de préciser le répertoire où sont stockés les fichiers à remplacer à la volée (par défaut /tmp). Dès que le client fait une demande (par exemple /styles/mon_style.css), si un fichier portant le même nom existe dans le répertoire local (exemple /tmp/mon_style.css) c'est ce dernier qui sera renvoyé. Du coup c'est un peu moins modulable que ton code, mais c'est facilement adaptable pour des besoins plus pointus.

    Le code fonctionne sur une installation "minimale" (pas de gems à installer) de Ruby (1.9 testé, mais doit fonctionner en 1.8).

    Le code :

    #!/usr/bin/env ruby
    # Proxy with local file replacement based on Torsten Becker <torsten.becker@gmail.com> ruby proxy https://gist.github.com/74107
    
    require 'socket'
    require 'uri'
    
    class Proxy
      def run port, local_path
        @local_path=local_path
        puts "Start proxy on port #{port}. Local file must be stored in #{local_path}."
        begin
          # Start our server to handle connections (will raise things on errors)
          @socket = TCPServer.new port
    
          # Handle every request in another thread
          loop do
            s = @socket.accept
            Thread.new s, &method(:handle_request)
          end
    
        # CTRL-C
        rescue Interrupt
          puts 'Got Interrupt..'
        # Ensure that we release the socket on errors
        ensure
          if @socket
            @socket.close
            puts 'Socked closed..'
          end
          puts 'Quitting.'
        end
      end
    
      def handle_request to_client
        request_line = to_client.readline
    
        verb = request_line[/^\w+/]
        url = request_line[/^\w+\s+(\S+)/, 1]
        version = request_line[/HTTP\/(1\.\d)\s*$/, 1]
        uri = URI::parse url
    
        # Show what got requested
        puts((" %4s "%verb) + url)
    
        filename=uri.path.split('/')[-1];
        to_server = TCPSocket.new(uri.host, (uri.port.nil? ? 80 : uri.port))
        to_server.write("#{verb} #{uri.path}?#{uri.query} HTTP/#{version}\r\n")
    
        content_len = 0
    
        loop do
          line = to_client.readline
    
          if line =~ /^Content-Length:\s+(\d+)\s*$/
            content_len = $1.to_i
          end
    
          # Strip proxy headers
          if line =~ /^proxy/i
            next
          elsif line.strip.empty?
            to_server.write("Connection: close\r\n\r\n")
            if content_len >= 0
              to_server.write(to_client.read(content_len))
            end
    
            break
          else
            to_server.write(line)
          end
        end
    
        if FileTest.exists?(@local_path+filename) 
          to_server.close
          puts "Get file #{filename} from local directory #{@local_path}"
          to_server=File.new(@local_path+filename, "r") 
        end
    
        buff = ""
        loop do
          to_server.read(4048, buff)
          to_client.write(buff)
          break if buff.size < 4048
        end
    
        # Close the sockets
        to_client.close
        to_server.close
      end
    end
    
    def usage
      puts 'Usage: proxy.rb [port] [directory with local files]'
      exit 1
    end
    # Get parameters and start the server
    port=8008
    path="/tmp";
    ARGV.each do 
      |arg|
      if FileTest.directory?(arg) then path=arg
      elsif arg="-h" then usage
      elsif arg=~/^\d+/ then port=arg.to_i
      else usage 
      end
    end
    
    Proxy.new.run port, path
    
    
  • [^] # Re: Une loi ne fait pas le printemps...

    Posté par  . En réponse au journal "droit au mariage à tous les couples sans distinction de sexe ni de genre". Évalué à 3.

    A l'école, si tu as affaire à des personnes rigides, le 2ème parent n'a pas le droit d'aller prendre l'enfant, il est considéré comme un inconnu.

    Normalement la "rigidité" devrait être la règle. Je te raconte pas le nombre de fois ou cette "rigidité" a éviter de gros soucis à ma conjointe qui est directrice … et inversement il faut bien indiquer au parents divorcés que même s'ils ont la garde totale (ou principale genre durant toute la semaine ouvrée) d'un enfant tant que l'autre parent n'a pas été perdu son "droit parental" (sur décision d'un juge) il aura le droit de venir chercher son enfant à l'école (et normalement toute décision sur la scolarité devra être validée par les 2 parents).

    Après c'est vrai qu'il est temps que les couples homosexuels puisse se marier pour éviter les problèmes dans le cas de directeur "rigide" … c'est le but de cette loi.

  • [^] # Re: origine

    Posté par  . En réponse à la dépêche Un nouveau reverse-proxy cache pour les images externes sur LinuxFr.org. Évalué à 0.

    Je ne suis pas Bruno Michel !

    /o\ ben oui mais quelle idée aussi s'appeler Barret Michel et de répondre à un de mes commentaires qui faisait suite à une réponse Bruno Michel … en plus juste avant le week-end !!!

    C'est retirer une fonctionnalité sympa. C'est bien de pouvoir retrouver la source d'une image.

    Oui mais comme indiqué dans les commentaires ça serait encore plus sympa d'être rediriger sur l'URL d'origine automatiquement (genre en ajoutant /source à la fin de l'URL de reverse proxy).

    À utiliser sha1 ou md5, il suffit de saler et de vérifier la non-existence de la clef avant inversion et changer le sel si besoin.

    On est d'accord (mais ça rajoute x caractères de salage ;)

    Si le nombre d'octets et si important qu'on met autant de barrières au reverse de l'url, il s'agit plus de générer un identifiant que de hasher cryptographiquement une donnée

    Je suis d'accord avec toi, mais je ne faisais que donner un exemple qui répond à la contrainte de la bijection complète mais en "optimisée". En plus question performance c'est pas un gzip sur 1000 caractères qui va faire une grosse différence.

  • [^] # Re: origine

    Posté par  . En réponse à la dépêche Un nouveau reverse-proxy cache pour les images externes sur LinuxFr.org. Évalué à 5.

    Comme tu travailles en ruby tu peux utiliser la méthode urlsafe_encode64() http://ruby-doc.org/stdlib-1.9.3/libdoc/base64/rdoc/Base64.html :

    require 'base64'
    puts Base64.urlsafe_encode64(ARGV[0])
    # equivalent à 
    puts [ARGV[0]].pack('m0').tr('+/', '-_');
    
    

    Cette discussion m'a permis de découvrir la page http://en.wikipedia.org/wiki/Base64 qui est très intéressante (surtout la partie "Variants summary table")

    L'avantage de hex et de base64 c'est qu'elles sont bijectives. Les raccourcisseurs d'URL te file juste un identifiant encodé pour ne pas être séquentiel si je ne m'abuse.

    Après il faut se poser la question de savoir à quoi sert la bijection dans ce genre de cas (je pense qu'il n'y aura pas plus de monde à vouloir décoder les liens en hexa/base64 que de personne à essayer de dépasser la longueur maximale autorisée dans les navigateurs/serveurs ;) ? Le seul risque serait une collision sur 2 images différentes mais avec un md5 ou un sha-1 il faut vraiment le vouloir (ou pas avoir de chance du tout).

    Sinon dernière bidouille pour gagner quelques octets : compresser en gzip l'URL avant de la mettre en base64 :

    use Compress::Zlib;
    use MIME::Base64;
    print encode_base64(compress($ARGV[0]))."\n"
    
    
  • [^] # Re: origine

    Posté par  . En réponse à la dépêche Un nouveau reverse-proxy cache pour les images externes sur LinuxFr.org. Évalué à 3.

    Un des caractères utilisés en base64 est le slash (/). Si plusieurs slashs se retrouvent collés dans l'URL, certains navigateurs les compactent en un seul slash.

    Dans ce cas tu fais ta propre fonction de transformation comme base64 mais sans prendre le / dans les caractères utilisés :). Ça doit être parce que je commence à être un dinosaure qui essaye d'écrire des code IHM ne bouffant par inutilement de la bande passante que ça me choque d'utiliser une méthode de transformation aussi gourmande.

    Après, quitte à faire une meilleure transformation, autant utiliser une fonction de hachage performante comme sur les sites de réduction d'URL.

    Enfin je dis ça, ce n'est pas moi qui vais faire le développement d'un telle idée … c'est déjà un super boulot que tu as fait (une fois de plus). Ça va enfin me permettre de voir les jolies nimages qui sont souvent bloquées par le proxy très strict de ma boite.

  • [^] # Re: origine

    Posté par  . En réponse à la dépêche Un nouveau reverse-proxy cache pour les images externes sur LinuxFr.org. Évalué à 2.

    Petite remarque : pourquoi utiliser une fonction de codage si gourmande ?

    Déjà en base64 on diminue pas mal la longueur (et ça me semble compatible avec le format des URL) :
    aHR0cHM6Ly9hMjQ4LmUuYWthbWFpLm5ldC9hc3NldHMuZ2l0aHViLmNvbS9pbWFnZXMvbW9kdWxlcy9hYm91dF9wYWdlL29jdG9jYXQucG5nPzEzMTU5Mjg0NTYK

    Donc 125 octets au lieu de 184 (pour 92 octets au départ). Après on peut aussi utiliser des fonctions de hachage plus performantes.

    Le problème avec l'hexa c'est qu'on peut vite faire exploser la longueur de l'URL (genre pour mettre à mal IE, je n'ai qu'à poser une image dont l'URL fait plus de 1000 et quelques caractères) : http://www.dubourg.name/s9y/archives/88-Longueur-maximale-des-URL.html