liberforce a écrit 4730 commentaires

  • [^] # Re: Interprétation

    Posté par  (site web personnel) . En réponse au lien WinSCP, l'outil idéal pour remplacer Vim. Évalué à 4.

    Ah, j'oubliais dans les commentaires le:

    C’est juste inutile et stupide d’apprendre vi.

    Euh, non.

    Et pour la peine je colle quelques liens de ressources pour ceux qui sont aussi stupides que moi:

    Une cheat sheet:

    Titre de l'image

    Et je conseille surtout la lecture de Practical Vim.

  • [^] # Re: Interprétation

    Posté par  (site web personnel) . En réponse au lien WinSCP, l'outil idéal pour remplacer Vim. Évalué à 10. Dernière modification le 04 septembre 2018 à 12:22.

    Effectivement, tu ne dis pas que ce sont des cons.

    Nous avions surtout en commun d’avoir une profonde détestation pour la complexité inutile de l’éditeur vi, ainsi que pour ces enseignants sadiques qui se pensaient faire partie d’une élite de pacotille du fait de leur maîtrise des raccourcis de ce logiciel archaïque. Ce sentiment d’être au-dessus du lot qui animait les vieux chnoques du monde UNIX s’est aujourd’hui très largement répandu à de jeunes chnoques tyranniques qui aiment à imposer aux autres leur propre habitus numérique. Pour justifier de leur impéritie, ils nous expliquent alors que vim est plus ergonomique que vi , tout en passant des heures à faire leur Jacky Tuning en optimisant leur fichier .vimrc. Quel contre-sens historique !!!

    Je dois faire partie de ces ignorants vu que je ne connaissais pas le mot impéritie. Au passage, je me suis vraiment mis à vim après des années d'utilisation très modeste, et j'en suis très content.

  • # Linux Is Not UniX

    Posté par  (site web personnel) . En réponse au lien WinSCP, l'outil idéal pour remplacer Vim. Évalué à 9.

    Au cas où certains d’entre vous l’auraient oublié, LINUX signifie Linux Is Not UniX.

    Alors j'aimerais bien savoir d'où tu tiens ça… GNU's Not UNIX, ok, mais ce n'est pas la même origine pour Linux. L'explication la plus généralement donnée est plutôt "Linus's UNIX" (l'UNIX de Linus) et non Linux Is Not UniX.

    Et oui, franchement, le texte est très premier degré, si tu as voulu être ironique, c'est plutôt raté.

  • [^] # Re: quinte

    Posté par  (site web personnel) . En réponse au message POKER :determiner si une main est une couleur ou non. Évalué à 3. Dernière modification le 03 septembre 2018 à 12:15.

    >>> main = [(11, 'K'), (8, 'T'), (9, 'P'), (10, 'T'), (7, 'C')]
    >>> b = sorted(main)
    >>> b
    [(7, 'C'), (8, 'T'), (9, 'P'), (10, 'T'), (11, 'K')]
    >>> del b['C']
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: list indices must be integers, not str

    Lis les messages d'erreur, ils sont là te guider. Apprends aussi à décrire ton problème au lien de dire "ça ne marche pas". Bien souvent, mieux formuler ton problème te permettra de le comprendre et souvent de trouver la solution par toi même.

    Bon, revenons à nos moutons. Tu as donc dû avoir ce message d'erreur:

    TypeError: list indices must be integers, not str

    Traduction:

    Erreur de type: les index de listes doivent être des entiers, et pas des chaînes de caractères.

    C'est parce que dans une liste, les éléments sont ordonnés et accessibles par indice (leur position dans la liste): indice → valeur. Tu peux donc accéder à b[0], mais pas à b['C'].

    Exemple: effacer le 3ème élément d'une liste

    >>> my_list = [1, 2, 3, 4]
    >>> my_list
    [1, 2, 3, 4]
    >>> del my_list[2]
    >>> my_list
    [1, 2, 4]

    Les indices commencent à 0, donc le 1 se trouve à l'indice 0, le 2 se trouve à l'indice 1, le 3 se trouve à l'indice 2, et le 4 se trouve à l'indice 3. En demandant d'effacer l'élément à l'indice 2 avec del my_list[2], tu supprimes donc la valeur 3 de la liste.

    En revanche, dans un tableau associatif, les éléments ne sont pas ordonnés (l'ordre n'est pas conservé), et sont accessibles par une clé. La clé peut être du type que tu veux, et te permet d'accéder à la valeur associée: clé → valeur.

    Exemple ici avec un tableau associatif utilisant une chaîne de caractères comme clé. Voici comment supprimer la valeur 'coeur' du tableau.

    >>> couleur = {'C': 'coeur', 'K': 'carreau', 'T': 'trèfle', 'P': 'pique'}
    >>> couleur
    {'K': 'carreau', 'T': 'trèfle', 'C': 'coeur', 'P': 'pique'}
    >>> del couleur['C']
    >>> couleur
    {'K': 'carreau', 'T': 'trèfle', 'P': 'pique'}

    Revenons à ton problème. Ce que tu veux faire toi, c'est supprimer la couleur pour chaque carte de la main triée b. del b[0] ne fonctionnera pas, parce que b est une main, pas une carte. del b[0] supprimerait juste la première carte de la main triée.

    Je te conseille aussi avant d'aller plus loin de lire des tutoriels python, parce tu ne maîtrises pas les types de base du langage (listes, chaînes, tuples tableaux associatifs, etc.), ce qui te limite forcément. Autre chose, si tu veux voir les opérations possibles sur un objet, fais utilise la commande help. help(b) ou help(list) (puisque b est de type list) te donnera la liste des méthodes de b.
    https://docs.python.org/fr/3.5/tutorial/introduction.html

  • [^] # Re: quinte

    Posté par  (site web personnel) . En réponse au message POKER :determiner si une main est une couleur ou non. Évalué à 2. Dernière modification le 31 août 2018 à 18:41.

    Une nouvelle fois, utilise les options de formattage de code quand tu postes, l'indentation est importante !!!

    Bon je ré-explique, l'opérateur in renvoie un booléen (donc True ou False). Du coup ceci n'est pas du tout nécessaire:

    if (b in a)==True:
        return 1
    else :
        return 0

    Tu peux remplacer tout ce bloc par:

    return b in a

    Bon, ensuite, il semble que tu appelles:

    estQUINTE(['7 K', '8 T', '9 P', '10 T', '11 C'])

    Donc quand tu es dans estQUINTE, ton paramètre main vaut ['7 K', '8 T', '9 P', '10 T', '11 C'].
    Les crochets définissent une liste. Si je tape dans un interpréteur python:

    >>> main = ['7 K', '8 T', '9 P', '10 T', '11 C']
    >>> type(main)
    <type 'list'>
    >>> type(main[0])
    <type 'str'>

    Il me dit que ton objet main est bien une liste, et que le premier élément main[0] est une chaîne de caractères (string).

    Si je continue:

    >>> b = sorted(main)
    >>> b
    ['10 T', '11 C', '7 K', '8 T', '9 P']

    Voilà, tu lui as demandé de trier ta main, il l'a triée… Mais pas comme tu souhaites. Il a fait du tri de chaines de caractères (c'est ce que tu lui donnes). Du coup, 11 C vient avant 7 K parce il compare lettre par lettre, et que le 1 est avant 7. Il ne peut pas comprendre que c'est le nombre 11, puisque tu lui passes une chaîne et pas un nombre.

    Maintenant si on séparait les deux information dans un tuple (valeur, couleur) comme j'avais proposé plus haut ? valeur est un entier, et couleur est un caractère parmi ['C', 'K', 'T', 'P'], comme tu fais actuellement.

    Là je mets une main dans le désordre (sinon c'est pas drôle)

    >>> main = [(11, 'K'), (8, 'T'), (9, 'P'), (10, 'T'), (7, 'C')]
    >>> b = sorted(main)
    >>> main
    [(11, 'K'), (8, 'T'), (9, 'P'), (10, 'T'), (7, 'C')]
    >>> b
    [(7, 'C'), (8, 'T'), (9, 'P'), (10, 'T'), (11, 'K')]

    Et voilà, la main a été triée d'après le premier champ du tuple: valeur. Maintenant ce qui va coincer c'est que tu ne peux pas comparer a et b directement. a ne contient que des valeurs, pas de couleurs. b contient valeurs et couleurs. Donc tu dois transformer b pour n'avoir que des valeurs aussi. Tu pourras ainsi comparer les deux objets en faisant ton b in a.

  • [^] # Re: sed est ton ami

    Posté par  (site web personnel) . En réponse au message Modification de texte. Évalué à 7. Dernière modification le 31 août 2018 à 11:18.

    Ok, après avoir consulté ce guide sed:

    h va copier la ligne lue dans le hold buffer, pour la mettre de côté
    G va ajouter sur une nouvelle ligne le contenu du hold buffer à la fin du pattern space
    N ajoute la ligne suivante à la fin du pattern space

    Donc h;G va dupliquer la ligne lue, pour avoir:

    User1
    User1

    Puis N va lire la ligne suivante:

    User1
    User1
    Password1

    Ensuite le (plus connu) s/\n/;/g va remplacer les retours chariot par des ;, ce qui donne :

    User1;User1;Password1

    Et ainsi de suite…
    Faudrait vraiment que je me penche sur le traitement multi-ligne avec sed…

  • [^] # Re: sed est ton ami

    Posté par  (site web personnel) . En réponse au message Modification de texte. Évalué à 2.

    J'utilise sed à l'occasion, mais là c'est un peu obscur pour moi… Si tu pouvais explique un peu ce serait top.

    PS: il doit manquer un < monfichier.txt à la fin aussi…

  • [^] # Re: quinte

    Posté par  (site web personnel) . En réponse au message POKER :determiner si une main est une couleur ou non. Évalué à 2. Dernière modification le 31 août 2018 à 10:31.

    L'indentation est significative en python, et lire un paté de code mal formatté ça ne donne pas très envie. Je te conseille déjà de lire l'Aide mémoire sur la syntaxe wiki situé sous le champ de rédaction de message. Le dernier exemple indique comment inclure du code (remplace ruby par python pour avoir la coloration syntaxique appropriée).

    def QUINTE(main):
        """
        permet de savoir si la main est une quinte ou non
        """
        a=[(7,8,9,10,11),(8, 9, 10, 11, 12),(9, 10, 11, 12, 13),(10, 11, 12, 13, 14)]
        b=sorted(main)
        for k in range (len(a)):
            if b==a[k:k+4]:
                return 1
            else:
                return 0

    C'est plus facile à lire, n'est-ce pas ?

    Bon, à partir de ça, on voit que tu as tout de même listé les suites possible, que tu tentes de boucler dessus… Sans savoir ce que contient main, c'est difficile de déduire le comportement. Ensuite si tu veux boucler sur les différentes suites possibles contenues dans a, tu peux faire for k in a pour itérer sur tous les n-uplets de la liste a.

    La notation la plus lisible et rapide reste néanmoins de te débrouiller pour avoir dans b un n-uplet trié correspondant à ta main, comme (9, 10, 11, 12, 13), puis de remplacer ta boucle par return b in a. L'opérateur in renvoie True si b est inclus dans a (c'est à dire que a contient b), et False sinon. Ainsi tu évites une boucle inutile, et tu utilises des types booléens qui sont faits pour ça plutôt que 0 et 1.

  • [^] # Re: quinte

    Posté par  (site web personnel) . En réponse au message POKER :determiner si une main est une couleur ou non. Évalué à 5. Dernière modification le 30 août 2018 à 14:35.

    Déjà pour savoir si une main est une suite (aussi appelée ­— plus rarement — quinte), je commencerais par ne pas créer la liste de toutes les quintes possible pour voir si celle-ci est dedans. Ça prend du temps de calcul inutile.

    Pour savoir si une main est une quinte, une manière simple est de donner une valeur numérique aux cartes non-numériques (valet, dame, roi, as), puis de les trier par valeur croissante. Si tu as un as dans la main, le traiter de manière spéciale (valeur 1 ou 14). Si toutes tes valeurs se suivent, alors tu as une suite. Si elles sont en plus d'une couleur unique (trèfle, pique, coeur, carreau), alors tu as une quinte flush.

  • [^] # Re: Au niveau binaire

    Posté par  (site web personnel) . En réponse au message POKER :determiner si une main est une couleur ou non. Évalué à 3.

    card.suit plutôt que card.color, semble-t-il.

  • [^] # Re: Au niveau binaire

    Posté par  (site web personnel) . En réponse au message POKER :determiner si une main est une couleur ou non. Évalué à 3. Dernière modification le 29 août 2018 à 17:30.

    Je ne vois pas trop l'utilité d'un masque de bits pour les couleurs, tu n'as besoin que de 2 bits pour coder 4 couleurs, et 4 bits pour les valeurs soit 6 bits pour une carte. Tu pourrais même coder une main de 5 cartes sur 30 bits et que ça tienne donc sur 4 octets (faut être un peu vicieux à ce stade tout de même, on perd en extensibilité).

    Pour ce qui est du python, j'utiliserais plutôt un NamedTuple pour faire des card.color et card.value.

  • [^] # Re: Au niveau binaire

    Posté par  (site web personnel) . En réponse au message POKER :determiner si une main est une couleur ou non. Évalué à 5.

    Oui enfin là ce serait coder en python comme en C, l'intérêt est limité.

  • [^] # Re: Mouais

    Posté par  (site web personnel) . En réponse au lien De la laideur des logos et interfaces dans le libre. Évalué à 10. Dernière modification le 28 août 2018 à 14:14.

    En même temps au bout de quelques lignes tu vois bien que l'article est un gros troll. Oui il y a des logos moches, m'enfin le pied de GNOME, Wilber la mascotte de GIMP, et le pigeon violet de pidgin me semble des logos reconnaissables et réussis (certes, je ne suis pas graphiste). Ce n'est pas comparable à d'autres logos "moins réussis" montrés dans l'article. Je ne connais pas de projets libre avec un logo tout moche qui refuserait un joli logo soumis par un contributeur. Le problème c'est que les graphistes contributeurs, ça pousse pas sur les arbres.

    Bref, circulez, y a rien à voir.

  • [^] # Re: NeoVim ?

    Posté par  (site web personnel) . En réponse au journal vim: Au revoir syntastic, bonjour ALE. Évalué à 3. Dernière modification le 24 août 2018 à 12:00.

    Je pensais au début que NeoVim interprétait différemment certaines commandes pour les rendre asynchrones, merci de m'avoir détrompé ;). Je ne l'ai pas encore utilisé, c'était plus des souvenirs de lectures…

  • [^] # Re: NeoVim ?

    Posté par  (site web personnel) . En réponse au journal vim: Au revoir syntastic, bonjour ALE. Évalué à 3. Dernière modification le 24 août 2018 à 11:58.

    Ah, effectivement, si tu es sûr que le problème vient du plugin qui n'est pas asynchrone… Je prends bonne note de l'existence de ALE, en tout cas, merci :). N'hésite pas à refaire un journal pour un retour d'expérience ;).

  • # NeoVim ?

    Posté par  (site web personnel) . En réponse au journal vim: Au revoir syntastic, bonjour ALE. Évalué à 8. Dernière modification le 24 août 2018 à 11:37.

    Il me semble que NeoVim n'a plus ces problèmes de lancement synchrone, ça a été rendu asynchrone, ça vaut peut être le coup d'essayer si tu veux conserver ton plugin ?

    Cf paragraphe Meet Neovim: Plugin Compatibility.

  • [^] # Re: inspiration

    Posté par  (site web personnel) . En réponse à la dépêche FlOpEDT : un nouveau logiciel libre de gestion des emplois du temps !. Évalué à 4. Dernière modification le 14 août 2018 à 18:55.

    Tu peux retourner le truc pour dire que justement c'est un outil pour remplir facilement ton temps libre, c'est moins prétentieux du coup ;).

    Pour le nom en anglais, effectivement ce serait mieux, mais comme vous utilisez l'abréviation EDT qui n'est de toute façon pas en anglais, autant aller au bout et prendre un nom en français. Le logiciel est multi-langue ?

  • [^] # Re: inspiration

    Posté par  (site web personnel) . En réponse à la dépêche FlOpEDT : un nouveau logiciel libre de gestion des emplois du temps !. Évalué à 10. Dernière modification le 14 août 2018 à 15:56.

    Je propose TempsLibre, ou TempsLibreEDT. Parce que c'est libre, et que ça fait gagner du temps. Les anglophones ont le problème de sens de "free" (libre/gratuit) dans leur langue, d'où leur utilisation d'Open Source. Toutefois, le français n'a pas ce problème, alors autant préférer "libre" si on donne dans le pur francophone.

  • # Yo Joe !

    Posté par  (site web personnel) . En réponse au journal [Énigme] Foutue guerre… . Évalué à 3.

    C'était pas ma guerre mon colonel !

  • # Trichotomie

    Posté par  (site web personnel) . En réponse au journal [Énigme] Coffré dans un coffre ?. Évalué à 10. Dernière modification le 13 juillet 2018 à 10:57.

    81 pièces, 4 pesées et une balance. Il suffit de diviser les pièces en 3 tas, successivement.

    Use pesée se fait donc ainsi:
    - On divise les pièces suspectes en 3 tas du même nombre de pièces.
    - On met le tas n°1 d'un côté de la balance, le tas n°2 de l'autre côté de la balance, et on ne pèse pas le tas n°3.

    Comme il n'y a qu'une seule pièce piégée, un des tas est forcément plus lourd que les autres, c'est celui qui contient la pièce piégée.

    Au moment de la pesée, 2 possibilités:
    - soit la balance est à l'équilibre, ce qui indique que le tas le plus lourd est celui qui n'a pas été pesé
    - soit la balance n'est pas à l'équilibre et indique directement le tas le plus lourd

    Une pesée permet donc de diviser par 3 le nombre de pièces suspectes. Effectuer 4 pesées successives va donc les diviser par 3⁴ = 3 × 3 × 3 × 3 = 81. Cela devrait donc effectivement converger:

    • Après la première pesée, on se retrouve avec 27 pièces suspectes, les autres n'étant pas piégées.
    • Après la deuxième pesée, on se retrouve avec 9 pièces suspectes, les autres n'étant pas piégées.
    • Après la troisième pesée, on se retrouve avec 3 pièces suspectes, les autres n'étant pas piégées.
    • Après la quatrième pesée, on se retrouve avec 1 pièces suspecte, c'est la pièce piégée.

    Mais on peut aussi s'arrêter à la 3ème pesée vu qu'on a déjà mis de côté 97,5% du trésor. Cela donne un peu de temps pour écrire un petit mot au dos de celui d'Eingousef:

    « Cher Eingousef,

    je te remercie d'avoir laissé cette balance de Roberval, et cet indice sur le poids de la pièce. On fait 50/50 comme d'habitude ? En gage de bonne foi, voici les 2 premières pièces, je te laisse le reste à l'endroit convenu.

    Signé: M4rotte.
    »

    Puis je sors avec les 3 pièces (dont la pièce piégée), les place dans le mot plié, et cache le mot dès ma sortie de la banque dans une ruelle sous les poubelles, et m'en vais tranquillement. Je laisse à Eingousef le soin d'expliquer à la police son implication pendant que je dépense une partie de mes 78 pièces pour partir siroter une pina colada sous les tropiques…

  • # Sputnik et crédibilité

    Posté par  (site web personnel) . En réponse au lien L'extension stylish pour les navigateurs web vole votre historique. Évalué à 5. Dernière modification le 06 juillet 2018 à 15:40.

    https://fr.sputniknews.com/sci_tech/201807061037085316-chrome-securite-web/

    Attention! Les moteurs de recherche Google Chrome et Mozilla Firefox savent espionner en secret leurs utilisateurs, avertit un informaticien américain qui a détecté une extension enregistrant tous les sites visités.

    Déjà, l'informaticien qui dit que Chrome et Firefox sont des moteurs de recherches, c'est déjà assez énorme. Je suppose que le malheureux journaliste qui a écrit ça a un peu de mal avec l'informatique. Mais le titre en lui même est vraiment trompeur:

    Un informaticien US explique comment Chrome et Firefox vous espionnent en secret

    On laisse entendre que ce sont Chrome et Firefox qui font l'espionnage (et donc Google et Mozilla) alors que là c'est une société tierce qui fait une extension. Vu l'autre boulette, ça n'a pas l'air d'être fait pour ternir la réputation des navigateurs, mais ça ressemble plus à de l'incompétence.

    Comment ça Sputnik n'était déjà pas crédible ?

  • # Typo

    Posté par  (site web personnel) . En réponse au journal LinuxFr.org : seconde quinzaine de juin 2018. Évalué à 2.

    et de lesfinances

  • # Trainline

    Posté par  (site web personnel) . En réponse au message ouisncf et prem's pas fiable. Évalué à 5.

    La prochaine fois, essaie trainline.fr (anciennement capitaine-train). L'interface est simple et c'est difficile de se tromper.

  • [^] # Re: En dernier recours

    Posté par  (site web personnel) . En réponse au message Récupération de données sur Lyon. Évalué à 2.

    Second degré inside…

    Le frigidaire ou le congélateur c'est une technique pour globalement éviter qu'un composant endommagé chauffe trop pour permettre d'avoir le temps de récupérer des données, j'ai déjà entendu ça pour des disques durs mécaniques notamment. Pour le four c'est plutôt pour une carte (carte mère, carte graphique, etc.) qui peut avoir une soudure défaillante. Faire chauffer peut faire fondre la soudure en question qui en changeant de forme peut être réparée une fois refroidie. Mais dans le cas d'une carte mémoire, ça me paraît illusoire, et me semble avoir plus de chances d'achever la carte qu'autre chose. En tout cas ce n'est à tenter que quand tout le reste a échoué. Or j'ai parlé plus haut de recoverfab qui peut potentiellement récupérer les données d'une carte du moment qu'elle n'est pas endommagée physiquement. Ce serait donc dommage de griller définitivement la carte avant d'être passé par un service qui a plus de chances de fonctionner.

    https://www.youtube.com/watch?v=y-jrzsaT6ls

  • [^] # Re: recoverfab

    Posté par  (site web personnel) . En réponse au message Récupération de données sur Lyon. Évalué à 4.

    Ce qui est marqué c'est que le taux de réussite est de 92%, mais que ce taux ne concerne pas les cartes microsd.
    Une ligne au dessus tu as un lien vers leur video qui explique le processus de récupération pour du microsd.
    https://www.youtube.com/watch?v=y-jrzsaT6ls