gled a écrit 28 commentaires

  • # Ras-le-bol

    Posté par  . En réponse au lien Fini le ticket de caisse ? Sept questions que pose la disparition de l’impression automatique. Évalué à -10.

    Moi, ça me gonfle qu'à chaque fois la caissière me demande « voulez-vous le ticket de caisse », je réponds inlassablement « bien évidemment ! »

    Ce serait plutôt ceux qui ne veulent pas du ticket papier qui devraient le signaler, oui, je ne veux pas utiliser un trucphone pour pouvoir visualiser après coup si la caissière n'a pas fait une erreur en ma défaveur, je veux pouvoir contrôler ma facture à l'instant même de mes achats ! Déjà que souvent les caissières ont tendances à m'agacer, entre celles qui se dépêchent de passer rapidement vos articles et une fois fini vous sort « vous avez la carte du magasin ? » alors que vous essayez de vous dépêtrer du bordel qu'elle a mis sous vos yeux, je fulmine intérieurement, mais parfois je craque, je sors des choses du genre « vous voulez une pelle ? », car la caissière est en train de faire un monticule avec mes articles… Ou encore celle qui vient me foutre les produits d'entretien sur de la charcuterie ou viande alors que j'avais bien séparé le tout sur le tapis dégueulasse de la caisse, alors je craque encore et lui demande, « vous faites ça chez vous ? Vous mettez l'eau de javel sur vos tranches de jambon ? », alors je sais que les caissières ont un métier pas facile, pression des supérieurs pour avoir un maximum d'efficience, confrontées à des clients chiants, impolis, désagréables, et j'en passe, mais il y a des limites, puis si le client ne râle pas, les caissières ne remonteront jamais leurs doléances à leurs supérieurs, plus y aura de râleurs, plus les choses changeront.

    Tout ce foin autour du ticket de caisse est du pur foutage de gueule, blabla ça pollue, blabla ça coupe des arbres, blabla, ça nuit aux castors, mais putain que représente un ticket de caisse par rapport à tous les emballages des articles que l'on achète ? Que dalle ! Mais comme d'habitude faisons chier les consommateurs plutôt que les industriels qui s'en foutent royalement de la pollution qu'engendrent les emballages, hein, acheter de la viande sous plastique, un paquet de gâteaux de dénomination « poket » est une connerie innommable et ça c'est pour tout ce qu'on achète, alors qu'on pourrait tellement changer beaucoup de choses, par exemple nous qui sommes grands consommateurs de vinaigre blanc, on ne demande que ça de venir avec un bidon vide et de pouvoir le remplir à partir d'une « citerne » au supermarché, mais non,on doit se coltiner des bouteilles plastiques qui finissent au rebut pour rien…

    Je me demande si y a pas un lobby derrière tout ça qui a poussé le gouvernement ; si soucieux de protéger l'environnement ! ; de décréter cette loi alakon…

  • [^] # Re: Qu'ils disent...

    Posté par  . En réponse au lien Campagne "Je ne suis pas une data" par UFC Que Choisir. Évalué à 10. Dernière modification le 26 janvier 2023 à 10:41.

    Cela m'interpelle de plus en plus, et ça me gonfle tellement.

    Pourquoi de plus en plus de sites internet ne peuvent plus se passer d'utiliser tous ces « services » externes qui évidemment en tirent bénéfices, cela vient des « nouveaux » développeurs web ?, on leur apprend dans les écoles à ne faire que ça, utiliser des api externes pour 3 fonctionnalités js ? Ils ne savent pas les programmer eux-mêmes ?
    Qu'on vienne pas invoquer que l'utilisation de ces api est une protection contre les bots.

    Je ne suis pas développeur, ne travaille pas même dans le domaine info, mais il me semble qu'il y a encore 15/20ans on préconisait de n'utiliser le javascript que pour améliorer l'interface utilisateur, mais surtout laisser fonctionnel le site même js désactivé, aujourd'hui, c'est infernal, même le plus simple des sites internet qui n'aurait pas besoin de javascript ne fonctionne pas sans, il suffit de regarder ce site nommé dans ce lien, sans js aucun des boutons ne fonctionnent en fait rien ne fonctionne, le site respectemesdatas n'affiche rien avec le js désactivé, et donc ce site est une merde infâme, ils feraient bien de la boucler, en restant poli.

    Je ne parle même pas du site de ma banque, qui sur sa page d'accueil invite goo_gle, tag_commander, inbeta… Vive noscript !
    Cela est représentatif du comment on est traqué dans nos moindres faits et gestes sur le net, même sur les sites où les données sont sensibles, alors reprendre le contrôle de nos « data », non, ça ne se fait pas en « 3 clics », c'est en réalité impossible à faire.

  • # Intéressé

    Posté par  . En réponse au message Interagir avec Geany depuis le terminal. Évalué à 2. Dernière modification le 22 décembre 2022 à 13:01.

    Si tu trouves, cela m'intéresse aussi, après cela ne prend pas beaucoup plus de temps de faire un SHIFT + F9 suivi d'un CTRL + r, qu'un simple SHIFT + F9 ^ _ ^

  • # Redirection vers numéro surtaxé ?

    Posté par  . En réponse au journal Piéger les démarcheurs abusifs. Évalué à 3.

    Oui les bots, j'ai eu l'idée il n'y a pas très longtemps d'user à nouveau d'un téléphone fixe, car là où je réside, la qualité du réseau téléphonique est vraiment très exécrable, elle est très variable d'un jour à l'autre.

    Grave erreur, ce sont des centaines d'appels par mois venant de tous ces emmerdeurs auxquels je ne réponds jamais, des bots, lesquels je pense appellent des numéros au hasard et doivent détecter si une personne physique répond. Heureusement que mon abonnement portable F… permet de bannir des plages entières de numéros, j'ai par exemple banni comme un bourrin tout ce qui vient du 01, cela a filtré directement au moins 70% des emmerdeurs téléphonique… Je ne me sers donc uniquement de mon fixe que pour appeler, en revanche une liste blanche sur mon portable est pour moi inconcevable, par exemple en cas de gros souci d'un de nos proches, accident ou pire…

    J'avais un pote ; Yann ; il y a quelques années qui aimait aussi lorsqu'il recevait un appel d'un démarcheur, leur faire perdre du temps comme toi en tenant la grappe à ces casses-bonbons au maximum, je vous admire d'arriver à faire ça, je n'ai pas du tout la patience.

    Le piège ultime serait d'après moi pouvoir faire une redirection vers un numéro (très) surtaxé, ou encore vers un numéro étranger coûtant cher le tout sans que le bot ne puisse détecter cette redirection, le rêve !

    N'empêche que j'ai toujours eu une suspicion envers certains organismes vendant les informations privées de leurs clients, pour ma part je n'avais jamais reçu le moindre appel de spammeur téléphonique (cela fait un bail que j'ai le même numéro) et tout d'un coup j'ai commencé à en recevoir des tonnes, et la seule chose que j'ai changée a été de souscrire une assurance chez A…z, certes il faut se méfier des biais de confusions, mais comme disait machin, y a pas de fumée sans feu.

  • [^] # Re: Où est la partie 2 ?

    Posté par  . En réponse au message Avent du Code, jour 10. Évalué à 1.

    Ah d'accord, merci à vous deux, Yth et 🚲 Tanguy Ortolo de la confirmation, bien dommage alors.

  • # Où est la partie 2 ?

    Posté par  . En réponse au message Avent du Code, jour 10. Évalué à 1.

    Pour la somme des intensités, pas trop de difficultés, ma solution sans fioritures (en trichant un peu).

    cycles = {}
    x = 1
    cycle = 1
    for line in program.strip().split("\n"):
        cycle += 1
        cycles[cycle] = x
        try:
            x += int(line.split(" ")[1])
            cycle += 1
            cycles[cycle] = x
        except IndexError:
            # noop
            pass
    
    signals = [x * cycles[x] for x in range(20, 221, 40)]
    print(signals, sum(signals))

    Mais que faut-il faire ensuite ? Où est la seconde partie de l'exercice sur la page d'adventofcode ? La dernière phrase que je vois sur la page est :

    Find the signal strength during the 20th, 60th, 100th, 140th, 180th, and 220th cycles. What is the sum of these six signal strengths?

    Faut-il avoir un compte susnommé en bas de page pour le voir ?

  • # En faisant pivoter la forêt

    Posté par  . En réponse au message Avent du Code, jour 8. Évalué à 1.

    Une version sans doute pas du tout optimisée pour compter les arbres visibles depuis les lisières, faisant pivoter le tuple des arbres.

    trees = ("30373", "25512", "65332", "33549", "35390")
    
    
    def count_visible_trees(trees):
        n = 0
        for row in trees:
            tmax = 0
            i = 0
            for tree in row:
                tree = int(tree)
                if not tree:
                    continue
                if tree > tmax:
                    i += 1
                    tmax = tree
            n += i
        return n
    
    
    def rotate_trees(trees):
        return tuple("".join(row[i] for row in trees) for i in range(len(trees)))[::-1]
    
    
    n = count_visible_trees(trees)
    for _ in range(3):
        trees = rotate_trees(trees)
        n += count_visible_trees(trees)
    
    print(f"Il y a {n} arbres visibles depuis les orées cardinales du bois")

    J'imagine qu'en faiasant le même principe avec numpy, ce sera bien plus optimisé.

  • [^] # Re: Les extensions

    Posté par  . En réponse au message Plantage de Firefox >= 102. Évalué à 1.

    Salut,

    Merci Maderios, hélas comme je supputais cela ne change rien, je n'ai même pas besoin d'attendre un plantage, cela se voit directement lorsque je parcours les items du menu, il y a toujours cette légère latence.

    Bref, tout cela m'ennuie bien.

    J'ai téléchargé la dernière version de Firefox (106), là aucun problème, j'ai installé les extensions dont je ne peux me passer, importer la tonne de signets, c'est fluide comme avant la version 102, me reste à trouver comment importer la config de la 102.4 dans la 106 automatiquement…

    Merci à tous de m'avoir lu.

  • [^] # Re: c'est deja le cas, non ?

    Posté par  . En réponse au message Réveil de disque externe. Évalué à 3.

    Salut, oui voilà tu as tout compris à ma demande, je souhaitais que le disque externe ne se réveille que lorsque j'y accède. Et en effet comme un boulet je n'avais pas fait gaffe que j'avais un répertoire de ce disque en favori dans la fenêtre de Caja, en l'ayant supprimé, cela a l'air de laisser Gargantua digérer tranquillement.

    Ce qui est tout de même assez bizarre, c'est que j'ai dans la barre des tâches supérieure de mon bureau des raccourcis pour accéder à tel ou tel répertoire de mon système et en cliquant sur ces raccourcis, Gargantua ne se réveille pas, j'imagine que la gestion des raccourcis fonctionne d'une autre manière.

    Merci en tout cas !

    Prochaine fois j'essaierai de réfléchir un peu plus.

  • # Présent merdique, avenir peu radieux

    Posté par  . En réponse au journal Nostalgie d'Internet des années 2000.. Évalué à 10.

    Sans doute pas trop en rapport pur avec les « technologies ».

    Pour ma part, c'est simple, en ce moment je suis nostalgique de tout, mais rien à voir avec le contexte sanitaire actuel, d'autant que je viens à peine de sortir de cette chinoiserie (qui m'a rendu bien ko) qu'on m'a refilé à un endroit où on peut avoir une des meilleures chances de se le choper, bref, mais plus sans doute la crise de la cinquantaine qui approche.

    J'ai dû commencer à utiliser un ordinateur à peu près au même moment que toi (sur le tard donc), et franchement ouais, c'était pas mal il y a une 20aine d'années, et bizarrement n'y connaissant rien à l'époque, tout m'intéressait, j'ai rapidement testé plusieurs distributions, d'abord suze, c'était très beau graphiquement, surtout par rapport à windows, ensuite fedora, mandriva, et maintenant c'est debian pour la vie.
    Fréquenter les forums et internet, c'était chouette. aujourd’hui, c'est une vraie tannée de naviguer sur internet, je pourrais faire comme tout le monde et en avoir rien à carrer, mais non, je ne peux m'empêcher de filtrer tout, autoriser le javascript au compte-goutte et majoritairement temporairement, dégager tous les cookies à la fermeture du navigateur, et devenir parano au point de changer d'adresse mac régulièrement de mes ordis :-/

    On vit actuellement une époque de merde, simple opinion personnelle, qui pourrait être perçue comme celle d'un réac ou vieux con, je dois maintenant faire partie de cette catégorie (fait chier), j'ai regardé récemment une vidéo d'un vieux sketch de Blanche Gardin (la pendant à l'humour de ce qu'Étienne Klein est à la science), et elle nous rappelait qu'avant on disait « les paroles s'envolent, les écrits restent », et qu'aujourd'hui beaucoup venaient nous exposer la moindre idée de merde qui sortait de leur cerveau pour nous l'exposer à la face, en fait finalement à la manière de Trump quand on regarde bien.

    Pour ma part, j'ai de plus en plus de mal à dialoguer sur les forums et sur internet, parfois je commence à rédiger un message sur lequel j'ai bien réfléchi à la tournure et le sens dans l'intention de poster une réponse à un débat, et je me ravise souvent… Rien qu'ici sur linuxfr, il y a toujours des débats sans fins sur telles ou telles choses, rien qu'a les lire, je trouve ça barbant, alors y participer, sans moi, je crois que je suis devenu asocnet, je ne sais si un mot existe pour qualifier cela. Chez moi, il n'y a déjà depuis pas mal de temps ni télé, ni radio, malheureusement vivre sans internet est devenu très difficile, voire impossible tellement tout en passe par ce média.

    Que je n'aimerais pas être un jeune de cette époque, pour rien au monde je n'échangerais l'époque de ma jeunesse contre celle des jeunes aujourd'hui, c'est définitif, je suis irrémédiablement devenu un vieux schnock à dire inlassablement des « c'était mieux avant », car il est certain que lorsque j'étais jeune en l'occurrence, je n'enviais pas spécialement l'époque de mes parents, mais au vu de l'époque de folie des années 70/80/90, je ne vois pas trop ce qu'on pouvait envier de l'époque de nos parents, sans doute que les jeunes d'aujourd'hui ont un peu les mêmes considérations, mais je n'en suis pas certain.

    De toute façon tout me fait flipper, quand j'en vois qui mettent entre les mains de leurs enfants des saloperies de smartphone, je me dis que voilà une bonne façon de faire de ses enfants des idiots, parfois quand j'en vois ici vouloir qu'on inscrive dans le cursus des collégiens la programmation, excusez-moi du peu de trouver cela débile, autant faire découvrir le maximum de métiers différents aux enfants, là je dis oui, parce que moi quand on m'avait demandé à 13 ans ce que je voulais faire dans la vie, euh ? Je sais pas, cosmonaute ? docteur ? aviateur ?
    Pourquoi de la programmation ? Pourquoi pas de la couture ? Pourquoi pas de la cuisine ? Pourquoi pas des cours de bricolage ? Dans la vie la grande majorité des gens aura plus besoin dans sa vie de savoir recoudre un vêtement, savoir faire de bons petits plats que de programmer.

    Et voilà, je me suis trop égaré, navré.
    Je ne sais si ces écrits auraient dû rester dans ma tête finalement.

  • [^] # Re: A tatons

    Posté par  . En réponse au message Question boucle. Évalué à 1. Dernière modification le 08 janvier 2020 à 19:42.

    En fait, même pas besoin de transformer en list, puisqu'en itérant sur f, c'est suffisant, le for passera par la méthode __iter__ de f.

  • # Joies du code du site joiesducode

    Posté par  . En réponse au lien Au cas où vous ne connaîtriez pas encore les joies du code. Évalué à 4.

    [troll]]Exemple typique d'un site usine à gaz, qui a besoin de 42 scripts (traqueurs) externes pour pouvoir fonctionner, en effet, on y est, dans les joies du code.[/troll]

  • # Française ? Plus pour très longtemps

    Posté par  . En réponse au journal [HS] Quand les français votent avec leur argent. Évalué à 6.

    Il faudrait renommer Française Des Jeux par autre chose, parce que là, il ne va plus rester grand-chose de français dans cette entreprise.

    Tiré de wikipédia

    En 1989, Oberthur devient l'imprimeur historique de la FDJ en imprimant le premier jeu grattable 100 000 F cash. En 1991, Oberthur construit une usine à Puy-Guillaume dédiée à l'impression des tickets de loterie. Le partenariat avec Oberthur durera jusqu'en 2000, date à laquelle l'état Français décidera de faire imprimer ses tickets de grattage en Amérique du Nord et au Canada.

    Cela m'a toujours sidéré que les tickets à gratter jeter ne soient plus fabriqués en France, alors qu'ils sont destinés exclusivement aux Français, zut quoi, comment ces empaffés de dirigeants veulent-ils préserver l'emploi en France, alors qu'eux-mêmes délocalisent la fabrication de ces grattaddicts hors de France, je ne comprends pas comment on a pu laisser faire ça…

    Et n'y a-t-il pas anguille sous roche avec cette privatisation ? Renflouer les caisses de l'état ? Ouverture à la concurrence du marché français des jeux ?

    Hum, il faut, je crois, que je cesse de regarder cash investigation.

  • [^] # Re: J'avance à reculons

    Posté par  . En réponse au message [Résolu] Détection wifi intel. Évalué à 1.

    Merci de l'info, c'est intéressant de savoir pourquoi j'ai eu ce problème et que sans doute d'autres ont eu et auront.

  • [^] # Re: J'avance à reculons

    Posté par  . En réponse au message [Résolu] Détection wifi intel. Évalué à 4.

    Merci beaucoup à vous tous, comme le raccourci fn+f7 ne fonctionne pas (même pas sur windows), alors j'ai fait une recherche, et sur le site de lenovo, la solution donnée est simple.

    Ajouter dans /etc/modprobe.d/ un fichier de configuration de liste noire, par exemple blacklist.conf, dans ce fichier ajouter:

    blacklist ideapad_laptop

    Puis redémarrer.

    Et voilà, le wifi est actif, et je suis heureux :-D

    Encore merci à vous tous de m'avoir épauler et aiguiller dans la résolution de ce problème.

  • [^] # Re: J'avance à reculons

    Posté par  . En réponse au message [Résolu] Détection wifi intel. Évalué à 2.

    Je m'en doutais un peu que c'était suffisant pour les firmwares.

    Je ne connaissais pas rfkill, il me donne :

    0: ideapad_wlan: Wireless LAN
    Soft blocked: no
    Hard blocked: yes
    1: ideapad_bluetooth: Bluetooth
    Soft blocked: yes
    Hard blocked: yes
    2: hci0: Bluetooth
    Soft blocked: yes
    Hard blocked: no
    3: phy0: Wireless LAN
    Soft blocked: no
    Hard blocked: no

    Que signifie Hard blocked ? c'est au niveau matériel ? Dans le bios je ne vois pas ce qui pourrait se rapporter à ça.

    Dans /etc/interfaces il y a :

    source /etc/network/interfaces.d/*

    # The loopback network interface
    auto lo
    iface lo inet loopback

    Et rien dans /etc/network/interfaces.d/

    Pour le scan, j'ai hum, comme résultat :

    wlp0s20f3 Interface doesn't support scanning : Network is down

    J'ai vu aussi que windows (je suis en dual boot) pouvait mettre le bordel et qu'il fallait désactiver le fast boot dans windows, ce que j'ai fait, j'y ai cru un moment car lors de l'install le wifi était bien détecté mais plus après l'install, mais non, c'est pas ça, à moins qu'il y a encore autre chose.

    A noter que pour le moment, je n'ai pas accès à une connexion ethernet, est-ce que ça pourrait changer quelque chose ? Car forcément nm n'a rien configuré.

  • # J'avance à reculons

    Posté par  . En réponse au message [Résolu] Détection wifi intel. Évalué à 1.

    Salut, merci de vos réponses, en effet le paquet misc ne m'est pas grandement utile, et le paquet iwlwifi était déjà installé.

    Bon, j'ai réinstallé debian parce qu'à force de manipulations hasardeuses, je suis en train de mettre le bazar sur le système.

    Il y a quelque chose que je ne comprends pas, lors de l"installation il me détecte bien tous les réseaux wifi disponibles en faisant même la liste de tous ces réseaux, alors pourquoi une fois le système installé il ne le détecte plus le wifi ? C'est tout de même étrange.

    Sinon, j'ai regardé ce qu'il y avait dans /lib/firmware et ce qu'il a affiché lors de l'installation comme firmware manquant, ce coup-ci j'ai fait une capture d"écran.

    iwlwifi-9000-pu-b0-jf-b0-30.ucode
    iwlwifi-9000-pu-b0-jf-b0-31.ucode
    iwlwifi-9000-pu-b0-jf-b0-32.ucode
    iwlwifi-9000-pu-b0-jf-b0-33.ucode
    iwlwifi-9000-pu-b0-jf-b0-34.ucode -> présent dans /lib/firmware
    iwlwifi-9000-pu-b0-jf-b0-35.ucode
    iwlwifi-9000-pu-b0-jf-b0-36.ucode
    iwlwifi-9000-pu-b0-jf-b0-37.ucode
    iwlwifi-9000-pu-b0-jf-b0-38.ucode -> présent dans /lib/firmware

    De plus si je regarde sur le site d'intel (driver linux), le driver se rapportant à cette carte est le AC-9462, c"est quand même à y perdre son latin.

    Bon, je vais rechercher où trouver ces firmwares manquant et voir si ça va résoudre mon problème.

  • [^] # Re: greffon Tasks

    Posté par  . En réponse au message Surlignage de mots clefs avec geany. Évalué à 1. Dernière modification le 01 novembre 2019 à 18:28.

    J'avais déjà installé ce plugin, mais cela ne surligne pas les mots clefs :/

    Cela sert simplement à générer les tags d'un projet puis dans la fenêtre des messages et onglet tâches de pouvoir sauter rapidement de tâche en tâche.

  • [^] # Re: Nouveau logo

    Posté par  . En réponse à la dépêche Firefox 70. Évalué à 2.

    Pendant un moment j'ai cru que ton avatar était le nouveau logo de firefox XD

    Après m'être ressaisi, maintenant, je n'arrête pas d y voir un gallinacé, ou encore le serpent du livre de la jungle, je ne sais plus son nom.

  • # Avantages ?

    Posté par  . En réponse à la dépêche Python pour Noël 2019 — partie 4 — Py Pyenv. Évalué à 3.

    Merci pour cet article.

    Question bête.

    Quels avantages y a-t-il par rapport à l'installation de plusieurs versions de python faites manuellement ?

    Comme je pense tout le monde, j'ai une version de python2 et python3 installées via les paquets de la distribution, mais j'ai également installé plein d'autres versions de python3 issues du site de python et ensuite défini des alias dans .bashrc et cela n'a jamais posé le moindre problème de collisions entre les versions.

  • # merci à ceux apportant leur aide aux débutants

    Posté par  . En réponse au message problème message d'erreur python. Évalué à 1.

    C'est fou ça.

    Quelqu'un vient demander un peu d'aide poliment avec un début de script et l'incompréhension d'une erreur, donc un peu de travail derrière, et paf, on lui envoie que des commentaires désobligeants, on le catalogue de suite comme un pov' nul d'étudiant qui sait rien faire, bonjour les préjugés, à croire que tous ceux postant ce genre de commentaires n'ont jamais galéré sur de simples problèmes au tout début de leurs apprentissages en programmation.

    Si vous voulez faire fuir tous ceux débutants en programmation venant demander un petit coup de main, z'êtes sur la bonne voie.

    J'aurais compris ces réactions envers une personne demandant qu'on lui fasse tout son boulot sans avoir fait la moindre chose, mais ici je ne comprends pas.

    Heureusement qu'il y a encore des gens prêt à assister les débutants, merci à eux.

  • # Plusieurs bugs

    Posté par  . En réponse au message Deuxième mouture script multi clock. Évalué à 1.

    La première des choses à revoir, est le relancement de l'application lors des mises à jour des couleurs, non seulement ce n'est pas propre, mais en plus cela provoque des erreurs comme.

    Exception in Tkinter callback
    Traceback (most recent call last):
    File "/usr/local/lib/python3.6/tkinter/init.py", line 1699, in call
    return self.func(*args)
    File "main.py", line 69, in
    label=i, background=i, command=lambda x=i: self.setcolors(x)
    File "main.py", line 102, in setcolors
    os.execv(file, sys.argv)
    PermissionError: [Errno 13] Permission denied

    Il n'est pas bien difficile de mettre à jour en temps réel les couleurs des widgets.
    Puis c'est plus de l'ordre du gadget que de pouvoir changer les couleurs des horloges.
    Ce qui serait intéressant serait que tu génères une couleur en t'appuyant sur le string du timezone, ou alors plus simplement des couleurs aléatoires selon des tons de couleurs prédéfinis.

    • Garde tkinter dans sa boîte, c'est pas bien plus complexe et verbeux d'écrire tk.Menu que Menu, dans le premier cas on sait d'où sort la classe Menu dans le second non, dans ton petit script on ne s'y perd pas, mais dans des scripts plus conséquents, on peut vite s'y perdre et être source de collisions d'identifiants. Importer un ou deux trucs d'un module, cela passe, mais au-delà mieux vaut garder le module importé dans son namespace.

    • Généralement les utilisateurs n'apprécient pas trop les fenêtres qui changent de dimensions, je suis dans ce cas, ce que j'aurais fait à ta place est de créer une fenêtre ou l'on pourrait placer par exemple 4 horloges au maximum (pouvant être pourquoi pas défini via une constante ou un argument facultatif de la classe App pour en mettre plus), le fait de cliquer sur un emplacement vide permettrait d'ajouter une nouvelle horloge, l'ajout d'un petit bouton sur chaque horloge serait suffisant pour les supprimer.

    • Le menu des timezones disponibles est trop long (scroll interminable), il faudrait faire quelque chose de plus élaboré, on choisirait d'abord le continent, puis ensuite le pays/ville, pour cela je te conseille d'utiliser la classe Listbox de tkinter.

    • Il y a des bugs lors des ajouts et suppressions d'horloges (pas pris en compte en temps réel).

    • Je ne comprends pas bien comment fonctionne ton fichier de couleurs, ce que j'aurais fait personnellement est de grouper timezone et couleurs en un unique dictionnaire ou autre structure de données.

    • Les secondes ne variant pas d'une horloge à l'autre, j'aurais pour ma part utilisé une unique variable commune à toutes les horloges afin de garder une synchro parfaite entre les horloges.

    • Les appels en ms étant toujours imprécis, le 1000ms peut très bien être 1002ms effectif, cela varie d'un poste à un autre et en fonction des tâches en cours, ce qui fait qu'au bout d'un long moment il y aura des décalages (même en essayant d'ajuster les ms en se basant sur les microsecondes de datetime, je ne suis pas arrivé à obtenir une synchro aux petits oignons).
      N'est-ce pas d'ailleurs pour cette raison que tu as enlevé les secondes des horloges et que tu fais des appels toutes les 500ms ?
      Je pense que pour obtenir une synchronisation plus élaborée il faudrait utiliser un thread séparé, et ce n'est pas facile à faire.

    • Dans ta classe App, il faudrait répartir ce qui peut l'être dans différentes classes, chargement et enregistrement des timezones, fenêtre de création d'un timezone. Il en va de même pour ta classe Clock, tu pourrais répartir chaque zone d'affichage en d'autres classes (date, timer, timezone).

    • Focalise-toi d'abord sur l'essentiel, les choses comme souhaiter la bonne année, ou changer les couleurs sont d'importances secondaires.

    Bonne continuation !

  • # Un peu d'améliorations

    Posté par  . En réponse au message actualisation automatique le contenu du widget Text dans tkinter. Évalué à 4. Dernière modification le 26 novembre 2018 à 12:17.

    Comme tu es en train de finaliser ton projet avec entrain :) , j'ajoute un commentaire.

    Je ne trouve pas cela être une bonne idée d'avoir plusieurs fichiers pour les monitors, un simple fichier par exemple un csv serait plus adapté, car en l'état si on n'enregistre qu'une seule des deux valeurs, on se retrouvera décalé dans l'affichage et aucun moyen de faire de distinctions, car il y a seulement une date.

    Dans ta fonction affichage_update, tu crées de nouveau widgets, ce qui n'a pas intérêt.

    Pour la mise à jour de l'affichage, tu peux le faire soit avec l'event associé au notebook, soit en temps réel lors de chaque archivage de valeurs.

    Ayant du temps à perdre, voici un exemple fonctionnel (désolé, j'ai modifié l’import *).

    import tkinter as tk
    import tkinter.ttk as ttk
    import csv
    import time
    
    RELEVES_FILE = './save/releves.csv'
    RELEVES_FRAME_NAME = 'releves'
    
    #window
    root = tk.Tk()
    root.geometry('450x350')
    root.title('test')
    
    
    def date():
        return time.strftime('%d/%m/%y', time.localtime())
    
    
    def archiver(entry1, entry2):
        mesures = [None, entry1.get().strip(), entry2.get().strip()]
        if not any(mesures):
            return
        mesures[0] = date()
    
        with open(RELEVES_FILE, 'a', newline='') as f:
            writer = csv.writer(f)
            writer.writerow(mesures)
    
        entry1.delete(0, tk.END)
        entry2.delete(0, tk.END)
    
    
    def affichage_update(notebook, wtext):
        frame_name = notebook.select()
        if not RELEVES_FRAME_NAME in frame_name:
            return
        wtext['state'] = tk.NORMAL
        wtext.delete(0.0, tk.END)
        with open(RELEVES_FILE, 'r', newline='') as f:
            reader = csv.reader(f)
            for row in reader:
                text = f'{row[0]:15}\t {row[1]:10}\t\t {row[2]:10}\n'
                wtext.insert(tk.END, text)
        wtext['state'] = tk.DISABLED
    
    
    container = ttk.Notebook(root,width=450, height=350)
    container.pack(expand=1, fill='both', padx=5, pady=5)
    
    monitoring = tk.Frame(container, bg='powder blue')
    container.add(monitoring, text='monitor data')
    
    releves = tk.Frame(container, bg='powder blue', name=RELEVES_FRAME_NAME)
    container.add(releves,text='releves')
    
    lbf1 = tk.LabelFrame(monitoring, text="Lecture Monitor 1", padx=10, pady=10)
    lbf1.pack(side=tk.LEFT, padx=10, pady=10, anchor=tk.NE)
    
    entry_lbf1 = tk.Entry(lbf1)
    entry_lbf1.pack(pady=5)
    
    lbf2 = tk.LabelFrame(monitoring, text="Lecture Monitor 2", padx=10, pady=10)
    lbf2.pack(side=tk.LEFT, padx=10, pady=10, anchor=tk.NW)
    
    entry_lbf2 = tk.Entry(lbf2)
    entry_lbf2.pack(pady=5)
    
    
    bt_archiver = tk.Button(monitoring,text='Archiver', command=lambda : archiver(entry_lbf1, entry_lbf2))
    bt_archiver.place(x=40,y=120)
    
    
    generalites_top = tk.Frame(releves, bg='powder blue', width=450)
    generalites_top.pack(side=tk.TOP, fill=tk.X)
    
    generalites_bottom = tk.Frame(releves,bg='powder blue')
    generalites_bottom.pack(side=tk.BOTTOM)
    
    head_axe_loc35L = ['Date', 'Monitor 1', 'Monitor 2']
    
    lb_date = tk.Label(generalites_top, text=f'{head_axe_loc35L[0]:15}', bg='powder blue', font=('arial',12,'bold'))
    lb_date.pack(side=tk.LEFT, padx=5, anchor=tk.NW)
    
    lb_monitor1 = tk.Label(generalites_top, text=f'{head_axe_loc35L[1]:10}', bg='powder blue', font=('arial',12,'bold'))
    lb_monitor1.pack(side=tk.LEFT)
    
    lb_monitor2 = tk.Label(generalites_top, text=f'{head_axe_loc35L[2]:10}', bg='powder blue', font=('arial',12,'bold'))
    lb_monitor2.pack(padx=70, side=tk.LEFT)
    
    
    s = tk.Scrollbar(releves)
    T = tk.Text(releves, bg='powder blue', width=450, height=350, font=('arial',14,'bold'), pady=25, state=tk.DISABLED)
    
    s.pack(side=tk.RIGHT, fill=tk.Y)
    T.pack(side=tk.LEFT, fill=tk.Y)
    s.config(command=T.yview)
    T.config(yscrollcommand=s.set)
    
    container.bind('<<NotebookTabChanged>>', lambda evt: affichage_update(container, T))
    
    root.mainloop()

    Pour l'affichage, au lieu d'aller chaque fois relire le fichier, tu pourrais optimiser cela en gardant les valeurs en cache que tu actualiserais à chaque archivage.

  • # Les annotations

    Posté par  . En réponse au journal PyParis 2018, c'était bien!. Évalué à 1.

    Merci pour la partage, je suis incapable de comprendre correctement l'anglais oral, mais les fichiers pdf me suffisent.

    Autant j'utilise de temps en temps les annotations, autant je n'aime guère ce système d'annotations complexes qui rend le code python « moche », de plus cela implique d'importer des modules uniquement pour implémenter ces annotations complexes, parfois même le module root (aucun import de celui-ci dans l'application), alors pour ma part j'en reste aux annotations simples avec les types de bases, et quand le type n'est pas connu dans un module, j'utilise simplement object. En revanche les docstrings de mes classes, méthodes, fonctions renseignent bien à quoi correspondent les paramètres à fournir, sans doute pas suffisant pour les psychos_types_rigides, mais en regard de la philosophie de python, cela l'est bien assez.

    Si déjà tout le monde renseignait correctement les docstrings des applications qu'ils développent, on aura fait un grand pas.

  • [^] # Re: Firefox mon ami, mon amour, tu m'emmerdes

    Posté par  . En réponse à la dépêche Sortie de Firefox 59. Évalué à -1. Dernière modification le 22 mars 2018 à 12:45.

    Voilà, c'est un peu ce que je pense aussi, j'accepte aisément que certains ici apprécient sync, mais j'imagine qu'ici beaucoup bossent dans l'informatique donc sync peut leur apporter un gros plus, mais moi je n'ai pas besoin de ça, la capture d'écran, c'est pareil, oui ça peut éventuellement servir à quelques personnes, mais voilà on impose toutes ces options à tout le monde, et au final ça alourdi de plus en plus Firefox.

    Ce qui serait super, c'est que lors de l'installation, on propose ces options à installer sous formes d'extensions officielles (dispo dans l'installeur), chacun pourrait choisir ce qu'il désire en fonction de ses besoins propres.