barmic 🩩 a Ă©crit 6221 commentaires

  • # Comparaison

    PostĂ© par . En rĂ©ponse Ă  la dĂ©pĂȘche Outil d'analyse de licences FOSSology 3.8.0-rc1. ÉvaluĂ© Ă  5.

    Il se place comment par à rapport à d'autres solutions ? Je connais surtout Zenitram qui est trÚs réputé en terme d'alerte par exemple.

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: Formatage automatique

    PostĂ© par . En rĂ©ponse Ă  la dĂ©pĂȘche Robert, un logiciel de stockage en mĂ©moire vive. ÉvaluĂ© Ă  2.

    Concernant le profiling, c'est un peu plus gris, en Java je vais prĂ©fĂ©rer que tout soit dans une mĂȘme JVM pour avoir une vision globale et juste (historique des threads et lock dans JProfiler par exemple).

    He ben ce n'est pas l'avis de certains dĂ©veloppeurs de base de donnĂ©es clef-valeur en mĂ©moire pour java qui prĂ©conisent d'avoir plusieurs JVM de tailles rĂ©duites et expliquent qu'on a de meilleures performance en lui dĂ©diant du matĂ©riel (page 28). À savoir qu'hazelcast possĂšde les 2 modes il peut ĂȘtre utilisĂ© comme bibliothĂšque et comme cluster Ă  cotĂ©.

    Pour les statistiques NoSQL que tu présentes, se pose en effet la question de savoir si le nombre de drivers est lié à la simplicité du protocole.
    Autre réflexion :
    plus une base de données est populaire,
    plus le nombre d'utilisateurs est grand,
    plus le nombre d'utilisateurs de langages peu utilisés est important,
    plus la probabilité qu'un développeur/utilisateur se colle à la création du driver est importante.

    Tu en raconte des trucs, mais en l'Ă©tat tu remet en cause ce qu'avance les dĂ©veloppeurs de redis avec uniquement des « bouts de rĂ©flexions ». Pour le reste du commentaire je ne vois qu'Ă  moitiĂ© oĂč tu veux en venir et tu t'es amha perdu dans la conversation.

    Bref :

    • lĂ  oĂč la question des drivers peut ĂȘtre critique pour une base de donnĂ©es qui se crĂ©e, ils sont parti avec cette idĂ©e et ça a semble-t'il marchĂ©. Ça ne veut pas dire que c'est l'unique solution, c'est celle qu'ils ont choisi et tu peu difficilement avancer qu'ils ne sont pas arrivĂ© Ă  leurs fins
    • pas mal de base de donnĂ©es utilisent ou proposent des protocoles textes sans que ça ne semble les rendre inutilisables (redis donc, mais aussi elasticsearch, couchdb, hazelcast a une API rest,...) comme quoi ça ne doit pas ĂȘtre aussi bloquant que cela
    • tu sors des arguments qui se mordent la queue, tu n'a pas a le faire car des gens l'ont fais, merci, mais si tu regarde de plus prĂȘt des langages relativement rĂ©cents tu va voir que, le choix de base de donnĂ©es va d'un coup se limiter, tu as le droit de dire que tu t'en fout, mais c'est pas la question

    Bon du coup j'en Ă©tait Ă  ma seconde tentative. La discussion n'est pas plus intĂ©ressante qu'auparavant. Si tu n'a rien de plus concret que ça a avancĂ© je vais t'abandonner ici. Le fait qu'il ai dĂ©bat et que je puisse te pointer des dĂ©veloppeurs de diffĂ©rents projets qui ont un avis diffĂ©rents du tiens pourraient te montrer que, les choses ne sont pas aussi simples que tu l’avançais au dĂ©part (les protocoles textes et l'utilisation d'un serveur unique de base de donnĂ©es clef-valeur sont mauvais, avancĂ© avec une certaines vĂ©hĂ©mence et aplomb), si ça n'a pas suffit je ne serais pas en mesure de te convaincre. Bref restons-en lĂ .

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: Merci pour la dĂ©dicace ... :)

    PostĂ© par . En rĂ©ponse au journal Petites brĂšves en vrac. ÉvaluĂ© Ă  4.

    AMHA le point le plus essentiel c'est pas une question d'init uniquement ou pas. C'est des approches différentes.

    Quand tu conçois un systÚme tu peux avoir 2 approches différentes (c'est une dichotomie il y en a d'autres) :

    • la mĂ©thode sysv : tu est simple et basique et tu expose la complexitĂ© Ă  tes utilisateurs
    • la mĂ©thode systemd : tu prend pour toi la complexitĂ©, les utilisateurs ne l'ont pas

    Tu retrouve ce découpage dans pleins de choses : pour le web en python les micro framework face à django par exemple. Les outils de builds à la maven face à make ou ant.

    Ces derniÚre années on a tendance à décrire les simples comme non-opiniated et les autres comme opiniated. On parle aussi du principe de convention over configuration pour les second.

    Comprendre cette différence c'est à mon avis important pour comprendre la démarche à adopter face à chacun d'eux.

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: X11 ?

    PostĂ© par . En rĂ©ponse au journal umberwm, un gestionnaire de fenĂȘtre en tuile pour X11. ÉvaluĂ© Ă  2.

    Le message initial de questionne pas l'utilité, il demande autre chose. Tu va voir le 5Úme boulanger et tu lui dis qu'il aurait été judicieux d'ouvrir une pùtisserie.

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: Mes premiĂšres lignes de code professionnelles

    PostĂ© par . En rĂ©ponse au journal Des nouvelles de Fortran. ÉvaluĂ© Ă  4.

    Si ce n'est que ça :)

    perl -ne'while(/O/g){print chr(65+$-[0])}' input.carte

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: Mes premiĂšres lignes de code professionnelles

    PostĂ© par . En rĂ©ponse au journal Des nouvelles de Fortran. ÉvaluĂ© Ă  8.

    Waow vous utilisez des tellement concis !

    perl -ne'while(/O/g){print chr(97+$-[0])}' < input.carte
    

    :p

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: Formatage automatique

    PostĂ© par . En rĂ©ponse Ă  la dĂ©pĂȘche Robert, un logiciel de stockage en mĂ©moire vive. ÉvaluĂ© Ă  3. DerniĂšre modification le 04 mai 2020 Ă  09:48.

    Du coup, dans ce cas, les performances apportées par le service de cache ne serviront à rien car un cache local ferra le boulot, non?

    Quel cache ? Par dĂ©faut tu as un cache en lecture sur le systĂšme de fichier et tu peux avoir quelque chose au niveau de ton driver de base de donnĂ©es. Ce sont des caches pour les quels tu as trĂšs peu de contrĂŽle (politique d'Ă©viction par exemple, politique d'insertion,...). Imaginons un cas tu accĂšde Ă  une API qui est payante ou qui limite ton dĂ©bit (elle te demande Ă  ne pas lui envoyer plus de N requĂȘtes par seconde), tu va trouver dommage de te contenter d'un cache local.

    Je loupe surement quelques choses, car il "semble" (https://eli.thegreenplace.net/2018/measuring-context-switching-and-memory-overheads-for-linux-threads/) que les threads sont plus rapides à démarrer que les processus, et le temps de "context switch" est plus court pour les threads.

    Tout Ă  fait, si tu fait du calcul intensif. Et tu as mĂȘme la possibilitĂ© de partager de la donnĂ©e entre tes threads sans sĂ©rialisation. Mais tu as pleins d'autres paramĂštres que ça Ă  prendre en compte. Le plus classique c'est que si tu as un gc tu veux des processus les plus petit possibles. Au niveau du systĂšme d'exploitation, tu perds toute flexibilitĂ© de monitoring et d'administration. Si tu veux privilĂ©gier les rĂ©ponses aux requĂȘtes (qui ne sont pas forcĂ©ment toute en lien avec ton cache), tu va peut ĂȘtre demander Ă  ton OS de privilĂ©gier l'un sur l'autre. Ton process va aussi ĂȘtre une cible de choix pour l'OOM killer. De maniĂšre moins prĂ©cise je n'ai toujours eu que du positif Ă  dĂ©couper ce genre de chose mais lĂ  je n'ai rien de plus Ă  prĂ©senter que ça donne l'impression que la machine « respire mieux ».

    Il est possible de le faire en PHP, voir https://www.php.net/manual/en/book.shmop.php

    S'il est activé et que tu utilise fpm ou en module de ton serveur web.

    souvent les caches c'est le premier truc que tu veux virer au dĂ©marrage d'une appli pour ĂȘtre dans un Ă©tat connu,donc Ă  priori, stable

    Alors si tu es instable à cause de ton cache le problÚme c'est pas le cache :) Ce comportement vient surtout du fait qu'on veut mettre à jour le cache au démarrage on est pas sûr qu'il soit à jour et on préfÚre le détruire (c'est l'équivalent du shift+F5 sur ton navigateur). Si tu as la possibilité de savoir qu'il est à jour, il n'y a pas de raison de le détruire.

    Ce "problĂšme" (ou "faux problĂšme"), [...]

    Et hop ! On file dans la rhétorique. C'est toi qui te demandais si on est toujours dans l'informatique ?

    [...] tu l'as pour les bases de données sous le nom de "driver" JDBC/ODBC/etc... développés et fournis par les développeurs des bases de données.

    Alors ODBC c'est du "systÚme" et l'idée c'est d'implémenter sous forme d'une bibliothÚque partagée et que les langages puisse juste s'interfacer à un driver ODBC sans avoir à réimplémenter le driver... Comme quoi c'est un problÚme qui n'existe tellement pas que des gens essaient de le résoudre.

    Tu trouvera JDBC et DBI qui sont des API respectivement en java et en perl qui dĂ©finissent un driver standard (en natif dans leur langage ou ODBC) et proposent une API dessus. C'est la mĂȘme idĂ©e.

    Bon toutes ses API sont liées à SQL quand tu es un NoSQL tu peut abandonner l'idée de ce type de partage. Il y a quelques tentatives, mais c'est pas tr_s développé et plutÎt compliqué.

    Maintenant, si on regarde plutÎt que de juger. Prenons quelques base de données NoSQL :

    C'est une corrĂ©lation et pas forcĂ©ment une causalitĂ©, mais disons que si des dĂ©veloppeurs disent « on fait ça pour simplifier, la vie des dĂ©veloppeurs de drivers » et ils ont semble-t-il1 plus de driver que les autres. C'est peut ĂȘtre un faux problĂšme, hein ? Mais bon, il va falloir des arguments en plus pour me faire remettre en cause leur dire.


    1. il serait possible de regarder le nombre d'implĂ©mentation quelque soit le langage, mais j'ai la flemme. ↩

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: Mince trop cher

    PostĂ© par . En rĂ©ponse au journal Le FairPhone 3 est dĂ©sormais supportĂ© par (et mĂȘme vendu avec) /e/ (ex-eelo). ÉvaluĂ© Ă  3.

    Mais je peux me tromper...

    D'aprÚs toi pourquoi ils ont appelé ça un fairphone ?

    Ce sont les tenants du systĂšme ; et dans la mesure oĂč ils ont un impĂ©ratif : maximiser leurs revenus (via leurs volumes) et minimiser leurs coĂ»ts (via nos salaires), j'ai comme l'impression qu'il y a une incompatibilitĂ© quelque part...

    Le « systÚme » ? C'est quoi ? Ici la société qui vend le fairphone explique travailler pour que les ouvriers de productions soient mieux payé, limiter autant que possible les matériaux à problÚme et faire attention aux importations de terres rares entre autre. Ils ne disent clairement pas que c'est parfait, mais qu'ils travaillent en ce sens.

    Il est possible de remettre en cause ce qu'ils font. Mais on est dans une démarche bien plus concrÚte que « le systÚme il est pas bien, on peut rien faire ».

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: Bravo !

    PostĂ© par . En rĂ©ponse au journal umberwm, un gestionnaire de fenĂȘtre en tuile pour X11. ÉvaluĂ© Ă  4.

    Pardon je ne suis pas allé jusqu'à lire vraiment le fameux main.rs. Je ne lis pas encore couramment le rust. C'est la référence à dwm qui m'a trompée.

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: Comment ça marche ?

    PostĂ© par . En rĂ©ponse au journal umberwm, un gestionnaire de fenĂȘtre en tuile pour X11. ÉvaluĂ© Ă  10.

    Je me suis mĂȘme dit : « Encore un journal bookmark ! ».

    PĂ©tard ça va vite ! Il a codĂ© un truc il le partage avec nous, c'est loin d'ĂȘtre un journal bookmark (quelque soit sa forme).

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: X11 ?

    PostĂ© par . En rĂ©ponse au journal umberwm, un gestionnaire de fenĂȘtre en tuile pour X11. ÉvaluĂ© Ă  3.

    Ça c'est parce que tu fais un procĂšs d'intention. Tu peux penser qu'une 2Ăšme distribution Linux c'est utile, mais qu'une 2563254Ăšme ne l'est peut ĂȘtre pas autant.

    1. Qui est juge de l'utilité ?
    2. Pourquoi ça devrait ĂȘtre utile ?

    Ou dis autrement pourquoi est-ce que le fait que ça ne soit pas utile à une ou plusieurs personnes ici devrait remettre en cause ce projet/code/partage ?

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • # Bravo !

    PostĂ© par . En rĂ©ponse au journal umberwm, un gestionnaire de fenĂȘtre en tuile pour X11. ÉvaluĂ© Ă  4.

    Bravo ! Et merci de partager :)

    DWM au niveau de la configuration (fondée sur du code).

    J'ai utilisé un temps tout ce que fais suckless, mais au final je suis pas super fan de cette maniÚre là. Je préfÚre xmonad.

    • dwm on fork le code pour le modifier et se faire notre propre build.
    • xmonad est une bibliothĂšque haskel, tu rĂ©cupĂšre la bibliothĂšque et tu Ă©cris la fonction main qui lance cette bibliothĂšque.

    Cette seconde solution est bien plus simple à appréhender. Elle est aussi plus élégante je trouve. Enfin on est moins sujet, comme c'est le cas avec dwm à avoir des séries de patch à appliquer potentiellement dans un ordre donné et qui sont trÚs sensibles aux mises à jour du code upstream.

    Voila c'Ă©tait juste au cas oĂč ça te donne l'idĂ©e.

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: Une alternative Ă  Openboard

    PostĂ© par . En rĂ©ponse Ă  la dĂ©pĂȘche Pourquoi je suis tombĂ© en amour d’OpenBoard. ÉvaluĂ© Ă  5.

    Ah ! Ah ! Ça fais des annĂ©es que j'utilise xournal, mais jamais que pour Ă©diter des PDF. Je ne savais qu'il pouvait servir Ă  autre chose :) Bon je n'ai pas besoin des autres usages, mais c'est quand mĂȘme bon Ă  savoir .

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • [^] # Re: Formatage automatique

    PostĂ© par . En rĂ©ponse Ă  la dĂ©pĂȘche Robert, un logiciel de stockage en mĂ©moire vive. ÉvaluĂ© Ă  4. DerniĂšre modification le 01 mai 2020 Ă  21:18.

    Contrairement Ă  ce que tu penses, cela m’intĂ©resse de comprendre pourquoi on a arrive Ă  des architectures logicielles compliquĂ©es pour des rĂ©sultats catastrophiques sans que personne ne se remette en question (d'oĂč les quelques exemples citĂ©s).

    Je vais rĂ©essayer alors. J'ai du mal Ă  construire un fil conducteur donc ça va ĂȘtre une sĂ©rie de remarques et il faudra probablement que tu veuille faire l'effort de comprendre pour... comprendre.

    Pour une utilisation comme cache (c'est la premiĂšre idĂ©e qui vient en tĂȘte). Un cache ça sert Ă  stocker le rĂ©sultat d'un traitement pour y accĂ©der plus rapidement. Tant que le traitement en question est significativement plus long que la lecture depuis cette base de donnĂ©es, ça peut rester pertinent.

    Le fait de sĂ©parer les processus qui servent au cache plutĂŽt que de l'intĂ©grer dans ton logiciel peut avoir pleins d'intĂ©rĂȘts diffĂ©rents :

    • d'une part un systĂšme d'exploitation prĂ©fĂšre avoir 2 processus de 4Gio qu'un seul de 8, mais lĂ  tu n'es mĂȘme pas symĂ©trique tu peut avoir une partie applicative peut ĂȘtre bien plus petite en dĂ©lĂ©guant tout le stockage de grande quantitĂ© de donnĂ©es en mĂ©moire Ă  quelque chose d'autre. Si tu sais que tu n'en manipule qu'une quantitĂ© faible, ça peut ĂȘtre intĂ©ressant ;
    • tu peux ne pas avoir le choix, comme je le disais plus haut avec PHP et du cgi tu ne peux pas faire autrement (de mĂȘme avec du serverless) ;
    • tu peux vouloir que ton cache survive Ă  un redĂ©marrage de ton applicatif ;
    • tu peux vouloir que ton applicatif scale horizontalement et ne pas en avoir besoin pour ton cache. Tu peux lancer autant de fois ton appli la faire pointer vers ton serveur de cache et ton cache n'est pas limitĂ© Ă  chaque instance. Bien sĂ»r avec une solution comme robert pour le moment ça t'empĂȘche de le faire cotĂ© cache, mais il n'y en a pas forcĂ©ment besoin. Tu pourrais aussi imaginer faire interagir tes applicatifs pour qu'ils fassent les Ă©changent eux-mĂȘme :
      • ça complexifie l'auto scaling (il faut du service discovery, du graceful shutdown, etc)
      • cette complexitĂ© peut ĂȘtre trĂšs dommageable, la vitesse de dĂ©marrage et d'arrĂȘt peut ĂȘtre un enjeu important pour limiter les coĂ»ts de ton infra si tu es dans cloud par exemple
      • ça augmente la complexitĂ© de ton application, elle fait pleins de choses diffĂ©rentes ça multiplie les droits que tu va devoir lui donner et rends son observation plus compliquĂ©e

    Il y a probablement pleins d'autres points.

    Pour ce qui est du protocole texte, je ne peux que paraphraser ce que dis redis. Ça simplifie le dĂ©veloppement des bibliothĂšques et simplifier la vie des dĂ©veloppeurs pour ne pas avoir toi mĂȘme Ă  crĂ©er un client pour chaque langage de l'univers c'est plutĂŽt sympa. Ça simplifie aussi le debug parce que tu peux facilement voir sur le rĂ©seau ce qui se passe sans avoir Ă  implĂ©menter sur wireshark et Ă©ventuellement d'autre logiciel, le dĂ©codage de ton protocole.

    Voila c'est quelques points lancés comme ça, juste pour avoir quelques critÚres qui peuvent remplacer ta dichotomie cluster de cache/dictionnaire dans ton langage.

    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 . En rĂ©ponse au journal GNOME avec un scheduler temps rĂ©el. ÉvaluĂ© Ă  5.

    Mais si ton appli est capable d'avoir des infos, pourquoi elle freeze ? Quand l'appli freeze, c'est qu'elle est en attente sans en savoir plus. Que veux-tu dire à l'utilisateur qui permettra à lui de changer la situation, quand tu es en attente d'une machine à l'autre bout du réseau ?

    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Ă©.

    Mon point de vue c'est de vous demander de pousser la réflexion plus loin que la premiÚre étape qui est le feedback visuel, en se demandant ce que ça va changer à l'issue de la tùche qu'est en train d'effectuer l'utilisateur.

    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 . En rĂ©ponse Ă  la dĂ©pĂȘche Robert, un logiciel de stockage en mĂ©moire vive. ÉvaluĂ© Ă  3.

    Bref, l'idée n'est pas de donner des leçons ou d'arriver avec mes gros sabots

    alors que plus haut :

    N'as tu pas une petite liste dans un coin des technos/logiciels bien mauvais que tout le monde utilise?
    Démontrant ainsi que la popularité n'a rien à voir avec la qualité?

    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 . En rĂ©ponse Ă  la dĂ©pĂȘche Robert, un logiciel de stockage en mĂ©moire vive. ÉvaluĂ© Ă  1.

    C'est écrit donc c'est vrai?

    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.

    Personne n'est donc plus "au courant" que par exemple le nombre 2 milliards, transféré en ascii va prendre 10 octets, et en binaire seulement 4 octets?
    Et que dire du temps CPU pour convertir l'ascii ?

    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...

    Je ne vois pas l’intĂ©rĂȘt de Redis pour un seul serveur, une librairie faisant le mĂȘme boulot, ne suffirait-elle pas?

    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.

    A moins que l'on considÚre que l'appel d'une fonction est "comparable" à l'appel d'un service réseau.

    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.

    Bref, ce que fais Redis en rĂ©seau peut trĂšs bien ĂȘtre fait par une l'utilisation d'une librairie pour les besoins que tu prĂ©cises (optimisation pour les gros volumes, fragmentation, ...) sans requĂ©rir un service.

    Ça dĂ©pend du contexte. Mon (扊陀) po (ć‰Šé™€ă“ă“ăŸă§) objectif 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.


    1. 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 . En rĂ©ponse au journal Explorer des langages de programmation - Ă©dition 2020. ÉvaluĂ© Ă  3.

    Et donc, le REPL. Y'a des langages évolués qui émergent, mais aucun n'a un si bon REPL, voir aucun REPL du tout. Le temps écriture -> test -> validation -> je recommence est bien plus rapide et fun avec un REPL.

    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 . En rĂ©ponse au journal GNOME avec un scheduler temps rĂ©el. ÉvaluĂ© Ă  10.

    Désolé de la digression, mais t'es tombé pile sur un truc qui m'énerve.

    Pourquoi poster un commentaire énervé à 1h du mat' ? (si tu es dans la tz de Paris)

    Alors pour le partage rĂ©seau, dĂ©jĂ , est-ce que c'est un partage abstrait par le VFS ou alors une API spĂ©cifique Ă  Nautilus (ou une lib qu'il utilise spĂ©cifiquement) qui lui permet de savoir que c'est un partage rĂ©seau ? Dans le premier cas, ça obligerait Ă  complexifier le cas pour tous les accĂšs mĂȘme locaux, et ça causerait sĂ»rement plein de problĂšmes de consommation et complexification supplĂ©mentaire pour uniquement ce problĂšme particulier. Dans le second, il y a effectivement peut-ĂȘtre des choses Ă  faire, mais il faut essayer de comprendre le besoin : le rĂ©seau ajoute intrinsĂšquement des latences, alors combien de temps il faut attendre avant de dire qu'il est « en carafe » ? Est-ce une erreur transitoire ou permanante (et on dĂ©monde le partage) ?

    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.

    Certes, pouvoir fermer la fenĂȘtre devrait ĂȘtre une option accessible, mais si je peux me permettre le tirage de cheveu, la question de l'informatique a toujours Ă©tĂ© de cacher les modalitĂ©s, et lĂ  donc la modalitĂ© du « je suis dans un dossier du partage rĂ©seau », que tu la recrĂ©es en fermant la fenĂȘtre et en allant en rouvrir une autre pour aller au mĂȘme endroit et te reprendre la mĂȘme erreur... quel intĂ©rĂȘt ? « Attendre que ça revienne » peut ĂȘtre une solution Ă©galement valable ! Ça me fait penser Ă  ceux qui rechargent leurs pages pour rĂ©gler leur problĂšmes : TCP a Ă©tĂ© inventĂ© (dans les annĂ©es 70 !) pour rĂ©essayer Ă  votre place, sans que vous ayez besoin de le faire vous-mĂȘme ! (vous n'ĂȘtes pas des machines ! Bien que les devs prennent souvent leurs utilisateurs pour des automates dĂ©biles)

    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...

    Corrigeons d'abord ces conneries afin d'avoir un réseau plus fiable, aprÚs on aura moins de problÚme avec les GUI.

    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 . En rĂ©ponse Ă  la dĂ©pĂȘche Robert, un logiciel de stockage en mĂ©moire vive. ÉvaluĂ© Ă  3.

    De ce que je comprend maintenant ton systÚme n'a d'utilité que si il est au centre d'une architecture multi-serveurs (sinon pourquoi ne pas avoir une hashmap/un graphe directement dans l'appli, plus simple et plus rapide). Donc réservé aux gros déploiements.

    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.

    sinon pourquoi ne pas avoir une hashmap/un graphe directement dans l'appli, plus simple et plus rapide

    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,...

    Quand on a ce genre d'architecture, on cherche l'optimum, car perdre 5% de performances c'est payé quelques serveurs de plus pour "rien".

    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 . En rĂ©ponse au journal Explorer des langages de programmation - Ă©dition 2020. ÉvaluĂ© Ă  2.

    Donc généralement tu va utiliser un type prédéfini qui possÚde potentiellement des trucs dont tu n'a pas besoin.

    Je vois pas trop à quoi tu fais référence ici.

    Si tu prends mon exemple et que historiquement tu fais les choses ainsi :

    1. Tu crée LinuxFr
    2. Tu crée hello()
    3. Tu crée AppleFr

    Le paramÚtre que tu aura défini pour hello() sera probablement plutÎt LinuxFr 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 . 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 . En rĂ©ponse au journal Explorer des langages de programmation - Ă©dition 2020. ÉvaluĂ© Ă  2.

    C'est un argument qui se défend, plutÎt du cÎté ressenti humain subjectif (frustration) que technique.

    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 . En rĂ©ponse au journal Explorer des langages de programmation - Ă©dition 2020. ÉvaluĂ© Ă  1.

    Il n'y a pas de cast explicite, mais dans l'abstrait (peu importe l'implémentation) on peut voir ça comme un cast d'un type implicite qui contiendrait tous les objets (d'un point de vue statique on ne sait en général rien sur le type de l'objet contenu dans une variable, donc interface{}), vers le sous-type des objets qui ont une méthode foo (implicitement défini en Ruby) afin d'appliquer la méthode, avec exception runtime si ce cast échoue (le contenu de la variable, c'est-à-dire l'objet caché derriÚre interface{}, n'est pas d'un type compatible).

    Tu m'a faits douter, mais non le code équivalent en go de ce que j'ai posté plus haut :

    package main
    import (
     "fmt"
    )
    type LinuxFr struct {
    }
    func (c *LinuxFr) foo() string {
     return "linux"
    }
    func (c *LinuxFr) bar() string {
     return "bar"
    }
    type AppleFr struct {
    }
    func (c *AppleFr) foo() string {
     return "ios"
    }
    func hello(a interface{}) string {
     return a.foo()
    }
    func main() {
     fmt.Println(hello(LinuxFr{}))
     fmt.Println(hello(AppleFr{}))
    }

    Ça ne compile pas.

    ./prog.go:26:11: a.foo undefined (type interface {} is interface with no methods)
    

    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 . En rĂ©ponse au journal Explorer des langages de programmation - Ă©dition 2020. ÉvaluĂ© Ă  3.

    Information que tu n'as pas statiquement Ă  la base dans un langage Ă  typage dynamique, donc impossible Ă  perdre.

    C'est mon point : il est bien plus frustrant de perdre quelque chose que l'on a que de ne pas l'avoir.

    Dans les langages dynamiques il y a des casts aussi, ils sont juste implicites et partout, ce qui apporte plus d'ergonomie et de flexibilité (moins de contraintes comme tu dis), mais aussi justement moins d'info quand on se plante, voire des erreurs silencieuses (cast inattendu mais valide).

    Et bien non. Si je prends ce code lĂ  :

    class LinuxFr
     def foo()
     return "linux"
     end
     def bar()
     return "bar"
     end
    end
    class AppleFr
     def foo()
     return "MacOS"
     end
    end
    def MyFnc(site)
     puts site.foo()
    end
    MyFnc(LinuxFr.new)
    MyFnc(AppleFr.new)

    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.

    J'achĂšte pas trop non plus l'argument manichĂ©en qu'il faudrait ĂȘtre 100% statique ou 100% 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