Julien Jorge a écrit 523 commentaires

  • [^] # Re: Avec un vrais titre

    Posté par  (site web personnel) . En réponse à la dépêche Un nouveau type de contenus : les liens. Évalué à 6.

    La question de mettre un champ de description plus long a été discutée avec les modérateurs lors du développement. Je ne l'ai pas mis pour l'instant car je pense que cela ferait doublon avec le fonctionnement des journaux. L'idée est ici de simplement relayer une information. Si l'auteur souhaite ajouter une description libre à lui de faire un journal plus détaillé.

    Quant à la formulation du titre, sensationnel ou pas c'est une question qui concerne celui qui soumet le lien. La fonctionnalité en elle-même n'impose rien et ne peut rien imposer à ce niveau.

  • [^] # Re: NIH ?

    Posté par  (site web personnel) . En réponse au journal Publication de bibliothèques c++ sous licence libre. Évalué à 5.

    C'est pour moi toute la difficulté de la gestion des dépendances. Faut-il lier une bibliothèque externe, la gérer comme un bloc immuable et ainsi profiter de l'expérience des autres ? Faut-il la copier-coller dans le projet pour en faire la base d'un outil interne que l'on peut modifier librement au risque de compliquer ses mises à jour ?

    Il y a des outils que l'on prend tels quels, Boost bien sûr, Google Breakpad, Google Test, JsonCPP, entre autres. Ce sont des outils assez gros et nous ne ferions probablement pas mieux en les réécrivant. Néanmoins si nous avions au moins fait une interface à JsonCPP nous aurions sans doute pu simplement changer pour rapidjson ou autre le jour où nous l'avions envisagé. Celui là a par exemple été à la fois un accélérateur et une gêne.

    À côté de ça il y a des outils que l'on aurait bien voulu prendre tels quels, Cocos2d-x, MoFileReader, Spine, Soomla, mais le besoin a appelé des modifs et les mises à jour sont de plus en plus difficiles.

    Alors est-ce qu'on aurait vraiment gagné du temps ou de la performance en piochant dans libc++ ? Pour l'inclusion d'optional par exemple, on part sur Boost, la compilation est lente (300 ms. sur mon pc pour un g++ -c test.cpptest.cpp ne contient que #include <boost/optional.hpp>). Je teste avec la STL en c++17 : 250 ms. bof. Alors nous l'implémentons à notre sauce, ça coûte quelles que heures de dev, je teste la même compilation : 30 ms. Et quand je teste en essayant de copier la version de libc++ ça ne compile même pas car il manque des dépendances :/

    Dès fois c'est plus simple de prendre un outil existant tel quel, d'autres fois c'est la plaie. Parfois, comme avec libc++ ici, il faut passer du temps à gérer la compilation ou à extraire la seule partie qui nous intéresse. Pour moi le problème est loin d'être simple. Et encore là je parle de compilation desktop mais en pratique nous faisons des builds iOS, Android, OSX et Linux.

    En ce moment je regarde d'ailleurs la gestion de dépendance avec Conan et je dois me faire violence pour plonger dedans plutôt que de bêtement compiler des .a et les archiver sur un bucket S3. Il me semble que tu avais regardé ces outils de gestion de dépendance en c++, en utilises-tu ?

  • [^] # Re: NIH ?

    Posté par  (site web personnel) . En réponse au journal Publication de bibliothèques c++ sous licence libre. Évalué à 6.

    Oui beaucoup d'éléments sont déjà présents dans d'autres libs. Pour les exemples std::integer_sequence et std::make_unique que tu cites c'est tout simplement que notre développement est calé sur c++ 11 et tout cela n'est dispo qu'à partir de c++ 14, donc indisponible pour nous. Nous aurions pu utiliser les versions de Boost ou autres mais comme dit dans le journal nous avons eu de mauvaises surprises sur les temps de compilation avec Boost, donc nous sommes parti sur une version maison maîtrisée. L'idée étant d'avoir cette implémentation en attendant de faire le passage à c++ 14 ou plus, après quoi nous les supprimerons ou les remplacerons par des alias vers la STL.

    Les tableaux ne sont pas gérés par make_unique simplement parce que nous n'en avions pas besoin. Si nous l'avions implémenté ça aurait été l'équivalent d'un code mort pour nous, qui aurait coûté du temps de compilation et de maintenance pour aucun gain.

    Le dépôt GitHub a été créé avec le code dans l'état dans lequel nous l'utilisons, ce qui ne colle pas toujours à un besoin général, j'en suis conscient. Il y a un paquet d'autres trucs moyens que je ne réutiliserais probablement pas à titre perso et d'autres que j'apprécie assez (heterogeneous_map, le module jni, par exemple). Cela dit si nous avions pris le temps de tout rafraîchir et d'améliorer tous les points faibles que nous voyons nous n'aurions jamais été suffisamment satisfaits pour le sortir.

  • [^] # Re: Merci pour ce partage - mais la doc fouque

    Posté par  (site web personnel) . En réponse au journal Publication de bibliothèques c++ sous licence libre. Évalué à 6.

    Justement non :) c'est le type de doc que je trouve plus polluante qu'autre chose. Je pensais plutôt à des trucs comme la doc de Boost, hors du code, bien structurée et pédagogique, avec un point de vue global sur la lib.

  • [^] # Re: Merci pour ce partage - mais la doc fouque

    Posté par  (site web personnel) . En réponse au journal Publication de bibliothèques c++ sous licence libre. Évalué à 8.

    Je te rejoins sur l'intérêt d'une doc meta et c'est ce que j'ai en tête quand je dis que je cherche une solution pour faciliter la compréhension du dépôt sans pour autant rédiger deux cent pages de doc. L'idée serait d'avoir une description générale du fonctionnement des modules, sans aller dans la description des détails dans le code.

    Ce que nous avons supprimé ce sont les commentaires du type

    /** The size */
    std::size_t _size;
    
    }; // class container
    

    Et autres descriptions de classes et fonctions qui ne font que reformuler ce que dit le nom de la classe ou de la fonction. Ce genre de commentaire se trouve malheureusement assez facilement, même dans des projets de sources respectables (un exemple, un autre et il nous semble que cela est plus gênant qu'autre chose. Du coup le commentaire systématique de chaque identifiant, nous le faisions il y a quelques années et nous avons laissé tomber.

    Là il n'y a pas de doc globale simplement parce qu'en pratique nous n'en avons pas besoin : tous les développeurs font les revues de tous les autres, y compris les nouveaux venus. Si nécessaire on échange sur les points peu clairs. À notre échelle ça suffit mais je suis bien conscient que ça ne suffit pas pour le grand public ou si tous nos développeurs partaient en même temps.

  • [^] # Re: Risque ?

    Posté par  (site web personnel) . En réponse au journal Noyau vulnérable ou pas ?. Évalué à 4.

    Il y a une implémentation de Spectre en Javascript, décrite dans le papier original. Il risque donc de voir sa mémoire lue par un script tiers juste en navigant sur le web.

  • # Ça marche

    Posté par  (site web personnel) . En réponse au journal Batterie et Rock'n'Roll, goret style. Évalué à 5.

    Ça fonctionne super bien. J'ai mis le script sur mon portable et je ne remarque pas de latence :)

    Pour les samples j'ai trouvé quasiment tout sur freesound.org sauf le bass drum.

    Merci bien d'avoir partagé.

  • # Et en nomade ?

    Posté par  (site web personnel) . En réponse au journal Un outil fort pratique : apt-cacher-ng. Évalué à 8.

    Comment gères tu le proxy sur un ordinateur portable qui peut rester longtemps loin du NAS ?

    Pour ma part j'ai un script /etc/NetworkManager/dispatcher.d/99SetAptProxy avec le contenu suivant :

    #!/bin/sh
    
    SERVER=<hostname du nas>
    PORT=3142
    PROXY_FILE="/etc/apt/apt.conf.d/99Proxy"
    
    if nc -w 1 $SERVER $PORT
    then
        printf 'Acquire::http::proxy "http://%s:%s";' $SERVER $PORT \
            > $PROXY_FILE
    else
        rm -f $PROXY_FILE
    fi
    

    En gros ça teste si le NAS est dispo, auquel cas ça active le proxy, sinon ça le désactive.

  • [^] # Re: Si tu veux être le couillon de service

    Posté par  (site web personnel) . En réponse au journal Comment être un développeur désirable. Évalué à 5.

    Effectivement je ne suis pas passé par les SSII, cela doit jouer. Les entreprises où j'ai travaillé étaient des éditeurs et plutôt petits.

  • [^] # Re: Si tu veux être le couillon de service

    Posté par  (site web personnel) . En réponse au journal Comment être un développeur désirable. Évalué à 0.

    Ah la négociation, les salaires, les primes :) je te retourne la question : as-tu déjà été tellement déçu de te voir refuser une augmentation que tu t'es mis à surestimer ta charge de travail et à prendre des notes pour pourvoir retourner les choses contre tes patrons ?

  • [^] # Re: Si tu veux être le couillon de service

    Posté par  (site web personnel) . En réponse au journal Comment être un développeur désirable. Évalué à 7.

    Mmmh j'ai un peu de mal à te suivre. J'ai pourtant l'impression d'être dans le monde du travail (le vrai, pas celui des Hainounours). Sans être un monde idéal il est loin du monde amer que tu décris où les hauts gradés veulent écraser les plus petits qui en retour sont sur la défensive.

    Ce que tu nous décrit ressemble plus à l'image du monde de grand papy, où le travail était avant tout une corvée et où on bossait pour rien jusqu'à se faire virer. Enfin j'imagine, je n'ai jamais connu ça. Heureusement pour nous l'informatique est un domaine où on peut encore choisir son employeur et où beaucoup, beaucoup, de personnes sont passionnées ; ce qui fait qu'on peut facilement se trouver dans une équipe que l'on est content de rejoindre quotidiennement.

    À vrai dire, dans la mesure où le travail consomme quasiment un tiers de notre temps, si quelqu'un se lève tous les jours pour faire quelque chose qui lui déplait et passer sept heures par jour sur la défensive et dans le conflit alors qu'il a la possibilité de simplement traverser la rue pour vivre autre chose, j'ai l'impression que le problème est chez cette personne, sûrement pas dans le métier. Je ne doute pas que certains sont coincés par une raison où une autre, mais dans l'absolu je doute que ça vienne du fait d'être dans l'informatique.

    Ce principe du conflit par défaut entre les patrons et les salariés, dans l'informatique au moins, me semble éculé. Peut-être suis-je naïf et que je changerai d'avis si un jour un patron me fait un sale coup que je n'aurai pas vu venir. Peut-être serai-je alors incapable de lui dire « au revoir, et merci » pour partir chez un autre. En attendant aujourd'hui je vois partout des boites où il fait bon travailler et où on peut aller en souriant.

  • [^] # Re: pas faux

    Posté par  (site web personnel) . En réponse au journal Comment être un développeur désirable. Évalué à 10.

    Ton commentaire et celui de Christophe B. me font remarquer que je ne m'étais jamais demandé ce qu'était un professionnel en fait. Je suis loin des trente années d'expérience et à vrai dire j'avais plutôt le sentiment que le terme « professionnel » était un peu galvaudé aujourd'hui. Il me semble, mais mon regard est peut-être déformé, qu'on trouve assez facilement des gens avec ce libellé qui s'avèrent finalement être surtout de beaux parleurs dont les actes ne sont pas au niveau de leurs promesses ou bien dont le comportement est douteux.

    Dans ma courte expérience je n'ai pas eu le sentiment que ces comportements que nous décrivons étaient attendus ou encouragés. Je les ai observés mais j'ai toujours eu l'impression que c'était plus le résultat d'une motivation individuelle que d'un désir commun ; comme s'ils étaient implicites. Cela me semble bizarre en particulier vis-à-vis des juniors qui entrent dans le métiers et qui se retrouvent à devoir deviner par eux-même quels sont les comportements qui agissent pour le bien commun et lesquels sont parasites. Pour prendre une analogie, c'est comme si on entrait dans le métier aux côtés de Linus Torvalds, Ulrich Drepper, Jeff Atwood et Robert C. Martin et qu'on nous disait « choisis ton modèle ». Quelle proportion de débutants comprendraient qu'on peut être d'un haut niveau technique tout en ayant des rapports humains intéressants ? J'ai personnellement le sentiment que l'on a tendance à négliger les retours positifs, ne serait-ce que « nous avons fait du bon boulot » ou « je trouve que l'équipe a bien fonctionné ».

    Concernant ta remarque sur les paroles et les écrits, que Christophe B. et blabla ont l'air de rejoindre, je trouve, peut-être naïvement, que cela fait un peu vieille informatique. Peut-être est-ce un problème d'échelle de boîte car dans celles où j'ai travaillé, où les équipes sont de taille humaine et le patron est à n+1 et derrière une porte (toujours ouverte) dans la pièce d'à côté, je n'ai jamais vu quelqu'un chercher un coupable pour quoi que ce soit. Quand tout va bien c'est parce que nous avons tous assuré, quand tout va mal c'est parce que nous avons tous raté. Il y a évidemment parfois des désaccords, qui sont simplement évoqués dans les rétrospectives de sprint, puis tout le monde s'arrange pour trouver un compromis et s'y tient. Bien sûr ce n'est pas sans accrocs, il y a aussi des disputes, des démissions ou des licenciements, mais globalement j'ai le sentiment que tout le monde fait simplement de son mieux pour que ça se passe bien. C'est très différent du comportement défensif que blabla et toi décrivez. À nouveau, peut-être est-ce lié à l'échelle de la boîte ?

  • [^] # Re: jeNeSaisPasCommentNommerCetteVariable

    Posté par  (site web personnel) . En réponse au journal Comment être un développeur désirable. Évalué à 4.

    Ça aurait pu ! En l'occurrence c'était du Visual Basic…

  • # À propos des nouvelles fonctionnalités

    Posté par  (site web personnel) . En réponse à la dépêche Cinq ans de projets libres : bilan et retour d'expérience sur la contribution. Évalué à 10.

    Le plus terrible dans l'apport de nouvelles fonctionnalités est pour moi de n'avoir aucun retour sur la contribution. Il y a plusieurs outils tiers dans lesquels je me retrouve à faire des modifications au boulot, soit parce que j'ai des soucis à la compilation, soit parce que j'ai besoin d'une fonctionnalité, et depuis quelques temps j'essaie de remonter les modifications pour jouer le jeu du libre et aussi pour éviter d'avoir à les réappliquer quand je mets l'outil à jour. Bilan des courses, cinq pull requests, zéro merge et un seul retour.

    Par exemple, ajouter la composition de skins à un outil d'animation. Aucun retour. Est-ce trop gros ? Est-ce inintéressant ? J'appuie ma demande en citant trois entrées de forums qui demandent cette fonctionnalité mais les devs laissent dormir la requête.

    Sur un autre projet, je modifie la gestion des polices pour avoir un comportement homogène sur iOS, Android, Linux et OSX. Premier retour en une semaine et une demande de correction en un mois. Je traîne un peu et presque trois mois plus tard j'envoie les corrections. Et là c'est le silence. Je me dis que la pull request est trop grosses et je tente d'autre demandes, plus petites et triviales mais rien n'y fait, c'est toujours le silence.

    C'est assez difficile de rester motivé quand les contributions tombent ainsi dans l'oubli.

  • [^] # Re: Rien de spécialement libre ?

    Posté par  (site web personnel) . En réponse au journal Concours de jeux vidéo. Évalué à 3.

    J'ai eu la même réaction sur le prix, 800 € c'est vraiment peu cher payé.

    Encore plus étonnant, tel que le journal présente le concours j'ai l'impression qu'il y a 10 « gagnants » mais qu'un seul récupère les sous.

  • [^] # Re: Les systèmes à entités

    Posté par  (site web personnel) . En réponse à la dépêche Je crée mon jeu vidéo E15 : J'arrête.... Évalué à 3.

    Tout à fait. Voici une présentation sur ce sujet.

    Il y a d'autres vidéos de la CppCon 14 qui ont le même discours. En gros ils nous disent « on voulait que ça aille vite alors on a fait des tableaux de POD et du traitement en lot ».

  • # flyspell

    Posté par  (site web personnel) . En réponse au journal Améliorer la correction orthographique et grammaticale sous Emacs. Évalué à 3.

    Pour l'orthographe j'utilise flyspell qui met les mots mal orthographiés en évidence au fur et à mesure de la frappe. Je ne sais pas si on peu lui faire utiliser hunspell pour profiter des déclinaisons ; quelqu'un a-t-il déjà essayé ?

  • [^] # Re: problème de config DNS

    Posté par  (site web personnel) . En réponse au message Problème de config DNS avec le serveur sur le réseau local. Évalué à 2.

    Alors ça ne fonctionne toujours pas, par contre si dans la la configuration du serveur DHCP je met des IP fixes associées à certaines machines, alors ces machines ont le bon DNS et arrivent à résoudre le domaine. J'aimerais bien avoir ce comportement sans IP fixe.

  • [^] # Re: piste

    Posté par  (site web personnel) . En réponse au message Problème de config DNS avec le serveur sur le réseau local. Évalué à 2.

    Pour le DHCP wifi, j'ai testé en configurant mon serveur DHCP pour que cette machine ait une IP fixe, et après reconnexion elle a bien obtenu l'IP attendue.

    Sur une autre machine où ça ne fonctionne pas non plus, le dig donne ça :

    $ dig nas.lan
    
    ; <<>> DiG 9.9.5-3ubuntu0.2-Ubuntu <<>> nas.lan
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 7590
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;nas.lan.           IN  A
    
    ;; AUTHORITY SECTION:
    .           84614   IN  SOA a.root-servers.net. nstld.verisign-grs.com. 2015042500 1800 900 604800 86400
    
    ;; Query time: 68 msec
    ;; SERVER: 127.0.1.1#53(127.0.1.1)
    ;; WHEN: Sat Apr 25 08:26:36 CEST 2015
    ;; MSG SIZE  rcvd: 114
    
  • # Intéressant

    Posté par  (site web personnel) . En réponse au journal Apprentissage du code par la pratique. Évalué à 7.

    Pour ma part je trouve l'approche de la vidéo très intéressante en cela qu'elle permet de rendre l'algorithme concret en manipulant ses étapes et met en évidence l'aspect répétitif du processus. De cela on comprend l'intérêt de l'automatiser et son implémentation n'est plus qu'une traduction des manipulations que l'on a faites. La complexité de l'algorithme se retrouve dans la quantité de mouvements faits et on peut donc même comprendre qu'un algorithme est plus efficace qu'un autre juste en les déroulant. C'est un exercice qui me semble tout à fait adapté à la découverte de l'algorithmique et de la programmation.

    Comme suggéré dans un commentaire précédent je pense aussi que le visualiseur serait le bienvenu sur le premier exercice. Avec la vidéo pour voir les étapes attendues et le visualiseur pour voir les étapes que l'on fait, cela me semble une bonne combinaison.

    Puis-je suggérer de tourner les vidéos dans la remorque d'un camion avec des maquettes en carton pâte ?

  • # Tout pareil

    Posté par  (site web personnel) . En réponse à la dépêche [code] Trouver les erreurs. Évalué à 10.

    Ça fait 3 ans que je pratique les revues de code et je trouve ça super. Le premier intérêt tel que cité dans la dépêche est que cela permet de trouver rapidement un paquet de bugs et des défauts d'architecture, globalement l'application s'améliore très vite. C'est en effet très rare qu'un commit ne reçoive aucun commentaire, ne serait-ce que pour relever des éléments qui sont acceptés mais pourraient poser problème dans d'autres situations. L'autre intérêt est que cela diffuse rapidement la connaissance du code et casse le cloisonnement par auteur. On n'hésite plus à modifier ou casser le travail d'un autre car grâce à la revue on a une bonne idée des tenants et aboutissants.

    Les tests unitaires sont pour moi un moyen de renforcer ce dernier point. Je ne pratique que depuis quelques mois et bien que ce soit souvent pénible d'écrire les tests je suis toujours ravi de les voir tomber, que ce soit parce que je les ai écrits avant le code client ou bien parce que je modifie une ancienne partie de l'application. Grâce à eux je sais que mes modifs sont cadrées et qu'on ne me laissera pas faire de bêtises.

    Code Complete est un excellent livre. Lisez-le.

  • [^] # Re: Marche presque

    Posté par  (site web personnel) . En réponse à la dépêche Utiliser colout pour colorier tout ce qu'affiche GDB. Évalué à 2.

    Merci, ça fonctionne bien mieux comme ça :) (et c'est très pratique).

  • # Marche presque

    Posté par  (site web personnel) . En réponse à la dépêche Utiliser colout pour colorier tout ce qu'affiche GDB. Évalué à 2.

    Avec une version de colout clonée depuis GitHub ce matin, j'ai une erreur qui m'empêche de voir la pile d'appel :

    Program received signal SIGABRT, Aborted.
    0x00007ffff5e7abb9 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
    56  ../nptl/sysdeps/unix/sysv/linux/raise.c: Aucun fichier ou dossier de ce type.
    (gdb) where
    [colout] ERROR: unknown color: cpp
    cat: erreur d'écriture: Relais brisé (pipe)
    

    Une idée pour résoudre ce petit souci ?

  • # Revenons à l'essentiel

    Posté par  (site web personnel) . En réponse au journal Retour aux sources. Évalué à 4.

    Je vois bien ce que tu fais devnewton ; sous couvert de trolls tu veux surtout nous montrer ton dernier jeu ;) Et bien j'ai testé et je dois dire que hormis une petit problème de recherche d'assets vite corrigé, le jeu est… waw ! C'est complètement différent de tout ce qu'on a pu voir jusqu'à maintenant. Bien que légèrement répétitif au début, on se prend vite au jeu et on se laisse entraîner par le rythme. C'est simple, sobre et efficace. À quand une version Apple Watch ?

  • [^] # Re: La liste des jeux linuxfr

    Posté par  (site web personnel) . En réponse à la dépêche GameKey Light : 20 000 téléchargements plus tard. Évalué à 2.

    Tu peux passer Plee the Bear en version 0.7.0 sortie il y a quelques mois :)