copapa a écrit 47 commentaires

  • [^] # Re: Justifier

    Posté par  . En réponse au journal scraplap, pour mouler offline. Évalué à 4.

    Le texte justifié gène la compréhension lors de la lecture.

    cf https://en.wikipedia.org/wiki/Sentence_spacing_studies. Extrait :

    A widespread observation is that increased sentence spacing creates "rivers"[14] or "holes"[15] within text, making it visually unattractive, distracting, and difficult to locate the end of sentences.[16] Comprehensive works on typography describe the negative effect on readability caused by inconsistent spacing,[17] which is supported in a 1981 study which found that "comprehension was significantly less accurate with the river condition."[18] Another 1981 study on Cathode Ray Tube (CRT) displays concluded that "more densely packed text is read more efficiently … than is more loosely packed text."[19]

  • # Celery

    Posté par  . En réponse au message *MQ. Évalué à 1. Dernière modification le 20 mars 2018 à 14:12.

    Est ce que celery (qui n'est qu'un front end de file d'attente indépendant du stockage ce qui te permet d'avoir la persistance) te conviendrait ?

    Introduction : http://sametmax.com/files-de-taches-et-taches-recurrentes-avec-celery/

    Il existe une interface web qui semble répondre à tes attentes : https://flower.readthedocs.io/en/latest/screenshots.html

  • [^] # Re: fzf

    Posté par  . En réponse à la dépêche Des alternatives à grep, ls et find. Évalué à 4. Dernière modification le 20 mars 2018 à 13:31.

    Autre avantage de fzf, il est possible de l'interfacer avec un raccourci clavier à son shell.

    https://github.com/junegunn/fzf#key-bindings-for-command-line

    En tapant

    vim ^Tcv tex
    il me propose les fichiers qui correspondent (en mode fuzzy find, ici "vim perso/cv/cv.tex"), plus qu'à sélectionner celui que je veux avec les flèches (ou ^ J et ^ K) et valider avec entrée pour retrouver ma ligne de commande complétée.

    Possibilité également d'utiliser Tab pour sélectionner plusieurs fichiers qui seront tous insérés dans la ligne de commande. Il est même possible de sélectionner avec la souris.

    Dernier point indispensable, la recherche dans l'historique du shell en remplaçant ^ R. quand je me retrouve dans un bash par défaut (sans même ^ S pour rechercher en avant quand j'ai été trop vite :() je pleure un peu.

    bonus : cumuler rg et fzf pour rechercher dans les fichiers en mode fuzzy puis ouvrir la ligne sélectionnée dans l'éditeur : http://owen.cymru/sf-a-quick-way-to-search-for-some-thing-in-bash-and-edit-it-with-vim-2/

  • [^] # Re: Prendre le problème à l'envers

    Posté par  . En réponse au message Ajouter des méthodes à une instance de classe, après sa création. Évalué à 3.

    Même en ayant l'habitude des langages (pré-)compilés où ce genre de manip' est impossible, ajouter dynamiquement des méthodes à une classe est déjà douteux, mais les ajouter à une instance précise est encore plus tordu. Pourtant, l'exercice aurait pu être intéressant en soi…

    Un exercice pas bien compliqué puisqu'il suffit d'essayer. C'est sûr que c'est douteux mais il y a plein de scénario ou ce genre de possibilité est utile. Le duck-typing en profite énormément, si une bibliothèque nécessite un objet capable de d'aboyer mais que je suis sûr d'avoir besoin et qu'il est pertinent de l'appliquer à mes canards, rien de plus simple que de faire aboyer mes canards.

    Ce n'est pas quelque chose qu'on souhaite croiser en production mais tout le monde n'a pas des problèmes d'ingénierie logicielle à résoudre.

    
    >>> class C():
    ...     pass
    ...
    >>> i1=C()
    >>> i2=C()
    >>> def f():
    ...     print("ok")
    ...
    >>> i1.f = f
    >>> i1.f()
    ok
    >>> i2.f()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: C instance has no attribute 'f'
    
  • [^] # Re: Et sur le fond?

    Posté par  . En réponse au journal Microsoft voudrait de la biométrie. Évalué à 5.

    j'ai toujours pensé que l'utilisation d'un gadget, du type des clés qui ouvrent les voitures à distance, semble beaucoup plus simple et fiable que la biométrie, mais la sécurité reste loin d'être parfaite

    Le mot professionnel pour ce genre de "gadget" est carte à puce.

  • [^] # Re: Fork ?

    Posté par  . En réponse à la dépêche Campagne de financement d’eelo pour un smartphone respectueux de la vie privée. Évalué à 7.

    Moi j'utilise SMS Backup+ : https://f-droid.org/en/packages/com.zegoggles.smssync/

    Ça sauvegarde automatiquement dans une boite IMAP. Pas testé la restauration mais j'arrive à accéder à ces SMS depuis thunderbird, ce qui me rassure sur le fonctionnement de la chose.

  • [^] # Re: privacy

    Posté par  . En réponse à la dépêche Firefox fait des vannes pour sa version 56. Évalué à -1.

    Avant, il y avait un bouton qui rappelais que le navigateur était peut-être plus bavard qu'on l'imaginais. Maintenant ce bouton est dissimulé au milieu d'une auto-apologie non méritée (tu mentionnes Google analytics) et on sait tous que personne ne lis ce genre de pavé.

    On se doute bien qu'ils ont camouflé ce bouton pour réduire le nombre de ceux qui désactivent les rapports selon le principe de précaution.

    Donc oui, cela me permet de déduire qu'ils se moquent de la vie privée.

  • # Nemiver

    Posté par  . En réponse au message Substitut de ddd. Évalué à 2.

    Moi j'ai bien aimé nemiver quand j'ai eu besoin d'un debugger. Ca utilise gdb dans l'arrière boutique également.

    https://wiki.gnome.org/Apps/Nemiver

  • [^] # Re: Tu as démontré qu'il y a un gros problème

    Posté par  . En réponse au journal Configurer l'extension wallabag pour firefox.. Évalué à 10.

    La conférence de présentation des nouveaux smartphone d'Apple me fait penser qu'ils sont d'accord avec toi.

  • [^] # Re: Conteneurs

    Posté par  . En réponse au journal Firefox 57 - onglets contextuels et autres joyeusetés. Évalué à 1. Dernière modification le 28 août 2017 à 11:00.

    Peut-être que OneTab peut remplir cette fonction. Le bouton principal regroupe tous les onglets ouvert actuellement dans une simple page html locale avec des liens vers les url des onglets. Je m'en sert pour réduire le nombre d'onglet et la consommation mémoire tout en satisfaisant ma névrose à ne pas fermer des onglets, on sait jamais ça peut me resservir un jour.

    Possibilité ensuite d'éditer les groupes, de les nommer, de les marquer comme favori, de restaurer tout un groupe, de le partager, d'ajouter un lien dans un groupe via le clic droit etc.

  • [^] # Re: Numpy FTW

    Posté par  . En réponse au journal Un Python qui rivalise avec du C++. Évalué à 7.

    Et pour en savoir plus, tu peux consulter les journaux de son auteur, serge_sans_paille, qui nous a parlé régulièrement de pythran depuis sa création : https://linuxfr.org/tags/pythran/public

  • [^] # Re: Mwai

    Posté par  . En réponse au journal Firefox 57 - onglets contextuels et autres joyeusetés. Évalué à 9.

    Implémenter une fonctionnalité, la supprimer ensuite, lâcher la responsabilité de gérer ça par la communauté Firefox, lui chier sur la tronche en pétant les API puis réimplémenter la même chose par dessus (car oui ces containers ne seront que des groupes d'onglet Panorama colorés pour 90% des utilisateurs, les 10% restant apprécieront le multi-compte sur leurs sites préférés); certains appellent ça innover, moi j’appelle ça se foutre de la gueule du monde et de la perte de temps.

    Sans développeur d'extensions ni utilisateurs je leur souhaite bon courage pour tester leurs innovations.

  • [^] # Re: Mwai

    Posté par  . En réponse au journal Firefox 57 - onglets contextuels et autres joyeusetés. Évalué à 5.

    Soyons plus réalistes : dans cette première version, ce sera utilisé par les geeks, c'est sûr. Mais dans 5 versions ce sera abandonné comme toutes les fonctionnalités sans grand intérêt ajoutés par Mozilla. Ils feraient mieux de laisser ce genre de fonctionnalités dans les extensions et d'arrêter de toutes les péter toutes les 3 versions.

  • [^] # Re: Et ils le savent comment ?

    Posté par  . En réponse au journal Grsecurity attaque Bruce Perens en justice pour diffamation. Évalué à 2.

    Ils doivent trouver une technique qui résistera a un diff entre deux utilisateurs complices. Bon courage a eux.

  • [^] # Re: Puisque qu'on parle de ssh ...

    Posté par  . En réponse au journal Openssh, dernières actus. Évalué à 1.

    L'exemple d'une deuxième configuration ssh est un des exemples utilisés par Redhat pour expliquer comment créer des unit files pour systemd : https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Unit_Files.html#ex-Managing_Services_with_systemd-Multiple_sshd

    Et comme tu le dit, il copie la config et créé un nouveau service.

  • [^] # Re: Couplage avec IPoT

    Posté par  . En réponse à la dépêche Prédire la note d’un journal sur LinuxFr.org. Évalué à 5.

    Oui mais modifier ainsi le continuum espace temps modifierai également la base d’apprentissage et donc apporterai une sorte d'élitisme à ce classifieur; les great trolls glissant vers la catégorie magnificent trolls et ainsi de suite. Par application récursive, nous arriverions à une situation ou aucun journal ne serait publié avant d'atteindre une qualitaÿ parfaite !

    Nom de Zeus !

  • # Mon bidouillage

    Posté par  . En réponse au journal Présentation du multiplexer de sessions ssh cssh_tmux. Évalué à 6. Dernière modification le 12 mai 2017 à 15:36.

    Je me permet de partager mon petit script shell (baptisé syncssh) qui semble faire la même chose (peut-être en moins bien mais il a le mérite d'avoir peu de dépendances). Bon je ne suis pas expert en tmux mais ça a fait le boulot quand j'en avait besoin (je n'arrive pas à mettre le shebang #!/bin/sh dans le codeblock :().

       if [ "$#" -lt 1 ]; then
              echo "Usage: $0 ssh_hostname" >&2
              exit 1
            fi
    
            # why does it not work when window name is simply syncssh ? maybe a dead window is haunting my session
            tmux new-window -n syncssh32
            tmux send-keys    -t 0 "exec ssh $1" C-m
            shift
    
            i=1
            for var in "$@"
            do
            tmux split-window -h -t syncssh32
            tmux send-keys    -t $i "exec ssh ${var}" C-m
            i=$(($i+1))
            done
    
            tmux select-layout tiled
            tmux select-pane -t 0
            tmux set-window-option synchronize-panes on > /dev/null

    J'ai également un binding qui me permet lorsque nécessaire de désynchroniser ou resynchroniser les panes.

        bind C-s set-window-option synchronize-panes
  • # xcf.txt

    Posté par  . En réponse au message Cherche documentation concernant le nouveau format xcf version 8 (Gimp-2.9 et 2.10). Évalué à 2.

    Si ce sont les deux seuls changements, je pense que ce document s'applique (même s'il semble dater):

    https://github.com/GNOME/gimp/blob/master/devel-docs/xcf.txt

    PROP_COMPRESSION (essential)
    uint32 17 Type identification
    uint32 1 One byte of payload
    byte comp Compression indicator; one of
    0: No compression
    1: RLE encoding
    2: (Never used, but reserved for zlib compression)
    3: (Never used, but reserved for some fractal compression)

    Sauf que la propriété PROP_COMPRESSION vaut 2? J'imagine qu'il suffirait de modifier le code de KDE pour appeler la zlib à la place du décodeur RLE lorsque cette propriété vaut 2.

  • # Trouvé !

    Posté par  . En réponse au message Implémentation d'un moteur de recherche booléen. Évalué à 1.

    J'ai commencé mes recherches sur les lexer/parser et à jouer avec jison et au moment ou je commençais à m'arracher les cheveux, j'ai trouvé quelque chose qui ressemble furieusement à ce que je cherchais :
    https://gist.github.com/stt/1296753

    Et là, je remarque que ce que j'avais commencé à pondre était pas si loin du but.

    Il me reste à étudier ça et à l'adapter à mes besoins.

  • # Une classe "ensemble d'utilisateur"

    Posté par  . En réponse au message J'ai besoin d'un avis extérieur pour m'aider.... Évalué à 2.

    Moi pour commencer, je ferai une classe utilisateur et une classe "ensemble d'utilisateur" qui serait une liste ou un ensemble d'instance d'utilisateur. Cette classe aurait une méthode (surement un constructeur même) qui permettrait de générer la liste et d'instancier tous les utilisateurs à partir d'un critère de recherche/une requête SQL et donc en ne faisant qu'une requête.

  • [^] # Re: A force...

    Posté par  . En réponse au journal Typage statique pour Python. Évalué à 1.

    Mais que se passe-t-il si je donne à la fonction pgcd sans annotations des objets pour lesquels sont définis les opérations mod et comparaison à 0 (une classe polynôme par exemple) ? Est ce que le systême d'inférence va me mettre des bâtons dans les roues parce qu'il a fait de mauvaise hypothèses ?

  • # Port ethernet USB

    Posté par  . En réponse au message Wireshark avec un portable n'ayant qu'un port eth. Évalué à 4. Dernière modification le 27 mai 2016 à 13:38.

    Moi j'ai acheté un petit adaptateur Ethernet USB. Ça coûte pas bien cher et c'est peu volumineux. Apres, reste qu'à bridger les interfaces comme le fait le monsieur pour ne pas faire obstruction au passage des paquets.

  • # Xfvb

    Posté par  . En réponse au message Variable $DISPLAY. Évalué à 4. Dernière modification le 03 mars 2016 à 14:43.

    Xfvb va te lancer un serveur X "virtuel". Tu pourras lancer tes applis graphique en spécifiant celui dans la variable DISPLAY. Tu pourras récupérer un screenshot de ce serveur X via import d'ImageMagick et le manipuler via un client VNC ou via xdotool.

    https://en.wikipedia.org/wiki/Xvfb

  • [^] # Re: On dirait du C

    Posté par  . En réponse au journal Analyse de texte. Évalué à 4. Dernière modification le 15 décembre 2015 à 21:05.

    Piqué sur http://stackoverflow.com/questions/6822725/rolling-or-sliding-window-iterator-in-python

    from itertools import islice
    
    line="abcd\nefg"
    
    def window(seq, n=2):
        "Returns a sliding window (of width n) over data from the iterable"
        "   s -> (s0,s1,...s[n-1]), (s1,s2,...,sn), ...                   "
        it = iter(seq)
        result = tuple(islice(it, n))
        if len(result) == n:
            yield result    
        for elem in it:
            result = result[1:] + (elem,)
            yield result
    
    for chunk in window(line, 2):
        print(chunk, ''.join(chunk))
    for chunk in window(line, 3):
        print(chunk, ''.join(chunk))
        from itertools import islice
    

    La sortie :

    ('a', 'b') ab
    ('b', 'c') bc
    ('c', 'd') cd
    ('d', '\n') d
    
    ('\n', 'e') 
    e
    ('e', 'f') ef
    ('f', 'g') fg
    ('a', 'b', 'c') abc
    ('b', 'c', 'd') bcd
    ('c', 'd', '\n') cd
    
    ('d', '\n', 'e') d
    e
    ('\n', 'e', 'f') 
    ef
    ('e', 'f', 'g') efg
    
  • # units

    Posté par  . En réponse au journal Le core utile. Évalué à 4.

    Concernant numfmt, moi j'aime bien la commande units. Elle permet de convertir plein de choses en plein d'autres chose

    You have: 3km
    You want: millilightyear
    * 3.1710025e-10
    / 3.1535768e+09
    You have: 82kg
    You want: sunmass
    * 4.1224674e-29
    / 2.4257317e+28
    You have: A4paper
    You want: cm2
    * 623.7
    / 0.0016033349
    You have: 1 pint
    You want: nebuchadnezzar
    * 0.031545098
    / 31.700646