Au boulot on utilise yapf, mais je n'étais pas emballé par la config utilisée. J'ai essayé black mais je ne suis vraiment pas convaincu par le formatage. Il ne va pas changer que l'indentation et les retours chariots, mais aussi le type de guillemets utilisé (guillemets doubles partout). C'est bien pour l'homogénéité, mais cela altère plus que juste le formatage. Perso je préfère des lignes courtes avec un paramètre par ligne car cela permet d'avoir des diff minimalistes et faciles à lire, et d'éviter au maximum les conflits. Black va lui au contraire essayer de tout faire tenir sur une ligne.
De son côté, yapf permet de donner des indications sur le formatage, mais c'est toi qui les contrôles.
Par exemple, prendre l'habitude de mettre une virgule après le dernier paramètre d'une liste (de valeurs ou d'arguments) permet aussi de réduire les diff. Ainsi quand on ajoute un nouveau paramètre, le pas besoin de modifier la ligne précédente pour rajouter une virgule. On a un diff propre avec juste une ligne ajoutée correspondant à la valeur ajoutée. Et yapf a la bonne idée de comprendre qu'une virgule sans autre valeur derrière indique que tu préfères un formatage avec un paramètre par ligne.
On est finalement restés sur yapf avec quelques améliorations sur la config.
Le journaliste se fie aux sources. Quand les sources ne sont pas falsifiées, c'est déjà difficile d'avoir du journalisme de qualité. Si les sources sont falsifiées, je te laisse imaginer...
C'est surtout effrayant compte tenu du risque d'utilisation de ces technologies pour faire de la désinformation de masse. Si tu n'es plus capable de garantir que ce que tu vois est la réalité, comment les gens peuvent faire confiance à une information plutôt qu'à une autre. On a déjà vu des images avec une IA qui modifie une scène pour changer la saison durant laquelle elle est filmée. Si on arrive à plaquer le visage d'une personne fictive sur celui sur un individu réel, ça va devenir difficile de se la jouer Saint Thomas...
J'avais déjà envoyé un message lors de la précédente émission sur le sujet, où les questions étaient posées pour la forme, la journaliste ponctuant les réponses lapidaires sur la forme et non le fond par un "voilà", qui montrait qu'on était entre gens qui pensent pareil. J'ai aussi envoyé un message suite à cette émission là. La ligne éditoriale n'a pas changé, à ce que je vois.
Comme un peu tout le monde, je m'intéresse aux statuts plus indépendants, mais difficile de quitter la sécurité du salariat. Cependant, un reportage récent sur le portage salarial m'a un peu douché. Certaines sociétés peu scrupuleuses factureraient ainsi des frais indus, et plusieurs sont en procès car la pratique s'est répandue.
J'ai essayé il y a 2 ans de mettre en place un système de génération notes de publication, et j'avais découvert secretary. Le principe: tu utilises un fichier OpenDocument classique dans lequel tu as des données variables dans du json ou du yaml à côté. Avec secretary, qui se base sur le moteur de templates jinja2, tu remplaces les données dans le document. Ainsi les données variables sont à part, et le fichier final généré à partir du modèle. Ton modèle contient juste des insertions de variables pour que secretary puisse les trouver. Tu peux ainsi faire une boucle for sur la liste de tes équipements pour créer un tableau dans le document final. L'ODT peut être mis en gestion de version sous forme décompressée si besoin pour pouvoir faire des diff (idéalement avec un outil qui comprend l'ODT plutôt que de comparer le XML soi même). Je n'ai pas eu le temps d'aller au bout de l'approche et j'ai vu quelques petits bugs dans secretary, mais l'auteur était réactif et l'expérience intéressante.
J'avoue que j'ai du mal à voir l'intérêt du projet (si ce n'est pédagogique, et ça c'est toujours bien). Les cas où on se farcit toutes les commandes pour compiler un binaire en spécifiant indépendamment les .o sont rares. En général tu utilises plutôt les fonctions de remplacement de make pour créer des règles génériques (voilà comment transformer des .c en .o, et tel binaire a besoin de tels fichiers .c, et voilà comment déduire les headers nécessaires).
Je te conseille de regarder un peu du côté de Ninja, même si les fichiers de règles de ce dernier n'ont pas vocation à être écrites à la main, mais plutôt via un build system comme CMake ou Meson.
Open Source, surtout avec les majuscules, c'est Open Source au sens de Open Source Initiative, qui dit à 99% la même chose que le logiciel libre sur le plan technique. La rhétorique autour du logiciel libre insiste plus sur les libertés de l'utilisateur, mais ces libertés n'ont pas pour but l'asservissement du mainteneur.
Ensuite, tu as des logiciels propriétaires qui sont très à l'écoute des demandes des utilisateurs, et des logiciels libres où une personne code pour ses propres besoins et si ça profite à d'autres c'est bien, mais ce n'est pas le but recherché. Les questions morales et politiques sont donc orthogonales à la liberté du logiciel. Les mots ont un sens, qu'il ne faut pas extrapoler.
Être plus honnête et gérer une communauté, ça c'est vraiment du « Logiciel Libre » pour moi.
Pour le remplacement automatique, il y a peut être quelque chose à faire avec les abbréviations, mais ça n'a pas l'air simple pour ton exemple du tiret. Tu pourrais avec:
:abbreviate -- —
dire que tu remplaces deux tirets par un tiret long, mais cela demande donc une connaissance de l'utilateur. M'enfin s'il utilise vim il a déjà appris le plus gros :)
J'avais déjà vu ce genre de comparaison mais pour quelque chose de plus parlant je pense: parler en distance uniquement plutôt qu'en distance. C'était à un GUADEC je crois, mais je n'arrive plus à retrouver. Mais en gros tu avais des cercles concentriques sur un planisphère pour montrer la distance à parcourir pour aller chercher l'information (cette distance étant intuitivement liée au temps: plus c'est loin plus c'est long d'y aller).
Tu te retrouvais donc, comme toi, à accéder au cache sur un papier sur ton bureau, ou alors à devoir aller à l'autre bout du monde récupérer l'information.
Il y a aussi (précis mais pas assez visuel à cause des changements d'échelle je trouve) :
Latency Numbers Every Programmer Should Know
En fait ça ne marchera pas pour plusieurs raisons.
Raison n°1: le mauvais type de guillemet est utilisé
Il faut différencier (je pars du principe que tu as un clavier azerty):
` (backquote, AltGr+7 sur ton clavier)
' (guillemet simple, sur la touche 4 du clavier)
" (guillemet double, sur la touche 3 du clavier)
Je n'aime pas le backquote (guillemet inversé) parce que quand on débute on ne voit pas la différence avec le guillemet simple. La notation $(commande) est équivalente à `commande` et plus compréhensible à mon sens.
La commande man te donne des infos sur une commande. man tar te dira donc à quoi correspondent les lettres qui suivent (pour casses le suspense, ce sont des options, à toi de regarder le manuel pour savoir ce que fait la commande tar et à quoi correspondent ces options)
Conclusion
Il y a de fortes chances que tu te sois gourré en tapant ta première commande:
for i in 'ls..lesDonnees/*.val'
(au passage il manque aussi un slash).
Je ne pense pas me tromper en disant qu'il doit être écrit sur ton papier plutôt:
Idem, un coup de wget, pas de fichier .reg. Les fichiers en eux même sont juste des fichiers contenant des données aléatoires. Il y en a un seul qui contient la chaine "reg", et c'est par pur hasard. Donc on oublie le coup du fichier qui contient le lien vers le fichier .reg... Aucun fichier qui contient la chaîne "HKEY" non plus. Il y a 30 fichiers que "file" ne voit pas comme étant de l'HTML, et rien de lisible.
C'est un exo censé être facile ou bien la stéganographie est au programme ? _^
Si ces logiciels ont besoin d'un environnement à eux, mais que tu ne veux pas polluer ton shell avec leur environnement, alors fais juste un script qui sert de wrapper. Il chargera l'environnement de tes autres scripts avant de le appeller.
Si au contraire tu veux toujours avoir cet environnement dans ton shell courant, alors fais un source cao-scripts/environnement-logiciel dans ton $HOME/.bashrc.
Dans tous les cas, l'environnement et l'appel du programme final sont deux choses distinctes. Il faut les découpler, pour que n'importe qui puisse charger un environnement, potentiellement différent.
Arf, oui j'avais oublié cette limitation. Je n'utilise que des applis python sur la machine où j'ai fait la modification, et les dernières versions de Python 2.7 et Python >= 3.6 gèrent les chemins longs, du coup ça "just works". Mais rdiff-backup est libre (GPL-2.0-or-later), et, même si le recompiler ne doit pas être une partie de plaisir, le manifest peut être patché.
[^] # Re: Autres astuces non mentionnées dans mon journal
Posté par liberforce (site web personnel, Mastodon) . En réponse au journal Quelques bonnes pratiques Python pour 2019. Évalué à 2.
Au boulot on utilise yapf, mais je n'étais pas emballé par la config utilisée. J'ai essayé black mais je ne suis vraiment pas convaincu par le formatage. Il ne va pas changer que l'indentation et les retours chariots, mais aussi le type de guillemets utilisé (guillemets doubles partout). C'est bien pour l'homogénéité, mais cela altère plus que juste le formatage. Perso je préfère des lignes courtes avec un paramètre par ligne car cela permet d'avoir des diff minimalistes et faciles à lire, et d'éviter au maximum les conflits. Black va lui au contraire essayer de tout faire tenir sur une ligne.
De son côté, yapf permet de donner des indications sur le formatage, mais c'est toi qui les contrôles.
Par exemple, prendre l'habitude de mettre une virgule après le dernier paramètre d'une liste (de valeurs ou d'arguments) permet aussi de réduire les diff. Ainsi quand on ajoute un nouveau paramètre, le pas besoin de modifier la ligne précédente pour rajouter une virgule. On a un diff propre avec juste une ligne ajoutée correspondant à la valeur ajoutée. Et yapf a la bonne idée de comprendre qu'une virgule sans autre valeur derrière indique que tu préfères un formatage avec un paramètre par ligne.
On est finalement restés sur yapf avec quelques améliorations sur la config.
[^] # Re: Comment "démasquer" un faux visage
Posté par liberforce (site web personnel, Mastodon) . En réponse au journal Cette personne n'existe pas. Évalué à 9. Dernière modification le 18 février 2019 à 11:24.
Le journaliste se fie aux sources. Quand les sources ne sont pas falsifiées, c'est déjà difficile d'avoir du journalisme de qualité. Si les sources sont falsifiées, je te laisse imaginer...
[^] # Re: Comment "démasquer" un faux visage
Posté par liberforce (site web personnel, Mastodon) . En réponse au journal Cette personne n'existe pas. Évalué à 5.
C'est surtout effrayant compte tenu du risque d'utilisation de ces technologies pour faire de la désinformation de masse. Si tu n'es plus capable de garantir que ce que tu vois est la réalité, comment les gens peuvent faire confiance à une information plutôt qu'à une autre. On a déjà vu des images avec une IA qui modifie une scène pour changer la saison durant laquelle elle est filmée. Si on arrive à plaquer le visage d'une personne fictive sur celui sur un individu réel, ça va devenir difficile de se la jouer Saint Thomas...
# Rachida, sors de ce corps !
Posté par liberforce (site web personnel, Mastodon) . En réponse au lien Un client lourd Gnome pour visualiser (bientôt modifier si il y a des sous) les Wikidatas. Évalué à 2.
.
[^] # Re: Merci
Posté par liberforce (site web personnel, Mastodon) . En réponse au journal De l'absence de débat en France sur l'article 13 de la directive européenne droit d'auteur.. Évalué à 3.
J'avais déjà envoyé un message lors de la précédente émission sur le sujet, où les questions étaient posées pour la forme, la journaliste ponctuant les réponses lapidaires sur la forme et non le fond par un "voilà", qui montrait qu'on était entre gens qui pensent pareil. J'ai aussi envoyé un message suite à cette émission là. La ligne éditoriale n'a pas changé, à ce que je vois.
# Portage salarial, attention à la fraude
Posté par liberforce (site web personnel, Mastodon) . En réponse au journal Devenir un indépendant libre. Évalué à 5.
Comme un peu tout le monde, je m'intéresse aux statuts plus indépendants, mais difficile de quitter la sécurité du salariat. Cependant, un reportage récent sur le portage salarial m'a un peu douché. Certaines sociétés peu scrupuleuses factureraient ainsi des frais indus, et plusieurs sont en procès car la pratique s'est répandue.
Source: https://www.franceinter.fr/emissions/secrets-d-info/secrets-d-info-10-novembre-2018
[^] # Re: Une histoire qui plait à tout les gosses ...
Posté par liberforce (site web personnel, Mastodon) . En réponse au journal Lunii, la boîte à histoires sous Linux. Évalué à 3.
apapou ?
# LibreOffice + secretary
Posté par liberforce (site web personnel, Mastodon) . En réponse au journal Gestion de documentation. Évalué à 6. Dernière modification le 22 janvier 2019 à 14:23.
J'ai essayé il y a 2 ans de mettre en place un système de génération notes de publication, et j'avais découvert secretary. Le principe: tu utilises un fichier OpenDocument classique dans lequel tu as des données variables dans du json ou du yaml à côté. Avec secretary, qui se base sur le moteur de templates jinja2, tu remplaces les données dans le document. Ainsi les données variables sont à part, et le fichier final généré à partir du modèle. Ton modèle contient juste des insertions de variables pour que secretary puisse les trouver. Tu peux ainsi faire une boucle for sur la liste de tes équipements pour créer un tableau dans le document final. L'ODT peut être mis en gestion de version sous forme décompressée si besoin pour pouvoir faire des diff (idéalement avec un outil qui comprend l'ODT plutôt que de comparer le XML soi même). Je n'ai pas eu le temps d'aller au bout de l'approche et j'ai vu quelques petits bugs dans secretary, mais l'auteur était réactif et l'expérience intéressante.
# C'est bien joli mais...
Posté par liberforce (site web personnel, Mastodon) . En réponse à la dépêche Comparaison de technologies Web pour implémenter une application de dessin basique. Évalué à 5.
Ton comparatif manque un peu de TapTempo.
# Yet another build system
Posté par liberforce (site web personnel, Mastodon) . En réponse au journal `smk`, un make sans Makefile. Évalué à 7. Dernière modification le 11 décembre 2018 à 10:27.
Tu peux récupérer les dépendances aux headers via le compilateur, par exemple avec gcc -M et gcc -MM
Cf. https://stackoverflow.com/a/2394651/518853
J'avoue que j'ai du mal à voir l'intérêt du projet (si ce n'est pédagogique, et ça c'est toujours bien). Les cas où on se farcit toutes les commandes pour compiler un binaire en spécifiant indépendamment les .o sont rares. En général tu utilises plutôt les fonctions de remplacement de
makepour créer des règles génériques (voilà comment transformer des .c en .o, et tel binaire a besoin de tels fichiers .c, et voilà comment déduire les headers nécessaires).Je te conseille de regarder un peu du côté de Ninja, même si les fichiers de règles de ce dernier n'ont pas vocation à être écrites à la main, mais plutôt via un build system comme CMake ou Meson.
[^] # Re: exemple de recherche devops
Posté par liberforce (site web personnel, Mastodon) . En réponse au message Devops. Évalué à 3. Dernière modification le 05 décembre 2018 à 12:22.
J'ajoute packer pour la création d'images, Gitlab-CI et Jenkins pour l'intégration continue, et potentiellement AWS si on met des VM dans le cloud.
[^] # Re: Ha ouais, quand même...
Posté par liberforce (site web personnel, Mastodon) . En réponse au journal Une backdoor vient d’être trouvée dans un paquet npm connu. Évalué à 7. Dernière modification le 28 novembre 2018 à 16:38.
Open Source = logiciel libre...
Open Source, surtout avec les majuscules, c'est Open Source au sens de Open Source Initiative, qui dit à 99% la même chose que le logiciel libre sur le plan technique. La rhétorique autour du logiciel libre insiste plus sur les libertés de l'utilisateur, mais ces libertés n'ont pas pour but l'asservissement du mainteneur.
Ensuite, tu as des logiciels propriétaires qui sont très à l'écoute des demandes des utilisateurs, et des logiciels libres où une personne code pour ses propres besoins et si ça profite à d'autres c'est bien, mais ce n'est pas le but recherché. Les questions morales et politiques sont donc orthogonales à la liberté du logiciel. Les mots ont un sens, qu'il ne faut pas extrapoler.
https://yourlogicalfallacyis.com/fr/le-vrai-bon-ecossais
[^] # Re: Bizarre
Posté par liberforce (site web personnel, Mastodon) . En réponse au journal La DGSE utilise Arch Linux.... Évalué à 3. Dernière modification le 27 novembre 2018 à 18:07.
Note qu'ils ne savent pas écrire "depth" tout de même (zoome sur la première capture).
[^] # Re: Ha ouais, quand même...
Posté par liberforce (site web personnel, Mastodon) . En réponse au journal Une backdoor vient d’être trouvée dans un paquet npm connu. Évalué à 10.
Pas d'accord. Le logiciel libre, c'est la licence, point barre.
La manière dont tu gères une communauté d'utilisateurs, c'est autre chose.
[^] # Re: Comparaison parlante
Posté par liberforce (site web personnel, Mastodon) . En réponse au journal Le microprocesseur, ce monstre de puissance qui passe son temps à attendre. Évalué à 8. Dernière modification le 23 novembre 2018 à 15:49.
C'est ce que je me dis toujours quand je compte sur les 3+2 doigts de chacune de mes 1+1 mains.
[^] # Re: Éditeur ?
Posté par liberforce (site web personnel, Mastodon) . En réponse au message éditeur texte ou markdown aidant à la conformité à la langue française. Évalué à 4.
Pour mettre en évidence des caractères, Vim + un
set listchars?http://vimcasts.org/transcripts/1/en/
Pour le remplacement automatique, il y a peut être quelque chose à faire avec les abbréviations, mais ça n'a pas l'air simple pour ton exemple du tiret. Tu pourrais avec:
dire que tu remplaces deux tirets par un tiret long, mais cela demande donc une connaissance de l'utilateur. M'enfin s'il utilise vim il a déjà appris le plus gros :)
# Comparaison parlante
Posté par liberforce (site web personnel, Mastodon) . En réponse au journal Le microprocesseur, ce monstre de puissance qui passe son temps à attendre. Évalué à 8.
J'avais déjà vu ce genre de comparaison mais pour quelque chose de plus parlant je pense: parler en distance uniquement plutôt qu'en distance. C'était à un GUADEC je crois, mais je n'arrive plus à retrouver. Mais en gros tu avais des cercles concentriques sur un planisphère pour montrer la distance à parcourir pour aller chercher l'information (cette distance étant intuitivement liée au temps: plus c'est loin plus c'est long d'y aller).
Tu te retrouvais donc, comme toi, à accéder au cache sur un papier sur ton bureau, ou alors à devoir aller à l'autre bout du monde récupérer l'information.
Il y a aussi (précis mais pas assez visuel à cause des changements d'échelle je trouve) :
Latency Numbers Every Programmer Should Know
[^] # Re: Concevoir un enfant ?
Posté par liberforce (site web personnel, Mastodon) . En réponse au journal Le microprocesseur, ce monstre de puissance qui passe son temps à attendre. Évalué à 6. Dernière modification le 22 novembre 2018 à 16:31.
Douche comprise.
[^] # Re: decomposer, comprendre et recomposer
Posté par liberforce (site web personnel, Mastodon) . En réponse au message Besoins d'aide sur deux commandes. Évalué à 7.
En fait ça ne marchera pas pour plusieurs raisons.
Raison n°1: le mauvais type de guillemet est utilisé
Il faut différencier (je pars du principe que tu as un clavier azerty):
`(backquote, AltGr+7 sur ton clavier)'(guillemet simple, sur la touche 4 du clavier)"(guillemet double, sur la touche 3 du clavier)Je n'aime pas le backquote (guillemet inversé) parce que quand on débute on ne voit pas la différence avec le guillemet simple. La notation
$(commande)est équivalente à`commande`et plus compréhensible à mon sens.Pour comprendre un peu mieux, je te conseille donc la lecture du Guide avancé d'écriture des scripts Bash, et notamment la partie sur les guillemets.
Raison n°2: les espaces servent de séparateur
Cette commande n'est pas valide:
Celle là oui:
Raison n°3: man est ton ami (aka RTFM)
La commande
mante donne des infos sur une commande.man tarte dira donc à quoi correspondent les lettres qui suivent (pour casses le suspense, ce sont des options, à toi de regarder le manuel pour savoir ce que fait la commande tar et à quoi correspondent ces options)Conclusion
Il y a de fortes chances que tu te sois gourré en tapant ta première commande:
(au passage il manque aussi un slash).
Je ne pense pas me tromper en disant qu'il doit être écrit sur ton papier plutôt:
Tu devrais à présent voir les différences.
# Tu retardes...
Posté par liberforce (site web personnel, Mastodon) . En réponse au lien Linus de nouveau aux commandes. Évalué à 3. Dernière modification le 20 novembre 2018 à 18:09.
Ça fait déjà un mois qu'il est de retour:
https://lkml.org/lkml/2018/10/23/288
[^] # Re: Précision
Posté par liberforce (site web personnel, Mastodon) . En réponse au message fichier caché dans un URL. Évalué à 5.
Idem, un coup de wget, pas de fichier .reg. Les fichiers en eux même sont juste des fichiers contenant des données aléatoires. Il y en a un seul qui contient la chaine "reg", et c'est par pur hasard. Donc on oublie le coup du fichier qui contient le lien vers le fichier .reg... Aucun fichier qui contient la chaîne "HKEY" non plus. Il y a 30 fichiers que "file" ne voit pas comme étant de l'HTML, et rien de lisible.
C'est un exo censé être facile ou bien la stéganographie est au programme ? _^
# Un peu vague, mais bon...
Posté par liberforce (site web personnel, Mastodon) . En réponse au message sourcer un script qui n'est pas dans le répertoire courant et sans ajouter son path. Évalué à 4.
Si ces logiciels ont besoin d'un environnement à eux, mais que tu ne veux pas polluer ton shell avec leur environnement, alors fais juste un script qui sert de wrapper. Il chargera l'environnement de tes autres scripts avant de le appeller.
Si au contraire tu veux toujours avoir cet environnement dans ton shell courant, alors fais un
source cao-scripts/environnement-logicieldans ton$HOME/.bashrc.Dans tous les cas, l'environnement et l'appel du programme final sont deux choses distinctes. Il faut les découpler, pour que n'importe qui puisse charger un environnement, potentiellement différent.
# Search Engine 101
Posté par liberforce (site web personnel, Mastodon) . En réponse au message Cherche aide pour programmer. Évalué à 3.
Et sinon, comment tu as atterri sur linuxfr si tu ne sais pas utiliser un moteur de recherche ?
Cette recherche:
https://www.google.com/search?q=python+tutoriel
T'aurait permis de trouver (entre autres) ceci:
https://openclassrooms.com/fr/courses/235344-apprenez-a-programmer-en-python
[^] # Re: Limite MAX_PATH à 256 caractères
Posté par liberforce (site web personnel, Mastodon) . En réponse au journal De la sauvegarde sous windows. Évalué à 2.
Arf, oui j'avais oublié cette limitation. Je n'utilise que des applis python sur la machine où j'ai fait la modification, et les dernières versions de Python 2.7 et Python >= 3.6 gèrent les chemins longs, du coup ça "just works". Mais rdiff-backup est libre (GPL-2.0-or-later), et, même si le recompiler ne doit pas être une partie de plaisir, le manifest peut être patché.
Voilà le patch pour Python 3.6, ça devrait être transposable:
https://hg.python.org/cpython/rev/26601191b368
La 1.2.8 (dernière stable) est disponible ici:
http://svn.savannah.nongnu.org/svn/rdiff-backup/tags/r1-2-8/rdiff-backup/
La 1.3.3 (version de développement) est disponible ici:
http://svn.savannah.nongnu.org/svn/rdiff-backup/tags/r1-3-3/rdiff-backup/
Sinon tu as un import git ici:
https://github.com/sol1/rdiff-backup
[^] # Re: borgbackup et Windows
Posté par liberforce (site web personnel, Mastodon) . En réponse au journal De la sauvegarde sous windows. Évalué à 2.
argh, c'est
activate.bat, pasactivate.cmd.