gc a écrit 2109 commentaires

  • [^] # Re: Blabla de marketeux de mairde...

    Posté par  (site web personnel) . En réponse au journal Le Ministère de l'Equipement choisit Mandrakesoft. Évalué à 5.

    On peut déplorer ce langage, mais c'est le cas dans toutes les boîtes. MandrakeSoft, Suse, Red Hat, n'échappent pas à la règle, par exemple.
  • [^] # Re: Pitoyable

    Posté par  (site web personnel) . En réponse au message de la puissance de (beep) pour trouver un truc simple en 2 minutes. Évalué à 3.

    Dans le même temps, je suis horrifié par le code des outils de la Mandrake, *objectivement* très peu documenté et lisible. Ça me fait sincèrement chier de voir l'effort nécessaire pour les maintenir, à côté des outils de la Fedora, certes pas aussi avancés mais limpides à parcourir, et en plein boom.

    Pour Fedora, on verra ce que ça donnera, mais jusqu'à présent les outils d'aide à la configuration de Mandrake sont plus nombreux et plus puissants alors que les développeurs sont moins nombreux (ils sont un peu plus buggés je le concède, mais globalement ils marchent très bien).

    Maintenant, la question de la documentation du code ne se résume pas à un principe qui tient en deux lignes. En particulier, il faut tenir compte du niveau du/des programmeurs, du taux de "turnover" dans l'équipe de développement (Mandrake c'est pas une SSII), du style qu'adopte une équipe de développement (en connaissant le style on comprendra mieux le code), du besoin de maintenance et d'ajout de fonctionnalité du code (il n'est pas le même dans chaque code/projet : par exemple ce que tu documenteras le mieux sera l'API, les exemples de plugin). Bref, mon point de vue sur la question s'étale en anglais ici :

    http://zarb.org/~gc/html/documenting-code.html(...)

    Et sur ce je vois ton journal, dont le ton est, sinon agressif, très provocateur : une merveille d'un côté, quelque chose de forcément bien plus long et plus chiant en Python de l'autre... avoue que tu y es pas allé de main morte !!

    Euh ce n'est pas parce que mon journal est provocateur (mais pas insultant à part peut-être "chiant" mais bon faut pas pousser) que j'ai le droit de me prendre : "t'as gagné t'es le meilleur" "un super pro comme toi" (plusieurs fois) "trucs plus importants à faire" "un demi-dieu comme toi" "bravo champion" bon j'arrête mais bon tu situes : au premier ça va je rigole, au deuxième je me dis que t'as l'air chaud, au cinquième j'en ai franchement marre.

    je suis absolument persuadé que ce que tu prônes, c'est pour moi un exemple à ne pas suivre.

    Je ne prône que l'utilisation d'un langage de script élégant et puissant pour les "petites tâches vite fait", rien de plus, dans cet article tout du moins. Je sais que le code ci-dessus est illisible, mais son propos n'est pas d'être relu et encore moins d'être conservé ; c'est juste d'avoir un outil permettant de faire rapidement une tâche unique.

    dis-moi ce que tu penses de l'équivalent en python... tu n'es pas tenté ?

    Non. Python pour moi a des avantages indéniables, mais ils sont massacrés par trop d'erreurs. Je te liste les plus importantes que j'ai découvertes lors de mes essais (parfois forcés) avec Python :

    fonctions anonymes castrées

    On se trouve relativement souvent en face d'une situation dans laquelle on veut appliquer une transformation assez simple à un ensemble de données, et les fonctions anonymes sont indispensables pour pouvoir le faire élégamment (elles le sont aussi entres autres pour brancher un callback dans un système de programmation évenementielle).

    Par exemple, j'ai une liste d'entiers, je veux obtenir à la fois la somme de ceux-ci, et la liste avec les entiers doublés. En Perl on le fait comme cela :

    @nouvelle_liste = map { $somme += $_; 2*$_ } @liste

    Ca pourra te paraître imbitable si tu ne connais pas le Perl et sa variable implicite $_, mais une fois que l'on connaît Perl ça devient très lisible. C'est comme si on disait que l'indentation horizontale de Python rend le code imbitable parce qu'on est habitués aux accolades - c'est juste une particularité du langage, qui une fois connue n'est pas un obstacle à la lisibilité.

    En Ruby on le fait comme cela :

    somme = 0
    nouvelle_liste = list.map{ |e| somme += e; 2*e }

    C'est très élégant aussi, on peut discuter entre $_ et |e| qui oblige à nommer la variable locale mais ça n'alourdit quasimment pas.

    En Python on doit définir une fonction, ou bien utiliser un for... in..., mais on ne pourra plus utiliser d'autre appel fonctionnel derrière, ce qui est génant ; si on veut vraiment le faire fonctionnellement on devra écrire :

    somme = 0
    nouvelle_liste = map(lambda e:globals().update({'somme':globals().get('somme') + e}) or 2 * e, liste

    Pour moi c'est un énorme problème de Python, qui m'empêche d'écrire du code fonctionnel. Et au passage, en terme de qualité, réutilisabilité et maintenabilité, le code fonctionnel est d'une utilité fantastique car il force à écrire des fonctions sans effets de bords.

    Sur ce point-là, je suis d'accord que ce n'est pas ce qu'un programmeur débutant fera, mais par contre au bout d'une certaine expérience de programmation le fonctionnel s'impose ; ce qui alimentera pour partie ma future conclusion sur Python.

    message d'erreur totalement cryptique

    Si tu écris cela :

    class Foo:
        def __init__(self):
            print "Foo"

    class Bar(Foo):
        def __init__(self):
            super(Bar, self).__init__()
            print "Bar"

    b = Bar()

    Tu te prends comme message d'erreur :

    File "foo.py", line 7, in __init__
    super(Bar, self).__init__()
    TypeError: super() argument 1 must be type, not classobj

    Si ça t'intéresse, je te laisse tenter de comprendre le sens du message et de trouver d'où vient ce problème, je donne la solution plus bas au [1].

    Bien sûr, ce n'est qu'un exemple et ça ne veut pas forcément parler d'un langage en général. Mais franchement, j'ai burlingué auprès de quelques langages maintenant, et je n'ai pas souvenir d'avoir eu avec d'autres langages que Python un message aussi débile (à part peut-être les messages de g++ quand il y a un problème emmêlant les template, les namespace... et heureusement qu'il n'y a pas de multiple dispatch en plus).

    interpolations

    Il n'y a pas d'interpolation dans les chaînes de caractères. Quelque chose de si pratique disponible dans tellement de langages de script (même Tcl !) et qui n'existe pas en Python, je trouve ça vraiment très dommage. On pourra me dire que ça rend le programme plus lisible, mais au contraire, devoir passer "de droite à gauche" comme on le fait dans un format en C ne rend que le programme moins lisible. C'est un détail mais c'est prodigieusement agaçant quand on programme avec Python.

    objet ? pas objet ?

    On fait la publicité de Python comme langage objet. Mais pourquoi n'ont-ils pas fait les choses jusqu'au bout ? C'est objet mais pour avoir la longueur d'une chaîne, là où Ruby a fait le boulot correctement (chaine.length) en Python c'est len(chaine). Conversion d'une chaine vers un entier ? En Ruby je fais chaine.to_i en Python rebelote je dois faire int(chaine).

    Notons que je n'affirme pas que Perl est mieux là-dessus, Perl est une catastrophe pour l'objet (on peut quand même être heureux d'avoir l'héritage multiple en Perl, surtout quand on fait du Java par ailleurs) ; mais plutôt que si on veut un langage de script élégant, moderne, où tout est objet, il faut vraiment choisir Ruby sur Python.


    Et voilà ma conclusion sur Python, je disais que l'absence de fonctionnel l'alimenterait ; les points ci-dessus aussi. Je vais te choquer certainement si tu aimes bien Python, mais je le dis car je l'argumente : pour moi, Python est un bon langage pour mauvais programmeur. Il est parfait dans ce cas-là car il interdit beaucoup de choses élégantes et/ou puissantes car trop compliquées et "imbitable/illisible". Je suis d'accord qu'avec Python il est facile de relire le programme d'un autre, du coup. Mais par contre quand je programme en Python, je m'arrache les cheveux en ayant l'impression d'être castré comme chez Java. Il est bon pour les mauvais programmeurs car tu es sûr qu'ils ne te feront pas quelque chose d'aussi dégueulasse que si ils avaient programmé en Perl ou en C++. Mais je trouve, en tant que programmeur expérimenté (ça sonne prétentieux je sais mais bon ça fait un certain temps que j'en fais, je connais quelques trucs, il m'en reste plein à apprendre et je rencontre souvent des gens qui m'apprennent des choses insoupçonnées, mais je suis expérimenté quand même na), qu'utiliser Python restreint trop l'expressivité de mes programmes et par là-même la vitesse de développement, sans apporter de vrai bénéfice de maintenabilité (on peut faire aussi maintenable en Perl et en Ruby en suivant des consignes cohérentes de style de programmation, qui sont de toutes façons indispensables avec n'importe quel langage quand on développen en équipe).

    En deux mots, Python suxor :).


    [1] solution : remplacer "class Foo:" par "class Foo(object):" ; j'ai eu de la peine à comprendre le rapport entre le message d'erreur et ça (le "super argument 1" c'est Bar, pas Foo, que je sache !?) et encore moins la différence entre les deux définitions de classe, je ne vois pas trop ce qu'une "classe" peut être d'autre qu'un objet et donc je pensais sincèrement qu'elle héritait implicitement de la top-class object, mais bon apparemment non ; d'ailleurs dans ton code plus haut tu n'hérites pas d'objet, attention à ne pas te heurter un jour à ce problème
  • [^] # Re: Pitoyable

    Posté par  (site web personnel) . En réponse au message de la puissance de (beep) pour trouver un truc simple en 2 minutes. Évalué à 2.

    (je passe sur la duplication de commentaires par rapport à ton premier, auquel j'ai déjà répondu plus bas, au sujet de mon code caca pas documenté toussa) (toi d'ailleurs qui a l'air de mettre en haute estime la qualité, lisibilité et maintenabilité du code, je te rappelle que tu dois l'éviter dans ton code, la duplication, mais passons)

    D'ailleurs je me demande pourquoi y'a une agression par ligne, j'ai dû te contredire à un moment où tu n'étais pas d'humeur ?

    Tu vois c'est con, je voudrais écrire du code imbitable en python que je pourrais même pas, puisque je suis obligé de taper une instruction par ligne.

    Ben, non.

    >>> print "foo"; print "bar"
    foo
    bar
    >>>

    comportant un ou plusieurs espaces avant le point-virgule, ne passent pas avec ton expression rationnelle.

    Ben ouais j'ai fait une erreur sur cette regex, et alors ? Tu ne cesses de parler de demi-dieu et compagnie mais je te signale au passage que je n'ai jamais affirmé quoi que ce soit sur la perfection de mon code, ici comme ailleurs. Si tu fais toujours du code parfait sans erreur, bravo. Tu dois être le seul je pense. Et pense à ranger un peu le venin et à revenir sur Terre...


    Et pour finir tu continues l'agressions, sur Mandrake et son code.. bravo..
    Franchement à part te répondre "va te faire voir pauvre con" là j'ai plus d'idée. Tu juges sans connaître, tu racontes n'importe quoi, tu déverses ton aggressivité de manière totalement gratuite... Non franchement j'ai plus d'autre idée :/...
  • [^] # Re: Pitoyable

    Posté par  (site web personnel) . En réponse au message de la puissance de (beep) pour trouver un truc simple en 2 minutes. Évalué à 2.

    Euh atterris c'est pas un truc qui doit faire partie du logiciel ou de ses outils, c'est un script one-time pour trouver rapidement un truc foireux au sein de plusieurs centaines de classes.

    D'ailleurs après discussion avec les autres, j'ai intégré cette vérification à l'outil de vérification statique de qualité et de standardisation de notre code. Et au passage je te signale que c'est moi qui ait proposé et programmé cet outil, donc comme type qui n'aime pas la lisibilité et la maintenabilité du code, je pense que je suis pas franchement ton client.
  • [^] # Re: ????

    Posté par  (site web personnel) . En réponse au journal concours de technicien de l'Éducation Nationale. Évalué à 2.

    Franchement, c'est pas la perfection, mais par rapport à ce que ça pourrait être, je trouve que c'est déjà pas mal. Sans oublier le fait qu'il y a pas tant de question windows-only que ça finalement, et qu'il y a pas mal de questions linux. Moi je trouve que c'est pas mal...
  • [^] # Re: ????

    Posté par  (site web personnel) . En réponse au journal concours de technicien de l'Éducation Nationale. Évalué à 2.

    Q6: hum culture gé... si jamais ça strippe au delà de la limite, peut-être ? moyen..
    Q17: multiples réponses (mais je me demande si HTTP serait bon, vu qu'en "théorie" c'est pas un protocole d'envoi mais de réception seulement)
  • [^] # Re: Questions de merde

    Posté par  (site web personnel) . En réponse au journal concours de technicien de l'Éducation Nationale. Évalué à 2.

    si c'est du second degré c'est toi qu'est dans les choux :)

    si c'est du premier degré : ethernet et IP n'ont "rien à voir" car ils ne sont pas au même niveau : ethernet c'est le transport physique (il peut transporter de l'IP, de l'IPX, ou n'importe), IP c'est le protocole d'envoi des "paquets" de données sur un réseau (ethernet, token ring ou n'importe).

    donc bref pour ta réponse une adresse ethernet ouais c'est l'adresse mac (sur 6 octets). pour voir le mapping sur ton réseau essaie "arp -a", si t'es en IP sur ethernet.
  • # lobbies

    Posté par  (site web personnel) . En réponse au journal C'est maintenant qu'ils s'en rende compte.... Évalué à 5.

    Dans un monde aux interactions aussi complexes, on ne peut, bien sûr, exiger d'un homme politique qu'il soit expert en tout. Les lobbies peuvent lui permettre de s'informer afin de prendre des décisions équilibrées sur des sujets pointus.

    Ca commence bien... quand on pense que les lobbies peuvent permettre aux décideurs politiques se "s'informer" c'est qu'on manque cruellement de recul, voire de bon sens.

    C'est justement le rôle des experts et commissions nationales voire européennes d'informer les politiques des domaines pointus (même si un organisme comme l'académie des sciences est très critiquée dans les milieux écologistes sur ce rôle-là justement), et certainement pas des lobbies ! Les lobbies ne représentent que ceux qui les financent, et poussent complètement dans le sens des intérêts de ceux qui les financent, au besoin à 180 degrés des intérêts du plus grand nombre et de la société.
  • [^] # Re: Téléphone portable

    Posté par  (site web personnel) . En réponse au journal J'ai testé pour vous .... Évalué à 3.

    bah tant que ça coûte et que ça coûte cher, on est assez préservés..
  • [^] # Re: Téléphone portable

    Posté par  (site web personnel) . En réponse au journal J'ai testé pour vous .... Évalué à 7.

    En tout cas, je voie SONY d'un autre oeil maintenant ...

    Bof Sony a toujours été une énorme boîte qui en profite. Les platines DVD de salon Sony qui ne lisent que les CD ou DVD gravés de marque Sony aussi, ça t'inspire quoi ?

    De toutes façons, c'est l'apanage des énormes boîtes, elles en profitent toutes, ce n'est pas nouveau et ce n'est certainement pas la dernière fois. La seule "solution" est de privilégier les plus petites dans ses achats, tant qu'aucune loi n'est là pour interdire à une boîte de faire plus de xx millions de chiffre d'affaire par an sous peine d'être séparée d'office par les autorités.
  • [^] # Re: easter egg

    Posté par  (site web personnel) . En réponse au journal concours de technicien de l'Éducation Nationale. Évalué à 10.

    et je vois pas trop l'intérêt de se rappeler par coeur de la signification en anglais d'un acronyme mais bon. ce qui importe c'est ce qu'il désigne.

    qui connaît la signification de ISA, PCI ? on s'en tappe..
  • [^] # Re: Remarque:

    Posté par  (site web personnel) . En réponse au journal Mairie de Paris : Microsoft ou pas ?. Évalué à 0.

    euh tous les serveurs linux en prod dans le monde (tu sais 60% des serveurs web, par exemple)
  • [^] # Re: J'ai comme un doute là

    Posté par  (site web personnel) . En réponse au journal Merci Mandrake et a ceux du plf. Évalué à 3.

    Hum. A mon avis c'est plutot le souvenir qui est enjolivé. Faut voir qu'a l'epoque c'etait "state of the art". On adore toujours les derniers trucs et quand c'est dépassé ils font pâle figure par rapport aux anciens. Un simple exemple : il y a de nombreux émulateurs pour linux qui font tourner des ROM (légèrement pirates en général) de vieux jeux console, et les gens qui en sont fan ne sont pas légion. Quand on voit ça on y joue trois minutes mais après on laisse. Même si c'est Mario Kart pour SNES et qu'on y avait joué des heures et des jours à l'époque, aujourd'hui ça suxor.
  • # part

    Posté par  (site web personnel) . En réponse au message Pb installation Mdk 10 Official. Évalué à 2.

    si le partitionnement fait freezer le kernel tu as des chances que l'acces sans partitionnement (si tu l'as fait avant) freeze aussi. recherche plutot la raison/solution/workaround de ce probleme. sur le net on trouve souvent son bonheur pour ce genre de soucis materiel.
  • # meuh

    Posté par  (site web personnel) . En réponse au message > Faire des Screenshots pendant l'install <. Évalué à 3.

    F2 après le partitionnement.

    Si tu en as absolument besoin avant, tu fais une install réseau, tu tappes "xhost+" dans la console #2 dès que DrakX est démarré (non y'a pas d'espace c'est un petit programme fait exactement pour ça) et après sur une autre machine du réseau tu fais "DISPLAY=ip.de.la.machine.en.cours.d.install:0 xwd -root | convert - screenshot.png".
  • [^] # Re: Visuellement ca donne ca

    Posté par  (site web personnel) . En réponse au journal LSM / Bordeaux, informations du dedans ?. Évalué à 2.

    c'est marrant toutes les photos de la conf lisp sont floues (mais toutes hein).
  • [^] # Re: PYTHON !

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

    sa syntaxe se rapproche du basic ...

    mouaif... quand on regarde de très loin alors. ça partage Algol comme ancêtre mais bon.

    http://people.mandrakesoft.com/~prigaux/language-study/diagram.png(...)
  • # refptr

    Posté par  (site web personnel) . En réponse au message Gtkmm et les Pixbufs. Évalué à 2.

    tu vois bien dans l'API de Gtk::Image ce drôle de RefPtr dans le constructeur que tu veux utiliser ? et tu le passes sous silence comme ça ? c'est pas bien sérieux :)

    Glib::RefPtr<Gdk::Pixbuf> pixbuf = Gdk::Pixbuf::create_from_file("/x/y/z/toto.png")
    Gtk::Image *pImg= new Image(pixbuf);
  • # iconv_

    Posté par  (site web personnel) . En réponse au message Iconv. Évalué à 3.

    #include <langinfo.h>
    #include <iconv.h>

    char* iconv_(char* s, char* from_charset, char* to_charset) {
            iconv_t cd = iconv_open(to_charset, from_charset);
            char* retval = s;
            if (cd != (iconv_t) (-1)) {
                    size_t s_len = strlen(retval);
                    /* the maximum expansion when converting happens when converting
                       tscii to utf-8; each tscii char can become up to 4 unicode chars
                       and each one of those unicode chars can be 3 bytes long */
                    char *buf = alloca(4 * 3 * s_len);
                    {
                            char *ptr = buf;
                            size_t ptr_len = 4 * 3 * s_len;
                            if ((iconv(cd, &s, &s_len, &ptr, &ptr_len)) != (size_t) (-1)) {
                                    *ptr = 0;
                                    retval = buf;
                            }
                    }
                    iconv_close(cd);
            }
            return strdup(retval);
    }
  • [^] # Re: Rescue...

    Posté par  (site web personnel) . En réponse au message Problème de démarrage sur Mdk 9.2. Évalué à 1.

    Boot sur le CD1 de la mandrake, comme si tu allais l'installer.
    Ensuite passe en mode expert, tu tombe sur un ecran en mode texte.
    Tape le mot rescue puis enter tu va tomber sur un menu te proposant plusiquer configuration de demarrage.


    C'est quoi ce "passe en mode expert" ?

    La bonne procédure :

    - insérer le CD1
    - au tout premier écran Mandrake, avant même d'avoir booté la machine en somme, tapper F1 puis "rescue" puis entrée

    ensuite navigue et supprime deux ou trois truc de ton /usr

    C'est quoi cette méthode de porc ? 99% de ce qui est dans /usr provient de RPM, il ne faut pas effacer des fichiers au hasard ! La bonne procédure est de virer des RPM. Une fois que tu as choisi de monter les partitions dans /mnt, tu choisis d'accéder à une console, tu tappes "chroot /mnt" pour obtenir ton système normal (avec surtout rpm et urpmi utilisables, du coup), puis tu utilises "urpme <gros-package-installé-récemment>" jusqu'à ce que la commande "df" te montrer que tu as maintenant dégagé un peu d'espace libre.
  • [^] # Re: Pour de vrai

    Posté par  (site web personnel) . En réponse au journal C' est quoi Windows ?. Évalué à 3.

    mais c'est une bonne base je pense que 90% serait à garder. il faudrait juste que quelqu'un de courageux le "corrige" (cependant, en parlant de droits d'auteurs, rien n'est précisé sur la page originale donc par défaut on n'a pas le droit ce serait du plagiat mince)
  • [^] # Re: Pour vraiment vous faire mal au c*l

    Posté par  (site web personnel) . En réponse au journal Petit histoire pour nous les enfants. Évalué à 3.

    En général on enlève déjà 20 à 25% pour le vendeur, peut-être 5 à 10% pour le grossiste. Ensuite, il faut intégrer tout le coût de la pub, probablement aussi le retour des invendus, les avances sur production en amont, le sponsoring des festivals, et j'en oublie très certainement.

    Ne pas se méprendre : je suis d'accord sur le fond, je trouve la pub un cancer, et je pense que les majors c'est pabien(tm) (tout simplement parce que lorsque une poignée d'entreprises concentrent tout le marché il y a des abus mécaniques), mais ceci dit je ne pense pas qu'ils se fassent 90% de bénéf sur les CD.
  • [^] # Re: Eh Bien

    Posté par  (site web personnel) . En réponse à la dépêche Appel à contribution sur l'avenir de XUL. Évalué à 8.

    quels francophones ? tous les francophones que je connais prononcent "og'vorbis".
  • # système de notation inutile

    Posté par  (site web personnel) . En réponse au journal LSM / Bordeaux, informations du dedans ?. Évalué à 8.

    Bon, pour l'instant je rangeais les gens critiques du système de notation parmi les chieurs patentés, mais soit je viens d'y adhérer soit je viens de changer d'avis : dans le thread ci-dessus, le message du monsieur qui n'aime pas rencontrer d'autres gens trop semblables à lui, bien qu'exprimant probablement une opinion minoritaire ici (au vu des réponses), est tout sauf inutile. Mais les gens se défoulent sur les notes et utilisent "inutile" comme "je veux cacher j'aime pas". Et moi je n'ai jamais eu autant de confort de browsing que depuis que je browse à -42 de seuil, parce que sinon ça enlève plein de messages intéressants et ça coupe les fils de discussion.

    Alors ce système de notation, s'il ne remplit pas les buts qu'il s'était fixés, est-il vraiment utile ? Parce que si c'est pour passer son temps à cliquer sur le petit [+] pour déplier, autant ne pas plier...
  • [^] # Re: En direct

    Posté par  (site web personnel) . En réponse au journal LSM / Bordeaux, informations du dedans ?. Évalué à 6.

    Je me posais déjà la question de l'intérêt de se retrouver "entre informaticiens" à l'époque des demo parties. Je n'ai toujours pas trouvé la réponse...

    C'est curieux moi c'est tout le contraire : je trouvais déjà qu'on sortait des démo-parties avec des images plein les yeux, un torse regonflé à mille pourcents, l'impression grisante d'avoir vu ou rencontré quelques uns des programmeurs les plus doués, talentueux ou bien fortement timbrés que l'informatique de djeunz pouvait compter.

    Et aux seules RMLL où je suis allé j'ai passé 3 jours très similaires, même si certaines conf sont chiantes ce n'est pas le tout. Et moi j'avais même découvert que certains débiannistes n'étaient pas irrémédiablement fermés à tout ce qui ne concernait pas Debian, fou non ?