Victor STINNER a écrit 1639 commentaires

  • [^] # Re: Orange et SFR?

    Posté par  (site web personnel) . En réponse à la dépêche L'IPv6 débarque chez FDN. Évalué à 2.

    IPv6 n'a plus besoin de NAT, et ça va lui faire plaisir à Michu je pense.
  • [^] # Re: toujours sur les regexps

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

    Python conserve les 100 dernières regex compilées, mais j'aurai tendance à penser qu'il vaut stocker les versions compilées pour des performances optimales. En Python, l'API sans compilation ou après compilation est identique (ou dumoins se devine facilement : on zappe le 1er argument) :
    - m=re.match("regex", "texte")
    - x=re.compile("regex"); m=x.match("texte")
  • [^] # Re: à propos des regexp...

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

    Pourquoi ne pas réutiliser une bibliothèque existante ? Au moins dans un premier temps.
  • # Python c'est super !

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

    Si Perl et ses contextes mystiques (opérations magiques selon le contexte) te plaisent, tu risques de pas aimer. Mais je pense que pas mal d'aspects de Python devrait t'intéresser. Python est fortement inspiré de Java, mais est beaucoup plus laxiste et concis (« moins verbeux »).

    Pour les expressions régulières : tout est objet en Python, donc une expression régulière est un objet et un « match » est aussi un objet. Voir la doc :
    http://docs.python.org/library/re.html#regular-expression-ob(...)

    La méthode .sub() (« replace all ») accepter une chaîne ou une fonction pour le remplacement. Exemple : re.sub("([0-9a-f]+)", lambda regs: str(int(regs.group(1), 16)), texte, re.IGNORECASE) convertit les nombres hexadécimaux en décimal ("x=10" donne "x=16"). On peut extraire la lambda fonction (et la définir avant) pour une meilleure lisibilité.

    Pour les traitements sur les ensembles (et non pas uniquement sur les tables de hash ou listes), Python implémente les itérateurs de manière très générique : « for x in data: ... » équivaut à :gen = iter(data)
    while True:
    x = gen.next()
    ...

    Les types de base (dict, list, tuple) implémentent cette API. Mais de nombreux objets l'implémentent également : fichier (lecture ligne par ligne), résultat d'une base de donnée, document XML, etc.

    À partir de ça, on peut créer des expressions de type : « results = [(x * 10) for x in data if (x % 3) == 2] ». C'est la forme abrégée deresults = filter(lambda x: (x % 3) == 2, donnees)
    results = map(lambda x: x*10, donnees)
    ou encore results = []
    for x in donnees:
    if (x % 3) == 2:
    results.append(x * 10)

    Je trouve cette programmation, inspirée des langages fonctionnels, élégante. Bien qu'utilisé abusivement, elle peut rendre le code difficile à relire.

    Je ne connais pas bien Perl, mais je pense que « @liste = %h{@t}; » s'écrit « liste = [h[cle] for cle in t] » en Python. C'est plus verbeux, mais se comprend plus facilement (pas besoin de connaître le sens des préfixes @ et $).

    Au sujet des appels de fonction. En PHP, les objets passés en paramètres sont passés par copie. C'est assez pénible, il faut écrire explicitement &$object pour le passer par référence. Ceci peut être fait dans le prototype de la fonction... ou lorsqu'on l'appelle. S'en suit un gros merdier au niveau des effets de bord. En Python, tous les objets sont passés par références (et tout est objet), sauf que certains objets sont immutables (non modifiables) comme les tuples, les nombres entiers et les chaînes de caractères.

    Pour l'assignation, pareil : c'est une copie de référence et non pas copie de l'objet : a=b fait que a et b pointent sur la même donnée. Par contre, lorsqu'on modifie a, b va être modifié ou non selon la même règle qu'avant :
    - type mutable : a et b sont modifiés
    - type immutable : a forke et crée un nouvel objet

    En gros, Python est un pot pourri de divers langages (un peu de Perl par ci, un peu de Lisp par là, un peu de Java, etc.) mais qui en a extrait le meilleur pour donner un langage homogène et très souple.
  • [^] # Re: T'as tout compris

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

    Une raison particulière pour laquelle tu es passé par une variable temporaire ?

    Oui, j'appelle ça la lisibilité :-) Je n'aime pas le code « malin » (que j'appellerai plutôt « concis » en réalité) qui au final n'est compréhensible que par son auteur. Mais oui, en Python on peut écrire des trucs sales !ident, value = re.match(r"(\w+)=(\d+)", line).groups()
    (cette version stocke value sous forme d'une chaîne de caractères et non pas d'entier)

    Note : il existe aussi les groupes nommés :>>> re.match(r"(?P\w+)=(?P\d+)", "cle=42").groupdict()
    {'ident': 'cle', 'value': '42'}
  • # Chiffrement intégral du disque dur

    Posté par  (site web personnel) . En réponse à la dépêche Red Hat Enterprise Linux 5.3. Évalué à 0.

    J'avais testé Ubuntu Gutsy avec chiffrement de toutes les partitions y compris le swap. Et bien, le portable était beaucoup plus lent qu'avant (installation sans aucun chiffrement). Surtout qu'il n'a que 512 Mo de mémoire, alors ça swappe rapidement... C'était les options par défaut dans l'installeur, je me souviens plus des algos utilisés et si c'était le disque ou le système de fichier qui était chiffré.
  • [^] # Re: Nombre de processeurs supportés

    Posté par  (site web personnel) . En réponse à la dépêche Red Hat Enterprise Linux 5.3. Évalué à 4.

    à quoi est due la limitation sur le nombre de processeurs supportés ?

    Je pense que quelqu'un qui choisit d'acheter Red Hat est intéressé avant tout par le support. Je comprend que jusqu'à 126 processeurs, Red Hat prend en charge tous les problèmes. Au delà, le support peut répondre « on sait pas faire » (mais ils vont sûrement tenter d'aider au mieux).

    Côté noyau, la limitation est 4096 processeurs et 512 nœuds depuis Linux 2.6.27 (elle était de 255 processeurs et 32768 nœuds avant). Il y a de gros progrès dans le noyau quant aux performances avec beaucoup de cœurs/processeurs.
  • [^] # Re: Explicit is better than implicit.

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

    Pourquoi écrire du code alors que c'est évident ?

    Évident, c'est pas gagné, surtout avec Perl qui contient énormément de règles implicites qu'il faut connaître pour comprendre le code (il me semble que Ruby et Ruby on rails fonctionnent pareil). L'avantage d'un code explicite est que n'importe qui (ayant une connaissance minimale du langage) peut comprendre facilement le code et donc : le corriger et l'améliorer. D'une manière générale, un code explicite est un gage de pérénité : si le développeur disparait, on peut le remplacer.
  • [^] # Re: T'as tout compris

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

    En Python : import re
    m = re.match(r"(\w+)=(\d+)", line)
    if m:
    __ident = m.group(1)
    __value = int(m.group(2))

    où __ représente l'indentation, ex: 4 espaces (la base HTML code vire les espaces sur linuxfr).

    Je trouve ça plus clair que Perl car où sait d'où viennent et sont les données. Il n'y pas de variable magique comme les $xxx. Perl a l'avantage d'intégrer les expressions régulières à son langage : en Python, il vaut mieux préfixer les chaînes par « r » (chaîne raw, n'interprète pas les antislashs).
  • # Interdiction de coutourner les DRM

    Posté par  (site web personnel) . En réponse au journal Deezer et législation.. Évalué à 3.

    Faudrait-il encore qu'il y en ait, des DRM... Les données passent en clair (non chiffrées) sur le réseau dans le protocole AMF (format de diffusion de contenu utilisé par Flash). Il me semble qu'on n'a pas le droit de coutourner des DRM efficaces, mais quid des fausses protections ?
  • [^] # Re: Mouais

    Posté par  (site web personnel) . En réponse au journal Google enfin en IPv6 ... mais pas pour tout le monde. Évalué à 3.

    Euh, il me semble que le journal n'était pas clair. Google est disponible en IPv6 depuis pas mal de temps sur (bon FAI, mauvais FAI, tunnel ou autre) :
    http://ipv6.google.com/

    Là il est question d'activer la résolution DNS IPv6 (type AAAA) pour le domaine www.google.com.
  • [^] # Vie privée

    Posté par  (site web personnel) . En réponse au journal Google enfin en IPv6 ... mais pas pour tout le monde. Évalué à 4.

    Free offre un préfixe /64 mais dans les 64 bits de poids fort, il y également des bits pour distinguer l'utilisateur !

    En janvier 2008, Free a obtenu le préfixe 2a01:5d8::/32. Le client obtenait le préfixe 2a01:5d8:5xxx:xxx::/64 où xxx:xxxx est son IPv4.

    En mars 2008, Free a obtenu un préfixe plus gros : 2a01:e00::/26 (64 fois plus d'adresse). Le client obtient maintenant un préfixe 2a01:e35:xxxx:xx0/60 (ce qui permet d'avoir 16 réseaux /64 chez soit).
    (lire http://www.freenews.fr/nat/5813-services-ipv6-chez-free-du-n(...) pour les détails)

    Enfin, j'ai pas bien compris les détails (/64 ou /60 ?), mais tout ça pour dire que le préfixe est fixe pour chaque abonnement ADSL.
  • [^] # Re: très bonne nouvelle

    Posté par  (site web personnel) . En réponse au journal Google enfin en IPv6 ... mais pas pour tout le monde. Évalué à 3.

    Windows XP génère une IPv6 au hasard, contrairement à Linux qui utilise l'adresse MAC pour remplir les 64 bits de poids faible. Je suppose que l'utilisation de l'adresse MAC pose problème, on pourra changer l'algorithme de génération d'adresse.
  • [^] # Où est la tortue ?

    Posté par  (site web personnel) . En réponse au journal Google enfin en IPv6 ... mais pas pour tout le monde. Évalué à 4.

    Peuh, il n'y a même pas de tortue qui danse si on est en IPv6. J'espère au moins qu'en IPv6 il y aura plus de résultats pour le porno ! Sur http://www.apnic.net/ un petit bonhomme agite une pancarte « via IPv6 » avec un grand sourire !

    les réseaux IPv6 mal configurés ou mal déservis (comme le 6to4)

    Qu'appelles-tu réseau mal configuré ? Pour détecter 6to4, il y a les préfixes 2001:0000::/32 (Teredo, 6to4) et 2002::/16 (6to4). Free utilise aussi un genre d'IPv6 par IPv4 mais bidouillé maisons (6rd) et utilise le préfixe 2a01:0e00::/104. Si le préfixe suffit pour détecter le tunneling IPv6 dans IPv4, quel est l'intérêt de cette liste blanche Google ?
  • [^] # Re: Très bon logiciel

    Posté par  (site web personnel) . En réponse à la dépêche QCad : DAO pour tous. Évalué à 10.

    T'as déjà essayé de compiler quoi que ce soit sous Windows ? Windows est le pire environnement pour compiler un logiciel :-)
  • [^] # Re: Pascal Nègre promu Chevalier de la Légion D'Honneur

    Posté par  (site web personnel) . En réponse à la dépêche Revue de presse de l'April pour la semaine 2. Évalué à 2.

    Et Céline Dion alors ? Elle a également la Légion d'Honneur depuis mai 2008. Rue89 parle de cette légion :
    http://www.rue89.com/hoax/2009/01/14/faut-il-demander-la-leg(...)
  • [^] # Re: sale temps

    Posté par  (site web personnel) . En réponse au journal Darcs 2.2 release candidate. Évalué à 4.

    Le projet Python songe à passer un gestionnaire de sources distribué. Bien sûr, Mercurial est envisagé et semble même en bonne position pour remplacer Subversion. « Bien sûr » car Mercurial est écrit en Python ;-) Bon, je pense que ça prendra encore mois/années et fils de discussions pour migrer complètement à Mercurial. Ça pourrait même ne jamais se faire. En attendant, il y a déjà des développeurs qui l'utilisent pour Python.
  • [^] # Re: [:cetrio]

    Posté par  (site web personnel) . En réponse au journal Cherche ISO de Windows 7. Évalué à 3.

    Chevallier et Laspales, Le train pour pau, ha ha ha ! J'ai un copain qui nous a joué le sketch hier soir parce qu'on lui a offert l'intégrale en DVD.
  • [^] # Re: Difficulté d'être inclu dans le noyau

    Posté par  (site web personnel) . En réponse à la dépêche La fin de Grsecurity ?. Évalué à 2.

    D'après ce que j'ai lu sur LWN le problème c'est que si on indique qu'une correction bouche un trou de sécu cela implique que les autres corrections ne concernent pas la sécurité.

    Euh non, pas nécessairement. Marquer qu'un commit corrige une vulnérabilité n'indique rien quant aux autres commits. Ça demande aussi un peu de bon sens : la majorité des développeurs sont incapables de savoir si un bug quelconque peut avoir une implication sur la sécurité. Je préfère largement que les failles connues soient explicitement notées.
  • [^] # Re: Chantage

    Posté par  (site web personnel) . En réponse à la dépêche La fin de Grsecurity ?. Évalué à 10.

    Si j'étais un sponsor, j'exigerai qu'il travaille main dans la main avec les développeurs noyau et qu'une partie soient accepté upstream avant un certain délai sinon je ne donne plus de sous. Hop, chantage, mais dans l'autre sens :-)
  • [^] # Re: Difficulté d'être inclu dans le noyau

    Posté par  (site web personnel) . En réponse à la dépêche La fin de Grsecurity ?. Évalué à 10.

    Si 80% des patchs de Grsecurity étaient intégrés upstream, je pense que la maintenance de Grsecurity serait déjà plus simple. On pourrait même penser qu'il y aurait plus d'utilisateurs. Si le code est dans le noyau, ça donne confiance, ex: quand à la pérénité.... Les 20% restant seraient maintenus en dehors et serviraient à renforcer encore la sécurité.

    Le « problème » est qu'il faut être patient, faire de petits patchs, accepter les critiques, et suivre les règles :-) Ça me rappelle le dernier ordonnanceur de processus : y'avait deux projets en lice et celui qui a gagné n'était pas le meilleur, mais celui qui a accepté les critiques.
  • # Difficulté d'être inclu dans le noyau

    Posté par  (site web personnel) . En réponse à la dépêche La fin de Grsecurity ?. Évalué à 10.

    Le patch grsecurity modifie 539 files fichiers et fait environ 37.000 lignes. C'est un très gros patch monolithique qui doit être redécoupé pour être inclu dans le noyau. Est-ce que ce travail a déjà été fait ?

    PaX seul modifie 455 fichiers et pèse environ 23.000 lignes.
  • [^] # Re: Si si

    Posté par  (site web personnel) . En réponse au journal idtgv. Évalué à 5.

    > .. vendre à tarif variable .... pratique interdite à la SNCF

    Hum, je paie rarement mes billets SNCF au même tarif. Genre 60€ l'aller et 40€ le retour. Ça dépend :
    - du jour de l'année
    - de l'heure du départ
    - du nombre de places restantes

    Et sûrement d'autres choses comme des papillons.
  • # La réponse est dans la question

    Posté par  (site web personnel) . En réponse au journal photocopie de carte d'identité. Évalué à 10.

    Quelqu'un pourrait demander une nouvelle carte SIM pour ton numéro de téléphone avec le même numéro. Ce qui pourrait être drôle :-)
  • [^] # Re: Vive les timestamp

    Posté par  (site web personnel) . En réponse au journal Le premier journal du vendredi de l'année (Le Zune plante). Évalué à 2.

    Mouais, enfin on peut pas changer un type aussi facilement : il y a des histoires de compatibilité binaire entre les APIs. De plus, le "format time_t 32 bits signé" est aussi utilisé dans des formats de fichier comme les archives gzip ou le système de fichier ext3. Il faut donc modifier les formats et convertir les fichiers. Heureuseument, ext4 arrive avec ses 64 bits pour les estampilles de temps (enfin !). Windows commence aussi à utiliser 64 bits un peu partout pour le temps.