Si tu freeze ton application, flinguer ton application est la seule option qui reste à ton utilisateur. Si non tu pourrais lui expliquer ce que tu es entrain de faire, ce qui plante, lui donner des billes pour savoir si c'est transitoire ou non…
Une vision plus positive de la mĂŞme chose serait : si on veut vraiment filter ou any en Go, on peut du moment qu'on accepte que cette partie du code ait les mĂŞmes garanties qu'en Ruby :-)
[^] # Re: Aucun I/O dans le fil d'exécution principal est irréaliste
Posté par barmic 🦦 . En réponse au journal GNOME avec un scheduler temps réel. Évalué à  5.
Ok en fait on ne s'est pas compris.
Le freeze c'est le fait qu'une interface graphique ne réponde plus.
Tu peux très bien organiser ton code pour que le fil d'exécution qui gère l'interface ne fasse que la gestion de l'UI et interactions avec le gros du logiciel. C'est l'architecture qui était généralisée sur BeOS (d'où le commentaire plus bas). C'est ça qui est reproché.
Déjà avoir systématiquement ce retour ce serait énorme. C'est ce feedback qui permet à l'utilisateur de mieux comprendre ce qui se passe et pourquoi des choses prennent du temps. Et ça lui permet de faire des choix plus éclairé que ce que son imagination va donner.
Ensuite la logique voudrait que tu ne puisse pas modifier un traitement en cours, uniquement l'annuler. Mais c'est un pas bien plus compliqué à mettre en place.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Formatage automatique
Posté par barmic 🦦 . En réponse à la dépêche Robert, un logiciel de stockage en mémoire vive. Évalué à  3.
alors que plus haut :
Tu n'a pas l'air d'être particulièrement intéressé parce que je t'explique jugeant que je prends pour exemple de mauvais logiciels sous seul prétexte qu'ils ne suivent pas tes préceptes.
Les choses ne te plaisent pas tant pis pour toi. Ton objectif semble ne pas être d'échanger, mais de te plaindre en multipliant simplement les exemples sans liens (autre que d'être des logiciels) et d'en tirer des conclusions aussi intéressantes que « tout le monde il est méchant, ils ne comprennent pas ce que je leur explique ». Je ne serais pas ton client plus longtemps. Passe un bon week-end.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Formatage automatique
Posté par barmic 🦦 . En réponse à la dépêche Robert, un logiciel de stockage en mémoire vive. Évalué à  1.
J'ai pris Redis car c'est LA référence1 du domaine et qu'il est massivement utilisé. Ils ont considéré que le gain en performance ne valait pas les autres avantages. Il existe des alternatives à redis, qui font des choix différents. Mais force est de constater qu'il reste une place pour redis, malgré l'API ASCII et pendant longtemps l'absence de cluster.
Ce que disent les mainteneur de redis, c'est que ce n'est pas la seule chose qu'il faut regarder et qu'ils sont prêt à payer ce coût face à d'autres avantages. On parle d'un projet qui fonctionne et qui fonctionne très bien depuis longtemps. Il a des challengers qui ont des protocoles binaires, mais ça n'a semble t'il pas suffit à le détrôner. Je veux bien te proposer d'aller en discuter avec eux, mais si tu viens avec tes gros sabots comme ici je doute que tu sois bien accueilli…
Intéresse toi au modèle d'exécution de PHP ou des (fast)CGI par exemple. Quand tu fais spawn un process par requête (ou que tu fais un pool de thread) ça va coincer. Si tu n'a pas ou si tu ne veux pas manipuler des threads toi-même comme avec node ça peut être intéressant.
Ce n'est pas l'appel d'une fonction, c'est un IPC que tu dois utiliser donc tu a ton coût de sérialisation quoi qu'il arrive (sauf éventuellement si tu utilise des threads et pas de process, mais tu as toute la protection à fin d'être thread-safe à gérer. Plus un autre pour nettoyer tes données. Les caches sous forme de bibliothèques ça existe, mais c'est des contextes différents.
Ça dépend du contexte. Mon
poobjectif c'est de te montrer qu'il y a pleins de contexte différents qui amènent à des solutions différentes et donc des solutions différentes. L'exemple de redis n'est là que parce que c'est un exemple réel qui coche toutes tes cases tout en ayant sa place et ses utilisateurs.par là il faut comprendre que ce n'est pas le meilleur dans tous les use case, mais que tous doivent se comparer à ce dernier et c'est largement le plus utilisé. ↩
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Un langage stable, rapide et avec un bon REPL
Posté par barmic 🦦 . En réponse au journal Explorer des langages de programmation - édition 2020. Évalué à  3.
C'est joueur de dire ça quand il y a ipython en face :)
J'ai dans ma todo list à aller voir du coté de clojure. « Bouh c'est pas bien c'est sur la jvm ! » Moi je m'en sert au quotidien et j'en suis bien content de cette jvm. Clojure a d'intéressant pour moi qu'il a une alternative que je trouve très cool aux fluent API : les transducers. On garde la composabilité, mais on inverse l'application. Le traitement composite est une élément de première classe qui peut être nommé et même composé pour enfin s'appliquer sur de la donnée. Ça évite les compositions fluent qui deviennent lourdingue à cause de leur taille
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Aucun I/O dans le fil d'exécution principal est irréaliste
Posté par barmic 🦦 . En réponse au journal GNOME avec un scheduler temps réel. Évalué à  10.
Pourquoi poster un commentaire énervé à 1h du mat' ? (si tu es dans la tz de Paris)
Dans le premier cas ça permet aussi de gérer les disques qui ont des erreurs (physique, mal branchés, autre). C'est une I/O ça peut planter tenter de ne gérer que les cas que tu imagine c'est généralement en oublier un énorme paquet. Et en terme de complexité ça n'est pas forcément si incroyable que ça. Du moins ça peut l'être si ton design a était prévu pour.
Si tu freeze ton application, flinguer ton application est la seule option qui reste à ton utilisateur. Si non tu pourrais lui expliquer ce que tu es entrain de faire, ce qui plante, lui donner des billes pour savoir si c'est transitoire ou non…
Donc au lieu de faire en sorte que les UI restent réactives donnent des info à leur utilisateurs, il faut qu'ils investiguent eux-même d'où vient ton freeze, qu'ils regardent toutes les I/O de leur machine et potentiellement de leur réseau et corrigent le problème. Tant pis si tu es sur un wifi publique ou si ta connexion est mauvaise (réseau mobile hors jolies 4 ou 5G ou alors ligne physique mais en défaut sur le moment) ?
Les développeurs d'intellij sont entrain de bosser là dessus comme ils l'ont dis au début de l'année (IntelliJ Platform Roadmap for 2020).
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Formatage automatique
Posté par barmic 🦦 . En réponse à la dépêche Robert, un logiciel de stockage en mémoire vive. Évalué à  3.
Redis est massivement utilisé pour un seul serveur (au pif il est préconisé pour l'installation de nextcloud) et il utilise un protocole texte (la doc. Vouloir donner beaucoup de contraintes à ce logiciel pour mettre en défaut ses choix ce n'est pas très aimable je trouve.
Les map de ton langage ne sont pas forcément très fortes pour gérer de gros volumes dans le temps (avec des stratégies pour limiter la fragmentation par exemple), elle ne fournie pas d'expiration, tu peut vouloir accéder à ses données dans ton serveur et dans un p'tit utilitaire installé sur ton serveur par exemple,…
Ce n'est probablement pas le usecase de robert comme ce n'est que difficilement le usecase de redis (le mode cluster - pas master/slave - n'est arrivé que récemment et sans ça ta montée en charge est fortement contrainte).
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Go est lent, Rust est rouillé !
Posté par barmic 🦦 . En réponse au journal Explorer des langages de programmation - édition 2020. Évalué à  2.
Si tu prends mon exemple et que historiquement tu fais les choses ainsi :
LinuxFr
hello()
AppleFr
Le paramètre que tu aura défini pour
hello()
sera probablement plutĂ´tLinuxFr
que l'interface minimal dont tu as besoin car c'est fastidieux de n'exprimer son typage que par les préconditions minimales aux quelles tu dépend. C'est la force des langages dynamiques, c'est totalement gratuit. Et c'est l'une des forces des langages dynamiques.https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Go est lent, Rust est rouillé !
Posté par barmic 🦦 . En réponse au journal Explorer des langages de programmation - édition 2020. Évalué à  2.
Merci d'avoir fais la recherche :) Je vais tout de mĂŞme essayer de varier un peu plus mon vocabulaire.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Go est lent, Rust est rouillé !
Posté par barmic 🦦 . En réponse au journal Explorer des langages de programmation - édition 2020. Évalué à  2.
J'ai parlé de frustration, mais aussi d'homogénéité par exemple. Ce qui est moins subjectif.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Go est lent, Rust est rouillé !
Posté par barmic 🦦 . En réponse au journal Explorer des langages de programmation - édition 2020. Évalué à  1.
Tu m'a faits douter, mais non le code équivalent en go de ce que j'ai posté plus haut :
Ça ne compile pas.
Go demande à ce que tu indique le type. Tu dois donc définir une interface avec tout ce dont tu as besoin de dans. C'est tout à fait possible et facile dans mon exemple, mais bien plus complexe dans des cas réels. Donc généralement tu va utiliser un type prédéfini qui possède potentiellement des trucs dont tu n'a pas besoin.
C'est loin d'ĂŞtre identique dans la logique comme dans le comportement.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Go est lent, Rust est rouillé !
Posté par barmic 🦦 . En réponse au journal Explorer des langages de programmation - édition 2020. Évalué à  3.
C'est mon point : il est bien plus frustrant de perdre quelque chose que l'on a que de ne pas l'avoir.
Et bien non. Si je prends ce code là  :
MyFnc()
ne cast pas, elle n'a pas besoin de typage nominal. Il faut juste que l'objet qu'on lui passe en paramètre se comporte comme elle l'attends. En go il va falloir que tu explicite cet attendu dans une interface. Quand c'est simple et limité pas de problème quand ça devient plus complexe ça devient plus pratique de réutiliser l'interface initial mais tu a perdu l'intérêt de ton typage dynamique.Ce n'est pas mon point. Mon point c'est que le champs où dans les langages statiquement typés (globalement), on se place dans un contexte où l'on pète les informations de types (interface{} en go, Object en java, void* en C et C++,…) on se trouve dans un cadre où le langage que tu as choisi perds une partie de ses fonctionnalités et tu entre pas forcément clairement dans un paradigme différent. C'est un cas où on fait bien plus d'erreur car on ne manipule plus le langage de la même façon où on a l'habitude.
Il n'y a pas de manichéisme là dedans. Une approche différente, que je suis entrain de faire d'ailleurs c'est les intégrations de langage. Si tu met du groovy dans du java, du lua dans du C++ ou du C++ dans du python, tu aussi un changement de paradigme, mais il est bien plus évident à appréhender.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Go est lent, Rust est rouillé !
Posté par barmic 🦦 . En réponse au journal Explorer des langages de programmation - édition 2020. Évalué à  7. Dernière modification le 29 avril 2020 à 11:10.
Oui mais :
foo(interface{}) interface{}
qui renvoie systématiquement le même type que ce qu'elle a reçu, tu es obligé de gérer des cas que tu sais inutiles juste parce que le typage n'est pas propagéentre autre l'obligation de passer par un cast par rapport au fait d'utiliser un langage dynamique te pousse à pousser plus de contraintes sur le type que ce dont tu as besoin. Si tu a une interface qui défini 2 méthodes
foo()
etbar()
tu va avoir tendance à la réutiliser même si tu a besoin que de l'une des 2. Un autre point peut être que les langages dynamiques possèdent aussi beaucoup plus d'informations de type au runtime. Ça donne des erreurs plus compréhensible. ↩https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Remarques
Posté par barmic 🦦 . En réponse au journal Tests de bibliothèques signal-slot en C++. Évalué à  2.
Tu as parfaitement compris mon point :)
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Remarques
Posté par barmic 🦦 . En réponse au journal Tests de bibliothèques signal-slot en C++. Évalué à  3.
Benchmark et performance sont 2 choses très différentes. Un benchmark est une mesure de performance dans un contexte donné. Ce contexte est hyper important, si tu t'intéresse à la performance. Et c'est potentiellement compliqué de connaître le contexte dans le quel a était conçu un benchmark. Mais surtout je ne dis pas qu'il faut connaître la notion de perf de toutes les bibliothèques, une bibliothèque peut ne pas parler de performance dans sa description, si c'est ce qui t'intéresse tu sais que ce n'est pas la priorité du projet, si leur objectif c'est d'avoir une certaine forme d'API ou un maximum de sécurité ou je ne sais quoi c'est ce qui devrait ressortir d'une description.
Bref non je ne vois pas où est l'incohérence.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
# Remarques
Posté par barmic 🦦 . En réponse au journal Tests de bibliothèques signal-slot en C++. Évalué à  7.
Un benchmark est rarement un bon point d'entrée je trouve et le reste de ton journal montre en partie pourquoi. Pour moi ce qui est important c'est moins de connaitre la performance (déjà qu'est-ce que l'on met derrière la performance ?), mais la philosophie derrière.
Ta bibliothèque est bidirectionnelle orientée jeu avec 2 aspects importants : possibilité de modifier dynamiquement et à haute fréquence les connexions signal/slot et le mono-threading pour ne pas payer le coût du thread-safe par défaut.
Ce genre de petites descriptions sont pour moi bien plus intéressantes car elles donnent une bonne idée de à quoi s'attendre en terme de fonctionnalité et en terme de performance. Ça limite aussi les usages à contre-emploi.
Tu as regardé si c'était l'ordre inverse (comme une pile) ou stable ? Et surtout il me semble qu'il y a un corollaire à ça : l'ordre des exécutions contraint la réduction des données en retour. S'il n'est pas prédictible la réduction que tu applique aux retours de tes signaux doit être commutatif.
Je me doute que ça répond à un besoin, mais je vois ça comme un anti-pattern. Pour moi le signal-slot est là pour avoir un découplage entre le signal et le slot. Sinon autant utiliser des callbacks. Mais je dirais aussi la même chose pour le retour des signaux.
J'aurais pensé que les signal/slot est un pattern unidirectionnel qui permet à un « bout de code » de signaler 0, 1 ou plus d'autres fonctions. Il par rapport à l'appel direct de méthode, il permet un dispatch dynamique et par rapport aux callback, il permet principalement une simplification (le slot n'a pas à gérer ses clients) ce qui apporte un meilleur découplage.
Mais c'est ma vision probablement biaisée et ma lecture du pattern observable.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Quelle utilité à la diversité ?
Posté par barmic 🦦 . En réponse à la dépêche Élection du #Debian Project Leader 2020 #DPL Jonathan Carter. Évalué à  -5.
Tu personnalise et prend ton expérience pour une généralité. Surtout tu considère que l'humain doit avoir une logique froide et que si ça n'est pas le cas, il n'a qu'à le devenir que ça n'est pas ton problème. Très bien personne n'a dit que ça devait devenir ton problème. Mais d'autres au lieu d'affirmer des logiques froides s'intéressent à ce que les autres ressentent et tentent des choses pour améliorer leur ressenti. Je vois pas pourquoi juger dans tous les sens comme tu le fait (tu arrive en plus de ça à t'en prendre aux gens qui jugent si j'ai bien compris).
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Double substitution en Bash
Posté par barmic 🦦 . En réponse au journal Courses Assistées par Ordinateur (CAO). Évalué à  3.
Je ne sais pas j'étais très content de voir mon zsh pouvait faire :
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: A propos d'Erlang
Posté par barmic 🦦 . En réponse au journal Explorer des langages de programmation - édition 2020. Évalué à  2.
Je n'ai rien lu à ce sujet (je chercherais plus tard), mais je suis surpris que le typage structural ne puisse pas fournir de solution. Je présume que le problème vient du fait qu'ils ne sont pas en mesure que le type d'une référence pointe vers un type toujours valide, mais si c'était vraiment ça le problème remplacer un typage nominal par un typage structural devrait être possible.
Du coup ça me rend curieux :)
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Quelle utilité à la diversité ?
Posté par barmic 🦦 . En réponse à la dépêche Élection du #Debian Project Leader 2020 #DPL Jonathan Carter. Évalué à  -2.
Je ne crois pas que ce soit la démarche. Si tu n'a que des mangeurs de viande qui font une activité X, si tu n'es pas un mangeur de viande, ça ne te viendra pas à l'idée de faire cette activité X. J'ai vu différent retour dans ce sens là , des gens qui se sont mis à faire quelque chose parce qu'ils avaient un avatar au quel se représenter.
Quant au fait de se sentir mangeur de viande, ça peut être une volonté de ta part ou ça peut venir de certaine stigmatisation. On se charge de te rappeler régulièrement que tu n'es pas mangeur de viande. On te dis pas que c'est mal, on essaie pas de te dire ce que tu dois faire, mais bon on en fait des blagues (qui sont drôles) et qui du coup participe à te créer ton identité.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Stockage
Posté par barmic 🦦 . En réponse au journal A propos des protocoles de traçage pour le Covid-19 : Google/Apple vs. INRIA/Fraunhofer. Évalué à  2.
Tu peut mĂŞme aller plus loin et mettre en place une DHT avec une signature des index.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
# Souvenirs
Posté par barmic 🦦 . En réponse à la dépêche Audio‑conférences en ligne avec Mumble. Évalué à  5. Dernière modification le 26 avril 2020 à 15:23.
J'ai de très bon souvenir avec mumble qui marchait extrêmement bien. J'avais espoir de m'en resservir avec le confinement, mais des solutions permettant de faire de la vidéo lui ont était préférées autour de moi.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Une hypothèse optimiste
Posté par barmic 🦦 . En réponse au journal oh et puis merde.... dlfp, c'est vraiment censé être politique?. Évalué à  10.
Et à l'époque on se foutait de la gueule des aigris qui dénoncent grave en affirmant que c'était mieux à vent.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: fonction
Posté par barmic 🦦 . En réponse au journal bout de code pour relancer une commande dans certaines conditions. Évalué à  2.
Il n'a pas remis en question le fait que tu publie du code. Il dit juste que selon lui il faut que ça arrive dans
/usr/local/bin
sinon c'est pas HFS.https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: fonction
Posté par barmic 🦦 . En réponse au journal bout de code pour relancer une commande dans certaines conditions. Évalué à  3. Dernière modification le 26 avril 2020 à 13:16.
Ton commentaire semble montrer que tu n'a pas compris sa remarque. Il ne parle pas de mettre le répertoire courant dans son
${PATH}
, mais un dossier particulier. C'est une technique très classique et très utilisée (avoir un${HOME}/bin
qui est ajouté dans${PATH}
).Le problème que tu décris n'existe que si le dossier en question est ajouté en première position ce qui est rarement fait.
Tu considère comme général ta propre vision, mais elle n'est ni unique, ni une généralité. Une logique plus unix serait de laisser les nouvelles tentatives à la charge d'un autre outil. D'où l'existence de la commande
timeout
dans lescoreutils
.https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Petite review
Posté par barmic 🦦 . En réponse au journal bout de code pour relancer une commande dans certaines conditions. Évalué à  3.
Euh… Je comprends qu'ils puisse avoir un ton qui ne te convient pas, mais c'est toute de même une critique constructive. Je ne sais pas trop pourquoi tu le prends à parti comme ça. Il a pris le temps de revoir ton code et d'en exprimer une critique. C'est un comportement précieux dans le libre. Parce que le libre ce n'est pas que du code, c'est aussi de la remonté de bug, de la relecture, du tris de bug, de l'écriture de documentation, du packaging,…
Il n'a pas remis en cause ton droit d'avoir écris ton code et de l'avoir partagé. Le fait qu'il ai pris le temps de relire et de rédiger remarques montre justement une certaine considération.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll