Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 07/10/2017, à 17:01

Bigcake

Updates-warner : Pour être alerté d'une modification de ressource web

Bonjour,

Je vous présente aujourd'hui un de mes projets perso :

                       Image logo   Updates-warner

C'est un logiciel libre (GPL3) écrit en C d'environ 9250 lignes de codes (environ 3 mois de dev, sur mon temps libre)
Ce projet est né suite à un besoin que j'ai de suivre certains projets pour des questions personnels et/ou professionnels, la première esquisse était un script shell que je lançais manuellement tous les jours.
Par flemme, j'ai donc créer ce logiciel qui est beaucoup plus beau, pratique et multi-tâches !
Et j'ai décider de vous le partager, j'espère que vous le trouverez tout aussi pratique que moi !

Site web du projet (le site est tout neuf et encore en cours de construction, donc un peu d'indulgence ...)

C'est un logiciel qui permet d'être alerté sur la mise à jour d'une ressource web publique, par exemple :
- Être alerté sur la sortie d'un nouvelle vidéo d'une chaine youtube (pas de compte requis)
- Être alerté sur la nouvelle version d'une lib de développement (pratique pour mettre à jour en cas de problème de sécurité)
- Être alerté heure par heure de l'avancée de votre crowdfunding préféré (certains sauront de quoi je parle wink)
- Être alerté de la sortie d'une nouvelle version d'un logiciel ou d'un jeu dont votre distribution n'a pas intégré cette dernière version
- Etc...
Attention, que l'on soit claire, ce n'est pas du temps réel, la mise à jour la plus rapide est fixé à 60 minutes, mais 24h me paraît être globalement plus adapté à la plupart des situations, mettre un temps plus court serai clairement du gâchis de bande passante

Screenshot de l'interface graphique

Quelques petites fonctionnalités du logiciel :
- Il permet d'être toujours au 1er plan ou en arrière-plan sur le bureau
- Si l’icône du systray est activée, le logiciel peux être caché/affiché avec un clique gauche
- Si l’icône du systray est activée, l’icône change et clignote en fonction de l'alerte
- Il permet de lancer rapidement l'application concernée avec un clique droit
- Il permet d'accéder rapidement au site web avec un clique droit
- Il permet de rafraîchir le numéro de version locale ou officielle rapidement avec un clique droit
- La couleur et l'opacité du fond peut être choisit pour être plus raccord avec votre thème
- Prise en charge d'un fichier de langage (actuellement, le logiciel est en anglais et en français sans fichier externe)
- Comparaison de la version officielle avec la version locale (manuel ou automatiquement récupérée)
- Mon logiciel a son propre user-agent : 'Updates-warner' ce qui permet aux sites web de fournir un contenu adapté si jamais mon logiciel rencontre un succès phénoménale (Hé ! Chut ! Pas de remarques désagréables ! Laissez moi rêver !)

Ce qu'il faut savoir pour créer un "watcher" (ce qui va régulièrement récupérer la version officielle) :
- J'ai fait un page de man, y a tout ce qu'il faut savoir là dedans ! : man updates-warner
- La récupération de la version officielle se fait, globalement, avec les pages web qui sont analysés
- L'interface graphique est bourrée de tooltips pour vous aider à mieux comprendre la fonctionnalité
- Pour configurer un "watcher", il faut donc mettre les mains dans le HTML et regarder quel élément peut être utilisé pour en sous-tirer la version qui sera modifié à chaque mise à jours.
Ce qui reste assez intuitif si vous avez l'habitude de 'grep' et 'cut'
- Un fichier de configuration par défaut est proposé (si vous prenez le code source, sinon il faudra récupérer le fichier d'exemples), vous pourrez voir comment faire un watcher manuellement dans ce fichier ou alors dans l'interface graphique
- Les images à utiliser doivent faire 26x26 pixels, sinon le rendu sera complétement foireux
- Les pages HTML téléchargés sont sauvegardées dans le dossier de cache (par défaut ~/.cache/updates-warner/)

Screenshot de la fenêtre de création d'un watcher

N'hésitez pas à me contacter pour d'éventuelles :
- idées, bugs, ou choses à améliorer (faitent un tour dans la partie "Ajout futurs" avant wink)
- Proposition de fichier de langue autres que français, anglais (un fichier d'exemple english.lang, est fournit dans l'archive tar.gz)
- erreurs de compilation, d'installation
- erreurs d'orthographe (anglais ou français d'ailleurs)

Dernière modification par Bigcake (Le 14/02/2018, à 20:08)


"Les gens" ne sont pas cons, ils ont été habitués à la facilité et à la désinformation. Le meilleur moyen de ne pas les aider, c'est de se moquer. Le meilleur moyen de les aider, c'est de les informer, encore et encore. La réflexion viendra. N'oubliez pas que vous aussi, vous êtes le con d'un autre.
Smartphone+GNU/Linux=Librem5

Hors ligne

#2 Le 07/10/2017, à 17:20

Bigcake

Re : Updates-warner : Pour être alerté d'une modification de ressource web

...

Dernière modification par Bigcake (Le 08/10/2017, à 16:32)


"Les gens" ne sont pas cons, ils ont été habitués à la facilité et à la désinformation. Le meilleur moyen de ne pas les aider, c'est de se moquer. Le meilleur moyen de les aider, c'est de les informer, encore et encore. La réflexion viendra. N'oubliez pas que vous aussi, vous êtes le con d'un autre.
Smartphone+GNU/Linux=Librem5

Hors ligne

#3 Le 07/10/2017, à 22:38

moths-art

Re : Updates-warner : Pour être alerté d'une modification de ressource web

Alors, j'aime beaucoup, mais beaucoup l'idée !
C'est typiquement le truc que j'ai déjà pensé 100 fois sans jamais me lancer...
Les fonctionnalités ont été pensées pour être visibles dans le systray : sympa!

Pour les questions, améliorations, à froid (pas encore testé ni lu le code source) :
- y'a-t-il un dépôt git associé ?
- interface en curl pour les vrais barbus dont je fais parti ?!
- est-ce possible d'utiliser une règle css ou du xpath pour faire un watcher ?
- tu fais du web scrapping en gros : pourquoi ne pas avoir produit des extensions à weboob (ou projet similaire) plutôt que faire le projet de zéro.
- penses-tu mettre une api à dispo (le c devrait bien s'y prêter) :
j'aimerais par exemple me créer des déclencheurs (mais dans un autre langage) :
* m'envoyer un sms via l'api de free (je me suis déjà fait un code en Rust pour des trucs du genre)
* envoyer des mails
* alimenter la base de donnée d'un soft interne
- tu parles de fournir un contenu adapté au serveur reconnaissant le "user agent" :
1. tu peux expliquer qu'est-ce que tu entends par adapté ?
2. les sites qui veulent vraiment communiquer des sorties, peuvent le faire à partir du rss : un format réfléchit entre autre pour ça... même si j'aimerais que des vrais initiatives en websockets (ou http2) commencent à émerger : plus besoin d'envoyer une requète tous les n minutes/heures pour voir si le contenu à changer : tu te connectes à un channel et c'est le serveur qui t'informes quand y'a un changement !

-l'i18n utilise gettext ?

Hors ligne

#4 Le 07/10/2017, à 23:14

Bigcake

Re : Updates-warner : Pour être alerté d'une modification de ressource web

moths-art a écrit :

- y'a-t-il un dépôt git associé ?

Non, et il y en aura probablement pas avant un moment

moths-art a écrit :

- interface en curl pour les vrais barbus dont je fais parti ?!

J'ai pas compris la question... interface pour faire quoi ? vers quoi ?

moths-art a écrit :

- est-ce possible d'utiliser une règle css ou du xpath pour faire un watcher ?

La création d'un watcher peut se faire via l'interface graphique, ou avec un éditeur de texte, il suffit d'ajouter dans le fichier de configuration un bloc du type

[Emacs]
optionnal yes
icon /home/user/.cache/updates-warner/img/emacs26.png
exec /usr/bin/emacs
arg --version
local_word 3
url www.gnu.org/software/emacs
official_line_contains 'latest release'
official_cut_with ' '
official_cut_pos 2
official_timer 10080

Il y a plusieurs écritures possible pour faire la même chose, voici un 2eme exemple :

[Emacs]
optionnal    = 1
icon         = /home/user/.cache/updates-warner/img/emacs26.png
exec         = /usr/bin/emacs
arg          = --version
local_word   = 3
url          = www.gnu.org/software/emacs
official_line_contains  : 'latest release'
official_cut_with       : ' '
official_cut_pos        : 2
official_timer          : 10080

Le man et le fichier de configuration d'exemple contiennent une explication sur la façon de créer un watcher

moths-art a écrit :

- tu fais du web scrapping en gros : pourquoi ne pas avoir produit des extensions à weboob (ou projet similaire) plutôt que faire le projet de zéro.

Parce que je ne connais pas, et à ce que je vois c'est du python, dont j'ai des petits problèmes d'allergies (oui oui, d'horribles boursouflures et plaques rouges partout)
Et puis bon, le code du parsing du fichier téléchargé à pas due me prendre plus de 3 soirées: j'aurais perdu plus de temps à chercher et à adapter mon code à d'autres solutions existantes (qui auront probablement utilisé plus de CPU et de mémoire que ce que j'ai fait qui est parfaitement adapté à mon besoin)

moths-art a écrit :

- penses-tu mettre une api à dispo (le c devrait bien s'y prêter)

Un API pour faire quoi ? des extensions ? j'ai émis une petite idée dans ce sens, où par exemple, on pourrai créer un template "youtube", il suffirai juste de fournir le nom du template et le nom de la chaine du youtubeur pour créer le watcher
Au niveau GUI, ce serai beaucoup plus user-friendly que ce que j'ai actuellement.

moths-art a écrit :

j'aimerais par exemple me créer des déclencheurs (mais dans un autre langage)
[...]

Pas une mauvaise idée, ça je prend note ;-)
Lors de l'analyse de la version, je pourrai imaginer le lancement d'une commande avec argument (donc un script, du python, ou autre exécutable) si la version à changé

moths-art a écrit :

- tu parles de fournir un contenu adapté au serveur reconnaissant le "user agent" :

C'est mon logiciel qui envoi un user-agent, le serveur peut le récupérer et s'en servir pour renvoyer juste la version du logiciel (quelques octets) plutôt que toute une page web complète (plusieurs kilo-octets, voire méga-octets pour certains)

moths-art a écrit :

-l'i18n utilise gettext ?

J'ai ma propre technique (assez basique), mais je ne connaissais pas gettext, je vais regarder ça de plus près wink

Dernière modification par Bigcake (Le 08/10/2017, à 00:19)


"Les gens" ne sont pas cons, ils ont été habitués à la facilité et à la désinformation. Le meilleur moyen de ne pas les aider, c'est de se moquer. Le meilleur moyen de les aider, c'est de les informer, encore et encore. La réflexion viendra. N'oubliez pas que vous aussi, vous êtes le con d'un autre.
Smartphone+GNU/Linux=Librem5

Hors ligne

#5 Le 08/10/2017, à 09:46

moths-art

Re : Updates-warner : Pour être alerté d'une modification de ressource web

1. C'est dommage pour GIT : un compte github/gitlab etc est si facile à créer et entretenir et derrière t'as une gestion de tickets, un wiki à dispo etc.
2. interface en curl : je parlais en réalité de curses (ou termbox) => la possibilité d'avoir une gui dans un shell.
Ca peut être pratique si l'on utilise ton soft sur un serveur accessible en ssh par exemple.
3. Pour weboob, c'était pas une question piège : j'ai déjà parcouru le code, lu une bonne partie de doc, chatté sur leur channel IRC etc.
Niveau scraping, ils ont vraiment un truc costaux :
par exemple, je lis mes comptes bancaires avec et le soft fait l'authentification, l'accès aux données et le reformatage automatiquement. (tu peux par exemples lire l'historique de comptes sur des banques différentes à partir de la même interface, faire des virements sans jamais lancer un navigateur etc.)
Ils ont même créé un genre d'OCR pour les saisies passant par des images. (le site de la caf, free mobile fait ce genre de chose)
En 2013 (quand je me suis vraiment intéressé à leur projet) c'était dans les cartons de tout réécrire en C... le python étant plus un proof of concept.
4 ans plus tard, ça n'a toujours pas été fait. (et je pense savoir pourquoi : les libs python sont vraiment incroyables pour faire ce genre de choses)
Je dirais que c'est toujours bien, si tu fais ton propre soft, de connaitre ce qui existe et en quoi tu te démarques.
5. Je ne suis pas un pro-python : j'en ai fait beaucoup donc je suis à l'aise avec, y'a énormément de softs libres dans cette techno pour pleins de raisons.
J'en fait encore pas mal par la force des choses mais je dev principalement C sharp + javascript (beurk) au boulot et milite pour Rust (la rapidité du C sans tous ces inconvénients) en dehors.
6. Renseignes toi bien sur Gettext : c'est juste le dénominateur commun quand tu fais de l'i18n sous linux (à part QT qui a fait sa sauce dans son coin).
Le gros avantage, c'est que ça permet de centraliser toute la partie i18n et de s'interfacer avec des softs dédiés à ça (poedit, outils en ligne) et donc accessible à des non-dev, d'obtenir des stats sur les traduction : genre, 50% du soft traduit en espagnol, 100% en français etc.

Hors ligne

#6 Le 08/10/2017, à 12:08

moths-art

Re : Updates-warner : Pour être alerté d'une modification de ressource web

Sinon, ton idée de user-agent est pas mauvaise mais ça n'est valable que pour ceux qui ont un contrôle sur leur serveur (par exemple : pas mon cas, j'ai un site statique que j'envoi sur github : http://mothsart.github.io/).
Je compléterais donc ton idée par une normalisation d'un tag HTML qui renvoi une URL.
Exemple : <link type="application/update-warner" title="Updates-warner 1.0" href="./version.txt"> dans le <head>

C'est ce qui est fait pour le RSS : tu donnes une url quelconque d'un site à une lecteur de flux RSS et il en déduit ou il doit chercher à partir de cette balise.

Sinon, tu parles de vérifier une page toute les minutes.
C'est bien mais mes besoins seraient souvent l'inverse : m'alerter à tel date si ça a bougé.

Tu veux un exemple : je suis un peu le projet Purism (https://puri.sm/shop/librem-5/) : j'aimerais par exemple, être averti 24 heure avant la fin de leur campagne de financement si l’objectif est atteint ou non.

Hors ligne

#7 Le 08/10/2017, à 16:24

Bigcake

Re : Updates-warner : Pour être alerté d'une modification de ressource web

Oula, tu commence à partir bcp trop loin pour moi, ce que tu propose avec le tag html provoquerai l'utilisation de plus de bande passante (coté serveur et client), et de plus de CPU du coté de mon logiciel (oui j'aime pas gâcher les ressources, c'est pour ça d'ailleurs que je fait du C)
Pour l'agent-user, ce n'est pas "mon idée", la casi totalité des outils qui ont un comportement de communication avec les serveurs web ont leur propre 'user-agent', par exemple le google bot, a son propre user agent.
J'ai pu constater avec mon serveur web que divers outils d'analyse se connecte sur mon serveur avec aussi leur propre user-agent.

Par contre en écrivant ça et en réfléchissant à ce tu a dit, le google bot tente en générale d'accéder à /robot.txt
Peut-être devrai-je tenter d’accéder à /version.txt mais ça me paraît un peu overkill de faire ça actuellement.

Et dans le principe de fonctionnement, je suis pas fan: pour moi le but, c'est de configurer son watcher pour ne faire qu'une seule requête et donc ne télécharger qu'une seule ressource (plus c'est petit, mieux c'est) qui sera analysée ensuite.
Si un site web se fait un jour flooder par l'user-agent 'Updates-warner', il pourra bloquer mon user-agent et faire une com' en disant: "on a mis un /version.txt merci de régler vos watcher dessus"

moths-art a écrit :

C'est bien mais mes besoins seraient souvent l'inverse : m'alerter à tel date si ça a bougé.

Tu veux un exemple : je suis un peu le projet Purism (https://puri.sm/shop/librem-5/) : j'aimerais par exemple, être averti 24 heure avant la fin de leur campagne de financement si l’objectif est atteint ou non.

ah, j'ai déjà eu l'idée de ça (c'est dans la liste "des ajout futurs"): faire une mise à jour par rapport à un timer du style crontab, et figure toi que cette idée m'est aussi venu en pensant au crowdfunding de purism big_smile (j'ai un watcher actif qui me tiens au jus toute les heures big_smile)

moths-art a écrit :

2. interface en curl : je parlais en réalité de curses (ou termbox) => la possibilité d'avoir une gui dans un shell.

Mmmm je ne voit pas trop l'intérêt d'avoir une GUI en shell pour ce type de logiciel, à la rigueur, ce qui me parait beaucoup plus utile, serai l'absence d'interface graphique avec un fichier de log et/ou l'affichage des alertes dans le terminal (en gros, ce que j'avais avec mon script shell), qui irai bien avec la fonctionnalité que tu a proposé (l'action à effectuer lorsqu'une nouvelle version est détectée)

Dernière modification par Bigcake (Le 09/10/2017, à 10:53)


"Les gens" ne sont pas cons, ils ont été habitués à la facilité et à la désinformation. Le meilleur moyen de ne pas les aider, c'est de se moquer. Le meilleur moyen de les aider, c'est de les informer, encore et encore. La réflexion viendra. N'oubliez pas que vous aussi, vous êtes le con d'un autre.
Smartphone+GNU/Linux=Librem5

Hors ligne

#8 Le 08/10/2017, à 16:33

Bigcake

Re : Updates-warner : Pour être alerté d'une modification de ressource web

Sinon coté compilation / installation tout s'est bien passé ? tu a pu tester ?


"Les gens" ne sont pas cons, ils ont été habitués à la facilité et à la désinformation. Le meilleur moyen de ne pas les aider, c'est de se moquer. Le meilleur moyen de les aider, c'est de les informer, encore et encore. La réflexion viendra. N'oubliez pas que vous aussi, vous êtes le con d'un autre.
Smartphone+GNU/Linux=Librem5

Hors ligne

#9 Le 08/10/2017, à 17:55

Bigcake

Re : Updates-warner : Pour être alerté d'une modification de ressource web

Bon, c'est la loose, je viens de trouver un bug bien pourri : on peut pas supprimer un watcher via l'interface graphique...
La version 1.1 est en sortie...

Autre bug trouvé : lors de la modification d'un watcher via l'interface graphique, certaines modifs peuvent bloquer totalement le logiciel => killall updates-warner

Dernière modification par Bigcake (Le 09/10/2017, à 10:55)


"Les gens" ne sont pas cons, ils ont été habitués à la facilité et à la désinformation. Le meilleur moyen de ne pas les aider, c'est de se moquer. Le meilleur moyen de les aider, c'est de les informer, encore et encore. La réflexion viendra. N'oubliez pas que vous aussi, vous êtes le con d'un autre.
Smartphone+GNU/Linux=Librem5

Hors ligne

#10 Le 09/10/2017, à 17:00

moths-art

Re : Updates-warner : Pour être alerté d'une modification de ressource web

J'ai effectivement installé ton soft et attendu un peu de le manipuler avant d'en faire un retour suffisament pertinent.
Comme ça, j'ai pas rencontré de difficulté à l'installer et à l'utiliser : c'est assez intuitif.

A part peut-être sur le côté manuel/auto : au départ, je comprenais pas que certaines lib paraissaient à jour alors que je savais pertinement qu'elles n'y étaient pas.

J'aime bien le côté personnalisation et minimalisme.

Il manque peut-être une option du genre : n'afficher que les watchers qui ne sont pas à jour.

Pour revenir sur l'api : l'idée est d'utiliser ton soft comme une lib.
Par exemple, quelqu'un veut créer une extension libreoffice ou thunderbird qui utilise ton soft :
il peut mettre sa propre GUI devant ta lib.
Bref, ça permet de mettre à dispo des évolutions intéressantes que tu n'avais pas envisagés et que tu n'as pas forcément envie d'assumer.

Pour les déclencheurs, j'imagine que ça se configuerais comme ton raccourci de lancement du soft ? (un champ pour l'executable et le 2ème pour les arguments)

Pour l'histoire du "user-agent", y'a rien d'urgent et je pense que tu m'as mal compris.
L'idée c'est justement de réduire la bande passante :

Je m'explique, quand tu récup une version, t'es obligé de charger une page complète et de rechercher via un motif grosso modo.
L'idée serait de tester juste avant la recherche via motif si une balise existe (ça coûte nada en ressource ça).
Si oui, ça veut dire que l'info est stocké et optimisé à une URL précise (renseigné par une balise href) et que la prochaine fois (la maj dans les 24 heures suivante) ton soft ira regarder à cet endroit directement.
Bien évidement, ça veut dire stockage de cette info.
Sinon, j'ai jamais dit qu'attribuer un user agent était mauvais : ça sert déjà rien qu'aux stats du site.

Hors ligne

#11 Le 10/10/2017, à 18:01

Bigcake

Re : Updates-warner : Pour être alerté d'une modification de ressource web

moths-art a écrit :

Il manque peut-être une option du genre : n'afficher que les watchers qui ne sont pas à jour.

J'aime bien l'idée, mais elle viens avec plein d'interrogations comportementales à résoudre (par exemple, un parmis plusieurs, qu'est-ce que j'affiche quand tout est à jour ? cacher l'interface ? icone "tout est à jour" ?)
Je note, j'y réfléchirai si je décide de mettre en place.

moths-art a écrit :

Pour revenir sur l'api : l'idée est d'utiliser ton soft comme une lib. [..]

D'accord, je comprend mieux ton idée, par contre, l'architecture logicielle que j'ai appliqué est absolument pas prévu pour être transformé en lib (de webscraping finalement...)

moths-art a écrit :

Pour les déclencheurs, j'imagine que ça se configuerais comme ton raccourci de lancement du soft ? (un champ pour l'executable et le 2ème pour les arguments)

Oui, a peu près, pas encore sur à 100%, je prévois aussi une option permettant, ou non, de fournir en arguments les 2 versions

moths-art a écrit :

Je m'explique, quand tu récup une version, [...]

Ce qui me pose problème, c'est que ça réduit la bande passante pour 'updates-warner', mais ça l'augmente pour tout le reste: firefox, chrome, IE, opéra, etc ...


En tout cas merci pour tes retours wink


"Les gens" ne sont pas cons, ils ont été habitués à la facilité et à la désinformation. Le meilleur moyen de ne pas les aider, c'est de se moquer. Le meilleur moyen de les aider, c'est de les informer, encore et encore. La réflexion viendra. N'oubliez pas que vous aussi, vous êtes le con d'un autre.
Smartphone+GNU/Linux=Librem5

Hors ligne

#12 Le 10/10/2017, à 18:31

moths-art

Re : Updates-warner : Pour être alerté d'une modification de ressource web

Pour l'API, je pensais à quelque chose de plus large qu'une api de webscraping car là, clairement tu fais pas le poids avec d'autres lib.

Maintenant, c'est vraiment pas essentiel donc je m'étendrais pas dessus... oubli pour l'instant cette fonctionnalité.

Pour l'histoire de "user agent", si tu normalises (c'est un grand mot) une ressource (url) contenant uniquement le numéro de version, tu pourrais améliorer la bande passante en utilisant la méthode HTTP HEAD.

L'augmentation de la bande passante pour les navigateurs avec une pauvre balise <link>, ça me fait quand même rire quand tu vois l'état du web actuel.
Tu vas sur n'importe quel site à peut prêt sérieux et que tu regardes la bande passante utilisé pour une pauvre police, des icones, des tonnes de script javascript inutiles... des appels ajax dans tous les sens, je pense pas que tu fasses souffrir grand monde avec ce petit ajout :

Surtout que si tu considères que les navigateurs mettent le code html dans leur cache.
Bref, une goutte d'eau à mon sens.

Hors ligne

#13 Le 10/10/2017, à 19:40

Bigcake

Re : Updates-warner : Pour être alerté d'une modification de ressource web

moths-art a écrit :

L'augmentation de la bande passante pour les navigateurs avec une pauvre balise <link>, ça me fait quand même rire quand tu vois l'état du web actuel.
Tu vas sur n'importe quel site à peut prêt sérieux et que tu regardes la bande passante utilisé pour une pauvre police, des icones, des tonnes de script javascript inutiles... des appels ajax dans tous les sens, je pense pas que tu fasses souffrir grand monde avec ce petit ajout

C'est bien ça mon problème, tout le monde s'en fout de prendre un octets de plus par requête, mais 1 octets de plus par requêtes, par rapport aux milliards de requêtes, c'est pourrir la bande passante par Go voire To, les gens qui développent leurs sites n'y pensent pas et je pense que la plupart n'en sont même pas conscient

Ça me fait penser à cette vidéo [ANGLAIS] World wide web sucks

Et ce qui est terrible c'est que c'est la même mentalité pour les logiciels de nos jours, combien de fois j'ai entendu : "c'est pas grave les machines sont rapide de nos jours, ça coute rien en CPU" ou "C'est pas grave les machines ont plein de RAM de nos jours".
Le problème, c'est que quand tu garde en tête ces phrases pour tout les mécanismes de ton logiciel , bah.... tu te retrouve avec des logiciels qui sont finalement 20 fois plus lents que ce qu'ils devraient être, qui prennent 3 fois plus de RAM que nécessaire, donc tu te retrouve à devoir prendre des machines de plus en plus puissantes, avec plus de RAM (serpent qui se mord la queue, toussa...).
Sauf que sur de l'embarqué, ça veut dire moins de batterie.

J'ai déjà eu l'occasion de voir un logiciel prendre 76Mo en idle et 131Mo de RAM pendant ses calculs (des chiffres totalement délirant par rapport à ce que fait le logiciel), sachant que les targets pouvaient être des smartphones limité à 192 Mo et qu'on me dise : "on a pas de problème de consommation de mémoire dans notre logiciel".

C'est pas parce que les autres sont irresponsable/déraisonnable/aveugle/jem'enfoutiste, que je vais me déresponsabiliser de la même façon, c'est une goutte d'eau que je n'ai pas envie d'ajouter inutilement.

Dernière modification par Bigcake (Le 12/10/2017, à 00:12)


"Les gens" ne sont pas cons, ils ont été habitués à la facilité et à la désinformation. Le meilleur moyen de ne pas les aider, c'est de se moquer. Le meilleur moyen de les aider, c'est de les informer, encore et encore. La réflexion viendra. N'oubliez pas que vous aussi, vous êtes le con d'un autre.
Smartphone+GNU/Linux=Librem5

Hors ligne

#14 Le 10/10/2017, à 20:53

moths-art

Re : Updates-warner : Pour être alerté d'une modification de ressource web

Je comprend ta logique mais tu peux pas refaire le monde non plus.
Si ceux derrière le serveur s'en foutent royalement, tu pourras pas les contraindre à améliorer...
Perso, ça fait 2 ans dans ma boite qu'on adapte notre web app pour un client très capricieux niveaux ressources et crois moi que quand tu as ce genre de contrainte et que tu cherches les goulots d'étranglements :
1. tu vas de surprise en surprise car c'est rarement là ou tu envisageais des lenteurs que ça se passe réellement
2. que tu règles déjà une tonne de gros trucs avant d'en venir à des détails
3. Que le vrai nerf de la guerre dans le web c'est l'IO : les requètes en base, les accès fichier, les requètes HTTP qui servent à rien.

Hors ligne

#15 Le 12/10/2017, à 20:27

Bigcake

Re : Updates-warner : Pour être alerté d'une modification de ressource web

N'ayant pas envie de partir dans un débat [souvent stérile] sur l'optimisation (sans vouloir t'offenser), je vais me contenter de faire une annonce wink

La version 1.2 est sortie pour régler plusieurs bugs, dont certains vraiment gênant.

Dernière modification par Bigcake (Le 12/10/2017, à 20:31)


"Les gens" ne sont pas cons, ils ont été habitués à la facilité et à la désinformation. Le meilleur moyen de ne pas les aider, c'est de se moquer. Le meilleur moyen de les aider, c'est de les informer, encore et encore. La réflexion viendra. N'oubliez pas que vous aussi, vous êtes le con d'un autre.
Smartphone+GNU/Linux=Librem5

Hors ligne

#16 Le 13/10/2017, à 17:10

moths-art

Re : Updates-warner : Pour être alerté d'une modification de ressource web

Ok, pour le débat. On ne tombera pas dac sans scénarios d'usage de toute façon.

J'ai néanmoins une autre proposition d'optimisation :
une option d'activation du HTTP HEAD sur certains watcher.

Exemple : http://zsh.sourceforge.net/Arc/source.html

Ca n'a pas bougé depuis le 22 Septembre : avec un HTTP GET, tu recharges la page au complète potentiellement toutes les heures alors qu'un HEAD t'indiquerais que ça n'en vaut pas la peine.
Alors, effectivement, dans le cas ou le GET t'indiques que y'a un changement, ça oblige à faire un GET dans la foulée.
C'est pourquoi je propose une option d'activation (idéalement en paramètre "avancé") pour éviter que ça soit utilisé à tord et à travers.

Dernière modification par moths-art (Le 13/10/2017, à 17:13)

Hors ligne

#17 Le 13/10/2017, à 17:19

nam1962

Re : Updates-warner : Pour être alerté d'une modification de ressource web

...je suis le fil wink


[ Modéré ]

Hors ligne

#18 Le 13/10/2017, à 17:24

moths-art

Re : Updates-warner : Pour être alerté d'une modification de ressource web

Tu suis le fil avec Updates-warner ou avec l'option de notification du forum (ou les 2) ? cool

Hors ligne

#19 Le 13/10/2017, à 19:37

Bigcake

Re : Updates-warner : Pour être alerté d'une modification de ressource web

moths-art a écrit :

J'ai néanmoins une autre proposition d'optimisation [...]

Ouuuuuuuh alors ça j'adore !
Même pas besoin de faire 2 requêtes : je fait un GET direct avec l'option "If-Modified-Since" dans le header HTTP, résultat : soit le serveur m'envoi la page modifié avec un status code 200, soit juste le header HTTP avec le status code 304.

Je garde ça dans un coin, pour le jour où je m'occuperai moi-même du réseau (mon logiciel est actuellement dépendant de wget)


"Les gens" ne sont pas cons, ils ont été habitués à la facilité et à la désinformation. Le meilleur moyen de ne pas les aider, c'est de se moquer. Le meilleur moyen de les aider, c'est de les informer, encore et encore. La réflexion viendra. N'oubliez pas que vous aussi, vous êtes le con d'un autre.
Smartphone+GNU/Linux=Librem5

Hors ligne

#20 Le 13/10/2017, à 21:51

moths-art

Re : Updates-warner : Pour être alerté d'une modification de ressource web

eh oui, exact!!

Hors ligne

#21 Le 14/10/2017, à 06:29

nam1962

Re : Updates-warner : Pour être alerté d'une modification de ressource web

moths-art a écrit :

Tu suis le fil avec Updates-warner ou avec l'option de notification du forum (ou les 2) ? cool

Updates-warner wink l'idée est de m'en servir pour les paquets snap & flatpak


[ Modéré ]

Hors ligne

#22 Le 14/10/2017, à 08:44

moths-art

Re : Updates-warner : Pour être alerté d'une modification de ressource web

Ok nam1962 : du coup, l'idée de déclencheur prend également du sens pour toi ?
ex: script shell qui fait l'update snap/flatpak si un ou plusieurs paquets ont changés.

Hors ligne

#23 Le 20/10/2017, à 07:59

Bigcake

Re : Updates-warner : Pour être alerté d'une modification de ressource web

La version 1.3 est sortie:
- L'installeur du code source prend en charge Fedora (avec l'aide de DNF)
- Modification rapide de la version manuelle en clique droit (plutôt que le bouton dans la fenêtre de modifications)
- Ajout d'un mécanisme de déclencheur d'action lorsque qu'une différence de version est détectée
- Suppression d'un bug de corruption du fichier de configuration dans certains cas

J'ai appris à faire des .deb, par contre, j'ai un problème avec le man:
Je fournit la version anglaise et française, mais quand on fait 'man updates-warner' c'est la version anglaise qui est utilisé par défaut
Pourtant, les autres man français, que j'ai dans ma distrib, s'affichent bien par défaut quand dispo ...
Si quelqu'un à une idée ... je suis preneur !

Pour les .deb que je fournit, je ne sait pas actuellement s'ils sont réellement dépendant de la distrib utilisée
Si le packet debian de votre distrib n'est pas disponible, faitent quand même le test avec ce qui s'en rapproche le plus, on sait jamais wink (faitent moi un retour du résultat ! positif ou négatif, c'est tjs intéressant !)

N"hésitez pas à me remonter les pb, j'ai l'impression d'avoir un problème d’exécution avec les (certains?) scripts python, j'ai pas eu l'occasion de faire bcp de tests avec ça

Dernière modification par Bigcake (Le 20/10/2017, à 08:20)


"Les gens" ne sont pas cons, ils ont été habitués à la facilité et à la désinformation. Le meilleur moyen de ne pas les aider, c'est de se moquer. Le meilleur moyen de les aider, c'est de les informer, encore et encore. La réflexion viendra. N'oubliez pas que vous aussi, vous êtes le con d'un autre.
Smartphone+GNU/Linux=Librem5

Hors ligne

#24 Le 21/10/2017, à 15:40

moths-art

Re : Updates-warner : Pour être alerté d'une modification de ressource web

Hello Bigcake,

Je viens de tester la 1.3 et le déclencheur sur du python fonctionne bien pour ma part mais uniquement quand je configure mon updates-warner.conf avec
trigger_on_mismatch /mon_url_absolu/envoi_sms.py

J'avais réussi avec la boite de dialogue : j'ai l'impression que la conf n'est pas enregistré.

Voici un exemple de script en python de déclenchement d'un sms sur l'api free (nécessite d'installer la lib requests : pip install requests ou via apt) :

#!/usr/bin/python3

import requests
params = {
    'user': 'login',
    'pass': 'pass',
    'msg': 'essai update warmer'
}
r = requests.get("https://smsapi.free-mobile.fr/sendmsg", params=params)
if r.status_code == 200:
    sys.stdout.write("Envoi du sms : " + params['msg'])
else:
    sys.stderr.write("Error HTTP " + str(r.status_code))

Cette évolution (déclencheur) nécessiterais 2 logs à lui seul :
1. sur le stdout quand le déclencheur se passe bien : chemin_declencheur + heure du déclenchement + message de succès
2. sur le strerr : là, en l'occurence, si la requète ne passe pas (mauvais paramètres, service inaccessible etc.) le script envoi un message d'erreur sur stderr.
log avec : chemin_declencheur + heure de la tentative de déclenchement + message d'erreur

Autre point : je viens de changer un watcher pour qu'il s'active toute les heures (uniquement pour vérifier que ça fonctionne bien) alors qu'avant c'était tous les jours.
Je sauvegarde, et je glisse ma souris sur le watcher pour vérifier : il me dit que ça va se déclencher dans 15 minutes !
Je supposes qu'il y a un mauvais calcul par rapport au temps restant précédent. ca devrait être initialisé quand on diminue le temps, non ?

Sinon, il serait sans doute bien d'éditer directement les paramètres d'un watcher à partir du clic droit sur l'icône correspondant. (plutôt que clic droit => configurer tout le soft puis chercher le watcher)

Enfin, si l'on veut plusieurs déclencheurs pour 1 watcher, il faut se créer un script intermédaire : c'est pas forcément mauvais en soit mais faudra sans doute avoir des exemples sous la main car ça risque vite d'être périlleux.

Hors ligne

#25 Le 21/10/2017, à 16:42

nam1962

Re : Updates-warner : Pour être alerté d'une modification de ressource web

moths-art a écrit :

Ok nam1962 : du coup, l'idée de déclencheur prend également du sens pour toi ?
ex: script shell qui fait l'update snap/flatpak si un ou plusieurs paquets ont changés.

Alors, oui ou non : c'est plus élégant avec un déclencheur, mais ça va compliquer, si tu lances

sudo snap refresh

et

flatpak update

si il n'y a rien à updater.. ça n'update rien !


[ Modéré ]

Hors ligne