Philippe F a écrit 2182 commentaires

  • [^] # Re: Expressivité

    Posté par  (site web personnel) . En réponse au journal Les 7 étapes pour devenir un programmeur Go.. Évalué à 5.

    J'ai du mal à voir C++ et expressivité dans la même phrase, et Python dans la catégorie "inexpressivité". Pour le reste du commentaire, je suis plutôt d'accord.

    J'exprime mon désaccord sur les deux points:

    Python est au contraire un langage très expressif, le programmeur peut manifester son intention en très peu de lignes de code. Le boiler-plate code en Python est quasiment inexistant.

    A l'opposé, à chaque fois que j'utilise la STL en C++, mes yeux pleurent, je me dis que 120 colonnes pour une ligne, c'est bien peu quand tu veux manipuler une structure un tant soit peu élaborée.

    Allez, au hasard, parcourons une map/un dict de string vers des paires de string en Python et en C++ et inversons les paires:

    En Python:

    # on parcours le dictionnaire, k est la clé, v est la valeur
    for k,v in d.items():
       # v est une paire, on peut accéder aux deux éléments et les inverser
       d[k] = (v[1],v[0])

    En C++:

    // on parcours le dictionnaire/map avec un iterateur, it.first est la clé, it.value est la valeur
    for (map<string, pair<string, string> >::iterator it = d.begin(); it != it.end(); it++) {
        // la paire est dans it.second, c'est elle qu'il faut inverser
        d[it.first] = make_pair( it.second.second, it.second.first );
    }

    En terme d'expressivité et lisibilité, je trouve que la version Python s'en sort beaucoup beaucoup mieux.

    Et encore, il aurait été de bon ton d'expliciter l'instanciation de make_pair<> .

    Alors, certes, en C++11, on peut faire plus compact en utilisant des auto et surement avec d'autres trucs (lambda ? foreach ?). Mais tout le monde ne les connait pas.

    On peut aussi faire bien plus compact en Python mais on tombe sur le même problème: la syntaxe des Python compréhensions est peu connue (par exemple, aucun de mes collègues de travail ne connait):
    d = { k:(v[1],v[0]) for k,v in d.items()}

  • [^] # Re: télémétrie

    Posté par  (site web personnel) . En réponse au journal Microsoft publie sous licence MIT les sources de la calculatrice de Windows. Évalué à 6.

    M****, je viens de faire un calcul avec mon mot de passe par erreur. Tu crois que Microsoft est déjà au courant ?

    Ça me rappelle KDE il y a fort longtemps où je ne sais plus pour quelle situation, tu pouvais te retrouver à copier ton mot de passe dans le presse-papier. Et tu voulais le coller quelque part mais si tu faisais pas attention, tu faisais un click du milieu dans Konqui, qui prenait automatiquement le contenu du presse-papier et essayait de le traiter en tant qu'url et si ça ne passait pas, il lançait une recherche sur google avec. En un clic souris du milieu, tu balançais ton mot de passe sur google. Nice :-)

    Et c'était considéré comme une super feature par le développeur :-)

  • [^] # Re: Passionnant

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

    J'en reçois seulement depuis quelques semaines, comme vous.

    Détail intéressant, une version de ce SCAM me dit qu'il connait mon mot de passe et affiche dans le mail … mon mot de passe. C'est assez flippant sur le coup.

    Il dit aussi qu'il a mis un tracker dans l'email, ça par contre, j'ai vérifié, c'est pas le cas.

    Après quelques recherche, j'ai découvert que c'était mon mot de passe linkedin, connu probablement suite à cette fuite (merci au passage à Ihavebeenpowned qui m'a fait découvrir cela).

    Evidemment, je suis un geek consciencieux, j'utilise des variantes de mon mot de passe suivant les sites où je vais. Mais ça reste flippant!

    Du coup, je me lance dans une campagne de remise à plat de mon mot de passe de référence. Je vais le passer à 16 caractères, et passer la partie variable à deux ou trois lettres…

  • [^] # Re: Comment "démasquer" un faux visage

    Posté par  (site web personnel) . En réponse au journal Cette personne n'existe pas. Évalué à 6.

    Le problème, c'est que les gens ne se fient plus aux journalistes…

    La plupart des informations sont maintenant véhiculées par les réseaux sociaux, seule la première ligne de l'article est lue, l'émotion est le seul angle d'analyse de ce qui est dit. Si en plus l'information va dans le sens du poil du lecteur, il y a encore moins d'analyse qui est faite.

    Saloperie de société de moutons !!!

  • [^] # Re: LA solution

    Posté par  (site web personnel) . En réponse au journal [HS] Etes-vous pour rester à l'heure d'été ou à l'heure d'hiver ?. Évalué à 6. Dernière modification le 18 février 2019 à 11:27.

    Pour ne pas s'enfoncer dans une route délétère, on pourrait quand même sauter un jour de temps en temps, genre quand la somme des décimales de la date au carré (jour-mois-année complète) est divisible par 13.

    Après, c'est juste une habitude à prendre…

  • # Socialiser

    Posté par  (site web personnel) . En réponse au journal Les arts martiaux. Évalué à 7.

    En plus des aspects déjà cité, j'aime bien la pratique d'un art martial pour socialiser. Ca m'a permis de rencontrer des gens très sympas, qui sont en dehors de mon milieu social habituel. Notamment, il y a un bon mélange des classes sociales dans les différents clubs où j'ai pratiqué et ça fait du bien de changer d'horizon. Ca s'applique bien sur à peu près n'importe quelle activité à un prix abordable.

    Sinon, je pense que beaucoup d'arts martiaux ne permettent pas vraiment de combattre un adversaire agressif (par exemple, c'est le cas de l'aikido que je pratique pourtant avec grand plaisir) mais ça donne déjà une posture. Le fait de pratiquer la rencontre d'un "agresseur" et d'un défenseur en cours donne une certaine confiance en soi qui fait qu'en cas de situation réelle, on sera légèrement moins stressé. Quelqu'un qui n'a pas peur attire aussi moins l'envie de tabasser: les délinquants préfèrent s'en prendre à des faibles.

    J'ai beaucoup de plaisir à pratiquer l'aikido malgré son irréalité martiale. Ce que j'aime bien c'est:
    - une petite plongée dans une autre culture, la culture japonaise martiale légèrement médiévale
    - la souplesse des mouvements qui m'entretient. On apprend à rouler pour se dégager d'une prise (et non pas à chuter brutalement comme au judo). A chaque fois que j'ai mal au dos, un bon cours d'aikido me remet toutes les vertèbres en place et je me sens bien.
    - je trouve les chorégraphies de l'aikido très jolies.
    - la connaissance du corps humain est aussi très intéressante. L'être humain vue en tant qu'un ensemble d'aritculation est assez marrant à manipuler.
    - j'adore faire joujou avec les armes. Se retrouver en face d'un sabre en bois (bokken) est très impressionnant et réveille tout de suite un mélange de peur et de tension combative. Manipuler le baton en bois est très marrant. Si en plus, ça permet de se défendre un jour, pourquoi pas. En attendant, c'est un peu comme apprendre à jongler.

    Cette année, je change de discipline pour quelque chose de plus combatif: le Yoseikan Budo. C'est aussi d'inspiration japonaise, et ça intègre des notions de karaté, judo, boxe, aikido, de lutte et de pratique d'armes. On fait des combats d'armes avec des armes en mousse, on rigole comme des gamins.

  • # Et la profession libérale ?

    Posté par  (site web personnel) . En réponse au journal Devenir un indépendant libre. Évalué à 10.

    Bizarre, le titre parle de travailler en "indépendant" et tu ne parles pas du seul statut qui correspond le mieux à la définition d'un indépendant: la profession libérale.

    Contrairement aux autres forme d'entreprenariat que tu cites, tu n'es pas rattaché à une structure, et tu n'es pas obligé de créer une structure d'entreprise juste pour t'héberger toi.

    Concrètement, tu ne crées pas d'entreprise avec des statuts, tu n'es pas salarié non plus, c'est ta propre personne qui devient une entreprise avec un SIRET. Tu peux même (c'est fortement déconseillé) mélanger tous tes revenus et tes dépenses privées avec tes revenus pros, la seule obligation étant de possèder un compte dédié à ton activité professionnelle.

    En terme d'administratif et de comptabilité, c'est plutôt simple. Tu dois t'affilier à un Association de Gestion Agrée (AGE) qui va vérifier vite fait tes comptes à l'année.

    Il n'y a pas de notions de dividendes ou de salaire: tout ce que tu perçois comme revenu professionnel t'appartient. Tu déclares à la fin de l'année un bénéfice qui est taxé il me semble de façon proche d'un dividende.

    J'ai exercé sous ce statut pendant une année et j'ai trouvé ça plutôt léger en terme d'administratif, et plutôt rentable en terme de conversion montant facturé / net dans ma poche.

    Par contre, tu es un peu livré à toi-même ce qui peut être un peu angoissant vis à vis des administrations. Il faut bien choisir son AGE pour être bien conseillé.

    A noter que si tes clients ne te payent pas trop, tu peux être auto-entrepreneur. Mais les montants des rémunérations dans l'informatique dépassaient lorsque j'avais tenté l'aventure les plafond de la micro-entreprise.

  • [^] # Re: depression ou burnout

    Posté par  (site web personnel) . En réponse au journal Mes activités open sources / libres récentes. Évalué à 8.

    Le burn-out emmène vers une dépression, qui elle peut s'installer beaucoup plus durablement que la charge de travail / pression / complications qui ont conduit au burn-out. C'est donc assez sournois, les conséquences persistent longtemps après que les causes aient disparues.

    Je parle malheureusement d'expérience…. 2 ans après un burn-out professionnel, je sens que je ne suis plus capable de gérer le niveau de responsabilité professionnelle que je gérai auparavant. Je ne suis pas sur que je pourrai de nouveau le faire dans ma vie.

  • [^] # Re: un art de vivre plutôt qu'une formation

    Posté par  (site web personnel) . En réponse au journal une formation à être parent. Évalué à 3.

    nous avons eu la chance incroyable ma femme et moi d'avoir autour de nous des formateurs et formatrices expérimentés principalement en la personne de nos parents, grands-parents et de quelques amis proches. Expérimentés mais discrets, nous laissant faire nos propres expériences et nos propres choix et donc quelquefois nos propres erreurs. Suggérant, plutôt que de d'imposer un schéma rigide et définitif du genre : "de mon temps c'était comme ça".

    Je crois donc que c'est d'abord le cercle familial et amical proche qui apporte cette "formation".

    C'est clairement une chance exceptionnelle que tout le monde n'a pas pour des raisons très très variées.

    Je te rejoins sur le reste.

  • [^] # Re: Non

    Posté par  (site web personnel) . En réponse au journal Téléphone mobile : suis-je paranoïaque ?. Évalué à 2.

    Et en plus, tous ceux qui lisent ce message viennent d'être tracés par BFM TV, une des incarnations du mal capitaliste. Et oui, l'image de Neo est stocké sur le site de BFM…

  • [^] # Re: Les annotations

    Posté par  (site web personnel) . En réponse au journal PyParis 2018, c'était bien!. Évalué à 3. Dernière modification le 26 novembre 2018 à 12:17.

    C'est vrai que c'est pénible de devoir importer des modules juste pour avoir sous la main la classe pour l'annotation. La première fois que je l'ai fait, ça m'a fait un import circulaire, j'ai cru que j'allais m'arracher les cheveux !

    Je te rejoins aussi sur le fait que ça surcharge pas mal les entêtes de fonctions, qui étaient plus facile à lire sans, surtout quand tu as des valeurs par défaut.

    Cela dit, malgré ces deux inconvénients, je suis très content de les utiliser. Dès que la base de code grossit, qu'il y a plusieurs développeurs dans l'équipe, dès que le projet prend de l'age, les annotations créent beaucoup de valeur car elles vérifient la cohérence globale de ton programme. Ce que ne font pas les docstring.

    Les docstrings ont d'autres inconvénients:
    - parfois, elles sont pas là
    - parfois, elles sont pas assez précises (elles oublient de préciser le type de retour, …)
    - parfois, la fonction a évolué mais le développeur pressé a oublié de la mettre à jour

    Mais surtout:
    - les docstrings ne vérifient pas le type des données avec lesquelles la fonction est appelée
    - les docstrings peuvent contenir une erreur, genre elles disent qu'on peut passer une liste ou un tuple mais en fait, seule une liste fonctionne.

    Comme j'essaie de le montrer dans la présentation, les annotations permettent d’attraper pas mal d'erreur et obligent à clarifie son intention.

  • # Ecosia et lilo

    Posté par  (site web personnel) . En réponse au sondage Mon moteur de recherche préféré est. Évalué à 2.

    J'utilise ecosia et lilo. Ils sont-traitent la recherche soit à Bing, soit à Google. Par contre, ils profitent de l'argent récolté pour mener des projets écologiques ou d'économie solidaire.

    Il me semble qu'ils filtrent mes coordonnées personelles ce qui limite un peu le mal. En tout cas, quitte à utiliser internet et griller du Co2, autant que ce soit pour des gens qui essaient un minimum de le compenser…

  • # Contentoob ?

    Posté par  (site web personnel) . En réponse au journal scraplap, pour mouler offline. Évalué à 7.

    Si tu veux rester dans la mouvance Weboob, il faut te trouver un meilleur nom.

    Je te propose: Contenteub. En français, ça passe très bien. Pour l'anglais, j'ai pas d'idée mais avec des boob et du gros contenu, on doit bien pouvoir trouver un jeu de mot à la con !

    Allez, --> []

  • [^] # Re: ...

    Posté par  (site web personnel) . En réponse au journal Github m. Évalué à 0.

    Avec l'achat de Skype par Microsoft, c'était pareil. Le jour même où la transaction était actée, Skype a connu une des plus grosses pannes de son histoire, avec indisponibilité globale pendant plusieurs heures. Ca n'a rien à voir qu'y disaient aussi…

  • [^] # Re: Taille déraisonnable

    Posté par  (site web personnel) . En réponse au journal Réduire la taille des exécutables générés avec PyInstaller. Évalué à 2.

    Je veux bien juste pour voir à quoi ça ressemble. Ecris-moi à phil.fremy (chez) free.fr .

    Merci en tout cas de regarder, je vais voir si je peux retravailler le .spec comme le tien.

  • [^] # Re: tkInter ?

    Posté par  (site web personnel) . En réponse au journal Réduire la taille des exécutables générés avec PyInstaller. Évalué à 3. Dernière modification le 16 octobre 2018 à 20:26.

    Même si j'utilisais TkInter, je ferai le choix d'un packaging en .exe . Le packaging est un aspect fondamental de la distribution d'un programme. Dans l'univers Python, PIP est le minimum vital et tout ce qu'on peut fournir en plus participera à facilité d'installation et donc la popularité d'une programme.

    TkInter est petit certes, mais pour faire une vue à la Excel avec nombre de lignes illimitées sur le fichier de donnée, j'ai peur qu'il soit un peu court. C'est pour ça que Qt assure bien, on peut faire des applis assez haut niveau avec très peu de code.

    Je l'ai utilisé une ou deux fois contre mon gré et je ne regrette pas Qt.

    En cadeau, un snapshot de SxTool pour voir de quoi je parle.
    SxTool

  • [^] # Re: go

    Posté par  (site web personnel) . En réponse au journal Réduire la taille des exécutables générés avec PyInstaller. Évalué à 3.

    Pour la deuxième partie, c'est tout à fait possible, c'est ce dont je parle à la fin du journal. J'essaierai de faire un test dans ce sens un de ces quatre et de vous faire un retour.

  • [^] # Re: go

    Posté par  (site web personnel) . En réponse au journal Réduire la taille des exécutables générés avec PyInstaller. Évalué à 10.

    En même temps, Go fait quand même beaucoup moins de choses que Qt… C'est plus facile d'être compact.

  • [^] # Re: MS-DOS ... 2 ?

    Posté par  (site web personnel) . En réponse au journal Le code source de MS-DOS 1.25 & 2.0 déposé sous licence MIT sur github. Évalué à 3.

    On est loin de la licence MIT mais c'est déjà bien…

  • [^] # Re: MS-DOS ... 2 ?

    Posté par  (site web personnel) . En réponse au journal Le code source de MS-DOS 1.25 & 2.0 déposé sous licence MIT sur github. Évalué à 2. Dernière modification le 01 octobre 2018 à 14:36.

    Attendez, imaginez un peu ce qu'on aura sous licence libre dans 35 ans ! Linux va pouvoir aller se rhabiller.

    Cela dit, on peut critiquer, mais Apple a-t-il fait le moindre geste de ce type pour ses soft proprio obsolètes ? Peut-on trouver le code source de l'OS de l'Apple II ?

  • [^] # Re: dict et OrderedDict

    Posté par  (site web personnel) . En réponse à la dépêche Sortie de Python 3.7. Évalué à 3. Dernière modification le 17 septembre 2018 à 11:25.

    Waouh… Je suis d'accord avec toi, c'est gravement foireux.

    J'ai jamais rencontré un seul de ces problèmes, pour moi, tout a toujours marché comme décrit dans la documentation donc je vois ça plutôt le côté rose de PIP.

  • [^] # Re: Spam ?

    Posté par  (site web personnel) . En réponse au journal Nouveau coup de tonnerre attendu. Évalué à 6.

    Je trouve qu'il a de plus en plus de mal à être crédible. Soit c'est la lassitude, soit que Apple a vraiment plus rien à dire…

  • [^] # Re: dict et OrderedDict

    Posté par  (site web personnel) . En réponse à la dépêche Sortie de Python 3.7. Évalué à 7.

    Par exemple, si tu utilisais intensément le QListView en Qt3 (l'affichage en arbre), il n'a pas d'équivalent direct en Qt4/5 suite au passage à l'architecture modèle/vue de Qt. Et l'API modèle/vue bien que assez bien conçue, ne permet pas de contrôler aussi bien le widget d'affichage que ne le permettait QListView.

    Dans ce cas précis, il faudrait carrément refondre l'application pour fonctionner dans le nouveau modèle. De plus, celui-ci est plus complexe à appréhender (je me souviens d'une remarque de David Faure à ce sujet d'ailleurs).

  • [^] # Re: dict et OrderedDict

    Posté par  (site web personnel) . En réponse à la dépêche Sortie de Python 3.7. Évalué à 7.

    Je sais que c'était à la base un peu par hasard (l'implémentation des OrderedDict s'est trouvée être plus efficace que l'implémentation des dict et donc a été reprise telle quelle pour les dict)

    Non, les deux implémentations n'ont rien à voir. Même s'il s'agit du même auteur, les changements sur le type dict sont à la base (et comme je l'ai décrit dans la dépêche) une optimisation de la représentation mémoire pour gagner en performance et taille des objets. Le respect de l'ordre d'insertion est un effet secondaire.

    Les OrderedDict et dict n'ont pas les mêmes caractéristiques de performances, et ne se comparent pas de la même façon.

    Les développeurs ont laissé reposer ce changement pendant 1 an et demi avant de le déclarer officiel.

    De fait, ils se privent éventuellement d'une optimisation qui pourrait subvenir dans le futur ne respectant pas cette règle. Après, concevoir un langage, c'est faire des choix. Ici, un choix a été fait.

    Perso, ça me va, le non-respect de l'ordre d'insertion était plutôt contre-intuitif et je trouve ça une bonne chose que ça se comporte comme on s'y attend implicitement.

    Pour les autres changements de l'écosystème, je n'était pas au courant et j'ai jamais rencontré les cas que tu décris. Quand je fais du pip, tout passe par pip chez moi. Je dois installer des trucs très récents peut-être, qui du coup ont fait la transition.

    En tout cas, gérer l'hétérogénéité des outils de référence est une tâche très complexe. Si on reste sur le conservatisme que tu recommandes pour Python (mais que tu rejettes à moitié pour les outils d'installation), en ne cassant jamais rien, on serait encore uniquement avec easy_install/setuptools, puisque ce sont les pionniers du packaging sous Python. PIP a au départ foutu la m**** et si aujourd'hui, c'est l'outil de référence, c'est parce que tout le monde a accepté un peu de changement (et qu'il faisait mieux le job). Ou tracer la ligne de ce qui est acceptable ou pas, c'est difficile à dire…

    Je trouve que Python s'en sort pas trop mal compte-tenu de la popularité du langage. Les transition Gtk, Qt ou KDE ou encore Gnome par exemple, se sont beaucoup moins bien passée et ont laissé plein de logiciels devenus de fait inutilisables. Ou encore les changements de versions de la libc, ou les changements de versions de gcc. C'est un peu vieux mais ça a été très loin d'un trucs fluide, les distrib ont du s'arracher pour ne pas péter systématiquement ton système quand tu faisais un upgrade…

  • [^] # Re: Merci !

    Posté par  (site web personnel) . En réponse à la dépêche Sortie de Python 3.7. Évalué à 2.

    Oui, il y a clairement un problème sur cette valeur de retour. None semble plus approprié.

    Sinon, je me suis tellement amusé que je serai prêt à faire celle de Python 3.6 juste pour le plaisir, si ça présentait un intérêt pour qq'un…