Pour les curieux, ce que je reproche à dialog c'est […] l'utilisation de STDERR pour récupérer le résultat, donc on ne peux pas faire INPUT=$(dialog foobar)
Je ne me rappelle plus comment j'en suis arrivé à cette solution, mais voici un petit script montrant comment j'utilise dialog :
Il faut s'habituer à l'écriture en vert sur fond noir
Ça rappellera des souvenirs aux plus anciens d'entre nous ; certains ont probablement utilisé des moniteurs monochromes vert (mention spéciale à l'Amstrad CPC 464 monochrome), ou ambre…
En des temps anciens, je m'étais fendu d'un journal sur XULRunner, qui était à XUL ce que Electron est à HTML. Plus précisément, le journal portait sur la programmation d'applications XULRunner en C++, au lieu du traditionnel JavaScript. Aujourd'hui, j'utilise Electron à la place de XULRunner, mais je suis resté fidèle à C++.
Bon, je ne suis pas fan de ce style de musique ni spécialement versé dans tout ce qui est batterie mais, niveau performance musicale et technique, ça, ça me semble sortir du lot, indépendamment de l'âge de l'exécutante : https://www.youtube.com/watch?v=5jDVZPzfS1c.
Je ne connais pas Matplotlib plus que ça, mais il me semble que l'image n'est pas exportée au format SVG.
D’après la documentation de la méthode savefig, comme il n'y a pas de paramètre format et que le format ne peut pas être déduit du paramètre fname, alors c'est le format par défaut qui est utilisé, à savoir png.
Voici la fonction que j'utilise pour exporter un graphique Matplotlib en SVG :
Faire un truc rapide sans avoir de compréhension de la lib standard, peut importe le langage, ça me semble très… disons difficile.
Soit-dit en passant, le C++ est probablement le langage (avec le C, parmi les plus populaires) avec lequel on peut le plus facilement faire des trucs rapides sans rien connaître de la bibliothèque standard. Le C++ donne en effet directement accès à la bibliothèque C standard, aux bibliothèques systèmes, voire à l'assembleur. De quoi court-circuiter la bibliothèque C++ standard sans nécessairement perdre en performances. Il faut être motivé et avoir les compétences nécessaires, mais c'est plus facile qu'avec la plupart des autres langages, car on n'a pas besoin de changer d'environnement de développement pour ce faire …
Ce n'est pas dans un menu, c'est un élément de la listbox affichée à gauche du champ contenant, au-dessus à gauche de la liste des évènements. Et elle est présente dans la version 91.12.0.
Qu'est-ce qui ne va pas, dans Thunderbird, avec : onglet Agenda / Affichage Tous les évènements / Tri par dates croissantes / Sélection de l'évènement le plus récent à supprimer / Shift + Début / Suppr ? En plus, on peut annuler…
On voit que, par rapport à la transcription naïve du pseudo-code, on a a doublé le nombre de if à cause de la gestion d'erreurs. Sans compter que j'ai fait l'impasse sur la gestion d'erreurs des fonctions ActionX !
On voit que le code entre le try et le catch correspond presque ligne à ligne avec le pseudo-code correspondant. Je précise que l'ensemble du code ci-dessus est quand même une énorme simplification de la manière dont j'utilise les exceptions.
Pour résumer, j'utilise les exceptions afin que mon code soit très proche du pseudo-code que l'on pourrait écrire pour l'algorithme correspondant, ce qui, d’après moi, facilite grandement sa compréhension, sa maintenabilité et son évolutivité, en évitant qu'il ne soit pollué par le code dédié à la gestion des erreurs.
Cette approche, je l'ai mise en œuvre alors que je programmais encore en C, lorsque je ne connaissais ni le C++, ni son mécanisme d'exceptions. Les throw, try, catch étaient simulés à l'aide de macros s'appuyant sur la bibliothèque setjmp. Ces macros garantissaient par ailleurs que toutes les ressources étaient correctement libérées lors de la survenue d'une «exception» (en fait, un appel à longjmp).
Lorsque je suis passé au C++, j'ai réimplémenté ces macros en m'appuyant sur les exceptions, tout en conservant leur implémentation originale, les premiers compilateurs C++ n'implémentant pas tous les exceptions.
Avec cette approche, je n'ai jamais rencontré de problèmes particuliers avec les exceptions. Pour autant, je n'irais pas jusqu'à affirmer qu'elle n'a pas son lot d'inconvénients qui la rendrait inapplicable dans certaines situations…
Ce n'est pas parce que les exceptions posent problèmes avec certains types de projets qu'il faut les bannir de tous les projets.
Tu fais part de ton expérience, que je ne remets aucunement en question, pour justifier ta position sur les exceptions. Du coup, je vais te faire part de la mienne.
J"ai travaillé sur des projets assez conséquents, bien que probablement sans commune mesure avec ceux des organismes que tu cites. Il n'en reste pas moins que, pour ma part, les exceptions ne m'ont jamais, au grand jamais, posé de problèmes, même en ce qui concerne la taille des exécutable ou leurs performances.
Dans le cas notamment des daemon, des programmes qui sont censés être particulièrement fiables, je trouve personnellement que ce sont les exceptions (ou mécanisme similaire) qui permettent le plus facilement d'assurer cette fiabilité.
Bref, il en va des exceptions comme de toutes les technologies : il faut les utiliser à bon escient ; certaines projets s’accommodent parfaitement de leurs inconvénients, d'autres non…
Par conséquent, je n'ai aucun scrupule à les utiliser dans mes logiciels, et j'écris ceci tout en reconnaissant qu'elles ne sont pas exemptes de défauts…
[…] lire des milliers de page de code bien écrit pour apprendre à produire du code de qualité […] c'est ce que tous les bons programmeurs font.
Ce n'est pas la première fois que je vois ce genre d'affirmation. Le seul autre code source que le mien que j'examine à l'occasion sont de courts exemples d'utilisation d'une API. Ça fait de moi un mauvais programmeur ?
Quand je me suis lancé dans l'informatique en général et la programmation en particulier, le web n'existait pas encore, l'accès à Internet était hors de prix, et je n'avais donc pas accès à une grande quantité de code source. Je pense que nous fûmes beaucoup dans cette situation.
Du coup, le code source que je produis est probablement atypique. Bien qu'étant disponible sous licence libre sur des forges logicielles populaires, il ne doit pas être d'un grand intérêt pour ce genre de projets…
[…] (je pense que le pare-feu de mon entreprise bloque les websockets).
À ce sujet, j'ai eu l'occasion d'essayer une application utilisant des websockets sur quelques réseaux d'entreprises, et j'ai remarqué que beaucoup bloquaient les websockets avec http://, mais pas avec https://…
Les femmes sont peu représentées dans les métiers du numérique (29 % dans le secteur du numérique), une absence de diversité de profils qui commence dès la formation… Cet accès au numérique et à la maîtrise des outils est ainsi un frein pour les femmes en recherche d’emploi, encore plus pour celles qui ont envie d’entreprendre dans le numérique.
À l’aide de témoignages de personnalités du secteur, d’analyses et d’ateliers pratiques, découvrez les enjeux du numérique au féminin.
Utilisateurs, administrateurs, néophytes, donnez votre avis pour orienter les prochaines fonctionnalités en répondant à ce sondage avant le 30 avril 2022.
En ce qui me concerne, je me suis intéressé à l'informatique lorsque l'on m'a mis un ordinateur entre les pattes. Cadeau de Noël.
À l'époque, il aurait paru incongru de faire pareil cadeau à une fille.
De nos jours, d’après une rapide recherche, et ce que j'ai pu observer dans les transports en commun, rares sont les adolescents et adolescentes qui ne possèdent pas de smartphone.
Filles ou garçons, ils ont le matériel, et, grâce au web, la documentation. Reste à trouver les bons outils (Scratch, Snap! ou autres), et la bonne manière de leur les présenter pour les intéresser à la programmation en particulier et le numérique en général.
Contrairement aux précédents, ces jeux-là se jouent seuls. Néanmoins, pour rendre les choses plus fun, on peut y jouer à plusieurs, chacun sur son propre smartphone, en récupérant l'URL de l'application, éventuellement à l'aide du code QR dédié. Les différents protagonistes jouent alors à tour de rôle, ceux ne jouant pas voyant en temps réel, sur leurs smartphones, le déroulé de la partie de celui qui joue.
Pour essayer en ligne, sans rien installer, cliquez sur ce bouton :
Et, dans le même esprit, la tortue du Logo, mais utilisable sur smartphone :
[^] # Re: dialog
Posté par Claude SIMON (site web personnel) . En réponse au journal choose, pour des scripts shells interactifs. Évalué à 2.
Je ne me rappelle plus comment j'en suis arrivé à cette solution, mais voici un petit script montrant comment j'utilise
dialog
:Zelbinium, la programmation ludique
# Moment nostalgie…
Posté par Claude SIMON (site web personnel) . En réponse au journal J'ai testé: une ardoise à cristaux liquides. Évalué à 9.
Ça rappellera des souvenirs aux plus anciens d'entre nous ; certains ont probablement utilisé des moniteurs monochromes vert (mention spéciale à l'Amstrad CPC 464 monochrome), ou ambre…
Zelbinium, la programmation ludique
[^] # Un peu d'archéologie
Posté par Claude SIMON (site web personnel) . En réponse à la dépêche Dernières avancées du côté de Thunderbird. Évalué à 3.
En des temps anciens, je m'étais fendu d'un journal sur XULRunner, qui était à XUL ce que Electron est à HTML. Plus précisément, le journal portait sur la programmation d'applications XULRunner en C++, au lieu du traditionnel JavaScript. Aujourd'hui, j'utilise Electron à la place de XULRunner, mais je suis resté fidèle à C++.
Le journal en question : https://linuxfr.org/users/epeios/journaux/xulrunner-et-c.
Pour les passionnés d'archéologie, les billets de blog référencés dans ce journal peuvent être consultés à cette adresse, le premier se trouvant en bas : https://web.archive.org/web/20120909013202/http://zeusw.org/blog/index.php?categorie5/xul.
Et pour ceux qui veulent encore creuser plus, le code source des programmes mentionnés dans ces billets sont disponibles aux adresse suivantes :
Zelbinium, la programmation ludique
[^] # Re: Anarchiste, mais...
Posté par Claude SIMON (site web personnel) . En réponse au journal J'ai lu "Comment je suis devenue anarchiste" d'Isabelle Attard. Évalué à 4.
Une autrice (en réalité un auteur) de BD et de romans s'exprimant sur son métier : https://maliki.com/strips/a-croisee-chemins/
Zelbinium, la programmation ludique
[^] # Re: Mon avis
Posté par Claude SIMON (site web personnel) . En réponse au journal "Use plaintext email" ? Vraiment ?. Évalué à 2.
s/prone/propre/ :-)
Zelbinium, la programmation ludique
[^] # Re: rien
Posté par Claude SIMON (site web personnel) . En réponse au journal Bientôt 4 jours sans nouveau journal. Évalué à 2.
Bon, je ne suis pas fan de ce style de musique ni spécialement versé dans tout ce qui est batterie mais, niveau performance musicale et technique, ça, ça me semble sortir du lot, indépendamment de l'âge de l'exécutante : https://www.youtube.com/watch?v=5jDVZPzfS1c.
Zelbinium, la programmation ludique
[^] # Re: nano-mesures
Posté par Claude SIMON (site web personnel) . En réponse au lien La ville de Paris sanctionne les commerces climatisés gardant la porte ouverte - lalibre.be. Évalué à 6.
X jours ??? Déjà V, je trouve ça énorme ! III à la rigueur, à condition qu'il ne fasse pas trop chaud ! (veni, vidi, et j'ai pas pu résister…)
Zelbinium, la programmation ludique
[^] # Re: Petite revue de code
Posté par Claude SIMON (site web personnel) . En réponse à la dépêche Moniteur de tunnels SSH Tunnelmon en version 1.1 . Évalué à 7.
Ça ne serait pas plutôt :
if t.status not in ('ESTABLISHED', 'LISTEN'):
(ajout denot
) ?Zelbinium, la programmation ludique
[^] # Re: blockchain et crypto-monnaie sont deux choses différentes
Posté par Claude SIMON (site web personnel) . En réponse au journal Ethereum prépare son passage de Proof of Work à Proof of Stake. Évalué à 6.
Les JNF ? (-> [])
Zelbinium, la programmation ludique
[^] # Re: Au contraire, mais ça dépend
Posté par Claude SIMON (site web personnel) . En réponse au journal SmartCar. Évalué à 3.
Sauf chez Porsche…
Zelbinium, la programmation ludique
[^] # Re: Interfaçage avec autres libs ?
Posté par Claude SIMON (site web personnel) . En réponse au journal htag : realiser des UI en python3 sur web, mobile et desktop.. Évalué à 3.
Je ne connais pas Matplotlib plus que ça, mais il me semble que l'image n'est pas exportée au format SVG.
D’après la documentation de la méthode savefig, comme il n'y a pas de paramètre format et que le format ne peut pas être déduit du paramètre fname, alors c'est le format par défaut qui est utilisé, à savoir png.
Voici la fonction que j'utilise pour exporter un graphique Matplotlib en SVG :
Pour voir ce code en action : https://replit.com/@Q37Info/MatplotlibSVG#main.py (ligne 42).
Zelbinium, la programmation ludique
[^] # Re: Juste mon point de vue
Posté par Claude SIMON (site web personnel) . En réponse au journal De l'influence néfaste de Google sur les développeurs C++. Évalué à 3.
Soit-dit en passant, le C++ est probablement le langage (avec le C, parmi les plus populaires) avec lequel on peut le plus facilement faire des trucs rapides sans rien connaître de la bibliothèque standard. Le C++ donne en effet directement accès à la bibliothèque C standard, aux bibliothèques systèmes, voire à l'assembleur. De quoi court-circuiter la bibliothèque C++ standard sans nécessairement perdre en performances. Il faut être motivé et avoir les compétences nécessaires, mais c'est plus facile qu'avec la plupart des autres langages, car on n'a pas besoin de changer d'environnement de développement pour ce faire …
Zelbinium, la programmation ludique
[^] # Re: Interfaçage avec autres libs ?
Posté par Claude SIMON (site web personnel) . En réponse au journal htag : realiser des UI en python3 sur web, mobile et desktop.. Évalué à 3.
Matplotlib est aussi capable de générer du SVG et, vu les affinités de SVG avec HTML, il doit y avoir moyen d'injecter ça avec htag.
Zelbinium, la programmation ludique
[^] # Re: Merci
Posté par Claude SIMON (site web personnel) . En réponse au lien CalCleaner : J'ai développé un petit outil pour supprimer les vieux événements des calendriers. Évalué à 3.
Ce n'est pas dans un menu, c'est un élément de la listbox affichée à gauche du champ
contenant
, au-dessus à gauche de la liste des évènements. Et elle est présente dans la version 91.12.0.Zelbinium, la programmation ludique
[^] # Re: Merci
Posté par Claude SIMON (site web personnel) . En réponse au lien CalCleaner : J'ai développé un petit outil pour supprimer les vieux événements des calendriers. Évalué à 4.
Qu'est-ce qui ne va pas, dans Thunderbird, avec : onglet Agenda / Affichage Tous les évènements / Tri par dates croissantes / Sélection de l'évènement le plus récent à supprimer / Shift + Début / Suppr ? En plus, on peut annuler…
Zelbinium, la programmation ludique
# Une autre vision des exceptions
Posté par Claude SIMON (site web personnel) . En réponse au journal De l'influence néfaste de Google sur les développeurs C++. Évalué à 7.
Ma modeste contribution au débat…
Soit le pseudo-code suivant :
Transcription naïve en C, en utilisant getc (j'écarte volontairement l'utilisation de
switch
…case
) :Avec ce code, s'il y a le moindre problème avec le flux lu par
getc(…)
, on rentre dans une boucle infinie.Implémentons maintenant une gestion d'erreurs à la C.
On voit que, par rapport à la transcription naïve du pseudo-code, on a a doublé le nombre de if à cause de la gestion d'erreurs. Sans compter que j'ai fait l'impasse sur la gestion d'erreurs des fonctions ActionX !
Utilisons maintenant les exceptions :
On voit que le code entre le
try
et lecatch
correspond presque ligne à ligne avec le pseudo-code correspondant. Je précise que l'ensemble du code ci-dessus est quand même une énorme simplification de la manière dont j'utilise les exceptions.Pour résumer, j'utilise les exceptions afin que mon code soit très proche du pseudo-code que l'on pourrait écrire pour l'algorithme correspondant, ce qui, d’après moi, facilite grandement sa compréhension, sa maintenabilité et son évolutivité, en évitant qu'il ne soit pollué par le code dédié à la gestion des erreurs.
Cette approche, je l'ai mise en œuvre alors que je programmais encore en C, lorsque je ne connaissais ni le C++, ni son mécanisme d'exceptions. Les throw, try, catch étaient simulés à l'aide de macros s'appuyant sur la bibliothèque setjmp. Ces macros garantissaient par ailleurs que toutes les ressources étaient correctement libérées lors de la survenue d'une «exception» (en fait, un appel à longjmp).
Lorsque je suis passé au C++, j'ai réimplémenté ces macros en m'appuyant sur les exceptions, tout en conservant leur implémentation originale, les premiers compilateurs C++ n'implémentant pas tous les exceptions.
Avec cette approche, je n'ai jamais rencontré de problèmes particuliers avec les exceptions. Pour autant, je n'irais pas jusqu'à affirmer qu'elle n'a pas son lot d'inconvénients qui la rendrait inapplicable dans certaines situations…
Zelbinium, la programmation ludique
[^] # Re: Qt
Posté par Claude SIMON (site web personnel) . En réponse au journal De l'influence néfaste de Google sur les développeurs C++. Évalué à 10.
Ce n'est pas parce que les exceptions posent problèmes avec certains types de projets qu'il faut les bannir de tous les projets.
Tu fais part de ton expérience, que je ne remets aucunement en question, pour justifier ta position sur les exceptions. Du coup, je vais te faire part de la mienne.
J"ai travaillé sur des projets assez conséquents, bien que probablement sans commune mesure avec ceux des organismes que tu cites. Il n'en reste pas moins que, pour ma part, les exceptions ne m'ont jamais, au grand jamais, posé de problèmes, même en ce qui concerne la taille des exécutable ou leurs performances.
Dans le cas notamment des daemon, des programmes qui sont censés être particulièrement fiables, je trouve personnellement que ce sont les exceptions (ou mécanisme similaire) qui permettent le plus facilement d'assurer cette fiabilité.
Bref, il en va des exceptions comme de toutes les technologies : il faut les utiliser à bon escient ; certaines projets s’accommodent parfaitement de leurs inconvénients, d'autres non…
Par conséquent, je n'ai aucun scrupule à les utiliser dans mes logiciels, et j'écris ceci tout en reconnaissant qu'elles ne sont pas exemptes de défauts…
Zelbinium, la programmation ludique
[^] # Re: Libre ou pas libre, telle n'est pas la question.
Posté par Claude SIMON (site web personnel) . En réponse au lien FauxPilot - Clone de GitHub Copilot libre et hors-ligne. Évalué à 2.
Ce n'est pas la première fois que je vois ce genre d'affirmation. Le seul autre code source que le mien que j'examine à l'occasion sont de courts exemples d'utilisation d'une API. Ça fait de moi un mauvais programmeur ?
Quand je me suis lancé dans l'informatique en général et la programmation en particulier, le web n'existait pas encore, l'accès à Internet était hors de prix, et je n'avais donc pas accès à une grande quantité de code source. Je pense que nous fûmes beaucoup dans cette situation.
Du coup, le code source que je produis est probablement atypique. Bien qu'étant disponible sous licence libre sur des forges logicielles populaires, il ne doit pas être d'un grand intérêt pour ce genre de projets…
Zelbinium, la programmation ludique
[^] # Re: En parlant de Minitel
Posté par Claude SIMON (site web personnel) . En réponse au lien OS pour Minitel. Évalué à 2.
À ce sujet, j'ai eu l'occasion d'essayer une application utilisant des websockets sur quelques réseaux d'entreprises, et j'ai remarqué que beaucoup bloquaient les websockets avec
http://
, mais pas avechttps://
…Ceci dit, http://3611.re fonctionne chez moi, mais pas https://3611.re…
Zelbinium, la programmation ludique
[^] # Re: re: Adieu Atom :(
Posté par Claude SIMON (site web personnel) . En réponse au journal Adieu Atom :(. Évalué à 2.
N'oublions pas que VSCode, c'est aussi https://vscode.dev. Mais c'est peut-être faisable avec https://www.rust-lang.org/fr/what/wasm …
Zelbinium, la programmation ludique
# Table ronde / atelier « L’emploi dans le numérique – Femmes et Numérique »
Posté par Claude SIMON (site web personnel) . En réponse au lien étude : les freins à l'accès des filles aux filières informatiques et numériques. Évalué à 2.
Ça se passe demain (jeudi 2 juin) à Strasbourg. Inscription nécessaire, mais il y a encore de la place : https://numerique-responsable.strasbourg.eu/event/emploi-dans-le-numerique-femmes-et-numerique/
Zelbinium, la programmation ludique
[^] # Re: « nouveau »
Posté par Claude SIMON (site web personnel) . En réponse au lien Mohammed Adnène Trojette, développeur Debian, nouveau conseiller au numérique de l'Elysée. Évalué à 2.
Le bon titre est : Mohammed Adnène Trojette, développeur Debian, à nouveau conseiller au numérique de l'Elysée
Déjà à ce poste sous Castex, il a été reconduit à ce même poste sous Borne.
Je n'avais pas trouvé l'info sur LinuxFR…
Zelbinium, la programmation ludique
# 24/05/2022 > 30/04/2022 !
Posté par Claude SIMON (site web personnel) . En réponse à la dépêche happyDomain - On devrait tous avoir un nom de domaine. Évalué à 3.
Zelbinium, la programmation ludique
# Une lueur d'espoir ?
Posté par Claude SIMON (site web personnel) . En réponse au lien Conférence "Les freins à l’accès des filles aux filières informatiques et numériques du Lycée". Évalué à 3.
En ce qui me concerne, je me suis intéressé à l'informatique lorsque l'on m'a mis un ordinateur entre les pattes. Cadeau de Noël.
À l'époque, il aurait paru incongru de faire pareil cadeau à une fille.
De nos jours, d’après une rapide recherche, et ce que j'ai pu observer dans les transports en commun, rares sont les adolescents et adolescentes qui ne possèdent pas de smartphone.
Filles ou garçons, ils ont le matériel, et, grâce au web, la documentation. Reste à trouver les bons outils (Scratch, Snap! ou autres), et la bonne manière de leur les présenter pour les intéresser à la programmation en particulier et le numérique en général.
Zelbinium, la programmation ludique
# Ajouts.
Posté par Claude SIMON (site web personnel) . En réponse au journal Le smartphone comme vecteur d'initiation à la programmation. Évalué à 2.
Deux jeux ont été rajoutés, Blackjack et Flooder.
Contrairement aux précédents, ces jeux-là se jouent seuls. Néanmoins, pour rendre les choses plus fun, on peut y jouer à plusieurs, chacun sur son propre smartphone, en récupérant l'URL de l'application, éventuellement à l'aide du code QR dédié. Les différents protagonistes jouent alors à tour de rôle, ceux ne jouant pas voyant en temps réel, sur leurs smartphones, le déroulé de la partie de celui qui joue.
Pour essayer en ligne, sans rien installer, cliquez sur ce bouton :
Et, dans le même esprit, la tortue du Logo, mais utilisable sur smartphone :
Zelbinium, la programmation ludique