Guillaum a écrit 410 commentaires

  • [^] # Re: Question de type

    Posté par (page perso) . En réponse au journal Rigolons avec l'ascii. Évalué à 3 (+2/-1).

    Ici python ne "transtype" pas, Il trie deux chaines de caractère ensemble en suivant un ordre lexicographique. C'est une relation d'ordre qui marche pas trop mal sur les chaines de caractères. On pourrait utiliser une autre relation d'ordre.

    Maintenant l'algorithme lexicographique se base sur l'ordre des caractères entre eux et ici on peut se poser la question de cet ordre, qui pourrait être différent.

  • [^] # Re: Bon mode de deployment

    Posté par (page perso) . En réponse au journal Étendre ou modifier sa logithèque Nix avec les overlays. Évalué à 2 (+0/-0).

    Nous on fait pareil et c'est S3 qui fait le cache aussi.

    On a pas forcement testé cachix: toute notre infrastructure d'usine de code (gerrit, jenkins, gitlab, git-lfs) est déjà sur amazon, donc déployer un serveur de plus (configuré avec nix(os)) pour faire le cache était naturel.

  • [^] # Re: Niveau expert à définir

    Posté par (page perso) . En réponse au journal S'acheter son logement avec le salaire d'un expert C++ (ou autre techno). Évalué à 2 (+0/-0).

    Je comprend ton point de vue et j'avoue que mon manque d’intérêt pour la trace est surement due à mon manque de compétence.

    Je n'ai pas le temps d'être bon en tout, alors j'essaye de devenir bon en VR (plat). Quand j'estimerais que je suis bon, je regarderais les autres discipline.

    Bon sauts en tout cas ;)

  • [^] # Re: Niveau expert à définir

    Posté par (page perso) . En réponse au journal S'acheter son logement avec le salaire d'un expert C++ (ou autre techno). Évalué à 2 (+0/-0).

    Wuza c'est mort ;)

    Ici aussi c'est tout pour le vertical (enfin plutôt sortir de l'avion ensemble et faire n'importe quoi). Pas moyen de trouver des gens pour briefer correctement et faire des points.

    Je suis jaloux de vos moyens aériens, j'en ai marre de devoir changer de pays pour faire du 20+.

  • [^] # Re: Niveau expert à définir

    Posté par (page perso) . En réponse au journal S'acheter son logement avec le salaire d'un expert C++ (ou autre techno). Évalué à 0 (+0/-2).

    Cela y ressemble.

  • [^] # Re: Sans Ironie.

    Posté par (page perso) . En réponse au journal S'acheter son logement avec le salaire d'un expert C++ (ou autre techno). Évalué à 5 (+3/-0).

    Autant pas mal de tes exemples me parlent, autant le coup du setup.py, je me sent personnellement agressé ;) Je pensais être qualifié en python, et je crois n'en avoir jamais écrit un. Bon, je devrais y arriver si j'ai le droit à une documentation.

    La notion d'expert c'est super complexe et plus on monte en compétence dans une technologie, plus on se rend compte qu'elle est suffisamment vaste pour que on ne maîtrise pas tout.

    Pour moi un expert c'est quelqu'un qui peut donner une réponse juste ou admettre qu'il ne sait pas.

  • [^] # Re: Niveau expert à définir

    Posté par (page perso) . En réponse au journal S'acheter son logement avec le salaire d'un expert C++ (ou autre techno). Évalué à 0 (+0/-2).

    Mais avec un prix aux US du jump ticket 30% moins chère, tes 200K ils valent bien plus. À ne pas négliger dans le calcul du coût de la vie.

    (Ceci est une private joke. Je suis presque certain à 99.9% que Wawet76 et moi pratiquons le même loisir qui coûte un bras en France, et un peu moins chère aux USA ;)

  • [^] # Re: Niveau expert à définir

    Posté par (page perso) . En réponse au journal S'acheter son logement avec le salaire d'un expert C++ (ou autre techno). Évalué à 6 (+4/-0).

    Oui.

    En même temps, le fait que ma femme paye aussi pour l'appartement implique que nous avons pu emprunter sur 10 ans et non pas sur 25 ans, mais j'aurais très bien pu assumer l'emprunt seul sur 20 ans. Et puis seul, sans enfants, je n'aurais pas choisi un appartement de cette taille en centre ville.

    Moi oui, en gros, avec 100K à Lyon pour un foyer on vie très bien. Et oui, on est riche, je n'irais pas le nier.

  • [^] # Re: Niveau expert à définir

    Posté par (page perso) . En réponse au journal S'acheter son logement avec le salaire d'un expert C++ (ou autre techno). Évalué à 10 (+16/-1).

    T'as quoi comme appartement avec 600K euros à HK? Dit autrement, quel est le coût de la vie la bas, pour comparer tes 200K euros à mes 50K euros à Lyon ;)

    Ici, 50K c'est assez pour avoir 100 mètres carrés d'appartement, dans une résidence avec jardin, piscine, garage, en centre ville à 10s du métro, avec 2 enfants à charge et des loisirs très coûteux. Bon, je triche, j'ai une femme qui le même niveau de vie que moi.

    Quand j'étais "expert C++", je gagnais moins. Depuis que je suis expert Haskell, qualité, "devops", preuve formelle, je gagne un poil plus. Et je passe mon temps à croiser des gens qui me disent "mais, tu gagnes rien en fait, moi je gagne 200K à HK", et je cherche quel est le but de ces gens, à part me rendre triste parce que je me rend compte que j'ai raté ma vie et que si j'avais accepté les offres de google / facebook / pixar / younameit je gagnerais beaucoup plus?

  • [^] # Re: pas obligatoire

    Posté par (page perso) . En réponse au journal Snap, Flatpak, Packagekit : c'est quoi ce bordel ?. Évalué à 2 (+0/-0).

    Pour le coup, nix a aussi du sens dans une distro mutable puisque le boulot de nix c'est de te faire un environnent reproductible quel que soit la distro dans laquelle tu es.

  • # La distance c'est relatif

    Posté par (page perso) . En réponse au sondage Logement : pourquoi habite‐t‐on loin de son activité ?. Évalué à 10.

    À une époque lointaine, je travaillais à (20-25) minutes de métro/tramway de chez moi. Porte à porte, la variation étant liée à l'attente du tramway à la correspondance. Beaucoup de mes collègues ne comprenaient pas que je ne déménage pas pour trouver un logement plus proche. Donc à Lyon, pour une certaine tranche de population, plus de 20 minutes / prendre les transport en commun est considéré comme long.

    Maintenant je travaille à la maison (toujours de Lyon), mais il m'arrive des fois de prendre le train pour aller à Paris pour voir certains de mes collègues (un "hub" de ma boite est à la gare de Lyon). Je met 2h15 portes à porte en comptant le métro à Lyon. Mais sur ces 2h15, j'ai 2h où je travail bien tranquillement dans le TGV. De façon amusante cela ne viendrait à l'idée de personne que je vienne tous les jours au hub de Paris, alors que certains de mes collègues parisien font 1h45 de RER tous les jours pour venir, ce qui me semble largement moins confortable que mes 2h de TGV au calme, avec du wifi et du confort pour travailler.

  • [^] # Re: Et la version code golfé en brainfuck?

    Posté par (page perso) . En réponse au journal TapTempo en une ligne. Évalué à 4.

    Tu peux aussi citer ma version qui est vachement mieux: https://linuxfr.org/users/guillaum/journaux/taptempo-en-brainfuck

  • # Et la version code golfé en brainfuck?

    Posté par (page perso) . En réponse au journal TapTempo en une ligne. Évalué à 2.

    Moué, c'est pas impressionnant tant que c'est pas en brainfuck.

  • [^] # Re: NixOS

    Posté par (page perso) . En réponse au journal Faciliter la configuration d'un ordinateur portable (ou fixe) sous Debian GNU/Linux 10 (Buster). Évalué à 2.

    Changer de modèle tous les ans avec cette gamme d'ordinateur portable, c'est du luxe ! Je n'en connais pas beaucoup qui ont ce privilège…

    Oui, enfin j’espère que ton employeur te fourni un nouveau PC quand le précédant n'est plus en état de fonctionner. En gros, me concernant, c'était un nouveau dev de chez nous qui voulait un 2017 (car il a des ports USB type B), alors j'ai échangé le mien contre un 2018 avec plaisir.

    Après on parle d'un PC à 1500 euros. C'est entre 2 jours et une demi journée de consulting. Ce n'est pas le genre de décisions que je prend, mais si j'avais a les prendre, je dirais que si mon consultant à 1500 euros la journée a besoin d'un nouveau PC à 1500 euros pour gagner 2h d'autonomie, 20% de performance et doubler sa RAM, ce qui au final va lui faire gagner plusieurs minutes par jour, je paye tout de suite.

    Actuellement, je teste Clear Linux qui a aussi une gestion de package atypique. (il n'y a pas grand chose dans /etc et c'est déroutant)

    Sous nixos, c'est /usr/bin qui est vide ;). /etc contient des liens symboliques vers la configuration courante.

  • # NixOS

    Posté par (page perso) . En réponse au journal Faciliter la configuration d'un ordinateur portable (ou fixe) sous Debian GNU/Linux 10 (Buster). Évalué à 3.

    C'est typiquement le genre de chose que fait très bien NixOS: https://nixos.org/

    Toute la configuration de ton système est décrite dans un (ou plusieurs) fichier de conf qu'il est facile de versionner. Il n'y a pas "d'étapes" lors de l'installation, ou de configuration à modifier, ton système est une unique configuration qui va être déployée de façon atomique.

    À titre d'exemple, au travail nous utilisons des dell XPS 13. J'avais un modèle de 2017 qui m'a été changé vers un modèle de 2018. Lancement du live cd, copie de ma configuration, j'ai juste adapté une ligne ou deux pour prendre en compte la densité de l'écran qui n'est pas la même. nixos-install et quelques minutes plus tard, j'avais exactement ma configuration déployée, avec ma configuration d'emacs, mon .gitrc, mes comptes utilisateurs, mes images docker pre-chargés, mon installation de wine pour jouer à Diablo. Mes paramètres de configuration GTK sont aussi décrits (avec https://github.com/rycee/home-manager)

    NixOS vient avec quelques autres avantages, comme nix prè-installé, la possibilité de booter sur une ancienne configuration (i.e. toutes les configuration précédentes sont sauvegardés). Dans le rare cas ou une mise à jour se passe mal (jamais arrivé en 2 ans), tu peux reprendre la dernière version et continuer à travailler.

    Home-manager peut être utilisé sans NixOS pour seulement décrire son environnement personnel, c'est à dire toutes les applications installée pour un utilisateur particulier, ses services personnel (systemd --user) et la configuration de toutes ses applications.

    Quelques contraintes pour NixOS, c'est une distribution linux différente, ce n'est donc pas la solution si vous devez absolument conserver un environnement debian ou autre. NixOS est aussi très strict sur la reproductibilité et n'expose dans l’environnement par défaut pour ainsi dire rien. Ainsi un binaire pré-compilé chargé sur NixOS a de grande chance de ne pas fonctionner. Je vois cela comme un avantage (i.e. cela force la reproducibilité), et en pratique c'est très rare que nixpkgs (i.e. la base de paquet de nix, donc NixOS) n'ai pas le paquet demandé.

  • [^] # Re: Vous etes péniblers avec vos promotions de journal en dépèche.

    Posté par (page perso) . En réponse à la dépêche Moi, expert C++, j’abandonne le C++. Évalué à 2.

    Le auto n'est que de l'inférence de type. Pour le "dynamique" que tu cites, je ne vois pas de quoi tu parles.

  • [^] # Re: Petite erreur

    Posté par (page perso) . En réponse à la dépêche Moi, expert C++, j’abandonne le C++. Évalué à 2.

    C'est un autre probléme ;) Mais je suis d'accord avec toi.

    Je me rappel lisant avec intérêt la spec sur le modèle mémoire. Avoir l'impression de comprendre quelque chose, implémenter, utiliser des contraintes relachée pour "plus de performance", être satisfait du résultat et me prendre une claque dans les dents 3 mois plus tard.

    Surtout que on a la mauvaise tendance à implémenter / expérimenter sur x86_64 qui a nativement un modèle de mémoire différent d'arm et que certaines suppositions sur l'un ne sont pas valables sur l'autre.

    Bref, ce truc c'est complexe.

  • [^] # Re: Je hais le C++

    Posté par (page perso) . En réponse au journal Moi, expert C++, j'abandonne le C++. Évalué à 2.

    Ce qui me choque c'est que l'égalité de référence, qui est un truc à la con utilisée seulement dans des cas particuliers, soit si facile d'accès et ai même son propre mot clé pour.

    Le plus drôle c'est que cela casse des possibilité d'optimisation intéressantes. Par exemple, la notion de référence, souvent associée au pointeur en mémoire, n'a plus beaucoup de sens quand ton objet n'est pas "en mémoire", si il n'existe que dans un registre par exemple. Ou si ton objet change de place en mémoire dans le cours de sa vie.

  • [^] # Re: Performance

    Posté par (page perso) . En réponse au journal Moi, expert C++, j'abandonne le C++. Évalué à 2.

    D'un autre côté, mon boulot quotidien est d'écrire du code pour des cartes à puce, donc de l'embarqué contraint en vitesse, en taille de code et très fortement contraint en sécurité. On ne fera jamais de Python là-dedans très clairement, seul le langage natif de le puce est approprié (en mélange C / ASM).

    Pour le coup nous on fait du Haskell pour ce type de problématique. Le Haskell génère du C, mais avec des garanties et plus de généricité.

    Ceci étant dis, je suis tout à fait d'accord avec toi sur le point performance de Python. C'est très souvent surfait et bien souvent Python est suffisamment performant pour beaucoup de cas.

  • [^] # Re: Petite erreur

    Posté par (page perso) . En réponse à la dépêche Moi, expert C++, j’abandonne le C++. Évalué à 2.

    99% d'accord avec toi. Le % qui manque c'est parce que C11 apporte, il me semble, le support du multi-threading. (i.e. une sémantique pour le modèle de concurrence).

  • [^] # Re: Vous etes péniblers avec vos promotions de journal en dépèche.

    Posté par (page perso) . En réponse à la dépêche Moi, expert C++, j’abandonne le C++. Évalué à 7. Dernière modification le 07/06/19 à 21:06.

    Le typage statique étant un sur-ensemble du typage dynamique les langages statiques n'ont rien besoin de faire ;)

  • [^] # Re: Vous etes péniblers avec vos promotions de journal en dépèche.

    Posté par (page perso) . En réponse à la dépêche Moi, expert C++, j’abandonne le C++. Évalué à 10.

    d'autant plus que les discussions qui en ont suivi ont été très intéressantes

    Tu parles du troll vieux comme le monde sur le typage statique versus dynamique ? Alors que tous le monde sait pertinemment quelle est la meilleure solution.

  • [^] # Re: Performance

    Posté par (page perso) . En réponse au journal Moi, expert C++, j'abandonne le C++. Évalué à 5.

    Voilà pourquoi on a besoin des 2 !

    Oui ! Mon interrogation dans ce débat c'est de savoir si il est mieux d'avoir un typage statique par défaut avec du dynamique optionnel, ou l'inverse.

    l=list([1, "a", {"dudulle":"schmoll"}])

    Et tu fais souvent cela ? Je vois cet exemple tous le temps, mais qui fait vraiment ça ?

    Je construis des nouveaux/les types/classes à la volée pour être manipulées par duck typing

    Je veux bien un exemple aussi.

  • [^] # Re: Performance

    Posté par (page perso) . En réponse au journal Moi, expert C++, j'abandonne le C++. Évalué à 5.

    Au risque de me répéter :) A partir du moment où tu fais du duck typing, même en statique, tu n'as plus de contrôle de type.

    Si. A un moment, tu vas utiliser ton objet et tu va vouloir une interface "commune", sinon tu ne peux rien faire.

    Si j'ai une liste python [True, "hello", 10, [1,2,3]], c'est très bien, mais je peux faire quoi avec? Seulement des choses commune à tous ces types, comme, dans ce cas, les convertir avec str:

    for i in [True, "hello", 10, [1,2,3]]:
       print(str(i))

    A partir de ce moment là tu as donc une définition de type qui, en Haskell par exemple, serait un Show t => t, ou dit autrement: n'importe quel type t qui respecte la contrainte Show.

  • [^] # Re: Performance

    Posté par (page perso) . En réponse au journal Moi, expert C++, j'abandonne le C++. Évalué à 2.

    C'est en effet un exemple intéressant !

    Si tu veux un proxy parfait qui prend n'importe quel objet et remplace toutes les méthodes par une méthode wrappée qui ajoute du comportement, en effet, tu feras cela très facilement en python, plus difficilement que dans d'autres langages moins dynamiques.

    Si tu en veux faire un proxy de seulement une méthode / fonction. C'est assez simple (et tu peux le faire de façon assez générique) en C++ en créant un "functor" et en exploitant des templates variadics. Cependant le type de l'objet va changer (i.e. ce sera celui du Proxy) et donc il faudra que tes fonctions acceptants l'objet initial puisse accepter le nouveau. Si tes fonctions sont initialement "templatées", c'est faisable, sinon, c'est mort. Point de plus pour le langage dynamique.

    Un point où un langage statique s'en sort très bien ce serait le cas du proxy d'une fonction. En prog fonctionelle, on a très souvent tendance à passer des fonctions en argument d'autres fonctions. Le type d'une fonction étant défini juste par ses arguments / valeur de retour, si ton proxy à la même interface, cela passera sans problème.

    Par exemple, en Haskell, la fonction databaseQuery :: DbHandle -> Query -> IO DBResult qui prend une requete SQL et retourne un résultat, pourra être remplacée en ajoutant du log de la façon suivante:

    log f arg = do
       putStrLn "Avant la fonction"
       res <- f arg
       putStrLn "Après la fonction"
       pure res

    Ainsi, que tu passes dataBaseQuery handle ou log (dataBaseQuery handle) (i.e. ton proxy) en argument d'une autre fonction, le système de type sera satisfait.

    Cependant cela demande de penser son interface en avance et c'est donc moins souple. De mon expérience, je suis rarement limité par ce point, mais j'admet cette limitation.

    Merci de m'avoir fourni un exemple valide de l’intérêt d'un typage dynamique.