Marc Quinton a écrit 1560 commentaires

  • [^] # Re: Et pour celui d’après ?

    Posté par  . En réponse au lien Debian 13 passe son horloge en 64 bits pour éviter le bug de l’an 2038. Évalué à 5 (+3/-0).

    très exactement, le 4 décembre 292 277 026 596 à 15:30:07 UTC. ; soit dans 292 milliards d’années.

  • [^] # Re: erreur sur le repos GIT

    Posté par  . En réponse au journal Quam Facere, un gestionnaire de procédure IT (Ré-écriture). Évalué à 2 (+0/-0).

    je vais essayer de te rejoindre !

  • [^] # Re: erreur sur le repos GIT

    Posté par  . En réponse au journal Quam Facere, un gestionnaire de procédure IT (Ré-écriture). Évalué à 2 (+0/-0).

    j'ai l'habitude de gérer mes containers docker avec docker-compose et un build intégré ; je te passerai le fruit de mon travail prochainement ; j'attends de voir supprimé le blob de 430Mo.

  • [^] # Re: erreur sur le repos GIT

    Posté par  . En réponse au journal Quam Facere, un gestionnaire de procédure IT (Ré-écriture). Évalué à 2 (+0/-0).

    il y a aussi Gitlab ou alors en auto-hébergement, Gitea.

  • # erreur sur le repos GIT

    Posté par  . En réponse au journal Quam Facere, un gestionnaire de procédure IT (Ré-écriture). Évalué à 5 (+3/-0).

    le code source est sur source-forge ; un git clone du dépot prend des plombes ; je trouvais cela assez étonnant.

    Avec un peu d'analyse du repos, on peut voir un commit de 430Mo qui correspond à l'image Docker.

    $ git-sizer
    Processing blobs: 177                        
    Processing trees: 103                        
    Processing commits: 37                        
    Matching commits to trees: 37                        
    Processing annotated tags: 0                        
    Processing references: 36                        
    | Name                         | Value     | Level of concern               |
    | ---------------------------- | --------- | ------------------------------ |
    | Biggest objects              |           |                                |
    | * Blobs                      |           |                                |
    |   * Maximum size         [1] |   430 MiB | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
    
    [1]  b699bafcd3346d8619e2853ca9090477ce82b496 (refs/replace/deea37a88c86714f1992b6559d78bc074837fe68:docker_images/qf-2025-0-1.tar.gz)
    
    $ git verify-pack -v .git/objects/pack/pack-*.idx \
      | sort -k3 -n -r \
      | head -n 10
    b699bafcd3346d8619e2853ca9090477ce82b496 blob   451288576 445611604 539073
    09b3ab35c7360729d2e54c164514ff6c1abc4917 blob   166434 161489 446212250
    f534d5ca22f24aa143d00fddba80261d2f657d67 blob   123233 123083 188119
    56d036704757fe6077f0cec8e668e96ef8c6a219 blob   104409 97184 44279
    5a95f2a41fc43a1e27bbb83084414fcf00502c81 blob   101580 93522 369740
    7fcfd544f431cb3b921ece7572f132b5038f6acc blob   77141 69931 463401
    3aa49e04b0afd9b32e66557c30056047b129530a blob   49166 15611 446189297
    6e805b81985975d1ce5d9ef9549adfbe1df50e0b blob   33294 6737 37542
    a6783d5a82a8a980ad346b41c0f4b41b494c4f93 blob   26364 6137 26826
    430e7a5d235ee05f08a5ffdf07a87d92e1a3ea3e blob   25203 10334 446175016

    J'ai essayé de supprimer le blog b699baf* ; je n'ai pas réussi ; pourtant il existe des techniques qui permettraient de faire disparaitre définitivement ce vilain blob.

    J'ai essayé ca :
    ```bash
    sudo apt install git-filter-repo

    git filter-repo --invert-paths --blob-callback '
    def callback(blob):
    if blob.id.hex == "dd94e5af9309bc288cb95d8cacc8aece49b39068":
    return True # remove it
    return False
    ' --force

    git reflog expire --expire=now --all
    git gc --prune=now --aggressive

    git filter-repo --path docker_mages/qf-2025-0-1.tar.gz --invert-paths --force
    ```

    concernant l'image docker, si elle existait sur le docker-hub, ca serait bien pratique. Je n'ai pas réussi a lancer l'application avec les 2 commandes proposées ci-dessus.

    Il serait bien plus pratique de collaborer sur un site de gestion de code source plus habituel ; source-forge, ca me défrise quelque peu.

  • [^] # Re: Formulation formelle

    Posté par  . En réponse au message programme et algo de tri . Évalué à 6 (+4/-0). Dernière modification le 21 juin 2025 à 17:19.

    open-source constraints solver ?
    - https://www.minizinc.org/
    - https://choco-solver.org/

    il y a fort longtemps, j'avais expérimenté avec "Turbo-Prolog" ; tu donnais des indications sur un input et un résultat attendu ; ensuite le logiciel se débrouillait pour trouver une solution.

  • [^] # Re: droit à l'oubli

    Posté par  . En réponse au journal [HS] Récupérer un accès sur le site chez.com. Évalué à 5 (+3/-0). Dernière modification le 25 mai 2025 à 08:14.

    et voici les conditions légales d'accès au service. Par curiosité je suis en train de me créer un nouveau compte. J'ai aussi vu des informations me concernant. Dernière modification des CGU: 2008 ; merci CURL.

  • # droit à l'oubli

    Posté par  . En réponse au journal [HS] Récupérer un accès sur le site chez.com. Évalué à 10 (+8/-0).

    tout d'abord, il est clair que le site chez.com est bien hébergé par la société Free.fr ; L'information est explicitement indiquée sur la page d'accueil du service ; l'adresse IP du service le confirme techniquement.

    Quand on voit l'état du service, avec le support de PHP5, ca fait peur. On peut avoir le sentiment que ce service est orphelin et que personne ou presque s'en occupe de manière satisfaisante au sein de la société. Quel stagiaire voudrait le faire, parce qu'il s'agit d'un service gratuit.

    Il n'en reste pas moins que l'exploitant est soumis au droit à l'oubli. Sur la page informations légales, on peut trouver plusieurs sources d'information dont le rapport de transparence ainsi que la politique de confidentialité des données.

    Dans un premier temps, tu peux t'adresser au DPO (dpo@iliad.fr), page 9 sur le second document. Dans le rapport de transparence, page 7, il est fait état d'une catégorie 3c : droit à l'oubli qui me semble tout a fait correspondre a ce que tu recherches. Il y a aussi un point de contact indiqué dans le document page 2.

    Sans réponse satisfaisante de la part de l'hébergeur, tu pourras par la suite contacter la CNIL.

  • [^] # les .gouv.fr

    Posté par  . En réponse au lien Une carte des providers de mail utilisés par les municipalités d'Europe. Évalué à 2.

    et les *.gouv.fr ; ca serait intéressant de voir les mêmes stats pour tous les sites gouvernementaux.

  • # unicast vs broadcast

    Posté par  . En réponse au message Répéteur Wifi qui refuse de fournir une adresse IPv4 par DHCP. Évalué à 4.

    il n'est pas exclu :

    • que le protocole DHCP utilise le broadcast ou l'unicast en fonction du serveur, mais aussi du client
    • cela pourrait être la raison qui ferait la différence, en particulier sur le bridge wifi (répéteur) ne fait pas transiter l'un des 2 (broadcast vs unicast).

    tu peux essayer sur PC Linux, la commande DHCP suivante : dhclient -v "interface"

    • -v active le mode verbose,
    • interface : interface réseau ; tu peux les lister avec nmcli device status
  • [^] # Re: Du choix d'un NAS

    Posté par  . En réponse au lien Sauvegarder ses données vers un NAS Synology avec BorgBackup. Évalué à 4.

    j'ai un NAS HP Prolient, avec 4 baies de disques, un processeur Intel ; l'ensemble consomme 50W ; à l'année, ça fait pas mal de Kwh que je compense totalement avec mes panneaux photovoltaïques (3Kw de puissance crête, 3500Kwh à l'année).

    J'aurais préféré avec une conso de l'ordre des 25W, mais je m'en satisfais. En contrepartie, je fais tourner un peu moins le lave-vaisselle et le lave linge.

  • # restore pinned tabs (onglets épinglés)

    Posté par  . En réponse au journal Recupérer la liste des onglets ouverts sur Firefox. Évalué à 4.

    je viens de perdre tous les onglets épinglés, suite à l'ouverture d'une (ou plusieurs) fenetre de navigation privée et sans les refermer, avant de clore la fenêtre principale.

    Voici comment réouvrir les onglets épinglés, et j'en ai de très nombreux ; la méthode du raccourci clavier est excellente pour satisfaire ce besoin (vu dans les commentaires) : Ctrl+Shift+N.

  • # retours sur la qualité des services publics

    Posté par  . En réponse au journal qui a sérieusement réussi à créer facilement son identité numérique sur smartphone?. Évalué à 4.

    bonjour,

    tu peux regarder sur ce site et éventuellement envoyer tes propres commentaires ; j'en ai trouvé quelques-uns concernant l'identité numérique de la poste qui est d'ailleurs complémentaire de "France identité".

  • [^] # Re: Mon retour d'expérience

    Posté par  . En réponse au journal J'ai testé pour vous: un câble USB magnétique. Évalué à 4. Dernière modification le 17 février 2025 à 14:35.

    me concernant, aucun souci avec une marque lambda, achetée sur Xxxx-express. J'ai tout un jeu de câbles et d'adaptateurs. Ca fonctionne nominalement depuis environ 5 ans sur de nombreux appareil. Il est juste nécessaire d'enlever la crasse de temps à autre, qui empêche d'avoir un contact régulier.

  • # code source python reformaté

    Posté par  . En réponse au message Demande pour que mon code python aille 1 million de fois plus vite car j'ai au moins 4 millions de f. Évalué à 3. Dernière modification le 03 février 2025 à 07:52.

        # conversion/reformatage avec ...GPT.
        import os
        import pandas as pd
        from openpyxl import load_workbook
    
        # Définition des chemins
        dossier_source = "D:/PYTHON/VALEUR REMPLACER ZIP"
        fichier_rebase = "D:/PYTHON/REBASE.xlsx"
    
        # Chargement des valeurs de REBASE.xlsx
        wb_rebase = load_workbook(fichier_rebase, data_only=True)
        ws_rebase = wb_rebase.active
    
        # Extraction des valeurs des tableaux
        tableaux = {
            1: pd.DataFrame(
                ws_rebase.iter_rows(min_row=1, max_row=273, min_col=1, max_col=2, values_only=True),
                columns=["Clé", "Valeur"]
            ),
            2: pd.DataFrame(
                ws_rebase.iter_rows(min_row=1, max_row=273, min_col=4, max_col=5, values_only=True),
                columns=["Clé", "Valeur"]
            ),
            3: pd.DataFrame(
                ws_rebase.iter_rows(min_row=1, max_row=273, min_col=7, max_col=8, values_only=True),
                columns=["Clé", "Valeur"]
            ),
            4: pd.DataFrame(
                ws_rebase.iter_rows(min_row=1, max_row=273, min_col=10, max_col=11, values_only=True),
                columns=["Clé", "Valeur"]
            ),
        }
    
        # Traitement des fichiers dans le dossier source
        for fichier in os.listdir(dossier_source):
            if fichier.endswith(".xlsx"):
                chemin_fichier = os.path.join(dossier_source, fichier)
    
                # Charger le fichier Excel
                wb = load_workbook(chemin_fichier)
                ws = wb.active
    
                # Identifier la dernière ligne contenant des données (entre 1 et 19)
                last_data_row = max(
                    [i for i in range(1, 20) if any(ws.cell(row=i, column=j).value for j in range(2, ws.max_column + 1))],
                    default=1
                )
    
                # Étape 1 : Remplacement avec le Tableau 1
                ligne_depart = 21
                if any(ws.cell(row=21, column=j).value for j in range(2, ws.max_column + 1)):
                    ligne_depart = max(
                        [i for i in range(21, ws.max_row + 1) if any(ws.cell(row=i, column=j).value for j in range(2, ws.max_column + 1))],
                        default=20
                    ) + 2
    
                ligne_debut_bloc_1 = ligne_depart
    
                # Ajout des valeurs du Tableau 1
                for col in range(2, ws.max_column + 1):
                    for row in range(1, last_data_row + 1):
                        valeur_originale = ws.cell(row=row, column=col).value
                        if valeur_originale:
                            valeur_remplacee = tableaux[1].loc[tableaux[1]["Clé"] == valeur_originale, "Valeur"]
                            if not valeur_remplacee.empty:
                                ws.cell(row=ligne_depart + row - 1, column=col, value=valeur_remplacee.values[0])
    
                # Calcul de la somme du Tableau 1
                ligne_somme_1 = ligne_depart + last_data_row + 1
                somme_bloc_1 = [
                    sum(ws.cell(row=row, column=col).value or 0 for row in range(ligne_debut_bloc_1, ligne_somme_1) if isinstance(ws.cell(row=row, column=col).value, (int, float)))
                    for col in range(2, ws.max_column + 1)
                ]
    
                # Suppression du bloc 1 et insertion des sommes à la ligne 21
                ws.delete_rows(ligne_debut_bloc_1, ligne_somme_1 - ligne_debut_bloc_1)
                ws.insert_rows(21)
                for col_idx, somme in enumerate(somme_bloc_1, start=2):
                    ws.cell(row=21, column=col_idx, value=somme)
    
                # Étape 4 : Remplacement avec le Tableau 4
                ligne_depart = max(
                    [i for i in range(21, ws.max_row + 1) if any(ws.cell(row=i, column=j).value for j in range(2, ws.max_column + 1))],
                    default=20
                ) + 2
    
                ligne_debut_bloc_4 = ligne_depart
    
                # Ajout des valeurs du Tableau 4
                for col in range(2, ws.max_column + 1):
                    for row in range(1, last_data_row + 1):
                        valeur_originale = ws.cell(row=row, column=col).value
                        if valeur_originale:
                            valeur_remplacee = tableaux[4].loc[tableaux[4]["Clé"] == valeur_originale, "Valeur"]
                            if not valeur_remplacee.empty:
                                ws.cell(row=ligne_depart + row - 1, column=col, value=valeur_remplacee.values[0])
    
                # Calcul de la somme du Tableau 4
                ligne_somme_4 = ligne_depart + last_data_row + 1
                somme_bloc_4 = [
                    sum(ws.cell(row=row, column=col).value or 0 for row in range(ligne_debut_bloc_4, ligne_somme_4) if isinstance(ws.cell(row=row, column=col).value, (int, float)))
                    for col in range(2, ws.max_column + 1)
                ]
    
                # Suppression du bloc 4 et insertion des sommes à la ligne 24
                ws.delete_rows(ligne_debut_bloc_4, ligne_somme_4 - ligne_debut_bloc_4)
                ws.insert_rows(24)
                for col_idx, somme in enumerate(somme_bloc_4, start=2):
                    ws.cell(row=24, column=col_idx, value=somme)
    
                # Sauvegarde du fichier modifié
                wb.save(chemin_fichier)
                print(f"✅ {fichier} mis à jour avec succès.")
    
        print("✔ Tous les fichiers ont été traités correctement.")
  • # snap connect|hardware-observe

    Posté par  . En réponse au journal Le père Noël, Ubuntu, Chrome et le robot Edison sont sur un traîneau.... Évalué à 10. Dernière modification le 27 janvier 2025 à 07:55.

    Les 2 commandes magiques, sans que je n'ai pu les tester sont sans doute :

    snap connect firefox:hardware-observe
    snap connect firefox:raw-usb
  • [^] # Re: Tout en 1 == Soucis

    Posté par  . En réponse au message imprimante avec scanner pas chère et compatible. Évalué à 2. Dernière modification le 24 décembre 2024 à 15:07.

    pareil, depuis que j'ai une HP Smart Tank (555), je n'ai plus aucun souci d'exploitation ; ca me change des 2 ou 3 autres imprimantes Epson dont le fonctionnement était totalement similaire à la description ci-dessus.

    Ma dernière imprimante a 1 ans et fonctionne bien ; les recharges d'encre se font en gros volume ; je n'ai pas d'indicateur de niveau d'encre sur l'ordinateur ; elle est bien visible en face par le biais d'un dispositif transparent. Les 2 têtes d'impression peuvent être changées sans avoir à regarder un tuto Youtube de 30mn.

    Pour l'instant RAS au niveau matériel ; c'est un peu plus modulé au niveau fonctionnement :
    - Simplescan ne fonctionne bien qu'en "LANG=C" ; surprenant, j'ai vu une issue a ce sujet,
    - Evince, la visionneuse PDF envoie une feuille blanche en fin d'impression.

    Rien de bien bloquant. Je l'ai eu a 150€ ; elle vaut actuellement 250 ; je me demande pourquoi.

  • [^] # Re: L'API c'est mieux à la maison

    Posté par  . En réponse au journal La métropole de Lyon arrête son instance CozyCloud. Et Ecolyo ?. Évalué à 3.

    sur toulouse aussi ; j'avais regardé rapidement concernant le compteur eau qui envoie seulement une fois pas jour les datas ; j'en avais conclu qu'il y avait un chiffrement, mais je n'ai pas la source exacte.

    J'avais une clé TNT pour le décodage des trames et pas grand chose d'autre et surtout un manque de temps.

    Sans chiffrement, tu peux décoder le compteur d'eau de tes voisins ; c'est amusant.

  • [^] # Re: Compromis

    Posté par  . En réponse au lien Fuites de données : les hackers peuvent-ils utiliser votre IBAN pour régler leurs achats ?. Évalué à 8.

    j'attends de ma banque à minima, une notification par mail, lorsqu'un nouveau tiers se présente avec mon IBAN et que la banque autorise un prélèvement ; ca m'évitera de faire du polling sur mon compte à longueur d'année.

    Je viens tout juste d'autoriser une mutuelle à prélever ce qu'elle doit, conformément au contrat que nous avons signé. Le premier prélèvement a bien eu lieu. Mais je n'ai pas eu de notification. Dans la mesure ou j'ai bien émis une autorisation de prélèvement ca me semble logique. Le seul document que j'ai transmis a ma mutuelle est un document électronique par mail.

    Je ne vois pas en quoi, cette procédure est réputée comme fiabilisée. Pour peu que ma signature soit aussi parmi les données volées, mon compte est ouvert à qui en voudra ! allez-y, à votre bon coeur, servez-vous, c'est openbar.

  • # digital photo frame server

    Posté par  . En réponse au message Équivalent Frameo / cadre photo connecté ?. Évalué à 2.

    on peut trouver des infos avec ces mots-clés, dont : https://www.reddit.com/r/selfhosted/comments/1c4cmw7/smart_photo_frame/

  • [^] # Re: HP555

    Posté par  . En réponse au message Imprimante jet d’encre de type « tank » laquelle choisir ?. Évalué à 2.

  • [^] # Re: HP555

    Posté par  . En réponse au message Imprimante jet d’encre de type « tank » laquelle choisir ?. Évalué à 2.

    si je lance simple-scan à la main, en langue anglaise, ca marche ! le scanner USB est bien détecté. Il existe un mode debug permettant à simple-scan de donner plus de détails. Je n'ai pas trop le temps maintenant d'y regarder.

    $ export LANG=C
    $ simple-scan

  • [^] # Re: HP555

    Posté par  . En réponse au message Imprimante jet d’encre de type « tank » laquelle choisir ?. Évalué à 2.

    je l'utilise en USB et Wifi avec plus ou moins de succès avec Debian, bookworm. Je refais un test du scan USB pour voir l'erreur (avec simple-scan) : "bac d'alimentation vide" ; y'a pas de bac, aussi, je suis un peu sec.

    voici ce que donne un scanimage -l

    $ scanimage -L
    device hpaio:/usb/Smart_Tank_Plus_550_series?serial=CN34E5418Q' is a Hewlett-Packard Smart_Tank_Plus_550_series all-in-one
    device
    hpaio:/net/Smart_Tank_Plus_550_series?ip=192.168.0.124' is a Hewlett-Packard Smart_Tank_Plus_550_series all-in-one
    device `airscan:e0:HP555 (USB)' is a eSCL HP555 (USB) ip=127.0.0.1

    $ lsusb | grep HP
    Bus 001 Device 033: ID 03f0:1a54 HP, Inc Smart Tank Plus 550 series

  • # HP555

    Posté par  . En réponse au message Imprimante jet d’encre de type « tank » laquelle choisir ?. Évalué à 4.

    bonjour,

    j'ai une HP555 depuis environ 1 an ; ça fonctionne assez bien ; j'ai oublié d'avoir a contrôler les cartouches qui étaient soi-disant vides alors que ce n'était pas le cas. Ou alors le risque d'avoir une cartouche vide et une tête qui s'assèche ; quel bonheur. Bye bye Epson. Les consommables sont assez bon marché, et par la suite, il peut être envisagé, si pas trop exigeant, de finir l'imprimante avec de l'encre compatible ; souvent la tenue aux UV est moins bonne.

    Cerise sur le gâteau, les têtes d'impression HP se changent facilement et ne sont pas trop onéreuses. Cela signifie que l'imprimante pourrait durer 5 à 10 ans sans grosses difficultés d'exploitation.

    Question pilote, c'est un peu moyen. J'ai du reconfigurer une fois l'interface réseau (wifi) qui semblait avoir disparu de la conf de l'imprimante. J'ai parfois des pages blanches qui sortent en fin d'impression sans comprendre d'ou elles viennent ; je ne sais pas très bien si on peut récupérer des logs quelque part.

    En connexion USB, j'ai une erreur sur la fonction scan, mais ca passe assez bien en réseau.

    Elle m'a couté =~ 150€ l'année passée, achetée en hypermarché, de mémoire.

    Résumé : Ecotank + têtes interchangeables chez HP, c'est un bon deal. Question pilote, peut mieux faire, mais c'est pas un drame.

  • [^] # Re: LVM etc.

    Posté par  . En réponse au journal Une méthode inefficace pour remplacer un disque dur. Évalué à 6.

    très certainement un pvresize aurait fait l'affaire dans le cas présent. Effectivement, Archwiki est top et assez facilement transposable sur d'autres distributions linux.