(Note : je ne connais pas Rust, il est donc possible que ma syntaxe ne soit pas propre)
La syntaxe 'a permet de définir une contrainte dans la signature de la fonction. Ce qui est important ici n'est pas d'ajouter l'information sur la durée de vie : ce qui est important est que cette information de durée de vie soit la même sur l'ensemble des termes passés en arguments.
Tu pourrais avoir cette fonction qui prend en paramètre des arguments avec des durées de vie différents :
fnlongest<'a,b>(x: &'astr,y: &'bstr)->
Le problème qui se pose ici est de définir le résultat de la fonction. Garde à l'esprit qu'il faut que cela soit exprimable dans le langage. Comment représentes-tu prends la durée de vie la plus mauvaise des deux ? (C'est peut être possible, j'ignore a quel point le système de type de rust est avancé. Il faudrait pour cela que la durée de vie puisse être représenté par un type arbitraire).
On pourrait décider de prendre arbitrairement l'un ou l'autre :
fnlongest<'a,b>(x: &'astr,y: &'bstr)-> &'bstr
mais le compilateur risque de ne pas aimer et lever l'erreur en indiquant une incohérence dans le code.
Le plus simple est donc d'imposer cette contrainte : les deux types doivent avoir la même durée de vie, et c'est à l'appelant de s'assurer que cette contrainte est respectée.
Les deux process étaient relancés à partir du point de contrôle précédent tout simplement. Il faut garder à l'esprit que dans ce contexte, c'était la sureté de l'exécution qui était mise en avant, au détriment de la vitesse, et cela a à la fois des impacts sur le fil d'exécution du programme, mais sur le hardware mis en place autour.
De mémoire, il y avait peut-être un contrôleur d'exécution, qui s'assure que les deux programmes s'exécutent correctement, qui se trouvait dans une "chambre forte" protégée de tout environnement (radiation, ionisation etc). Au final cela revenait moins cher de mettre seulement ce dernier élément en confinement, et laisser les processeurs/microcontroleurs subir les attaques de l'environnement plutôt que créer une brique complète qui protège l'ensemble du système. (je ne sais plus trop si les programmes s'autocontrôlaient ou si cela était fait en extérieur — l'idée étant là, on peut imaginer les deux)
J'avais un jour assisté à une conférence sur ces questions de sureté de code. Dans un environnement "hostile" (je ne sais plus trop le contexte : nucléaire, ou ce genre de truc), une solution avait été de compiler le programme deux fois, avec deux compilateurs différents. Les deux programmes s'exécutaient en parallèle, et des points de contrôles avaient été mis en place dans lesquel chaque programme attendait que l'autre produise le même résultat avant d'embrayer sur la suite.
Comme le source était le même, il était attendu que le résultat soit identique, mais l'utilisation de deux compilateurs faisaient qu'un incident survenant sur l'exécution d'un programme n'avait pas le même impact sur l'autre, ce qui protégeait la solution.
Pareil, j'utilisais le thème sombre "par défaut" parce que le thème clair ne me correspondait pas. En voyant que le thème avait mis à jour dans la dépêche, je me suis empressé d'aller modifier ça dans l'appli, et c'est beaucoup mieux comme ça !
J'ai redécouvert récemment GPG, également via la protection des mots de passes. Jusqu'alors, j'avais la vision de GPG un peu réductrice d'être associé aux courriels, avec des contraintes que j'imaginais un peu lourdes (le process de création d'une clef est "sérieux" quand on veut juste tester sans aller plus loin).
J'ai sauté le pas il y a un an, en m'achetant une clef GPG (une version "non sécurisée" qui n'est pas basée sur carte à puce). Cela me permet de versionner mes mots de passe sans risque dans git (et donc de sécuriser une perte), ou d'y avoir accès sans avoir à diffuser ma clef GPG (le token est suffisant).
Comble du bonheur, il est également possible d'utiliser la clef GPG pour ssh, ce qui évite d'avoir à multiplier les clefs autorisées !
Bien essayé mais non :) Je suis à mi-chemin entre la version stable et la version testing (prochaine version stable) pour certains paquets.
Quand je regarde le patch et les changements apportés, j'ai l'impression qu'il ne gère pas toutes les branches et qu'il reste encore des appels au code de la GLib. Peut-être que je tombe dans l'un de ces cas là. (mais mes connaissances ne me permettent pas d'aller plus loin). Afin d'être sûr, j'ai installé hier le paquet "xfce4-terminal", qui se trouve en amont dans la liste des terminaux testés par la GLib, et c'est bien celui là qui s'est lancé quand j'ai voulu éditer mon fichier (je trouve ça un peu archaïque de coder en dur les applications dans une librairies, mais bon, c'est pas le sujet…)
Au moins j'ai l'explication désormais, même si le fonctionnement n'est pas normal, le fait de savoir d'où vient le problème est déjà quelque chose de rassurant (les bugs ça existe et c'est normal, ça m'inquiète davantage de ne pas comprendre pourquoi le système ne fonctionne pas comme attendu).
J'ai ouvert un rapport d'incident chez Debian, à suivre !
J'ai trouvé un ticket qui correspond à mon problème mais qui aurait été clos en 2018 ! Il faut maintenant comprendre pourquoi j'ai encore le problème sur mon PC !
J'utilise i3 comme WM, avec lxqt comme bureau (réduit presque au minimum). Mais plus je suis en train de chercher, plus j'ai l'impression que le problème vient du navigateur de fichier — où d'un composant dans la chaîne qui aurait stocké une liste de terminaux qques part, sauf que j'arrive pas à mettre la main dessus, et ça m'énerve ! :)
Je me souviens de ton journal ! À l'époque je ne connaissais pas Graphviz, j'ai vraiment pris en claque en voyant ce que l'on peut faire avec. Pas loin de 15ans après, ça fait toujours parti des outils que j'installe sur les PCs qui me passent sous la main.
Quand j'y repense, je crois que LinuxFr m'a vraiment accompagné dans mes explorations !
L'éditeur fait ce qu'il veut de son code : il peut décider de limiter le nombre de mot dans une page, ou colorer en bleu chaque fois que l'on écrit « Maison » dans le texte. Il fait ce qu'il veut et tu n'as rien à dire. La demande (idéale) d'offrir un service sans limitation n'est pas une obligation de la GPL.
À la base, la GPL indique juste que : si tu as reçu une version du logiciel, il doit être accompagné par le code source, et avec les 4 libertés qui l'accompagne (le si est important, dans la GPL tu n'es même pas tenu de donner de code source aux personnes qui n'ont pas le logiciel).
Par contre, après tu peux faire ce que tu veux du logiciel, l'éditeur ne peut pas t'empêcher de l'utiliser pour promouvoir ton association de défense des clowns, ou n'importe quoi d'autre. Tu peux même modifier le logo de logiciel, et le revendre en se faisant des sous dans son dos (allons même plus loin, tu peux continuer de remonter les bugs à l'éditeur dans cette situation… et il est en droit de ne pas les corriger !)
Là où la GPL est vertueuse, c'est que si quelqu'un décide de proposer le même produit sans les limitations (il le peut), il risque de détrôner l'éditeur initial, du coup, ces limitations sont souvent absentes des logiciels que l'on utilise. C'est par contre différent dans le cas des services : puisqu'il faut ajouter des coûts d'infrastructure/maintenance cela change un peu l'équilibre.
Mais dans tous les ca :
l'éditeur peut mettre ce qu'il veut dans son code
l'utilisateur peut faire ce qu'il veut avec le code qui lui a été donné
Et pour finir, voilà l'article 11 de la GPL (fsf france)
COMME LA LICENCE DU PROGRAMME EST CONCEDEE A TITRE GRATUIT, AUCUNE GARANTIE NE S'APPLIQUE AU PROGRAMME, DANS LES LIMITES AUTORISEES PAR LA LOI APPLICABLE. SAUF MENTION CONTRAIRE ECRITE, LES TITULAIRES DU DROIT D'AUTEUR ET/OU LES AUTRES PARTIES FOURNISSENT LE PROGRAMME "EN L'ETAT", SANS AUCUNE GARANTIE DE QUELQUE NATURE QUE CE SOIT, EXPRESSE OU IMPLICITE, Y COMPRIS, MAIS SANS Y ETRE LIMITE, LES GARANTIES IMPLICITES DE COMMERCIABILITE ET DE LA CONFORMITE A UNE UTILISATION PARTICULIERE. VOUS ASSUMEZ LA TOTALITE DES RISQUES LIES A LA QUALITE ET AUX PERFORMANCES DU PROGRAMME. SI LE PROGRAMME SE REVELAIT DEFECTUEUX, LE COUT DE L'ENTRETIEN, DES REPARATIONS OU DES CORRECTIONS NECESSAIRES VOUS INCOMBENT INTEGRALEMENT.
Je vais faire mon Zenitram sur ce coup là : tu te trompes sur ce qu'est le logiciel libre. La licence te donne le droit de récupérer le code sources, l'utiliser, le modifier, le redistribuer et le tout sans avoir à rendre de compte à l'éditeur.
La licence AGPL ne change rien à ça, puisqu'elle applique ces même droits dans le cadre de l'utilisation d'un service basé sur ce logiciel (avec la GPL pure, l'éditeur aurait pu garder le code source pour lui).
Si la limite de 20 utilisateurs ne te conviens pas, tu peux modifier le programme et ouvrir le service à d'autres utilisateurs — voire même te faire payer pour ça — sans avoir à rendre de compte à personne.
Ah j'ai inversé, j'ai cru que tu voulais supprimer les jpeg dont tu possédais les fichiers raw :) (ce qui correspondrait à ma manière de gérer mes fichiers)
Il suffit d'inverser dans la commandes pour avoir le bon comportement !
En plus j'avais souscrit initialement à librepay et tu faisais partie de dons que j'avais planifiés. Je crois que la rupture a eu lieu au moment où librepay a requis de créditer en avance son compte avant de faire la distribution.
T'as un moyen simple pour qu'on puisse te soutenir ?
Je suis content que mon commentaire ait fait mouche :) Je suis intéressé par ton journal sur la question technique également !
Dans ton journal tu ne parles pas du coût de l'hébergement (le dernier bilan de Wallabag évoque un peu moins de 200€ par mois, c'est également ton cas ?)
De mon côté, je fais partie des abonnés du second pic, et ton projet m'a également donné envie de produire ma propre application. J'en profite donc pour répondre avec ces deux éléments.
D'abord, je dois dire que ton code est vraiment clair, et c'est intéressant de pouvoir naviguer entre l'application et son source (c'est une chose que je n'avais jamais vraiment fait dans le détail auparavant, là je suis vraiment allé approfondir). La première chose qui me saute aux yeux, est le fait que l'appli est finalement "simple".
Quand on veut se lancer dans une application de manière autonome (sans avoir une équipe avec qui échanger), c'est important de garder juste à l'esprit son objectif, sans chercher à aller trop loin. Je prend en exemple ton code concernant le montant à payer :
Le montant est "codé en dur" mais ça fonctionne : pas besoin de monter une table en base de données qui va référencer les montants à payer, autant se concentrer sur l'essentiel et revenir plus tard sur cette partie si on le souhaite. De mon côté, j'ai plutôt tendance à chercher quelque chose de complet dès le début, et au final j'en arrive à me perdre parce que je me suis épuisé dans quelque chose qui est essentiel certes, mais qui aurait pu être simplifié.
Inutile de sortir une intelligence artificielle qui va analyser le texte, juste une division suffit pour avoir quelque chose qui fonctionne la plupart du temps (bon, ça ne marche pas quand le lien est une vidéo ou un audio…)
Bref, je trouve que l'application est un bon exemple pour obtenir un résultat en allant à l'essentiel, et sans se perdre en chemin. Au final, on a toujours l'impression de voir des exemples qui expliquent comment arriver au résultat parfait, mais qui n'expliquent pas le cheminement qui conduit à ce résultat (c'est un tout autre sujet qui déborde complètement de ce journal on est d'accord), et ton application "simple" mais qui fonctionne permet aussi d'avoir un modèle pour garder à l'esprit ce que l'on veut sans se perdre !
Donc je ne regrette pas d'avoir pris mon abonnement : même si je n'utilise pas l'appli régulièrement, cela m'a permis de me plonger dans ton code, en faire une petite analyse pour regarder comment tu as répondu aux problèmes que je me serai posé dans la même situation !
Tu prend un raspberry pi zero, tu y branches ta caméra, et tu mets le tout dans un boitier. Tu es maitre de ce que tu installes sur le système , vpn etc
De mon côté, il me faut me racheter des skins. Par contre, les frais de ports vers la France ont explosé ! En 2012, j'avais payé ±15€, là c'est minimum 50€ ! Je trouve ça vraiment excessif. J'avais essayé de les contacter par leur formulaire pour demander des infos mais n'ai jamais eu de retour…
Enfin tout ça pour dire que je suis partant, si on peut mutualiser ça je prend !
De mon côté, cela m'a beaucoup aidé de changer le layout en même temps que le clavier. Un peu comme le fait de repartir sur quelquechose de neuf où j'étais sûr de ne pas reprendre mes anciens réflexes.
Au début j'ai eu l'impression de bégayer, et c'est vraiment quelque chose de déroutant cette barrière qui s'érige entre ce que l'on veut dire (ici écrire), et le geste qui accompagne la pensée. On a l'impression d'être sans cesse en train de se heurter à quelque chose qui ne veut pas nous laisser libre. (Je ne sais pas si ça porte un nom d'ailleurs…)
En tout cas bienvenue, et profite, avec le temps cela fini par venir tout seul !
# Unification des types
Posté par chimrod (site web personnel) . En réponse au message Rust : lapin compris les durées de vie. Évalué à 4.
(Note : je ne connais pas Rust, il est donc possible que ma syntaxe ne soit pas propre)
La syntaxe
'a
permet de définir une contrainte dans la signature de la fonction. Ce qui est important ici n'est pas d'ajouter l'information sur la durée de vie : ce qui est important est que cette information de durée de vie soit la même sur l'ensemble des termes passés en arguments.Tu pourrais avoir cette fonction qui prend en paramètre des arguments avec des durées de vie différents :
Le problème qui se pose ici est de définir le résultat de la fonction. Garde à l'esprit qu'il faut que cela soit exprimable dans le langage. Comment représentes-tu prends la durée de vie la plus mauvaise des deux ? (C'est peut être possible, j'ignore a quel point le système de type de rust est avancé. Il faudrait pour cela que la durée de vie puisse être représenté par un type arbitraire).
On pourrait décider de prendre arbitrairement l'un ou l'autre :
mais le compilateur risque de ne pas aimer et lever l'erreur en indiquant une incohérence dans le code.
Le plus simple est donc d'imposer cette contrainte : les deux types doivent avoir la même durée de vie, et c'est à l'appelant de s'assurer que cette contrainte est respectée.
[^] # Re: Attaques hardware
Posté par chimrod (site web personnel) . En réponse à la dépêche La voiture allergique à la glace à la vanille, et autres bugs. Évalué à 4.
Les deux process étaient relancés à partir du point de contrôle précédent tout simplement. Il faut garder à l'esprit que dans ce contexte, c'était la sureté de l'exécution qui était mise en avant, au détriment de la vitesse, et cela a à la fois des impacts sur le fil d'exécution du programme, mais sur le hardware mis en place autour.
De mémoire, il y avait peut-être un contrôleur d'exécution, qui s'assure que les deux programmes s'exécutent correctement, qui se trouvait dans une "chambre forte" protégée de tout environnement (radiation, ionisation etc). Au final cela revenait moins cher de mettre seulement ce dernier élément en confinement, et laisser les processeurs/microcontroleurs subir les attaques de l'environnement plutôt que créer une brique complète qui protège l'ensemble du système. (je ne sais plus trop si les programmes s'autocontrôlaient ou si cela était fait en extérieur — l'idée étant là, on peut imaginer les deux)
[^] # Re: Attaques hardware
Posté par chimrod (site web personnel) . En réponse à la dépêche La voiture allergique à la glace à la vanille, et autres bugs. Évalué à 6.
J'avais un jour assisté à une conférence sur ces questions de sureté de code. Dans un environnement "hostile" (je ne sais plus trop le contexte : nucléaire, ou ce genre de truc), une solution avait été de compiler le programme deux fois, avec deux compilateurs différents. Les deux programmes s'exécutaient en parallèle, et des points de contrôles avaient été mis en place dans lesquel chaque programme attendait que l'autre produise le même résultat avant d'embrayer sur la suite.
Comme le source était le même, il était attendu que le résultat soit identique, mais l'utilisation de deux compilateurs faisaient qu'un incident survenant sur l'exécution d'un programme n'avait pas le même impact sur l'autre, ce qui protégeait la solution.
[^] # Re: Thème clair
Posté par chimrod (site web personnel) . En réponse à la dépêche Sortie de Pétrolette 1.3. Évalué à 5.
Pareil, j'utilisais le thème sombre "par défaut" parce que le thème clair ne me correspondait pas. En voyant que le thème avait mis à jour dans la dépêche, je me suis empressé d'aller modifier ça dans l'appli, et c'est beaucoup mieux comme ça !
Merci !
# Pareil
Posté par chimrod (site web personnel) . En réponse au journal Ma redécouverte de GPG. Évalué à 3.
J'ai redécouvert récemment GPG, également via la protection des mots de passes. Jusqu'alors, j'avais la vision de GPG un peu réductrice d'être associé aux courriels, avec des contraintes que j'imaginais un peu lourdes (le process de création d'une clef est "sérieux" quand on veut juste tester sans aller plus loin).
J'ai sauté le pas il y a un an, en m'achetant une clef GPG (une version "non sécurisée" qui n'est pas basée sur carte à puce). Cela me permet de versionner mes mots de passe sans risque dans git (et donc de sécuriser une perte), ou d'y avoir accès sans avoir à diffuser ma clef GPG (le token est suffisant).
Comble du bonheur, il est également possible d'utiliser la clef GPG pour ssh, ce qui évite d'avoir à multiplier les clefs autorisées !
[^] # Re: xdg-open?
Posté par chimrod (site web personnel) . En réponse au message Où est mon terminal ?. Évalué à 2.
Super merci du lien !
J'aime beaucoup ce genre de cheminement, qui part d'un problème complètement anodin, et fini vers une chaine d'erreur touchant plusieurs librairies…
Par contre, il faut savoir naviguer entre les différents projets pour identifier les anomalies, ce qui n'est pas simple du tout.
[^] # Re: xdg-open?
Posté par chimrod (site web personnel) . En réponse au message Où est mon terminal ?. Évalué à 2.
Bien essayé mais non :) Je suis à mi-chemin entre la version stable et la version testing (prochaine version stable) pour certains paquets.
Quand je regarde le patch et les changements apportés, j'ai l'impression qu'il ne gère pas toutes les branches et qu'il reste encore des appels au code de la GLib. Peut-être que je tombe dans l'un de ces cas là. (mais mes connaissances ne me permettent pas d'aller plus loin). Afin d'être sûr, j'ai installé hier le paquet "xfce4-terminal", qui se trouve en amont dans la liste des terminaux testés par la GLib, et c'est bien celui là qui s'est lancé quand j'ai voulu éditer mon fichier (je trouve ça un peu archaïque de coder en dur les applications dans une librairies, mais bon, c'est pas le sujet…)
Au moins j'ai l'explication désormais, même si le fonctionnement n'est pas normal, le fait de savoir d'où vient le problème est déjà quelque chose de rassurant (les bugs ça existe et c'est normal, ça m'inquiète davantage de ne pas comprendre pourquoi le système ne fonctionne pas comme attendu).
J'ai ouvert un rapport d'incident chez Debian, à suivre !
[^] # Re: xdg-open?
Posté par chimrod (site web personnel) . En réponse au message Où est mon terminal ?. Évalué à 2.
Bon, j'ai l'impression de voyager dans le temps…
J'ai trouvé un ticket qui correspond à mon problème mais qui aurait été clos en 2018 ! Il faut maintenant comprendre pourquoi j'ai encore le problème sur mon PC !
[^] # Re: xdg-open?
Posté par chimrod (site web personnel) . En réponse au message Où est mon terminal ?. Évalué à 2.
Bon, je pense avoir trouvé la source de mon problème : la Glib utilise une liste de terminaux dans une liste pré-définie en dur dans le code :
https://github.com/GNOME/glib/blob/master/gio/gdesktopappinfo.c#L2581
Par contre, je n'ai aucune idée de savoir comment contourner ce problème, ni même a qui le remonter !
[^] # Re: xdg-open?
Posté par chimrod (site web personnel) . En réponse au message Où est mon terminal ?. Évalué à 2.
Malheureusement, il n'est pas pris en compte quand je fais ça depuis mon navigateur de fichier, et c'est bien là mon malheur.
Je vais tester avec autre chose que pcmanfm-qt. Le problème vient peut-être de là…
[^] # Re: xdg-open?
Posté par chimrod (site web personnel) . En réponse au message Où est mon terminal ?. Évalué à 2.
J'utilise i3 comme WM, avec lxqt comme bureau (réduit presque au minimum). Mais plus je suis en train de chercher, plus j'ai l'impression que le problème vient du navigateur de fichier — où d'un composant dans la chaîne qui aurait stocké une liste de terminaux qques part, sauf que j'arrive pas à mettre la main dessus, et ça m'énerve ! :)
[^] # Re: xdg-open?
Posté par chimrod (site web personnel) . En réponse au message Où est mon terminal ?. Évalué à 2. Dernière modification le 09 avril 2021 à 13:24.
Bonjour,
Merci pour ton retour, je suis sous debian.
Le comportement avec xdg-open diffère :
Par contre je ne sais pas ce que lance le gestionnaire de fichier au moment où je clique sur l'icone de mon fichier…
J'ai essayé de lire le code de xdg-open pour voir comment était traité le cas du
Terminal=true
mais n'ai pas réussi à trouver où cela était géré.[^] # Re: Meta analyse
Posté par chimrod (site web personnel) . En réponse au journal Bannissement d'un utilisateur et évolution de la modération. Évalué à 5.
Je me souviens de ton journal ! À l'époque je ne connaissais pas Graphviz, j'ai vraiment pris en claque en voyant ce que l'on peut faire avec. Pas loin de 15ans après, ça fait toujours parti des outils que j'installe sur les PCs qui me passent sous la main.
Quand j'y repense, je crois que LinuxFr m'a vraiment accompagné dans mes explorations !
[^] # Re: C'est pas faux
Posté par chimrod (site web personnel) . En réponse au journal C'est foutu pour LibreOffice. Évalué à 6.
L'éditeur fait ce qu'il veut de son code : il peut décider de limiter le nombre de mot dans une page, ou colorer en bleu chaque fois que l'on écrit « Maison » dans le texte. Il fait ce qu'il veut et tu n'as rien à dire. La demande (idéale) d'offrir un service sans limitation n'est pas une obligation de la GPL.
À la base, la GPL indique juste que : si tu as reçu une version du logiciel, il doit être accompagné par le code source, et avec les 4 libertés qui l'accompagne (le si est important, dans la GPL tu n'es même pas tenu de donner de code source aux personnes qui n'ont pas le logiciel).
Par contre, après tu peux faire ce que tu veux du logiciel, l'éditeur ne peut pas t'empêcher de l'utiliser pour promouvoir ton association de défense des clowns, ou n'importe quoi d'autre. Tu peux même modifier le logo de logiciel, et le revendre en se faisant des sous dans son dos (allons même plus loin, tu peux continuer de remonter les bugs à l'éditeur dans cette situation… et il est en droit de ne pas les corriger !)
Là où la GPL est vertueuse, c'est que si quelqu'un décide de proposer le même produit sans les limitations (il le peut), il risque de détrôner l'éditeur initial, du coup, ces limitations sont souvent absentes des logiciels que l'on utilise. C'est par contre différent dans le cas des services : puisqu'il faut ajouter des coûts d'infrastructure/maintenance cela change un peu l'équilibre.
Mais dans tous les ca :
Et pour finir, voilà l'article 11 de la GPL (fsf france)
[^] # Re: C'est pas faux
Posté par chimrod (site web personnel) . En réponse au journal C'est foutu pour LibreOffice. Évalué à 4.
Salut,
Je vais faire mon Zenitram sur ce coup là : tu te trompes sur ce qu'est le logiciel libre. La licence te donne le droit de récupérer le code sources, l'utiliser, le modifier, le redistribuer et le tout sans avoir à rendre de compte à l'éditeur.
La licence AGPL ne change rien à ça, puisqu'elle applique ces même droits dans le cadre de l'utilisation d'un service basé sur ce logiciel (avec la GPL pure, l'éditeur aurait pu garder le code source pour lui).
Si la limite de 20 utilisateurs ne te conviens pas, tu peux modifier le programme et ouvrir le service à d'autres utilisateurs — voire même te faire payer pour ça — sans avoir à rendre de compte à personne.
[^] # Re: À décomposer
Posté par chimrod (site web personnel) . En réponse au message Suppression d'un fichier raw si et seulement si le fichier jpg de même préfixe existe. Évalué à 2.
Ah j'ai inversé, j'ai cru que tu voulais supprimer les jpeg dont tu possédais les fichiers raw :) (ce qui correspondrait à ma manière de gérer mes fichiers)
Il suffit d'inverser dans la commandes pour avoir le bon comportement !
# À décomposer
Posté par chimrod (site web personnel) . En réponse au message Suppression d'un fichier raw si et seulement si le fichier jpg de même préfixe existe. Évalué à 2.
Je verrai trois étapes différentes, la première consiste à rechercher récursivement tous les fichiers raw qui se trouvent dans le répertoire :
find . -name '*.raw' -print
La seconde, consiste à remplacer le
print
qui affiche actuellement le fichier trouvé, et en mettant la place le fichier que l'on cherche :echo 'fichier.raw' | sed -e 's/raw/jpg/'
il ne reste plus qu'à assembler les deux ensemble
find . -name '*.raw' -exec echo {} \; | sed -e 's/raw/jpg/'
Après il ne reste plus qu'a supprimer les éléments de la liste… que je mettrai dans une boucle (mais il y a peut être plus performant ?)
[^] # Re: Bling
Posté par chimrod (site web personnel) . En réponse au journal Flus : bilan d’un an d’activité. Évalué à 3. Dernière modification le 04 février 2021 à 16:41.
Putain tu me fais culpabiliser du coup…
En plus j'avais souscrit initialement à librepay et tu faisais partie de dons que j'avais planifiés. Je crois que la rupture a eu lieu au moment où librepay a requis de créditer en avance son compte avant de faire la distribution.
T'as un moyen simple pour qu'on puisse te soutenir ?
[^] # Re: Merci à toi
Posté par chimrod (site web personnel) . En réponse au journal Flus : bilan d’un an d’activité. Évalué à 4.
Je suis content que mon commentaire ait fait mouche :) Je suis intéressé par ton journal sur la question technique également !
Dans ton journal tu ne parles pas du coût de l'hébergement (le dernier bilan de Wallabag évoque un peu moins de 200€ par mois, c'est également ton cas ?)
# Merci à toi
Posté par chimrod (site web personnel) . En réponse au journal Flus : bilan d’un an d’activité. Évalué à 10.
De mon côté, je fais partie des abonnés du second pic, et ton projet m'a également donné envie de produire ma propre application. J'en profite donc pour répondre avec ces deux éléments.
D'abord, je dois dire que ton code est vraiment clair, et c'est intéressant de pouvoir naviguer entre l'application et son source (c'est une chose que je n'avais jamais vraiment fait dans le détail auparavant, là je suis vraiment allé approfondir). La première chose qui me saute aux yeux, est le fait que l'appli est finalement "simple".
Quand on veut se lancer dans une application de manière autonome (sans avoir une équipe avec qui échanger), c'est important de garder juste à l'esprit son objectif, sans chercher à aller trop loin. Je prend en exemple ton code concernant le montant à payer :
Le montant est "codé en dur" mais ça fonctionne : pas besoin de monter une table en base de données qui va référencer les montants à payer, autant se concentrer sur l'essentiel et revenir plus tard sur cette partie si on le souhaite. De mon côté, j'ai plutôt tendance à chercher quelque chose de complet dès le début, et au final j'en arrive à me perdre parce que je me suis épuisé dans quelque chose qui est essentiel certes, mais qui aurait pu être simplifié.
Autre exemple avec le temps de lecture des articles :
Inutile de sortir une intelligence artificielle qui va analyser le texte, juste une division suffit pour avoir quelque chose qui fonctionne la plupart du temps (bon, ça ne marche pas quand le lien est une vidéo ou un audio…)
Bref, je trouve que l'application est un bon exemple pour obtenir un résultat en allant à l'essentiel, et sans se perdre en chemin. Au final, on a toujours l'impression de voir des exemples qui expliquent comment arriver au résultat parfait, mais qui n'expliquent pas le cheminement qui conduit à ce résultat (c'est un tout autre sujet qui déborde complètement de ce journal on est d'accord), et ton application "simple" mais qui fonctionne permet aussi d'avoir un modèle pour garder à l'esprit ce que l'on veut sans se perdre !
Donc je ne regrette pas d'avoir pris mon abonnement : même si je n'utilise pas l'appli régulièrement, cela m'a permis de me plonger dans ton code, en faire une petite analyse pour regarder comment tu as répondu aux problèmes que je me serai posé dans la même situation !
# Un pi zero ?
Posté par chimrod (site web personnel) . En réponse au message Caméra IP qui fonctionne en réseau local / sans Internet. Évalué à 6.
Tu prend un raspberry pi zero, tu y branches ta caméra, et tu mets le tout dans un boitier. Tu es maitre de ce que tu installes sur le système , vpn etc
Ça rentre dans ton budget !
[^] # Re: Frais de ports exhorbitants
Posté par chimrod (site web personnel) . En réponse au message clavier bépo typematrix 2030 USB. Évalué à 3.
Oh oui je suis preneur !
Peux-tu me contacter à yfxtgg8mdhbrd5p@jetable.org ?
Merci !
# Frais de ports exhorbitants
Posté par chimrod (site web personnel) . En réponse au message clavier bépo typematrix 2030 USB. Évalué à 2.
De mon côté, il me faut me racheter des skins. Par contre, les frais de ports vers la France ont explosé ! En 2012, j'avais payé ±15€, là c'est minimum 50€ ! Je trouve ça vraiment excessif. J'avais essayé de les contacter par leur formulaire pour demander des infos mais n'ai jamais eu de retour…
Enfin tout ça pour dire que je suis partant, si on peut mutualiser ça je prend !
# Est-ce que tu as changé de clavier ?
Posté par chimrod (site web personnel) . En réponse au journal Ça y est!! Je suis passé au bépo…. Évalué à 3.
De mon côté, cela m'a beaucoup aidé de changer le layout en même temps que le clavier. Un peu comme le fait de repartir sur quelquechose de neuf où j'étais sûr de ne pas reprendre mes anciens réflexes.
Au début j'ai eu l'impression de bégayer, et c'est vraiment quelque chose de déroutant cette barrière qui s'érige entre ce que l'on veut dire (ici écrire), et le geste qui accompagne la pensée. On a l'impression d'être sans cesse en train de se heurter à quelque chose qui ne veut pas nous laisser libre. (Je ne sais pas si ça porte un nom d'ailleurs…)
En tout cas bienvenue, et profite, avec le temps cela fini par venir tout seul !
# Écrit à la va-vite
Posté par chimrod (site web personnel) . En réponse au lien Whatsapp reporte la mise à jour de sa politique de confidentialité. Évalué à 4.
Avec la faute dans le texte :
Ça donne l'impression d'un texte sorti dans l'urgence. Il y a le feu au lac on dirait…