Est-ce que les mesures faites avec perf prennent en compte uniquement le temps cpu utilisé? Il y a peut-être pas mal de performances à gagner sur les entrées/sorties, en particulier en utilisant de façon intelligente les buffers proposés par fstream. Mais pour ça il faut mesurer le temps "réel" et pas le temps "user". Il me semble que c'est faisable avec perf en changeant quelques options.
J'ai eu des gains très importants en creusant de ce côté sur un de mes projets, mais c'était sur un système embarqué avec du stockage eMMC et un système de fichier f2fs. Peut-être sur un PC portable, les IO sont beaucoup plus rapides?
(note: le lien est indiqué en français, mais il est en anglais)
Parce que, pour que cette image puisse s’afficher correctement, le nom du fichier doit être en caractère ASCII (latin 1), pas d’accents ou de fioritures dans ce genre.
Soit c'est en ASCII et on ne peut pas mettre d'accents. Soit c'est en Latin-1 (de son vrai nom ISO-8859-1) et on peut mettre les accents nécessaires pour les principales langues Européennes écrites avec l'alphabet latin.
Encore une étude qui fait des statistiques uniquement sur GitHub, mais qui présente ses résultats comme si c'était fait sur tout l'écosystème opensource?
J'en profite pour re-partager cette image extraite d'un livre sur la programmation Forth qui ne se privait pas de taper sur les développeurs BASIC et leur code spaghetti:
Oui, ça devenait trop compliqué sinon. Peut être en retournant un std::wstring_view?
Et ma version fait n'importe quoi si on demande un progress supérieur à 1 ou négatif ou…
Comme quoi l'implémentation proposée n'est probablement pas la plus bête.
Au passage j'ai découvert quelques trucs sur la gestion des chaînes de wchar_t que je ne manipule pas souvent:
On ne peut pas faire un printf avec un %ls pour afficher un wchar_t, ou en tout cas ça fait des trucs bizarres avec le modificateur de longueur, un %.10ls n'affiche pas 10 caractères. Avec wprintf ça semble fonctionner.
Il faut faire un setlocale, sinon le printf ou wprintf refuse d'afficher la chaîne. Je ne savais pas que printf pouvait retourner une erreur (en y réfléchissant ça semble logique, mais je m'étais pas posé la question).
Le préprocesseur C (cpp) est de plus en plus intégré avec la suite de la compilation. Par exemple in insère des directives permettant au compilateur de savoir à quelle ligne de quel fichier le code se trouvait avant le pré-processing, ce qui permet d'afficher des messages d'erreurs avec les bons noms de fichiers et numéros de lignes.
La plupart des langages de programmation n'apprécient pas trop de se retrouver avec des #file et des #line un peu partout dans le code.
Avec m4, ça fonctionne, mais la syntaxe de m4 fait que l'intégration avec autre chose peut vite être compliquée. On a vite fait de se retrouver avec une macro qui est remplacée à un endroit où on ne voulait pas. Et puis la syntaxe ne fait pas vraiment rêver de toutes façons.
Pour moi le code avec des goto pour gérer les erreurs est beaucoup plus simple à comprendre et à maintenir.
C'est peut-être juste une question d'habitude.
On ne fait bien sur pas n'importe cuoi avec des goto dans tous les sens. Seulement des goto qui vont vers la fin de la fonction, pour faire les libérations de ressources nécessaires avant d'en sortir. C'est bien sûr avantageusement remplacé par la RAII en C++, mais en C, on a pas ce luxe.
Si on utilise pas de goto, on a deux choix:
tout le code se retrouve imbriqué dans un tas de if() qui ne servent qu'à gérer les erreurs, on a du mal à suivre le flot du code au milieu
le nettoyage est fait à plein d'endroits dans la fonction (partout où une erreur peut se produire) avec beaucoup de code dupliqué
Ça permet de savoir qui a cliqué sur ce lien. Que ça soit de la publicité payante ou pas, c'est intéressant pour savoir s'il faut faire plus de communication ici où si ça sert à rien.
Est-ce que c'est indispensable? probablement pas, mais c'est dans les habitudes des gens qui font de la publicité. Sans toujours savoir quoi faire des résultats collectés, d'ailleurs.
En 2013, 60% des échanges sur Internet étaient en fait des robots et pas des humains.
Enfin on trouve des chiffres aasez variables selon à qui on demande et ce qu'on mesure, mais c'est entre 30 et 70%. Donc c'est déjà bien commencé. Il y a des gens qui font de faux sites, puis de faux visiteurs pour ces sites via des fermes à publicités. Il n'y a que les publicités qui sont vraies.
Et maintenant il y a des influenceurs qui font des fausses publicités, pour attirer des vrais annonceurs qui pourraient leur donner des sous.
Bon après moi, je trouve que rien ne battra le duff's device en terme de code spaghetti et il n'a pas besoin de goto.
Ah si on peut faire pire, il y a les coroutines en C de Simon Tatham
Of course, this trick violates every coding standard in the book. Try doing this in your company's code and you will probably be subject to a stern telling off if not disciplinary action! You have embedded unmatched braces in macros, used case within sub-blocks, and as for the crReturn macro with its terrifyingly disruptive contents . . . It's a wonder you haven't been fired on the spot for such irresponsible coding practice. You should be ashamed of yourself.
Any coding standard which insists on syntactic clarity at the expense of algorithmic clarity should be rewritten. If your employer fires you for using this trick, tell them that repeatedly as the security staff drag you out of the building.
Il suffit de demander aux arnaqueurs de respecter la RFC 3514 et de s'annoncer via le bit prévu à cet effet dans les en-têtes IP. Ainsi il sera facile de les identifier et de les bloquer.
Pour le son, cette combinaison a tellement bien marché que Yamaha a proposé des puces combinant un synthétiseur FM et un générateur de signaux carrés dans le même composant.
Pour ce mélange en particulier, il me semble que Scream Tracker 3 permettait déjà de composer à la fois avec des samples et des sons FM OPL3 sur une carte son Sound Blaster 16. Mais la partie FM de ce tracker a été relativement peu utilisée
On peut enregistrer des fichiers en XPM. Je suppose qu'on peut ouvrir les deux formats en utilisant sdl_image ou recoil si Grafx2 est compilé avec ces dépeneances optionnelles.
Je pensais que la limite à 10000px par 10000px dans GrafX2 ne poserait de problèmes à personne (je sais plus si elle est toujours d'actualité mais il y a eu ça au moins dans des anciennes versions) mais je vois que ça fait des très grandes images.
Le chapitre "Privacy issues in Debian packages" liste toutes sortes de cas où des données peuvent être envoyées vers l'extérieur.
Quelques exemples:
gmic et basex se connectent à un service pour savoir si des mises à jour sont disponibles
gnome-calculator télécharge les taux de change de diverses monnaies pour pouvoir effectuer des conversions
glances (un outil qui affiche un tableau de bord de l'état du système) se connecte à des services externes afin de pouvoir afficher l'IP publique de la machine
Firefox et Chromium ont pas mal de télémétrie, dont une partie est enlevée par l'équipe de Debian mais probablement pas tout
cura fait pas mal de télémétrie par défaut, mais la version packagée dans Debian est "nettoyée" de ces problèmes
python3-aiorpcx, byobu, paris-traceroute, r-cran-curl se connectent au DNS de Google pour vérifier s'il y a une connexion internet fonctionnelle
azure-cli (un outil pour accéder au cloud Microsoft) collecte de la "télémétrie anonyme" (on ne sait pas trop ce que c'est)
Un certain nombre d'outils implémentent leur propre configuration DNS et utilisent par exemple les serveurs DNS de Google ou de CloudFlare, ignorant le serveur DNS choisi dans /etc/resolv.conf (ou on peut au moins choisir par qui on est espionné)
Des outils de visioconférence (movim, psi, et aussi les navigateurs web utilisant WebRTC) ont besoin d'un serveur externe pour établir la connexion (et ainsi éviter les problèmes de pare-feu).
La liste continue avec par exemple des clients de messagerie instantanée qui envoient des notifications quand on est en train d'écrire un message, des clients mail ou navigateur web qui indiquent qu'on utilise Linux dans les messages ou requêtes envoyés, et d'autres infos de ce type (qu'on peut considérer mineures ou gênantes, chacun met sa limite où il veut).
On pouvait y croire, pourquoi pas, mais ce que j'ai retenu de cette lecture c'est aussi un manque de remise en question. Il a fait des choix risqués (quitter son travail bien payé pour travailler sur un logiciel libre), ça n'a pas marché, mais c'est de la faute des autres projets et utilisateurs.
Il a été responsable d'un accident de la route, mais il met les victimes (piétons dont l'une est décédée) entre guillemets.
Il a visiblement reçu beaucoup de critiques sur la façon de géré son projet et personne n'a voulu travailler avec lui pour prendre le relais pour la maintenance. Peut-être que ça montre un problème avec sa façon de travailler et une collaboration difficile.
Alors, oui, y'a sûrement une dose de pas de chance là dedans. Mais il y a aussi peut-être des erreurs dont on pourrait apprendre quelque chose et passer à la suite. Je n'ai pas trop l'impression que c'est le cas (après juste lecture de ce texte, hein, je ne connaît ni le projet, ni l'auteur).
Il y a quelques projets qui font un très bon travail d'optimisation pour fonctionner sur des machines avec de faibles ressources. Je pense par exemple au navigateur web NetSurf, ou à l'éditeur de texte Vim (comparé aux machins modernes de type VSCode par exemple).
Ça ne semble pas trop attirer les utilisateurs ni les contributeurs.
Le premier lien avec sa discussion était acceptable à la rigueur. Mais ce deuxième lien deux jours après qui pointe vers un article de journal qui ne fait que relayer la même info déjà discutée, je ne vois pas l'intérêt.
Et tant qu'on y est, pour se faire une idée, 0.1µS c'est l'équivalent de la radioactivité absorbée par une personne en mangeant une banane.
Source (référence plutôt pratique dans ce genre de cas, car on est heureusement peu amené à faire des calculs pour savoir si on est dangereusement irradidé dans la vie): https://xkcd.com/radiation/
On est 3 fois plus irradié en vivant à proximité (80 kilomètres) d'une centrale à charbon, et 10 fois plus en utilisant un écran cathodique (qui émet des rayons X).
Du côté des logiciels de dessin, peut-être que ça se rapproche plus du pixel art? Parmi les utilisateurs de GrafX2, il y en a au moins un qui l'utilisait pour ce genre de choses (je crois que c'étaient des motifs pour des machines à tisser industrielles) et qui nous avait fait quelques demandes de fonctionnalités pour cet usage.
Bon, je n'irai pas jusqu'à dire que GrafX2 est plus facile à prendre en main que GIMP, l'interface utilisateur est peut-être un peu inhabituelle, à sa façon.
Et puisqu'on est dans les arts créatifs, toutes ces méthodes fonctionnent aussi pour créer des modèles pour des réalisations en perles à repasser :)
# Mesures avec perf
Posté par pulkomandy (site web personnel, Mastodon) . En réponse au lien Effortless Performance Improvements in C++: std::unordered_map. Évalué à 2.
Est-ce que les mesures faites avec perf prennent en compte uniquement le temps cpu utilisé? Il y a peut-être pas mal de performances à gagner sur les entrées/sorties, en particulier en utilisant de façon intelligente les buffers proposés par fstream. Mais pour ça il faut mesurer le temps "réel" et pas le temps "user". Il me semble que c'est faisable avec perf en changeant quelques options.
J'ai eu des gains très importants en creusant de ce côté sur un de mes projets, mais c'était sur un système embarqué avec du stockage eMMC et un système de fichier f2fs. Peut-être sur un PC portable, les IO sont beaucoup plus rapides?
(note: le lien est indiqué en français, mais il est en anglais)
# Codage et encodage
Posté par pulkomandy (site web personnel, Mastodon) . En réponse à la dépêche Deux ou trois trucs à savoir sur Openclipart (avec des morceaux d’Inkscape dedans). Évalué à 5.
Soit c'est en ASCII et on ne peut pas mettre d'accents. Soit c'est en Latin-1 (de son vrai nom ISO-8859-1) et on peut mettre les accents nécessaires pour les principales langues Européennes écrites avec l'alphabet latin.
# GitHub
Posté par pulkomandy (site web personnel, Mastodon) . En réponse au lien Qui écrit Linux et les logiciels open source ?. Évalué à 10.
Encore une étude qui fait des statistiques uniquement sur GitHub, mais qui présente ses résultats comme si c'était fait sur tout l'écosystème opensource?
[^] # Re: tout lu mais
Posté par pulkomandy (site web personnel, Mastodon) . En réponse au journal 50 mauvais conseils de codage pour développeur C++. Évalué à 6.
J'en profite pour re-partager cette image extraite d'un livre sur la programmation Forth qui ne se privait pas de taper sur les développeurs BASIC et leur code spaghetti:
[^] # Re: tout lu mais
Posté par pulkomandy (site web personnel, Mastodon) . En réponse au journal 50 mauvais conseils de codage pour développeur C++. Évalué à 3.
Oui, ça devenait trop compliqué sinon. Peut être en retournant un std::wstring_view?
Et ma version fait n'importe quoi si on demande un
progresssupérieur à 1 ou négatif ou…Comme quoi l'implémentation proposée n'est probablement pas la plus bête.
Au passage j'ai découvert quelques trucs sur la gestion des chaînes de wchar_t que je ne manipule pas souvent:
[^] # Re: tout lu mais
Posté par pulkomandy (site web personnel, Mastodon) . En réponse au journal 50 mauvais conseils de codage pour développeur C++. Évalué à 2.
Allez je tente une version sans conditions et sans boucles:
[^] # Re: tout lu mais
Posté par pulkomandy (site web personnel, Mastodon) . En réponse au journal 50 mauvais conseils de codage pour développeur C++. Évalué à 4.
En théorie oui, mais en pratique pas vraiment.
Le préprocesseur C (cpp) est de plus en plus intégré avec la suite de la compilation. Par exemple in insère des directives permettant au compilateur de savoir à quelle ligne de quel fichier le code se trouvait avant le pré-processing, ce qui permet d'afficher des messages d'erreurs avec les bons noms de fichiers et numéros de lignes.
La plupart des langages de programmation n'apprécient pas trop de se retrouver avec des
#fileet des#lineun peu partout dans le code.Avec m4, ça fonctionne, mais la syntaxe de m4 fait que l'intégration avec autre chose peut vite être compliquée. On a vite fait de se retrouver avec une macro qui est remplacée à un endroit où on ne voulait pas. Et puis la syntaxe ne fait pas vraiment rêver de toutes façons.
[^] # Re: My Generation
Posté par pulkomandy (site web personnel, Mastodon) . En réponse à la dépêche Entretien avec Stephane-D à propos du SGDK. Évalué à 2.
Et Sim City 2000
[^] # Re: tout lu mais
Posté par pulkomandy (site web personnel, Mastodon) . En réponse au journal 50 mauvais conseils de codage pour développeur C++. Évalué à 5.
Pour moi le code avec des goto pour gérer les erreurs est beaucoup plus simple à comprendre et à maintenir.
C'est peut-être juste une question d'habitude.
On ne fait bien sur pas n'importe cuoi avec des goto dans tous les sens. Seulement des goto qui vont vers la fin de la fonction, pour faire les libérations de ressources nécessaires avant d'en sortir. C'est bien sûr avantageusement remplacé par la RAII en C++, mais en C, on a pas ce luxe.
Si on utilise pas de goto, on a deux choix:
[^] # Re: Lien avec traceur
Posté par pulkomandy (site web personnel, Mastodon) . En réponse au journal 50 mauvais conseils de codage pour développeur C++. Évalué à 8.
Ça permet de savoir qui a cliqué sur ce lien. Que ça soit de la publicité payante ou pas, c'est intéressant pour savoir s'il faut faire plus de communication ici où si ça sert à rien.
Est-ce que c'est indispensable? probablement pas, mais c'est dans les habitudes des gens qui font de la publicité. Sans toujours savoir quoi faire des résultats collectés, d'ailleurs.
[^] # Re: Sentiment étrange quand je lis ce billet (et d'autres du même acabit)
Posté par pulkomandy (site web personnel, Mastodon) . En réponse au lien Meta Verified : c’était gratuit et cela ne le sera plus jamais.. Évalué à 7.
En 2013, 60% des échanges sur Internet étaient en fait des robots et pas des humains.
Enfin on trouve des chiffres aasez variables selon à qui on demande et ce qu'on mesure, mais c'est entre 30 et 70%. Donc c'est déjà bien commencé. Il y a des gens qui font de faux sites, puis de faux visiteurs pour ces sites via des fermes à publicités. Il n'y a que les publicités qui sont vraies.
Et maintenant il y a des influenceurs qui font des fausses publicités, pour attirer des vrais annonceurs qui pourraient leur donner des sous.
[^] # Re: tout lu mais
Posté par pulkomandy (site web personnel, Mastodon) . En réponse au journal 50 mauvais conseils de codage pour développeur C++. Évalué à 7.
Ah si on peut faire pire, il y a les coroutines en C de Simon Tatham
[^] # Re: Quelques améliorations
Posté par pulkomandy (site web personnel, Mastodon) . En réponse au journal 50 mauvais conseils de codage pour développeur C++. Évalué à 5.
Si vous avez d'autres idées pour créer du code de m*rde,
[^] # Re: euh
Posté par pulkomandy (site web personnel, Mastodon) . En réponse au lien Le gouvernement veut mettre en place d'ici fin 2023 un «filtre anti-arnaque» sur Internet. Évalué à 10.
Il suffit de demander aux arnaqueurs de respecter la RFC 3514 et de s'annoncer via le bit prévu à cet effet dans les en-têtes IP. Ainsi il sera facile de les identifier et de les bloquer.
[^] # Re: très bonne dépêche
Posté par pulkomandy (site web personnel, Mastodon) . En réponse à la dépêche Entretien avec Stephane-D à propos du SGDK. Évalué à 4.
Pour le son, cette combinaison a tellement bien marché que Yamaha a proposé des puces combinant un synthétiseur FM et un générateur de signaux carrés dans le même composant.
[^] # Re: Furnace Tracker / Deflemask libre/pas libre - multi sound chips
Posté par pulkomandy (site web personnel, Mastodon) . En réponse à la dépêche Entretien avec Stephane-D à propos du SGDK. Évalué à 5.
Pour ce mélange en particulier, il me semble que Scream Tracker 3 permettait déjà de composer à la fois avec des samples et des sons FM OPL3 sur une carte son Sound Blaster 16. Mais la partie FM de ce tracker a été relativement peu utilisée
[^] # Re: les screenshots! les screenshots!
Posté par pulkomandy (site web personnel, Mastodon) . En réponse au journal Freedroid-RPG v1 est sorti. Évalué à 3.
On peut enregistrer des fichiers en XPM. Je suppose qu'on peut ouvrir les deux formats en utilisant sdl_image ou recoil si Grafx2 est compilé avec ces dépeneances optionnelles.
Pas de sauvegarde en XBM pour l'instant.
[^] # Re: les screenshots! les screenshots!
Posté par pulkomandy (site web personnel, Mastodon) . En réponse au journal Freedroid-RPG v1 est sorti. Évalué à 3.
Avec plaisir :)
Je pensais que la limite à 10000px par 10000px dans GrafX2 ne poserait de problèmes à personne (je sais plus si elle est toujours d'actualité mais il y a eu ça au moins dans des anciennes versions) mais je vois que ça fait des très grandes images.
[^] # Re: voire aussi
Posté par pulkomandy (site web personnel, Mastodon) . En réponse au lien La télémétrie sur la chaîne de compilation de Go sera activée par défaut. Évalué à 6.
Le chapitre "Privacy issues in Debian packages" liste toutes sortes de cas où des données peuvent être envoyées vers l'extérieur.
Quelques exemples:
La liste continue avec par exemple des clients de messagerie instantanée qui envoient des notifications quand on est en train d'écrire un message, des clients mail ou navigateur web qui indiquent qu'on utilise Linux dans les messages ou requêtes envoyés, et d'autres infos de ce type (qu'on peut considérer mineures ou gênantes, chacun met sa limite où il veut).
[^] # Re: L'incompréhension risque de continuer
Posté par pulkomandy (site web personnel, Mastodon) . En réponse au lien Quelle est la suite pour core-js ?. Évalué à 3.
On pouvait y croire, pourquoi pas, mais ce que j'ai retenu de cette lecture c'est aussi un manque de remise en question. Il a fait des choix risqués (quitter son travail bien payé pour travailler sur un logiciel libre), ça n'a pas marché, mais c'est de la faute des autres projets et utilisateurs.
Il a été responsable d'un accident de la route, mais il met les victimes (piétons dont l'une est décédée) entre guillemets.
Il a visiblement reçu beaucoup de critiques sur la façon de géré son projet et personne n'a voulu travailler avec lui pour prendre le relais pour la maintenance. Peut-être que ça montre un problème avec sa façon de travailler et une collaboration difficile.
Alors, oui, y'a sûrement une dose de pas de chance là dedans. Mais il y a aussi peut-être des erreurs dont on pourrait apprendre quelque chose et passer à la suite. Je n'ai pas trop l'impression que c'est le cas (après juste lecture de ce texte, hein, je ne connaît ni le projet, ni l'auteur).
# Ils existent
Posté par pulkomandy (site web personnel, Mastodon) . En réponse au lien Is software getting worse?. Évalué à 4.
Il y a quelques projets qui font un très bon travail d'optimisation pour fonctionner sur des machines avec de faibles ressources. Je pense par exemple au navigateur web NetSurf, ou à l'éditeur de texte Vim (comparé aux machins modernes de type VSCode par exemple).
Ça ne semble pas trop attirer les utilisateurs ni les contributeurs.
[^] # Re: fake news ou relai de fake news.
Posté par pulkomandy (site web personnel, Mastodon) . En réponse au lien Centrale nucléaire de Golfech : la Garonne contaminée sur une "centaine de kilomètres" . Évalué à 4.
Le premier lien avec sa discussion était acceptable à la rigueur. Mais ce deuxième lien deux jours après qui pointe vers un article de journal qui ne fait que relayer la même info déjà discutée, je ne vois pas l'intérêt.
# Doublon
Posté par pulkomandy (site web personnel, Mastodon) . En réponse au lien Prédire le crime financier automatiquement. Évalué à 5.
lien déjà posté la semaine dernière il me semble: https://linuxfr.org/users/krunch/liens/utilisation-du-machine-learning-pour-predire-le-crime-en-col-blanc
[^] # Re: Doublon du lien précédent
Posté par pulkomandy (site web personnel, Mastodon) . En réponse au lien Centrale nucléaire de Golfech : la Garonne contaminée sur une "centaine de kilomètres" . Évalué à 10.
Et tant qu'on y est, pour se faire une idée, 0.1µS c'est l'équivalent de la radioactivité absorbée par une personne en mangeant une banane.
Source (référence plutôt pratique dans ce genre de cas, car on est heureusement peu amené à faire des calculs pour savoir si on est dangereusement irradidé dans la vie): https://xkcd.com/radiation/
On est 3 fois plus irradié en vivant à proximité (80 kilomètres) d'une centrale à charbon, et 10 fois plus en utilisant un écran cathodique (qui émet des rayons X).
[^] # Re: La méthode Ysabeau
Posté par pulkomandy (site web personnel, Mastodon) . En réponse au journal Pull git. Évalué à 7. Dernière modification le 08 février 2023 à 14:34.
Du côté des logiciels de dessin, peut-être que ça se rapproche plus du pixel art? Parmi les utilisateurs de GrafX2, il y en a au moins un qui l'utilisait pour ce genre de choses (je crois que c'étaient des motifs pour des machines à tisser industrielles) et qui nous avait fait quelques demandes de fonctionnalités pour cet usage.
Bon, je n'irai pas jusqu'à dire que GrafX2 est plus facile à prendre en main que GIMP, l'interface utilisateur est peut-être un peu inhabituelle, à sa façon.
Et puisqu'on est dans les arts créatifs, toutes ces méthodes fonctionnent aussi pour créer des modèles pour des réalisations en perles à repasser :)