lolop a écrit 3817 commentaires

  • [^] # 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

  • [^] # Re: Décalage

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

    c'est les conversions implicites entre les nombres et les chaines de caractères qui représentent des nombres

    Surtout pas. La notion de type est importante à comprendre, les transtypages automatiques de ce genre sont une horreur lorsqu'il faut déboguer.

    Perso, en Python, j'aurais même préféré qu'il n'y ait pas de conversion implicite vers/de les booléens (pour l'enseignement du moins — pour programmer je l'apprécie).

    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.

    Tu pourrais détailler « les ressources déjà dispos autour d'outils existants » ?

    Au niveau enseignement, je pensais à tout ce qui est cours (langage ou algo), exercices, TDs, TPs, documentations, etc.

    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é à 6.

    Oui, mais leurs enseignants sont sensés leur apprendre… si ça retire une barrière. Faut voir quel niveau ils ont et ce qu'ils devraient savoir en fin d'année.

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

  • # Dans un navigateur…

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

    Voir http://www.pythontutor.com/, qui permet d'exécuter des petits scripts Python (2 ou 3) en pas à pas, avec la visualisation d'espace mémoire à côté.

    http://www.pythontutor.com/visualize.html#mode=edit

    Ça donner des idées pour une l'interface (bon, pas parfait, il n'a pas aimé le range() avec deux arguments — marche avec 1 argument et avec 3, pas avec 2)

    Et en bas de la page d'accueil il y a des liens vers online Java/Ruby/Javascript tutor & Co.

    Après, le choix du français retire une barrière pour certains étudiant, ce qui peut être bien ; mais le choix d'un langage ad-hoc bloque l'utilisation dans un cadre plus large, dommage pour ceux qui voudraient aller plus loin, et cela coupe l'enseignement de toutes les ressources déjà dispos autour d'outils existants.

    Bons enseignements.

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

  • [^] # Re: Amplification

    Posté par  (site web personnel) . En réponse au journal Une installation hi-fi de qualitay avec le Raspberry Pi (Arch, Pulseaudio, Shairport, trolls inside). Évalué à 10.

    Rodage des oreilles donc.

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

  • # Et sinon…

    Posté par  (site web personnel) . En réponse au journal Intel leader sur tablettes Android ! Mon oeil !. Évalué à 1.

    fait beau chez vous ?

    Z'avez vu quoi comme film récemment ?

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

  • # Ah bon

    Posté par  (site web personnel) . En réponse au message [Résolu] Raccourcis avec les logiciels utilisant qt comme interface graphique. Évalué à 1.

    Chez moi (Kubuntu 14.04) ça fonctionne.

    Avec konqueror, Ctrl-C sur un fichier puis Ctrl-V et il le copie, Ctrl-X puis Ctrl-V et il le déplace.
    Avec keepassx, Ctrl-C puis Ctrl-V dans un champs de texte pour copier/coller.

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

  • # Comparaison vs PureData

    Posté par  (site web personnel) . En réponse à la dépêche Qpsycle, un studio modulaire de création musicale, cherche des développeurs. Évalué à 2.

    Comment se compare-t-il à pd (qui est un développement issu de travaux de l'IRCAM à l'origine [et un dérivé libre de MaxMSP])

    http://puredata.info/

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

  • [^] # Re: Écrans Nucléaires

    Posté par  (site web personnel) . En réponse à la dépêche Sortie de Linux 3.17. Évalué à 8.

    Lapin compris ta réaction.

    C'est pas une question de foi, des chercheurs voient qq chose et cherchent à comprendre ce qu'il y a derrière, peut être rien d'exploitable, peut-être quelque chose. De la recherche fondamentale quoi.

    Et perso mon «believe» va plutôt vers la réduction de la consommation d'énergie et le renouvelable.

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

  • # Si tu trouves…

    Posté par  (site web personnel) . En réponse au message Cherche dépôt pour lire des Blu-ray sous Kubuntu.. Évalué à 4.

    poste la solution ici.

    J'ai un disque BlueRay impossible à décoder avec ce que j'ai, que ça soit sous Windows [via le PowerDVD livré avec le Windows7] ou sous Linux — sauf à acheter un lecteur de salon ou un logiciel spécifique en plus, ce que je me refuse à faire (impression de foutage de gueule).

    Si tu trouves une solution, je suis intéressé.

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

  • [^] # Re: les etapes

    Posté par  (site web personnel) . En réponse au message Écran noir au démarrage, comment revenir au pilote libre de la carte graphique ?. Évalué à 2.

    Ctrl-Alt-F1 (à F6 généralement) pour accéder à une des consoles.

    Puis le reste en ligne de commande… (peut pas aider plus, je ne suis pas un utilisateur de Suse).

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