_kaos_ a écrit 2344 commentaires

  • [^] # Re: bah…

    Posté par  . En réponse au message Gestionnaire de fichier / File manager. Évalué à 4.

    Salut,

    Tu voudrais pas que les touches + et - soient des raccourcis, aussi, hein ?

    Voir que * plie/déplie tout selon l'état courant ?

    Ça serait trop facile !

    Matricule 23415

  • [^] # Re: azerty/qwerty

    Posté par  . En réponse au journal Allez, il fallait bien que ça arrive. Évalué à 7.

    Salut,

    Moi j'ai ajouté tous les keymaps !

    Et effectivement, le mot de passe est devenu rigoureusement simple. Bonus, il n'est dans aucun dictionnaire, garanti.

    Pendant le calcul des combinaisons possibles pour trouver le mot de passe final à utiliser, j'ai démontré de mon côté que P ≈ NP et chiffré la démonstration avec un fichier daté pour prouver sa précédence.

    Ce qui est dommage, c'est que j'ai utilisé un ancien mot de passe à ce moment, supprimé depuis puisque devenu inutile…

    Matricule 23415

  • # Pas à pas

    Posté par  . En réponse au message Mise à jour Ubuntu 16.04 vers 20.04 . Évalué à 3.

    Salut,

    pour plusieurs raisons mais ne parviens pas à le mettre à jour

    Peux-tu préciser ? Il y a un message d'erreur par exemple ?

    Il est bien indispensable de passer par le bios pour le faire?

    Non, juste de démarrer sur linux et suivre les procédures de mises à jour (voir plus bas).

    Faut-il refaire le partitionnement de mon disque?

    Non plus, les mises à jour vont conserver le partitionnement¹

    (Oui, malheureusement mes deux systèmes d'exploitation sont sur le même)

    C'est assez classique, pas d'inquiétude.

    Pour en revenir à la mise à jour, passer de 16.04 à 20.04 d'un coup, c'est peut-être un saut de version trop grand. Comme ce sont deux versions LTS (choix compréhensible si tu en as peu l'usage), je te conseille de passer par la version intermédiaire LTS entre les deux, soit la 18.04, ce qui donne :

    Note préalable : Penser à faire une sauvegarde de ses données (windows et linux) avant au cas où, sait-on jamais…

    1. Mise à jour de 16.04 vers 18.04
    2. Mise à jour de 18.04 vers 20.04

    Ça devrait mieux passer.

    Si non, il nous faut plus de précisions.


    ¹: il peut y avoir de "petits" gags, comme une partition /boot trop petite, mais c'est rare à priori

    Matricule 23415

  • [^] # Re: 2/3 idées

    Posté par  . En réponse au message [RESOLU] [NOOB INSIDE] CONCATENER DES FICHIERS. Évalué à 3. Dernière modification le 08 avril 2021 à 06:25.

    Salut,

    Pas de problème avec un os.listdir, on ne liste que les fichiers présents, donc on peut construire le dictionnaire à la volée sans os.exists ou if, en n'imposant pas de contraintes de bornes inférieures/supérieures (dans la limite du raisonnable :p). Tout facile sans avoir recours à des méthodes avancées "compliquées".

    Et en ce qui concerne les débutants, j'éviterai justement de leur parler dès le début de notions avancées. Tu aurais aimé qu'on te parle de lamdbas dès ton premier cours d'informatique ? Mais ce n'est que mon avis. ;)

    PS : note qu'avec ton glob plus haut, tu fais exactement ça :p

    Matricule 23415

  • [^] # Re: 2/3 idées

    Posté par  . En réponse au message [RESOLU] [NOOB INSIDE] CONCATENER DES FICHIERS. Évalué à 2. Dernière modification le 07 avril 2021 à 13:42.

    Salut,

    Peut-être pourrais-tu utiliser filter pour moins te prendre la tête avec les indices et les chiffres dans tous les sens

    C'est pas super-complexifier la chose ?

    Le dictionnaire peut être construit à la volée, sans nécessité de le maintenir "manuellement", dans une première passe qui "prépare" les listes de numéros dans l'ordre souhaité par année, puis une seconde boucle fait le boulot de concaténation. Pas besoin de filter ;)

    Matricule 23415

  • [^] # Re: Difficulté ?

    Posté par  . En réponse au message [RESOLU] [NOOB INSIDE] CONCATENER DES FICHIERS. Évalué à 3. Dernière modification le 07 avril 2021 à 07:44.

    Salut,

    C'est le cas le plus simple.

    Vu le code proposé plus haut, le problème est (un peu) pris à l'envers si tu veux tout faire en une passe, car tu ne sauras jamais à l'avance la fin du nom de fichier, donc il faut passer par un fichier temporaire. Sinon, en deux passes sur les noms, ça se fait aussi, et vu la taille des données à stocker (une liste d'entiers), c'est kif-kif, et là, plus besoin du fichier temporaire.

    Matricule 23415

  • # Difficulté ?

    Posté par  . En réponse au message [RESOLU] [NOOB INSIDE] CONCATENER DES FICHIERS. Évalué à 2.

    Salut,

    je cherche à faire un truc en apparence simple

    Je ne vois pas où tu bloque, même s'il y a des "trous" ou s'il fallait conserver un ordre.

    Un début de code aiderait à mieux comprendre ce qui pose problème.

    Que doit retourner : fic1 fic3 fic4 fic5 fic7 fic9 fic10 ?

    Plutôt :

    • fic1-10
    • fic1,3-5,7,9-10
    • fic1-1,3-5,7-7,9-10
    • autre ?

    Matricule 23415

  • [^] # Re: Belle initiative !

    Posté par  . En réponse au journal Une norme pour les logiciels respectueux de la vie privée ?. Évalué à 2.

    Salut,

    Se pose aussi le problème de quand. A chaque release majeure ? mineure ? commit ?

    Matricule 23415

  • [^] # Re: Revenons aux rouleaux

    Posté par  . En réponse au journal De l'affichage des documents. Évalué à 4.

    Salut,

    Autre avantage : si les pages n'étaient pas numérotées et que par mégarde le document tombait, tout restait dans l'ordre (héritage de mauvaises expériences avec des lots de cartes perforées pas numérotées ?)

    Matricule 23415

  • [^] # Re: concernant le PDF

    Posté par  . En réponse au journal De l'affichage des documents. Évalué à 2.

    Salut,

    Et jusqu'à du son en mode "embeded" (pour de la vidéo, j'ai cherché, mais pas longtemps, et pas trouvé ce que je souhaitais) ;)

    Matricule 23415

  • [^] # Re: Premier attachement

    Posté par  . En réponse au message Problème envoi en html avec logo en entête. Évalué à 2.

    J'ai pris un mail en html au pif, il y en a un peu plus :

    <p align=center>
      <font style="font-family: Verdana, Arial; font-size: 10px">
      Si vous avez des difficultés pour visualiser ce message,
      <a href="http://neomarket.diffusion.site-obfusqué.fr/r/?id=4b56,10945,10946&p1=%40ml2iu%2Bx4%2BqPDafQgLo3F8LwKi3E%3D" _label="Page miroir" _type="mirrorPage">cliquez ici</a>
      </font>
    </p>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Titre bidon</title>
    <style>
    html {
      font-family: Arial, Helvetica, sans-serif;
    }
    
    .body-wrap {
       width: 100%;
       height: 100%;
    }
    
    .container {
      max-width: 640px;
    }
    
    .margin-top-10 {
      margin-top: 10px;
    }
    
    .margin-top-20 {
      margin-top: 20px;
    }
    
    .margin-top-30 {
      margin-top: 30px;
    }
    
    .margin-top-40 {
      margin-top: 40px;
    }
    
    .email-cadre-footer {
      color: #666666;
      font-size: 12px;
    }
    </style>
    </head>
    <body>
    
     <img src="https://www.site-obfusqué.fr/info?xa=604259&xt=5087&type=email " />
    
      <!-- Ici du html -->
    
    </body>
    </html><img height='0' width='0' alt='' src='http://neomarket.diffusion.site-obfusqué.fr/r/?id=hf5f4b56,1094cbd5,1'/>

    Je t'ai même laissé un exemple de traceur ;)

    Matricule 23415

  • [^] # Re: Premier attachement

    Posté par  . En réponse au message Problème envoi en html avec logo en entête. Évalué à 2.

    Ah oups, évidemment, avec les balises mangées, je voyais moins bien le html…

    Merci pour le formatage ;)

    Matricule 23415

  • # Premier attachement

    Posté par  . En réponse au message Problème envoi en html avec logo en entête. Évalué à 3.

    Salut,

    Ton premier attachement est du texte brut, pas du html. Il n'y a donc aucune raison que l'image soit "inline", comme indiqué par le sujet du mail.

    Ceci étant, cela n'explique pas le doublon, sauf si gmail, ne voyant pas de html affiche deux fois le corps du message, une fois en texte (donc le texte et une image en bas) et une fois en html (pas de texte puisque pas et html, mais encore une fois une image en bas).

    Simple supposition.

    Matricule 23415

  • [^] # Re: Instantané à tout instant est partout

    Posté par  . En réponse au journal À propos du succès des messageries instantanées.. Évalué à 3. Dernière modification le 01 avril 2021 à 19:11.

    Salut,

    Une autre fonctionnalité à laquelle j'ai trouvé un intérêt, c'est la possibilité d'envoyer des notifications à date programmée sur un canal donné. Par exemple, tous les lundis matin à 10h50, un petit rappel sur le canal de l'équipe X que la réunion de la semaine commence dans 10 minutes.

    Sûr, un mail via cron, ça marche aussi, mais il faut maintenir la liste des destinataires à jour par exemple, et s'il y a des "ponts" entre équipes, ça peut vite devenir lourd. Avec ce genre de messagerie, si une personne de l'équipe Y doit travailler avec l'équipe X, il a juste a rejoindre le canal et hop, magie ! Il est au courant comme tous les autres ;) Et une fois que c'est fait, il peut sortir et ne plus être averti vu que ça ne le concerne plus.

    Matricule 23415

  • [^] # Re: Effet de mode?

    Posté par  . En réponse au journal À propos du succès des messageries instantanées.. Évalué à 10.

    Salut,

    Si t'as pas connu caramail, t'as raté ta vie ;)

    Matricule 23415

  • [^] # Re: Passeport sanitaire

    Posté par  . En réponse à la dépêche Mise en place du port du masque avec QrCode d'identification. Évalué à 2.

    Salut,

    Aucun problème pour être à 6 en respectant les mesures dans des sanitaires, y'a zoom pour ça !

    Matricule 23415

  • # Bonne optique

    Posté par  . En réponse au journal Sortie de C++ 2000. Évalué à 2. Dernière modification le 01 avril 2021 à 14:11.

    Salut,

    C'est bien qu'ils passent au mode Release early, release often. Ça fait un peu d'imprévu.

    Matricule 23415

  • [^] # Re: Ça veut dire quoi ?

    Posté par  . En réponse au message Python: Return value not found in function. Évalué à 2.

    Plutôt pas, j'ai l'impression, sur le coup…

    Matricule 23415

  • [^] # Re: Ça veut dire quoi ?

    Posté par  . En réponse au message Python: Return value not found in function. Évalué à 2.

    Petit complément :

    Certes, tu n'as jamais écrit raise dans ton programme, mais il est écrit quelque part dans les appels que fait la fonction write, si ça peut t'aider à comprendre.

    Matricule 23415

  • [^] # Re: Ça veut dire quoi ?

    Posté par  . En réponse au message Python: Return value not found in function. Évalué à 2. Dernière modification le 01 avril 2021 à 12:24.

    Salut,

    Voici ma fonction j'ai mis les exception. Est-ce bon ?

    Malheureusement, pas vraiment :) Ce qui n'est pas grave en soi, il faut bien commencer par apprendre un jour avant d'être à l'aise.

    Pour lever une exception à un endroit donné, c'est le mot clef raise suivi de l'exception à lever qu'il faut utiliser. Ici, le bloc tryexcept … bloque la propagation à un niveau supérieur de l'exception IOError (et uniquement les exceptions de ce type, toutes les autres continuent de remonter la pile d'exécution). Je ne comprend pas l'intérêt du else.

    PS : je ne suis pas là pour dire ce qui est "bon" ou "mauvais" ;) juste conseiller ;)

    Matricule 23415

  • [^] # Re: Ça veut dire quoi ?

    Posté par  . En réponse au message Python: Return value not found in function. Évalué à 2. Dernière modification le 01 avril 2021 à 07:10.

    Salut,

    Lorsqu'il y a un début de code, même non fonctionnel, que les remarques semblent être prises en compte, ça motive pour aider ;)

    Revenons-en à la question : lever une exception et un retour de fonction sont deux choses très différentes… voir ici pour la notion d'exception. Un retour "remonte" à la fonction appelante, une levée d'exception "remonte" la pile d'appel jusqu'à arriver à un traitement (bloc tryexcept …) ou interrompt le programme s'il n'y a pas de traitement.

    J'en profite pour ajouter aussi un autre commentaire : en général, je loggue (surtout pour débugguer) à l'entrée et à la sortie d'une fonction. Là, vous ne logguez qu'à la sortie, donc difficile de bien savoir où on est lors d'un bug.

    PS : il existe des modules de logging tout faits en python, mais ça peut être un point abordé plus tard.

    Matricule 23415

  • [^] # Re: Moult remarques

    Posté par  . En réponse au message Python: Return value not found in function. Évalué à 3. Dernière modification le 31 mars 2021 à 07:53.

    Et encore même chose pour plus haut, je pense :

            for j in range(len(history)):
                if (message["email"] in history[j]):
                    if history[j][2] == "no": # Question and then customer_id
                        questions_2 = eval(history[j][3].replace("$",","))
                        if order_info != {}:
                            response, answer_id = detect_response(shop,questions_2,order_info,message,history)
                            history[j][2] = order_info["customer_id"]
    
                        elif "not_customer" in questions and "status" in questions_2:
                            question_2 = ["status","not_customer"]
                            order_info_2 = {"status":"none","time":400,"order_time":400}
                            response, answer_id = detect_response(shop,questions_2,order_info_2,message,history)
    
                        else:
                            response = "/ALERT I could not find info on this customer"
                            answer_id = "s9"
    
                    elif order_info != {}:
                        response, answer_id = detect_response(shop,questions,order_info,message,history)
                    else:
                        response = "/ALERT I could not find info on this customer"
                        answer_id = "s9"
    
                    answer_ids = list(eval(history[j][4].replace("$",",")))
                    if answer_id not in answer_ids:
                        answer_ids.append(answer_id)
                    else:
                        return "/ALERT This customer often asks me the same question", "/ALERT"
                    history[j][4] = str(answer_ids)
                    lst = []  #rebuild the file content
                    for lst3 in history:
                        lst.append(",".join(lst3))
                    cont = "\n".join(lst)
                    file = open("shops/{}/history.csv".format(shop),"w")
                    file.write(cont)
                    file.close()
                    return response, answer_id

    peut devenir :

            for j in range(len(history)):
                if (message["email"] in history[j]):
                    return handle_email(X, Y, Z) # toujours pareil...

    Ce qui donne la fonction :

       def build_answer(shop,order_info,message,questions,history,is_buffalo):
    
            questions_2 = ["info_not_found","none"]
            history_line = None
    
            for j in range(len(history)):
                if (message["email"] in history[j]):
                    return handle_email(X, Y, Z) # toujours pareil...
    
            response, answer_id, info = prepare_response(paramA, paramB) # ajuster les params
    
            # Build the file content
            log_response(param1, param2) # mettre les paramètres nécessaires
            return response, answer_id

    Un peu plus clair, non ?

    Note : prendre aussi en compte les remarques précédentes

    Note 2 : les opérations de log peuvent être factorisées également… toujours même raison.

    Matricule 23415

  • [^] # Re: Moult remarques

    Posté par  . En réponse au message Python: Return value not found in function. Évalué à 3.

    Et idem pour le code au dessus :

            if order_info != {}:
                response, answer_id = detect_response(shop,questions,order_info,message,history)
                info = order_info["customer_id"]
    
            else:
                order_info_2 = {"status":"none","time":400,"order_time":400}
                response, answer_id = detect_response(shop,questions_2,order_info_2,message,history)
                info = "no"

    peut devenir simplement :

            response, answer_id, info = prepare_response(paramA, paramB) # ajuster les params

    Matricule 23415

  • [^] # Re: Moult remarques

    Posté par  . En réponse au message Python: Return value not found in function. Évalué à 3.

    Salut, moi,

    D'ailleurs, c'est pas ça (trop tard pour éditer), ça serait plutôt :

            # Build the file content
            answer_ids = []
            answer_ids.append(answer_id)
            log_response(param1, param2) # mettre les paramètres nécessaires
            return response, answer_id

    D'où l'importance de ne pas faire de pavés…

    Matricule 23415

  • [^] # Re: Moult remarques

    Posté par  . En réponse au message Python: Return value not found in function. Évalué à 2. Dernière modification le 31 mars 2021 à 07:27.

    Salut,

    Et on retrouve la tendance à faire de longs pavés ;)

    Par exemple, tout ce qui est en dessous de :

            # Build the file content
            [...]
            return response, answer_id

    peut être isolé dans une fonction il me semble pour avoir :

            # Build the file content
            log_response(param1, param2) # mettre les paramètres nécessaires
            return response, answer_id

    Matricule 23415