Frédéric Perrin a écrit 207 commentaires

  • [^] # Re: J'ai pas compris

    Posté par  (site web personnel) . En réponse au journal GPL vs MIT, que choisir ?. Évalué à 8 (+6/-0).

    La GPL garantie que les autres contributeurs ne peuvent pas privatiser le code dont tu es l'auteur.

    Dans l'autre sens, elle garantit aussi que l'auteur initial ne peut pas prendre les contributions externes et les re-distribuer sous licence propriétaire dans une version future. À moins de faire signer des CLA qui permettent cela.

    Si tu es le seul auteur sans aucune contribution extérieure, oui tu peux changer la licence quand tu veux. Mais si tu n'acceptes aucune contribution externe, est-ce de l'open-source dans un sens utile du mot ?

  • [^] # Re: Mauvais compromis

    Posté par  (site web personnel) . En réponse au journal Quel pov' type . Évalué à 5 (+3/-0).

    c'est très verbeux

    Dans mon expérience, 90% du typage c'est annoter les arguments des fonctions ou les attributs de classe avec var: TypeDeVar. Je manque peut-être d'imagination :) mais je ne sais pas comment on pourrait faire plus court. Peut-être plus d'inférences : Pourquoi est-ce que je suis obligé d'ajouter -> None à toutes les routines qui ne renvoient rien du tout ? Sûrement quand j'ai un keyword argument f(var=1) mypy pourrait décider que var doit être de type int ? Pour éviter ça je me suis senti obligé de mettre l'option no-untyped-def, qui est vraiment pédante.

    def log(msg: str, level=1):
        print("%d: %s" % (level, msg))
    
    reveal_type(log)   # Revealed type is "def (msg: builtins.str, level: Any =) -> Any"

    ça n'arrive pas a la cheville d'un vrai typage statique

    C'est vrai. C'est clairement un rajout qui s'intègre moyennement bien au langage (ex: le problème de Serge). Mon problème à moi serait plutôt combien il est facile d'avoir des Any un peu partout dès qu'on oublie quelque chose (ex : juste au-dessus), ou lorsqu'on utilise une bibliothèque tierce qui n'a pas de types.

    Dans l'ensemble et malgré tout ça, je trouve que c'est très utile, et ça m'évite un grand nombre d'erreurs avant de lancer mon code, donc j'utilise.

  • [^] # Re: type: ignore

    Posté par  (site web personnel) . En réponse au journal Quel pov' type . Évalué à 5 (+3/-0).

    Salut Serge ! J'avais pas vu le nom avant de répondre :)

    Il m'est venu une autre idée :

    import yaml
    SafeLoader: type["PySafeLoader"] | type["CSafeLoader"]
    try:
        from yaml import CSafeLoader
        SafeLoader = CSafeLoader
    except ImportError:
        from yaml import SafeLoader as PySafeLoader
        SafeLoader = PySafeLoader
    
    y = yaml.load("a: 1", Loader=SafeLoader)
    assert y == {"a": 1}

    Pas de cast ou de type: ignore, et mypy peut vérifier que les opérations que tu fais sur SafeLoader sont valides à la fois avec CSafeLoader et PySafeLoader.

    Clairement c'est pas évident, c'est un exemple où le typage est plus difficile qu'il ne devrait l'être. Mais on pourrait aussi dire : pourquoi donc yaml ne détecte pas tout seul si CSafeLoader est disponible, et force l'utilisateur à faire ces acrobaties :)

    Aussi, la syntaxe blah: typ1 | typ2 est relativement nouvelle (Python 3.10 je crois?), utilise typing.Union[typ1, type2] si tu as un Python plus vieux.

  • # type: ignore

    Posté par  (site web personnel) . En réponse au journal Quel pov' type . Évalué à 10 (+8/-0).

    Je mettrais simplement un commentaire avec type: ignore :

    try:
        from yaml import CSafeLoader as SafeLoader
    except ImportError:
        from yaml import SafeLoader  # type: ignore # appaise mypy: 2em assignement avec un autre module                                                           

    Personnellement, les types me sont très utiles. Ils attrapent beaucoup d'erreurs qui ne se signaleraient que bien plus tard. L'effort pour ajouter des annotations, et la difficulté pour annoter certaines constructions, vaut le coût.

  • [^] # Re: Firefox

    Posté par  (site web personnel) . En réponse au lien Merdification de Chrome anti-bloqueurs de pub. Évalué à 5 (+3/-0).

    D'un point de vue très égoïste, uBlock est l'une des très rares extensions que j'utilise, et comme tu dis j'imagine mal qu'ils lâcheront la prise en charge de FF, donc cela me touchera peu…

    FF est dans un position difficile, de devoir faire sa place et être utilisable (pris en charge par les développeurs Web, d'extensions etc.) quand il ne fait que quelques % des utilisateurs VS Chrome et tous les re-skins de Chrome.

  • [^] # Re: Un vœu pieux, mais une prise de conscience du politique

    Posté par  (site web personnel) . En réponse au lien Leaders in Industry Support White House Call to Address Root Cause of Many of the Worst Cyber Attack. Évalué à 2 (+0/-0). Dernière modification le 28 février 2024 à 12:58.

    Je comprends le point c) comme obligeant à avoir un plan de reprise en cas de catastrophe. Mais si l'entreprise n'a que la version chiffrée (ou pseudonymisée) des données personnelles des clients, ben c'est uniquement ceci qu'elle doit pouvoir rétablir.

  • # Firefox

    Posté par  (site web personnel) . En réponse au lien Merdification de Chrome anti-bloqueurs de pub. Évalué à 5 (+3/-0).

    Je ne comprends pas l’inquiétude à propos de Firefox. Qu'est-ce qui obligerait Firefox à suive la même politique que Chrome pour ses extensions?

  • [^] # Re: question idiote

    Posté par  (site web personnel) . En réponse au journal le shell trick tout pourri du vendredi : .lsignore. Évalué à 2.

    Tu peux toujours appeler le vrai ls avec \ls ou /bin/ls.

    Je pense que si tu as l'habitude de taper lsi et que tu ne vois pas ce qui ne va pas, tu continueras à taper lsi parce que c'est ce que tu es habitué à faire…

  • [^] # Re: uptime ?

    Posté par  (site web personnel) . En réponse au message Temps depuis le dernier arret. Évalué à 4.

    Le monsieur a dit depuis le dernier arrêt…

    À part fouiller manuellement dans /var/log pour les derniers logs qui datent d'avant les messages de boot du noyau courant, je ne crois pas qu'il y ait de solutions de base. Pistes : un syslog configuré pour écrire toutes les n minutes « je suis vivant », un munin qui graphe la valeur d'uptime avec alerte quand il retombe sous la barre des 15 minutes…

  • [^] # Re: ACL du systeme de fichier contre ACL de NFS

    Posté par  (site web personnel) . En réponse au message Aide Freenas et ACL. Évalué à 3.

    Il y a peut-être bien plus simple que tout ça : visiblement dans l'interface oueb de FreeNAS il y a une case à cocher Windows ACL / Unix ACL : http://doc.freenas.org/index.php/Volumes#Setting_Permissions

    Faire un « tunefs -p » ou regarder /etc/fstab avant / après cocher la case peut être intéressant pour voir ce que fait cette case.

  • [^] # Re: ACL du systeme de fichier contre ACL de NFS

    Posté par  (site web personnel) . En réponse au message Aide Freenas et ACL. Évalué à 2.

    Je ne connais pas FreeNAS en particulier, mais sous FreeBSD il y a plusieurs façons de préciser les options pour monter un système de fichiers :

    • les options passées au moment de l'appel à mount(8) ;
    • les options passées dans ton /etc/fstab ;
    • les options inscrites dans le système de fichiers lui-même.

    Je ne sais pas trop ce que tu veux dire par « je supprime cette option à chaque démarrage ». Tu fais un « mount -o remount,nonfs4acls » ? Si c'est ça, ce n'est pas étonnant que l'option revienne au montage suivant.

    Quel est le contenu de /etc/fstab ? Que donne « tunefs -p /dev/ufs/vol » ? Ça devrait te dire que nfs4acl est activé. « tunefs -N disable /dev/ufs/vol » pour le désactiver, mais pour ça il faut remonter le FS en read-only (mount -o remount -r /dev/ufs/vol).

  • [^] # Re: virtualisation?

    Posté par  (site web personnel) . En réponse au message Ordinateur portable. Évalué à 1.

    Viable, c'est-à-dire ?

    Pour le support utilisateur, je n'ai pas eu besoin affaire à eux ; ils ont des forums sur lesquels l'opinion générale semble être que le support est efficace et accessible. C'est une petite boîte de 200 personnes, les gens y seront plus accessibles.

  • [^] # Re: virtualisation?

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

    Le portable que je me suis acheté il y a quelque temps chez Novatech est (d'après /sys/class/dmi/id/sys_vendor) un Clevo, comme deux commentaires plus bas. Il ressemble vraiment beaucoup au modèle que tu postes (esthétiquement et dans les specs). Il est à 489£, plus 16£ pour la livraison si vous êtes de l'autre côté de la Manche, ça reste moins cher, et il est possible de customiser la bête (hum, disque SSD…).

    Tout est reconnu par Linux, sauf le lecteur d'empreintes, mais c'est pas grave. Pour la luminosité de l'écran, j'ai dû installer un noyal 3.7, le 3.2 de Debian ne semblait pas reconnaître les touches de contrôle de la luminosité.

  • [^] # Re: I See You!!!

    Posté par  (site web personnel) . En réponse à la dépêche LibreOffice se met en 4.0. Évalué à 4.

  • [^] # Re: Avis personnel

    Posté par  (site web personnel) . En réponse au journal 127.0.0.0/8, bientôt sur vos traceroute. Évalué à 1.

    Et qu'est ce que tu veux qu'un développeur noyau fasse de plus pour déployer IPv6 quand tu à déjà une stack qui marche ?!

    Justement, rien de plus, ils ont développé tout ce qu'il fallait, tout est là. En fait, ils ne devraient même pas se préoccuper de savoir si il y a encore des adresses dispo en v4 ou pas. Trouver des solutions à ce genre de problématique et pondre les normes, c'est le boulot de l'IETF et autres.

    Ce n'est pas aux développeurs de suivre les RFC, mais l'inverse. Une RFC pour un nouveau protocole ou technique ne peut pas passer au stade de brouillons (Draft Standard) si elle ne dispose pas d'au moins deux implémentations. C'est un peu comme dans le LL : tu expérimentes dans ton coin, tu implémentes d'abord, et ensuite tu publies ta RFC et tu demandes à tout le monde de la suivre.

  • [^] # Re: Avis personnel

    Posté par  (site web personnel) . En réponse au journal 127.0.0.0/8, bientôt sur vos traceroute. Évalué à 2.

    Et je ne retrouve pas le lien, mais je suis tombé il n'y a pas longtemps sur quelqu'un qui expliquait que certains réseaux utilisaient des IP publiques pour des réseaux qui ne sont pas connectés à Internet (ou pour lesquels il suffirait d'un proxy oueb pour les lusers) parce qu'il y a un besion d'accepter des VPN depuis d'autres réseaux ; mais si les deux bouts du VPN utilisent la même plage d'IP privées, ça va faire du caca…

    Tout ça pour dire que non, 3 plages d'IP privées ce n'est pas suffisant.

  • [^] # Re: Avis personnel

    Posté par  (site web personnel) . En réponse au journal 127.0.0.0/8, bientôt sur vos traceroute. Évalué à 3.

    je crois qu'il y a quand même de quoi faire!

    En 2005, des gens comme Comcast avaient déjà épuisé 10/8 pour leur propre tambouille (http://www.nanog.org/meetings/nanog37/presentations/alain-durand.pdf, page 5.

  • [^] # Re: Et moi

    Posté par  (site web personnel) . En réponse au journal Avec un bon Dell on peut.... Évalué à 1.

    De mon côté, mon ancien portable (un Dell aussi) faisait un sifflement quand la carte réseau travaillait trop…

  • # Make love

    Posté par  (site web personnel) . En réponse au journal La revanche du cochon/chien. Évalué à 10.

    Ça fait un peu penser à la blague :

    % make love
    Not war.
    
    

    Qui a été ajoutée en 1998, puis
    activée par défaut, puis gardée par un #ifdef (qui n'est pas défini par défaut, mais les esprits chagrins peuvent le masquer)

  • [^] # Re: Et cher

    Posté par  (site web personnel) . En réponse au journal Presque 12% de participation pour le vote par Internet. Évalué à 3.

    C'est la première fois que les Français de l'étranger sont appelés à voter pour les élections législatives. Sur les élections précédentes, il y a eu :

    • Présidentielles le mois dernier : 42% de votants ;

    • Européennes de 2009 : les gens ont voté dans leur commune de résidence ;

    • Présidentielles 2007 : 42% ;

    • Référendum de 2005 : 33% (et « oui » à 81%…).

  • # Affichage du jugement sur la page d'accueil

    Posté par  (site web personnel) . En réponse à la dépêche Google Suggest : 50.000 euros de dommages et intérêts pour injure publique. Évalué à 6.

    Je ne vois pas de mention du jugement sur www.google.fr. Juste un retard ? Ou Google aurait décidé que payer l'amende est moins cher de d'afficher publiquement une condamnation ?

  • [^] # Re: Sans le savoir,

    Posté par  (site web personnel) . En réponse au journal De bien belles icones comme on aimerait en voir plus souvent.... Évalué à 7.

    Mais pourquoi donc ces magnifiques icones qui donnent tout de suite un plus au bureau ne sont pas utilisées d'origine par kde ou gnome ?

    La réponse est dans le message auquel tu réponds :

    Dommage que la licence interdise une utilisation commerciale. Ces icônes ne sont donc pas libres

  • [^] # Re: C'est fameux

    Posté par  (site web personnel) . En réponse au journal Journal bookmark The Stallman Dialogues. Évalué à 7.

    Rrrrouh, drôle l'humour de perroquet, rrrouh!

  • # /proc/mounts

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

    Est ce qu'il existe une commande pour connaître sur quel montage se trouve un fichier ?

    Oui, df mon_fichier.

    Est-ce qu'il y a plus d'informations visibles dans /proc/mounts ? Ce fichier est maintenu par le noyal. Le fichier /etc/mtab est maintenu par mount(8) (du moins dans une distribution classique, il est possible que dans un système embarqué il y ait des subtilités).

  • [^] # Re: création de fichier qui sera executé en fork.

    Posté par  (site web personnel) . En réponse au message POSIX capabilities / ouvrir port tcp <=1024. Évalué à 3.

    Pourquoi ne pas faire un simple script SETUID que tes utilisateurs pourront lancer sur les binaires qu'ils créent ?

    Autant mettre le mot de passe de root dans /etc/issue, ça ira plus vite...

    Une autre possibilité serait peut-être d'utiliser inetd, qui permet de dire que toute connexion sur le port A est redirigée sur le programe /home/userB/bin/whatever qui sera exécuter en tant que userC.