Jean B a écrit 740 commentaires

  • [^] # Re: Une réponse à ta question

    Posté par  . En réponse au journal Franck Riester : "L’interopérabilité n’est pas nécessaire pour les consommateurs". Évalué à 7.

    Personne ne va payer pour ce qu'il peut sans risque pirater ! Soyons sérieux !
    Tu sait quoi ? moi quand j'ouvre mon robinet j'ai de l'eau pour un prix ridicule. Certains jours il en tombe même du ciel !
    Eh bien pourtant il y a des sociétés comme Danone qui s'entêtent a essayer de vendre de l'eau 100x plus cher en moyenne et en plus il faut porter de lourds packs de bouteille jusqu'a chez soit.

    Sont vraiment fadas ces multinationales !
  • [^] # Re: Ouaip

    Posté par  . En réponse au journal Retour d'expérience du monde d'apple. Évalué à 3.

    C'est toujours la même chose avec vous. Ça marche pas chez vous (et éventuellement pour quelques personnes que vous connaissez), et vous en concluez que "ça marche pas" avec "GNU/GNOME/Linux". Et bien non, il faut enlever ces oeillères, chez moi ça marche correctement.

    Plus sérieusement oui ça ne marche pas parfaitement. C'est un problème récurent dont une des raisons est celle-ci:
    http://digg.com/linux_unix/Newly_leaked_Antitrust_Memo_Bill_(...)

    Menfin je t'ai vu plusieurs fois tenir ce discourt et tu n'est pas plus objectif que les gens que tu critique et surtout tu es immédiatement agressif sans raison.
  • [^] # Re: Code le toi même

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

    Si. Pouvoir utiliser un Hash, une Lambda ou un Array ...
    Autant pour moi je t'avais mal compris. On a bien la même vision de la chose.

    Pas vraiment. On faisait du Duck Typing avant. C’est juste que le terme a été utilisé pour décrire ce typage dans Python.
    La encore je voulais parler de l'expression pas du concept. Mea culpa.
  • [^] # Re: pourquoi j'ai choisi python...

    Posté par  . En réponse au journal Python, langage de l'année pour la seconde année consécutive. Évalué à 6.


    from urllib import urlopen
    from BeautifulSoup import BeautifulSoup

    print '\n'.join(i['href'] for i in BeautifulSoup().feed(urlopen('http://www.vmspython.org').read())('a'))

    1 ligne aussi si on passe sur les imports

    --> []
  • [^] # Re: Code le toi même

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

    Oui, c’est du Duck-Typing. Si vous voulez du typage fort, vous prenez C++ ou Java ou autre

    Non ce que tu viens de décrire n'a rien a voir avec le concept de Duck Typing. Python qui a inventé la notion Duck typing te pète une erreur si tu demande un index trop grand ou te renvoie une valeur par défaut si explicitement demandé.
    La c'est un choix de Ruby de faire comme Perl et PHP de renvoyer nil plutôt que péter. Le programmeur doit donc tester sinon il risque d'appeler une méthode sur nil. C'est juste une question de gout.

    Et je te rappelle que Ruby que tu connais mieux que tout le monde apparemment, est un langage a typage fort tout comme Java.
  • [^] # Re: ...

    Posté par  . En réponse au message Récupérer le contenu au sein d'Array. Évalué à 2.

    J'avais bien peur d'avoir compris ça ...
    Malheureusement il n'y a pas a ma connaissance pas de moyen d'en refaire un tableau vu que la représentation ne correspond pas a la forme littérale.
    Je suppose que tu obtient cette chaîne avec un print_r ?

    La comme ça la seule idée qui me vient est une regexp du genre:
    ereg("\[$key\] => ([a-zA-Z' ]+)", $str, $regs)

    Ça marche sur ton exemple, mais teste la bien quand même.
  • # ...

    Posté par  . En réponse au message Récupérer le contenu au sein d'Array. Évalué à 4.

    Si j'ai bien compris tu as un array dans un array etc
    Dans ce cas $result['toto']['plop']['*'] devrait te renvoyer ce que tu recherche
  • [^] # Re: Code le toi même

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

    en somme, tu reimplementes qq chose qui devrait etre dans le langage par defaut...
    Oui, mais c'est justement AHMA la grande force de Ruby. Souvent dans les troll Python/Ruby (dieu sait qu'il y en a depuis l'événement de Django et Rails) un des arguments des Pythonistes (dont je fait partie) est que la librairie standard de Ruby est incomplète et je suis assez d'accord. Seulement avec cette possibilité de monkey_patching les builtins on peut corriger ça facilement, il n'y a qu'a voir le nombre de méthode que Rails rajoute.

    Quand je codais en PHP je souffrait du même comportement foireu mais je ne pouvais rien faire si ce n'est une moche fonction get_item($array, $index) ou un if a chaque accès.
    Idem en Python bien qu'il soit très complet j'ai souvent envie de rajouter quelque chose. Et la a part sous classer (ce qui est génant avec les objet litéraux) on ne peut pas modifier les builts-in et a mon grand regret Python3 ne le permet pas non plus.
  • [^] # Re: Code le toi même

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

    La souplesse de Ruby pour coder une verrue, c'est bien mais je considère quand même qu'il s'agit d'un comportement par défaut incorrect pour un tableau..
    Pour être franc je suis du même avis. C'est typiquement un comportement Perlien/PHPien qui cache les problèmes. Je préfère les IndexError de Python et le .get a l'occasion.

    Sinon pourquoi "get!" et pas "get" ?
    Il me semblait que le point d'exclamation est une convention de nommage pour les methodes qui modifie les objets..

    Oui mais pas seulement. Exemple: http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M0(...)
    Le bang est aussi utilisé pour signaler la possible levée d'exception.
  • [^] # Code le toi même

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

    a = []
    puts a[42] #=> nil

    class Array
    def get!(index)
    val = self[index]
    raise IndexError if val.nil?
    return val
    end
    end

    puts a.get!(42) #=> IndexError
  • [^] # Re: usurpation d'identité

    Posté par  . En réponse à la dépêche RPM va enfin de l'avant avec la version 4.6. Évalué à 3.

    C'est a peu près ce qu'il y a eu avec les versions du protocole RSS.
    La 0.9 et la 2.0 n'ont rien a voir avec la 1.0.
  • # Argh

    Posté par  . En réponse au journal Vista, moins pire qu'on le dit. Évalué à 5.

    Ça fait de nombreuse fois que je vois écrit "moins pire" dans des commentaires. Selon moi ça n'a aucun sens mais vu que c'est en titre et que personne ne s'est encore insurgé j'en viens a douter.

    Est-ce correct ? Est-ce une référence que je n'ai pas ?
    Car c'est vraiment immonde à prononcer et je ne voit pas comment quelque chose peut être "moins pire" ou "plus meilleur" ...
  • [^] # Re: Et vous ?

    Posté par  . En réponse au journal Nouvelle interview de Linus Torvalds. Évalué à 10.

    N'est-ce pas exactement ce que vous faites par ce journal, chers patrick_g ?
    Il y a un élevage ?
  • [^] # Re: Mouarf

    Posté par  . En réponse au journal Troll : Ubuntu vs other AND KDE vs Gnome réuni !. Évalué à 0.

    Par-ce que tu y a placé un troll ?
  • [^] # Re: Critique

    Posté par  . En réponse au journal Explorez les richesses du langage Python. Évalué à 5.

    Exact normalement en Python on devrait parler de "noms" et non pas de "variables".
    Un nom n'est pas typé il sert juste a désigner un objet qui lui a un type/ une classe.
  • [^] # Re: Transition

    Posté par  . En réponse au journal 100 000 dollars pour Theora/Vorbis !. Évalué à 4.

    Aujourd'hui il est tout à fait possible d'avoir un site, avec le même rendu graphique. Même sous Internet Explorer version 6 tout en respectant les normes du w3c.

    Hahahahah
    Il faudra que tu me dise dans quelle RFC on trouve ça :
    !-- [if lt IE 7]

    Ok ça valide vu que c'est un commentaire, mais bon n'empêche que depuis déjà des année on est obligé de faire des ajustement pour IE que ce soit au moyen de commentaires conditionnels ou de Hacks CSS.
    Bref on est loin du monde merveilleux que tu décrit.
  • [^] # Re: Gné ?

    Posté par  . En réponse au message rubygems. Évalué à 2.

    Il faut penser a donner les droit root si jamais tu fait un gem install ...
    c'est à dire?
    et pourquoi?

    Eh bien installe une gem revien a copier des fichiers dans /var/lib, comme ce sont des librairies partagées il faut les droit d'admin ou bien les installer dans ton répertoire utilisateur moyennant une option dont je ne me souvient plus.
    Pour lancer une commande avec les droits d'admin tu peut utiliser sudo ta_commande ou bien juste su

    ça marche avec le terminal(pour l'installation des gems), mais j'aimerai plutôt me servir de rubygems pour installer les gems.
    rubygems (commande gem) s'utilise en ligne de commande justement. c'est la ou je ne comprend pas ce que tu désigne par rubygem
  • # Gné ?

    Posté par  . En réponse au message rubygems. Évalué à 4.

    gem -v ou éventuellement gem1.8 -v
    Il faut penser a donner les droit root si jamais tu fait un gem install ...

    Mais je suis pas sur de ce dont tu parle, tu dit installer des gems avec le terminal mais pas réussir a lancer rubygem ? Il y a comme une incohérence.
    Et pourquoi un raccourci pour un logiciel en ligne de commande ?
  • # ...

    Posté par  . En réponse au message ruby et ubuntu. Évalué à 3.

    Est-il possible de se servir de "scite"?
    Oui ou de n'importe quel autre éditeur.

    Est-ce que quelqu'un peut me préciser quelques liens qui contiennent des exemples de code en ruby ou des tutoriaux qui expliquent un peu la programmation en ruby sur linux?
    C'est la même que sous windows ...

    La seule différence est le shebang en début de fichier mais il n'est pas obligatoire tu peut continuer a lancer tes programme comme sous windows ruby truc.rb
  • [^] # Re: suite

    Posté par  . En réponse au journal Perl, Javouille, Lisaac|(Ruby|SmallTalk|etc..). Évalué à 2.

    D'ailleurs, je me demande si les compréhensions de listes de Python permettent de faire ce que permet LINQ
    Yes they can !
    -->[]

    Plus sérieusement oui, même si la syntaxe sera bien plus éloignée du SQL.
    Mais vu qu'on peut faire des SELECT avec for, des FROM avec in, des JOIN avec +, des WHERE avec if, etc.

    On peut même le faire en évaluation paresseuse avec les moins connues genexp.
  • [^] # Re: Explicit is better than implicit.

    Posté par  . En réponse au journal Perl, Javouille, Lisaac|(Ruby|SmallTalk|etc..). Évalué à 2.

    Allez, une abération que j'ai jamais supporté dans python :
    pourquoi se trimbaler "self" dans la définition d'une méthode d'un objet ?
    Ok, explicit better gnia gnia gnia
    Le programme / les développeurs sont trop con pour savoir qu'une méthode qui se trouve dans la définition d'un objet est lié à un objet ?
    Ca pue surtout le modèle objet un peu foiré ça...


    C'est un héritage du modèle objet de en:Modula-3.

    Il y a effectivement pas mal de langages ou il est implicite, mais bien souvent ça entretient une confusion sur son statut, ses possibilités, ...
    Au moins en Python les choses sont claires, l'instance est un argument comme les autres (on peut le nommer toto si ça nous chante).

    Voir self/this comme un argument est très pratique pour exploiter pleinement l'héritage multiple par exemple:

    class Foo(object):
        def bar(self, arg0):
             print self, arg0

    foo = Foo()
    foo.bar('baz')
    # <__main__.Foo object at 0x7f22d6d0aef0> baz
    Foo.bar(1)
    # TypeError: unbound method bar() must be called with Foo instance as first argument (got str instance instead)
    Foo.bar(foo, 'baz')
    # <__main__.Foo object at 0x7f22d6d0aef0> baz
    class Qux(object):
        def bar(self, arg0):
            print 'Qux !'

    class Fum(Foo, Qux):
        pass
    Fum().bar('egg')
    # <__main__.Fum object at 0x7f22d6bfa7d0> egg
    class Fum(Foo, Qux):
        def bar(self, *args, **kwargs):
            return Qux.bar(self, *args, **kwargs)
    Fum().bar('egg')
    # Qux !map(Foo.bar, [Fum()] * 2, ['egg', 'spam'])
    # <__main__.Fum object at 0x7f22d6c5c490> egg
    # <__main__.Fum object at 0x7f22d6c5c490> spam


    Et tu peut même intervenir dans l'autre sens quand tu commence à taper dans les __new__ et autres __metaclass__.
  • [^] # Re: Pourquoi le cas des CC ?

    Posté par  . En réponse au journal Deezer et législation.. Évalué à 3.

    Prise indépendamment les lignes de codes sont relativement propres.
    La critique viens plutôt AHMA d'un problème de factorisation.
    Exemple cette combo box qui est copiée 3 fois en dur dans le script:
    <code>
    <combobox>
    <variable>mgenre</variable>
    <item>Blues</item>
    #snip 150 lignes
    <item>Trip-Hop</item>
    <item>Vocal</item>
    </combobox>
    </code>

    Ou encore ceci:
    <code>
    if [ "$search" = "Deezer" ]; then
    {
    #Conversion des espaces en url html et autres charactères spéciaux
    mquery=$(echo $query | sed -e 's/ /%20/g' | sed -e 's/[éèêë]/e/g' | sed -e 's/à/a/g' | sed -e 's/[ôö]/o/g' | sed -e 's/ù/u/g' | sed -e 's/ç/c/g')
    ##Lancement de firefox
    firefox http://www.deezer.com/#music/result/all/$mquery 2>/dev/null &
    }
    elif [ "$search" = "Imeem" ]; then
    {
    ##Recherche à effectuer sur imeem
    #Conversion des espaces en url html et autres charactères spéciaux
    mquery=$(echo $query | sed -e 's/ /%20/g' | sed -e 's/[éèêë]/e/g' | sed -e 's/à/a/g' | sed -e 's/[ôö]/o/g' | sed -e 's/ù/u/g' | sed -e 's/ç/c/g')
    ##Lancement de firefox
    firefox http://www.imeem.com/tag/$mquery/music/ 2>/dev/null &
    }
    elif [ "$search" = "Les 2" ]; then
    {
    #Conversion des espaces en url html et autres charactères spéciaux
    mquery=$(echo $query | sed -e 's/ /%20/g' | sed -e 's/[éèêë]/e/g' | sed -e 's/à/a/g' | sed -e 's/[ôö]/o/g' | sed -e 's/ù/u/g' | sed -e 's/ç/c/g')
    ##Lancement de firefox
    firefox http://www.deezer.com/#music/result/all/$mquery 2>/dev/null &
    firefox http://www.imeem.com/tag/$mquery/music/ 2>/dev/null &
    }
    fi
    </code>
    Ne pense tu pas que répéter 3 fois mquery est un peut dommage ? Ne serait il pas mieux placé avant le case ? Ou alors en faire une fonction "urlecode" par exemple.
    Enfin n'importe quoi mais éviter ces copier collé.

    Rien d'horrible mais je pense que les 1K lignes de ce script pourrait fondre comme neige au soleil, et surtout que la partie interface mériterait d'être séparée ce qui rendrait le tout bien plus maintenable.
  • [^] # Re: Python c'est super !

    Posté par  . En réponse au journal Perl, Javouille, Lisaac|(Ruby|SmallTalk|etc..). Évalué à 2.

    s/immutable/immuable/
  • [^] # Re: javascript

    Posté par  . En réponse au journal Perl, Javouille, Lisaac|(Ruby|SmallTalk|etc..). Évalué à 3.

    C'est marrant on dirais que tu n'arrive pas a imaginer autre chose que Java.
    Pourquoi multiples valeurs de retours voudrais dire pas de contrôles des types ?

    Il est vrai que je ne connais pas de langage implémentant les deux concepts, mais rien n'empêche de le faire:

    public final (int, String) foobar(String foo) {
    // snip
    }
  • [^] # Re: T'as tout compris

    Posté par  . En réponse au journal Perl, Javouille, Lisaac|(Ruby|SmallTalk|etc..). Évalué à 2.

    Par ce qu'il n'y a pas d'autre moyen.

    re.match renvoie un "matchobject" si il arrive a appliquer le motif sinon None.

    Il faut donc stocker le résultat et le tester pour éviter d'appeler la méthode "group" sur None.

    Par contre si tu n'a qu'un seul résultat et que tu est certaind e l'avoir sans ce cas tu peut faire :

    import re
    print re.match(r"(\d+).*", line).group(1)