lolop a écrit 3878 commentaires

  • [^] # Re: le bon coin

    Posté par  (site web personnel) . En réponse à la dépêche Weboob atteint la maturité. Évalué à 9.

    Ça c'est le problème de l'utilisateur de weboob, pas du développeur de l'outil.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: dist-upgrade

    Posté par  (site web personnel) . En réponse à la dépêche Sortie d’Ubuntu 14.10. Évalué à 6.

    Et à condition d'avoir coché la présentation des versions intermédiaires je ne sais plus où.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • # KDE et méta données

    Posté par  (site web personnel) . En réponse au message tags sur des fichiers (pas spécialement musicaux). Évalué à 4.

    Avec Dolphin et Konqueror il est possible d'associer des tags aux fichiers, et ensuite de les utiliser pour des recherches rapides.

    A tester (je sais que ça existe, mais je n'utilise pas).

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • # Aller vers sssd

    Posté par  (site web personnel) . En réponse au message Authentification PAM LDAP+RADIUS. Évalué à 2.

    Ça remplace pam_ldap, nslcd et consor, et c'est plus évolué et plus intégré.

    Comme c'est du made-by RedHat, pas mal de docs sont pour cette plateforme, mais j'ai utilisé ça sur du Ubuntu server et ça tourne. Et le fichier de config est relativement clair.

    => google sssd ldap radius donnera des pistes.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Peu importe mais compression sans perte

    Posté par  (site web personnel) . En réponse au message quel format pour archiver de la musique ?. Évalué à 4.

    J'imagine que "manipuler" peut aussi signifier faire des traitements sur le son pour nettoyer les parasites liés au stockage analogique. Et là il vaut mieux avoir le son complet brut de numérisation.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Rust vs Go

    Posté par  (site web personnel) . En réponse à la dépêche Rust 0.12 : non, pas le jeu vidéo, le langage !. Évalué à 2. Dernière modification le 04 novembre 2014 à 20:12.

    Si on veut se rapprocher de l'idée Ruby.

    def even(x):
        return x%2==0

    (désolé, even n'existe pas en standard en Python à ma connaissance - peut-être dans numpy)

    Puis simplement:

    myArray = []
    mySelection = filter(even, myArray)

    (bon, ça retourne un itérateur, si on veut les valeurs dans une liste: mySelection = list(filter(even, myArray)))

    Bon, avec la fonction on peut aussi écrire l'expression de liste-compréhension de façon plus claire:

    mySelection = [ x for x in myArray if even(x) ]

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Rust vs Go

    Posté par  (site web personnel) . En réponse à la dépêche Rust 0.12 : non, pas le jeu vidéo, le langage !. Évalué à 2.

    Perso je me pose moins de question avec:

    myArray = []
    mySelection = [ x for x in myArray if x%2==0 ]

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Le type "set" ?

    Posté par  (site web personnel) . En réponse au message Algo ; Evitez les doubles "boucles" ?. Évalué à 3.

    Si tu utilises un set (ou frozenset), tu ne boucles plus sur la liste d'IPs. Il n'y a plus qu'une boucle sur ton fichier de log, le test de présence de l'IP de log dans ta collection est juste une opération ~simple~¹.

    Il y a sûrement un équivalent en Perl au set Python, transforme ta liste d'IP dans cet outil, et déjà tu gagneras beaucoup sans trop toucher ton code.

    voir avec le Regexp::Assemble de M.Barrett - comme tu es déjà en Perl…

    ¹ En Python l'opérateur in appliqué à une liste fait comme toi, une boucle sur les éléments à la recherche de celui que tu testes. Par contre, l'opérateur in appliqué à un set/frozenset c'est calcul de la clé de hachage si elle n'est pas déjà présente, mapping de celle-ci à l'index dans la table de répartition des clés, et identification (ou non) de la présence de ce que tu recherches (avec éventuellement parcours de qq valeurs s'il y a des collisions - cf un des autres commentaires et les liens accompagnant).

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Regexp::Assemble

    Posté par  (site web personnel) . En réponse au message Algo ; Evitez les doubles "boucles" ?. Évalué à 4.

    Trouvé un outil similaire à Regexp::Assemble en Python (ça peut toujours servir):
    https://bitbucket.org/haypo/hachoir/wiki/hachoir-regex

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Le type "set" ?

    Posté par  (site web personnel) . En réponse au message Algo ; Evitez les doubles "boucles" ?. Évalué à 3. Dernière modification le 29 octobre 2014 à 15:22.

    Correction, Regexp::Assemble est très intéressant. Juste vérifier qu'il n'y a pas de matchs incorrects (ie. connaître la forme/le type d'info dans les logs - qu'on ait pas plusieurs champs d'IP où il faut en ignorer certaines, sinon le pré-traitement fait perdre pas mal vis à vis de la solution).

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Le type "set" ?

    Posté par  (site web personnel) . En réponse au message Algo ; Evitez les doubles "boucles" ?. Évalué à 2.

    Désespérant.

    []

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Le type "set" ?

    Posté par  (site web personnel) . En réponse au message Algo ; Evitez les doubles "boucles" ?. Évalué à 3.

    Tu cherches quoi ? Tu as quelque chose à proposer sans avoir d'info sur la forme des lignes de logs?

    Je n'ignore rien, l'extraction de l'IP du log peut être coûteuse, sa recherche en O(n) l'est au moins autant… sinon beaucoup plus s'il y a beaucoup d'adresses dans sa "grosse liste d'addresses IP". S'il a quelques milliers d'adresses IP dans sa liste, alors une recherche séquentielle est énormément plus coûteuse qu'une opération d'extraction.

    Mais si Kwiknclean donne la forme de ses logs, il y aura probablement quelqu'un pour l'aider à écrire la regexp optimale qui va bien (peut-être pas moi sur les regexp).

    J'ai modifié l'algo pour comparer la recherche en séquentielle (ie. dans la liste) à la recherche dans le set. Pour rappel, l'équivalent de la "gosse liste d'IPs" fait ~140000 entrées.

    #!/usr/bin/python3
    # -*- encoding: utf-8 -*-
    
    import pprint
    import time
    
    # Fichier 1.5Mo, lu en une seule fois pour pouvoir reboucler dessus.
    with open("/usr/share/dict/french", encoding='utf-8') as f:
        mots = f.read().splitlines()
    
    print("Nombre de mots:", len(mots))
    smots = set(mots)
    
    # Fichier 917K. Lu en une seule fois, mais on pourrait faire au fur et à mesure.
    with open("/usr/share/dict/american-english", encoding='utf-8') as f:
        eng = f.read().splitlines()
    
    # Comptage des mots anglais présents dans le français.
    # En utilisant la liste de mots:
    t = time.time()
    cpt = 0
    for m in eng: 
        if m in mots:
            cpt += 1
    temps = time.time() - t
    print("Mots communs:", cpt, "en", temps, "par recherche dans la liste.")
    
    # En utilisant le set de mots:
    t = time.time()
    cpt = 0
    for m in eng: 
        if m in smots:
            cpt += 1
    temps = time.time() - t
    print("Mots communs:", cpt, "en", temps, "par recherche dans le set.")

    Et ça donne (temps en secondes):

    pointal@soupir:~$ python3 collisions.py 
    Nombre de mots: 139719
    Mots communs: 6139 en 350.167192697525 par recherche dans la liste.
    Mots communs: 6139 en 0.022248506546020508 par recherche dans le set.

    Sans commentaire.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Le type "set" ?

    Posté par  (site web personnel) . En réponse au message Algo ; Evitez les doubles "boucles" ?. Évalué à 3.

    Faudrait voir dans les détails comment ils se débrouillent (http://www.laurentluce.com/posts/python-dictionary-implementation/ => ils redimensionnent dès qu'une table de hachage est pleine aux deux tiers)… un petit test, en utilisant les dictionnaire installés:

    #!/usr/bin/python3
    # -*- encoding: utf-8 -*-
    
    import pprint
    
    # Fichier 1.5Mo, lu en une seule fois pour pouvoir reboucler dessus.
    with open("/usr/share/dict/french", encoding='utf-8') as f:
        mots = f.read().splitlines()
    
    print("Nombre de mots:", len(mots))
    smots = set(mots)
    
    # Fichier 917K. Lu en une seule fois, mais on pourrait faire au fur et à mesure.
    with open("/usr/share/dict/american-english", encoding='utf-8') as f:
        eng = f.read().splitlines()
    
    # Comptage des mots anglais présents dans le français.
    cpt = 0
    for m in eng: 
        if m in smots:
            cpt += 1
    
    print("Mots communs:", cpt)

    Me donne:

    pointal@soupir:~$ time python3 collisions.py 
    Nombre de mots: 139719
    Mots communs: 6139
    
    real    0m0.165s
    user    0m0.144s
    sys     0m0.020s

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Le type "set" ?

    Posté par  (site web personnel) . En réponse au message Algo ; Evitez les doubles "boucles" ?. Évalué à 3.

    Cf le lien que j'ai donné, quand ça collissionne, ils prennent une table plus large.
    Et en plus il y a un genre de sel ajouté il y a quelques temps pour éviter les attaques via des requêtes web avec des chaines forgées qui donnaient des clés identiques.

    +il y a le lien vers les sources si tu as du temps.

    Mais, même en O(log(n)), ça serait plus rapide que du O(n/2) d'une recherche séquentielle.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Not a big deal

    Posté par  (site web personnel) . En réponse au journal Libreoffice 4.3 : Bug 81633 du tri : "It's not a bug, it's a feature !". Évalué à 7.

    Dans le logiciel pas libre, on peut simplement… ne pas te répondre (souvenir d'un bug dans les MFC que j'avais essayé de faire remonter…).

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Le type "set" ?

    Posté par  (site web personnel) . En réponse au message Algo ; Evitez les doubles "boucles" ?. Évalué à 3.

    Je pertinente, à condition que sa grosse liste IP tienne en mémoire.

    Une fois chargée en mémoire la liste IP sous forme de set ou de frozenset, la recherche d'une IP de log dans l'ensemble est en O(1) — les set utilisent des tables de hachage comme les dict (redimensionnables pour limiter les collisions). Cf http://stackoverflow.com/questions/3949310/how-is-set-implemented

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Oui/non

    Posté par  (site web personnel) . En réponse au message Créer un LVM contenant un disque utilisé. Évalué à 4.

    Si c'est juste pour lui une question de se former et qu'il parle juste de faire ça sur sa machine… il est fort probable qu'il soit dans une config très simple sans SAN derrière, et que ça ne lui pose pas spécialement de problème.

    Sinon une autre possibilité: la virtualisation (kvm/qemu ou virtualbox) et tester du lvm sur des disques et machines virtuelles. Ça permet de casser sans risque, voir de monter des pseudo-volumes physiques et de voir comment le lvm les agrège, etc.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: c'est configurable dans la 4.4 :D

    Posté par  (site web personnel) . En réponse au journal Libreoffice 4.3 : Bug 81633 du tri : "It's not a bug, it's a feature !". Évalué à 2.

    Reste plus à lgmdmdlsr qu'à utiliser des références absolues là où elles doivent l'être (ou à utiliser un logiciel de compta perso :-)

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Où est passé Allogène ?

    Posté par  (site web personnel) . En réponse à la dépêche MicroAlg: langage et environnements pour l’algorithmique. Évalué à 2. Dernière modification le 28 octobre 2014 à 18:50.

    Au cas où certains seraient intéressés par les travaux réalisés dans le domaine des outils pour l'enseignement de l'algorithmique, je ne sais pas si c'est le même Jean-Pierre Fournier, mais j'ai croisé un homonyme quand je suis arrivé dans mon labo actuel, qui a développé un soft appelé ActiveTutor.

    Intégration de cette application avec un agent conversationnel animé:
    Article:
    http://perso.limsi.fr/jps/publications/doc/05.A_WACA.activetutor.14juin05.pdf
    Slides:
    http://perso.limsi.fr/jps/publications/doc/05.S_WACA.activetutor.14juin05.pdf

    Et… http://activetutor.free.fr/

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Décalage

    Posté par  (site web personnel) . En réponse à la dépêche MicroAlg: langage et environnements pour l’algorithmique. Évalué à 6.

    Pour un étudiant c'est une somme entre deux nombres, il attendra 9.5 (le résultat "mathématique" normal).

    Là où je pratique, un truc qui a fait du bien lors du passage au Python3 pour l'enseignement de l'algo, c'est la division / flottante même entre deux entiers. 1/2 c'est 0.5, comme en math. Et si on veut une division entière, on utilise // (% pour le reste).
    La distinction des nombres entre entier et flottant avec juste la présence ou non du point décimal… et le changement de sens de l'opérateur / suivant cela… c'était dur pour certains (ça rentre déjà dans un problème du codage binaire interne - c'est plus de l'algo, c'est de la programmation).

    Il faut que l'outil d'apprentissage donne de bonnes pratiques, sans rentrer dans des détails qui font qu'on s'éloigne de l'algorithmique pour aller dans les spécificités d'implémentation du langage.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Décalage

    Posté par  (site web personnel) . En réponse à la dépêche MicroAlg: langage et environnements pour l’algorithmique. Évalué à 7.

    C'est évident pour nous qui programmons.

    Pour des élèves/étudiants dont c'est juste une "option obligatoire qui ne rapporte pas beaucoup de points", le "peu" d'ambiguïté est énorme. Il faut voir ce que l'on retrouve en TPs sur machine…

    D'une manière générale, est-ce raisonnable de s'attendre à ce que 42 == "4.2e1" donne FALSE?

    Oui. Car on compare des choses qui sont de nature différentes.

    Est-ce raisonnable de dire que 2 (bananes) == 2 (carottes) est faux? Il y a pourtant '2' de chaque côté.

    La notion de l'existence des types de données, d'opérations sur ces types, et de combinaisons possibles ou non est nécessaire. Les conversions implicites entre données de natures¹ différentes sont franchement mauvaises pour l'apprentissage

    ¹ Je parle de 'nature' car, par exemple, 1 + 9.5 combine des données de types différents mais qui sont tous les deux des nombres — le problème de la représentation interne est un problème plus technique (même s'il vaut mieux le voir à un moment).

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Décalage

    Posté par  (site web personnel) . En réponse à la dépêche MicroAlg: langage et environnements pour l’algorithmique. Évalué à 3.

    Je n'ai pas parlé de typage statique, mais de typage tout court. Je pensais à des choses comme:

    pointal@soupir:~$ php -a
    Interactive mode enabled
    <?php
    echo(3 + "3"); ?>
    ^D
    6

    Pédagogiquement ce genre de comportement est une horreur (je passe sur le == vs === en PHP, s'il faut l'expliquer à des débutants…).

    Je suis d'accord avec toi que pouvoir fixer le type d'une variable en Python (par exemple par une option de l'interpréteur) améliorerais probablement la compréhension de ce qui se fait et ce qui ne se fait pas pour des étudiants.

    En Python on pourrait même utiliser des module tiers qui permettent d'associer des unités aux valeurs numériques… et de contrôler leurs combinaisons dans les expressions.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Syntaxe lispienne, est-ce bien raisonnable ?

    Posté par  (site web personnel) . En réponse à la dépêche MicroAlg: langage et environnements pour l’algorithmique. Évalué à 9.

    Un truc simple qui pose des problèmes en C: les chaînes de caractères, qui nécessitent d'avoir rapidement une idée sur les tableaux… et les pointeurs (je ne parle même pas de l'encodage - vaut mieux rester en un truc 1 caractère/octet genre latin1).

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Décalage

    Posté par  (site web personnel) . En réponse à la dépêche MicroAlg: langage et environnements pour l’algorithmique. Évalué à 7.

    Tout n'est pas du même niveau, ils peuvent se passer des pointeurs et de la notion d'adresse mémoire, de l'encodage des fichiers, etc (je passe sur l'optimisation).

    Mais "4"+"4" ce n'est pas 4+4. C'est la même notion que les grandeurs en physique, on ne les mélange pas n'importe comment. En algo c'est important de distinguer une valeur numérique, par exemple un compteur, d'une donnée textuelle qui est utilisée par ailleurs.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Dans un navigateur…

    Posté par  (site web personnel) . En réponse à la dépêche MicroAlg: langage et environnements pour l’algorithmique. Évalué à 2.

    Ah, et si un jour tu peux écrire un backend MicroAlg pour Jupyter… ça t'évitera de coder toute la partie web.

    http://jupyter.org/

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN