4ème séquence — éditeur de texte et gestionnaire de mots de passe

Pour cette séquence on expérimente d’avoir deux sujets de projet en parallèle.

Éditeur de texte

Description

Un éditeur de texte dans le terminal ou graphique ou même en web. Objectifs pédagogiques :

  • interface graphique
  • lecture et écriture de fichiers

Langage libre.

Groupes

Gestionnaire de mot de passe

Description

Un logiciel qui permet de stocker ses mots de passes de comptes de services en ligne pour ne pas avoir à tous les retenir, et de les protéger avec un mot passe (qu’il faut retenir, lui).

Objectifs pédagogiques :

  • cryptographie
  • bases de données / lecture-écriture de fichiers

Langage : Python.

Exemples de logiciels de gestion de mot de passe :

Groupes

Petit exemple de code Python d’introduction ce matin :

#!/usr/bin/python

class MaClasse(object):
  def __init__ (self):
    print ("Constructeur")
 
  def mafonction (self, a):
    print ("Ma fonction")
    self.a = a
  
monobjet = MaClasse()

monobjet.mafonction("AAaa")

# ceci est un commentaire d'une seule ligne

liste = [1, 'coucou', 2, 4]

for element in liste:
  print (f"élément : {element}")

  try:
    x = element + 1
    print ("Après le +1 : {}".format(x))
    if element % 2 == 0:
      print ("pair")
  except TypeError:
    print ("Erreur de type")
  except:
    print ("Autre erreur")

Quelques points :

  • Python utilise l’indentation pour délimiter les blocs, c’est donc crucial de bien indenter son code
  • pas de mot-clé new pour instancier un objet
  • pas besoin d’itérer sur un entier (alors qu’en Processing et en Javascript c’était nécessaire) pour parcourir une liste
  • Python est un langage objet, le constructeur d’une classe s’écrit dans la méthode __init__
  • on peut utiliser les blocs try….except pour capturer les exceptions et éviter que le programme ne plante

25.11.19

Appris les bases de Python pendant la plénière. Vu quelques différences par rapport à JS, assez proche de ruby.
Lors des katas d’Adriel, compris comment fonctionne les tests et la boite à ding.

– après-midi –

On a parlé de la charte, rien de spécial dessus.

Appris qu’il y avait plusieurs façon de crypter un mot de passe et que beaucoup de façon on ne prends pas les caractères spéciaux en compte

  • Façon de chiffrer CESAR = décale les lettres selon la clé de chiffrement
  • Chiffrage de VIGENERE = basé sur le carré de Trithème (à approffondir) qui ne montre le texte qu’avec la bonne clé.
  • Transposition = mélange des lettres selon le choix de l’utilisateur (en transposant les lettres selon une logique chiffrée).

On peut appliquer plusieurs méthodes pour mieux chiffrer mais je n’ai pas encore compris comment ni comment ajouter des chiffres ou des caractères spéciaux.

Python propose aussi des algorythmes dans des bibliotèques comme hashlib mais on n’a pas vraiment de vu sur comment ça se fait.

On peut également crypter avec la variable d’environnement DES_KEY qui génère une clé de chiffrement, basé sur une seed.
C’est un chiffrement 3DES.

On peut aussi crypter en Java, mais flemme, on est en python, autant en profiter. :wink:
Si on veut s’amuser, on peut aussi le faire en shell.

26.11.19

Absente le matin

– après-midi –

Vu de l’avancement de @Nydragon et @Laurine, appris qu’on peut nous même paramètrer le chiffrement des mots de passe.
Grosse galère sur la compréhension pour le déchiffrement, les katas du matin, posté par @kheops ont pas mal aidé.

J’ai appris pas mal de trucs (la base de csv, comment fonctionnais le code, quelle différence entre le mode read et le mode write, qu’on ne peut pas lire et écrire en même temps) avec @kheops.
J’ai aimé décortiquer notre code avec lui, ce qui m’a permis de faciliter le choix de ce qu’on doit faire demain.

A faire demain :

dans decrypt :

  • Ouvrir les listes, chercher le premier string pour ouvrir la liste contenant le mot de passe pour le déchiffrer.
  • Trouver la formule de déchiffrement.
  • Afficher le mot de passe.
1 J'aime

Journal de Nicolas

Lundi

  • reprise de la charte
  • être pas productif

Mardi

  • dormir
  • cryptage (renforcé)
  • mots de passe en csv (à changer)

Jeudi

  • bu du café
  • travaillé
  • résolu des problèmes
  • BEAUCOUP MOINS FATIGUé

Week-end 30.11-1.12

  • découverte de la librairie Pandas et Numpy pour l’analyse des bases de données
  • découverte des ‹ dialectes › de csv (les separateurs)
  • le fichier csv en.openfoodfacts.org.products.csv est incomplet
  • Pandas facilite le travaille d’analyse et peux lire tout le fichier sans créer des problèmes
  • je vais faire l’analyse sans Pandas, mais l’utiliser pour la visualisation, mais pour visualiseret trouver une nouvelle bdd

Lundi

  • changement de sujet -> Kitttenz
  • presque fini
  • j’éspère pouvoir travailler sur mon projet perso

Mardi

  • nous avons briefer Gwen par rapport à notre code
  • J’ai montré à Gwen le site « Backmarket », on peux y acheter de l’éléctronique reconditionés de qualité
  • malheureusement j’ai eu beaucoup de retard (merci cerveau de Nico & RATP) et j’ai dû partir plus tôt pour un rdv

Mercredi

  • fini le projet, un petit bug reste à corriger
  • compète de GolfIt avec Gwen, Flo et Lau
  • la gréve commence…

Journal du Lundi 25 novembre de l’an 2019 par Laurine.

A l’heure où j’écris ces lignes, la clôture approche…

Plus sérieusement :

J’ai découvert que pass en python = continue en SWIFT

Pour les tests:
librairies : unittest ou pytest
une class teste une fonction et un test, test un truc précis (unitaire).

Pour les librairies : Tkinter pour les graphismes.

Crypter une chaine de caractère en python c’est pas évident, devoir gérer les lettres, les chiffres, les caractères spéciaux.
Trouver le juste milieu entre écrire un truc pas trop compliqué mais qui chiffre quand meme bien le mot de passe.
Unidecode / XML / HTML.

Journal de bord du mardi 26 Novembre de l’an 2019 par Laurine.

Ce matin la mer était plutôt calme, avec comme activité un Kata sur l’ouverture + fermeture de fichiers et ordonner les nombres dans un fichier.

Dans le même temps, grâce à la librairie tkinter j’ai réussi à afficher des boutons dans mon interface graphique. Et à les ranger dans des frames, pour que ce soit plus agréable visuellement et plus facile à manipuler.
.TopLevel pour ouvrir une nouvelle fenètre.

.config(command=fen.destroy) permet de fermer une fenètre.
randrange() fournit des nombres aléatoires dans un intervalle 0…n

Si je veux adapter mes champs textes à la fenètre avec tkinter, je peux mettre widget.pack() sur la frame qui contient mon élément ‹ champ texte ›; mais dans ce cas là, le champ ne sera pas placé à l’endroit où je le voulais.
Exemple : widget.place(x=250, y=30, width=200, height=50)

J’ai aussi appris à générer un mot de passe aléatoirement (vive la random !), en fonction de la taille que tu souhaites, et de la robustesse choisie.
J’ai aussi réussi à sauvegarder le mot de passe dans le presse papier !! Youhouu !! :grin::grin::grin::grin::grin: (Du coup j’ai bien mérité un cookie pour mon goûter :yum::cookie:)

A demain, pour de nouvelles aventures …

Journal de bord du mercredi 27 novembre de l’an 2019 par Laurine.

J’ai réussi à réunir mes 2 parties de code qui forment l’interface.
On peut désormais générer un mot de passe aléatoirement en fonction.
de la taille voulu et des « niveaux » Low ou Medium ou Strong.

J’ai trouvé comment faire une barre menu sur mon interface.

Menu() -> crée une nouvelle colonne de menu.
var.add_command() -> Les trucs qui s’affichent une fois qu’on a cliqué sur l’élement « important » du menu.
var.add_separator() -> La barre qui permet de séparer plusieurs éléments.
var.add_cascade() -> Le truc que l’on voit dans la barre de menu, quand on clique dessus, il déroule les options.

J’ai réussi à faire une barre menu, cependant tout les « onglets » ne sont pas encore « cliquable ».
Mais je compte avancer la dessus demain !

J’apprécie de plus en plus bosser sur les interfaces de mes projets . Voili voilou !

A demain pour de nouvelles zaventures !

Journal de bord du jeudi 28 novembre de l’an 2019 par Laurine

Cette matinée fut très intéressante ! J’ai beaucoup aimé, et j’ai pas vu le temps passé.

Ensuite j’ai essayé de faire comme Lydia (prendre la main sur la télé), mais j’ai été prise à mon propre jeu, je pouvais plus me déconnecter. C’était une belle leçon de vie :wink:
(Petite dédi à @lyd.sanaa qui lit mon journal : Sorry j’étais pas très inspirée sur l’écriture aujourd’hui :mushroom:)

J’ai appris à faire apparaître une fenêtre pop-up quand on clique sur le « a propos » de mon interface graphique.

Je fais beaucoup d’erreurs « d’étourderies », du coup j’ai souvent des erreurs alors que j’ai juste mal écrit ou mal placé l’élément. C’est chiant, faut que je bosse la dessus.

J’aimerai bien, sur ma barre de menu, faire des « sous-cascade », j’ai
vu la méthode : windget.insert_cascade(index, option); mais je galère à l’appliquer.

Voila voila, demain je songe à faire du C++ … Mais ça aura surement changé d’ici la.

Petite dédi à @Nydragon qui est visiblement jaloux que Lydia ai une dédicace et pas lui : Tu es un très bon binôme ! Thanks !!

Journal du Vendredi 29 Novembre de l’an 2019.

J’ai commencé par effectuer des recherches concernant mes perspectives d’avenir et effleurer le C++ .
Pour ensuite continuer cette très bonne journée en prenant un bon repas pour me donner de la FORCE !
Après plusieurs rudes combats contre des yordles, darkins, des orgres, des dragons, et des golems
de pierres, me voici bien fatiguée. La lutte fut dure, nous avons parfois echoué mais
nous devons en priorité retenir que la persévérance est un bien fait . Le soldat
@Mohamed a bien combattu, contrairement au soldat @Nydragon qui n’est pas foufou sur son Azir.
Le soldat Lydia a choisi de déserter aujourd’hui, mais ce n’est que partie remise !
Elle a finalement capitulé a 16h52.
Pour revenir à mes perspectives d’avenir, le front-end me fait de l’oeil, mais j’aime poo trop le Js,
et j’aime beaucoup le PHP… et le Python… Je suis donc encore très indécise… Mais j’ai encore quelques mois pour me décider !

Journal du Lundi 2 décembre de l’an 2019 par Laurine.

On a repris le code de Kittenz qui est assez « light » du coup on peut le modeler comme on veut ! C’est cool.

L’éditeur de texte n’a pas l’air très long à faire, du coup avec nico, on va vite finir ça, pour avancer sur nos projets perso a la fin de la semaine.

On a déjà réussi à sauvegarder et à charger des fichiers pour les modifier dans le Canvas. On part pas pour faire un truc très beau, mais on veut un truc fonctionnel.

Coder à 2 sur un pc, c’est cool !

Journal du Mardi 03 Décembre de l’an 2019.

J’ai essayé de transformer l’icone de la souris en une image de chat mignon.
Ce fut un échec.
J’ai ensuite essayer de faire une scrollbar (ça c’est ok) mais qui fait bouger
un ensemble de boutons. D’après mes recherches, il faut mettre tout les boutons
dans une frame, et mettre la frame dans un canvas… C’est chiant.
Journée pas ouf, on fera mieux demain.

Journal du Mercredi 04 Décembre de l’an 2019

Cette matinée fut frustrante. Nicolas m’a donné une tâche à effectuer, mais il a finalement
résolu le soucis. Je me suis donc pris la tête pour pas grand chose. Mais j’ai appris des trucs !

Ce midi, j’ai gagné un match de Golf It. Je suis formidable.

Pour l’après-midi, j’ai ajouté une image de chat en background de l’éditeur pour respecter la direction originale.

Ensuite, on a décidé d’avancer sur nos projets perso puisque le projet Kittenz est assez bien pour nous.

Petite aparté …

J’ai terminé il y a deux semaines mon projet perso qui consistait à faire un Labyrinthe en Python. Il y a une interface graphique, on peut jouer. Il y a différents niveaux, Facile, Normal, Difficile et Super Difficile. Les labyrinthes se génèrent aléatoirement à chaque fois. Le super difficile c’est comme le difficile mais on voit qu’une seule partie du labyrinthe, pas le labyrinthe en entier.
Il y a une option pour activer / désactiver le tracer pour savoir par où on est passé.
Il y a un mode rejouer qui permet de charger une partie précédente.
Il y a 3 algo différents de résolution de labyrinthe aussi : Fusion aléatoire, Exploration Exhaustive et Algorithme de Prim.

Fin de la petite aparté …

Du coup mon nouveau projet perso c’est … de faire un navigateur web en Java… Ou en C++ …
Faut que je me décide. Et vite.
Du coup cet aprem j’ai fais des recherches sur les outils qui existent pour faire un navigateur web en C++ & en Java.

Journal du jeudi 05 décembre de l’an 2019.

J’ai finalement choisi de faire mon projet perso en C++ (cf journal du jour précédent). Je me dis qu’au pire, je le ferai en Java quand j’aurai envie d’essayer le Java.
J’ai donc passé ma matinée à regarder comment marche le C++. C’était sympa.
J’ai aussi retrouvé les pointeurs !! Ca faisait un moment que j’en avais pas utiliser … Bah étrangement ça m’avait pas manqué :slight_smile:

La petite conférence sur « bosser en remote » d’Elodie était très sympa ! Merci à elle pour les conseils.

Cet aprem j’ai fais la liste de ce que je veux dans mon navigateur, et des maquettes pour voir a quoi ça va ressembler.
J’ai également chercher des icones et j’ai commencé la « structure » de mon projet.

Journal du vendredi 06 décembre de l’an 2019.

Milles excuses ! Il est actuellement 22h31 à l’heure où j’écris ces lignes de ce fantastique journal !

La pleinière de ce matin avec KheOps était excellente ! J’ai hâte de l’atelier prévu vendredi prochain !

Cet après-midi, j’ai bossé mon projet perso, qui avance bien, et je prends beaucoup de plaisir à le faire (d’où l’heure tardive de parution de mon journal, le temps passe si vite !)
J’ai finis un tuto sur le C++, j’ai fais aussi quelques exos (que je m’étais fabriquer) sur le C++.
Je compte bosser mon projet encore ce week-end, sûrement avec un rythme moins soutenu, mais un peu quand même :wink:

La grève m’embête pas tant que ça, je pensais que ce serait pire, mais on arrive à communiquer et à faire des trucs à plusieurs ou tout seul. C’est cool !

A bientôt pour de nouvelles zaventures …

J’ai appris que python avais une librairie interne qui s’appelle unitest et qu’une autre librairie exterieure existe « Pytest ».
J’ai appris que « pass » s’emploi lorsque notre code est vide

1 J'aime

Wara
25 nov

matinée :

  • un fichier python commence par : #!/usr/bin/python
  • Indentation obligatoire sur python
  • « pass » c’est pour dire que le bloc est vide et c’est normal, ce n’est pas un oublie.
  • EOF : end of files.
  • ~ [arrays/tableaux/list]

après-midi :

  • structuré et balancé les idées sur README

HS :

  • je préfère le terme « prendre du recul » que « introspection » : j’ai plus l’image de [reculer pour mieux regarder le paysage que tomber dans soit même].
  • ? définition Agile ?

26 nov

matinée :

  • a réussi à mettre de la couleur dans bash
  • pour ouvrir un fichier dans python (et autre langage…)
    => with open(« coloquinte »,« w/r/a… ») as coloquinte :
    indentation + fait qqch
  • vu for …in…
  • « liste nombre += [nombre_chaine] » pour avoir toute la liste et non juste le dernier élément de la liste
  • Ctrl+n dans vim

après midi

  • utilisation de « with open » avec des fichier csv
  • essaye d’utilisation d’une boucle for
  • parcourir la bibliothèque de csv

27 nov

matinée

  • historique succinct de la cryptographie
  • chiffrement symétrique/asymétrique; (hash)
  • fakenamegenerator.com

après-midi

  • compris .methode : appel une méthode après un point
  • il y a beaucoup de différence entre python 2 et 3. on tombe souvent sur des code écrit avec python 2

28 nov

  • j’ai beaucoup apprécier l’intervention de Sonia.
  • astuce vim :%s/ motàcorriger / nouveaumot /g | pour changer tous les motàcorriger en une fois
  • je me suis encore incrusté dans le groupe de Mohamed et Lydia mais j’ai pu aider à régler un problème.
  • j’ai réussi à utiliser if sur python3.
  • .capitalize() et .lower()

29 nov

2 déc

  • Je comprends un peu mieux la structure de class dans python3 grâce à @agathe_begault.
  • instance => def => fonction
  • il faut appeler la class pour l’utiliser
  • git add - p ( add + diff)

3 déc

  • #! shebang ligne qui indique le chemin pour trouver le programme pour exécuter le fichier lorqu’on fait ./
  • chmod a + x ?NomFichier? pour pouvoir faire ./ pour l’exécuté s’il y a #! au début du dit fichier.
  • le ./ ne fonctionne pas sur une partition autre que dans ~ (par défaut chez Ubuntu)
  • dans ~, .gitignore :
    *.swp
    *.pyc
    pycache
  • compliller : lit une fois le code puis exécute / non-compiller : lit ligne par ligne et exécute en même temps.
  • ? git pull --rebase ? (en tout cas évite l’abandon lors du git pull : en mettant de côté ta version, pull la branche master puis additionne ta version ?)

Vim

  • : n°deligne = n°ligne + G
  • ex : 6dd = supprime le 6 ligne suivante
  • == pour indenter 1 ligne en mode v
  • en mode v, sélectionner les lignes à indenter puis >
  • mode normal o pour ajouter une ligne

4 dec
En python

  • on peut fait une liste :
    { A1, a
    B1, b
    C1, c}
  • and à une plus grande priorité que && ou && n’existe pas ?

Collectivement, on a pu faire un code plus propre qu’un personne seul, vive l’intelligence collective :raised_hands:

5 dec
En python

  • .Upper() (BABA => baba; baba => BABA)
  • max(list)
  • min(list)

Remote

  • avoir de bon outils : bon micro
  • miro.com
  • pair => 2 mob +

6 dec

  • cookies gardent et stocke des informations (historique …), peut être un gain de temps
  • Tor (the onion router https://www.torproject.org/) réseau anonymisant passe par des relais ou nœud (3 couches -au moins- de l’onion) : le premier relais connaît l’utilisateur mais pas le site consulter, le 2eme ne connaît ni l’un ni l’autre et le dernier ne connaît que le site consulter. Le dernier nœud est le plus critique ? au attaque?, le second est le moins sensible. Le premier nœud est connu (guard) publiquement par les fournisseurs d’accès donc c’est pas là qu’on peut savoir si on se connecte via Tor.
  • Tor bloque la censure, efface automatiquement les cookies,IP …; pas besoin de nettoyer derrière.
  • IP = Internet Protocol
  • IPV4 la box (=router « qui conduit les flux ») à un IPV4 et dans cette environnement ton appareil à une IP qui peut-être exactement la même qu’un autre appareil qui est connecter avec une autre box.
  • la box fourni par le fournisseur d’accès est soumis au blocage de la part de l’État, consomme potentiellement plus d’énergie qu’il ne le devrait. Pourquoi ???
  • router alternatif (quch de plus propre) => regarder fédération FDN ( Fédération des Fournisseurs d’Accès Internet Associatifs https://ffdn.org/fr/)[ne garanti pas l’anonymat en ligne]
  • IPV6 tous les appareils auront une IP propre à elle seule, car on pourra en généré beaucoup plus
  • what is my IP adress ?site?
  • les fournisseurs de VPN cachent vos activité à votre fournisseur d’accès mais eux savent tout à fait ce que vous faites.(déplacement de confiance, exemple Momo à choisi son VPN en fonction du pays du VPN : là où il y a une réglementation plus accès sur la vie privée)
  • Tails.boum.org (the amnesic incognito live systeme = linux) qui dit rendre anonyme les personnes sur le net. On installe Tails sur une clef USB ou on le grave sur un DVD. ==> aucune trace de navigation, utilise Tor.
  • Qubes os => ce sont des blocs donc s’il y a une attaque (exemple virus) il n’y a que cette application qui est attaquer.
  • https://www.apc.org/fr

crypto

  • symétrique = 1 clef pour crypter et décrypter
  • asymétrique = 1 clef publique et 1 clef privée

python liste

  • .reverse() inverse les éléments de la liste
  • .remove(« a ») enlève ?les? a de la list
  • .pop(0) enlève ?les? 0 de la liste
  • ?del liste [1] : devrait enlever le 2eme élément de la liste?
  • .split() sépare les élément quand il y a un espace, .split(";") sépare lors qu’il rencontre un « ; »
  • .range(n) génère une simple suite arithmétique jusqu’au nombre n.
1 J'aime

Journal du soir (25 novembre)

  • Aujourd’hui on a travaillé avec Fayal pour setup son environnement python (on
    a créé des problèmes avec des mauvais liens symboliques dans le /.

  • Je vais essayer de retenir pour la énième fois de ne pas faire de changement
    manuel là où je ne suis pas censé en faire. Je m’autorise encore les mount
    sur des fichiers là-dedans, car je suis certain que c’est temporaire (je
    redémarre mon ordinateur dans le pire des cas, ou bien umount -R /usr (je
    crois)).

  • Peut-être qu’un jour j’apprendrai que ça aussi, c’est une mauvais pratique. En
    tout cas, tout rm, ln, mv m’est strictement interdit. J’ai déjà supprimé
    le fichier /etc/pam.d/sudoers comme ça. C’est embêtant.

  • J’ai appris qu’il existait un framework Qt en python. Et comme on m’aura
    dit beaucoup de bien de Qt, j’ai préféré cette solution à GTK (dont on ne
    m’a pas dit de mal par ailleurs)…

  • J’ai appris ce que c’était précisément fizzbuzz, et j’ai appris que les
    multiples de 3 ET 5 sont aussi multiples de 15 ! J’ai dû réfléchir pour m’en
    convaincre… Les cours de quatrième sont lointains.

  • Je conjecture que les multiples de 4 ET 3 sont aussi des multiples de 12…
    M’enfin.

Journal du midi (26 novembre)

  • Je suis venu en vélo et j’ai été un peu en retard. Il y a une déviation sur
    les bords de marne, j’ai subi un chemin insupportable au milieu des bagnoles
    entre les zones industrielles et l’autoroute.

  • On a fait un exercice pour apprendre à lire et écrire dans un fichier. On a
    découvert quelques méthodes de python read(), write(), sort(),
    sorted(), etc

  • Certaines se sont faites la réflexion que python et ruby se ressemblait
    beaucoup.

  • J’ai appris pleins de trucs en bash hier ! ^N et ^P pour naviguer entre
    les entrées de l’historique. ^O exécute la commande actuelle.

  • J’ai mis des couleurs dans mon terminal ! J’ai appris la commande tput, j’ai
    lu la doc et compris le pouvoir de urxvt[c|d].

2 J'aimes

26/11/2019

J’ai appris à comment reconnaître la version d’un programme, comment pouvoir changer un fichier qui en montre un autres, l’utilisation exact du / dans le terminal, l’importance du (" ") dans le python*3.

27/11/2019

  • Comment quitter un fichier python ouvert dans le terminal CTRL+Z
  • Split() séparer le contenu d’une chaîne de caractère
  • sort() classer une liste par ordres alphabétique
  • créer une liste en python [ ]
    Taper CTRL+ALT+F3 quand on a un bug

28/11/2019

Un très beau témoignage de Sonia qui fait réfléchir encore un peu plus sur le pouvoir que l’homme peut avoir au travail et surtout dans la vie de tout les jours vis à vis des femmes.
Nous avons encore beaucoup modifiée notre code pour trouver la formule adéquate pour créer notre MenuBar en python. Car j’ai essayer de reproduire la manière dont on l’avait fait dans en Ruby cela n’a pas fonctionner. Au final grâce a une documentation en PyQt qui était en français nous avons mieux compris comment utiliser cette fonction.

02/12/2019

Ma journée n’a pas très bien commencer suite un problème de train à Montparnasse, donc il a mis 3h de retard entre l’heure prévu et l’heure dont il est réellement parti. Je suis arrivé les projets étaient déjà distribuer, donc nous avons repris celui du groupe de Nicolas qui n’était pas le plus évident à mon goût heureusement que j’ai l’aide d’Adriel car rien que l’installation de Tkinter nous a pris 1h.

3 J'aimes

25/11/2019

J’ai commencé à me familiariser avec la syntaxe de Python et la librairie Tkinter, la méthode .pack()
J’ai téléchargé plein de librairies, j’ai appris à faire cohabiter python2 et python3
J’ai pas réussi à manipuler des images en python, mais j’ai un éditeur de texte super rudimentaire
Bisous

26/11/2019

Bon déjà j’ai débarqué a 14h30… puis j’ai bouffé.
Je me suis lancé dans des tutos python, avec un rythme plutôt posé
J’ai fait quelques exos avec Marine, j’aime bien ça c’est super intéressant, ça me force à décortiquer les problèmes plutôt que d’aller directement à la solution.
J’ai découvert input(), et codé un programme qui trouve les entiers de la suite de Fibonnacci
Love

Ce que j’ai appris aujourd’hui;

j’aime beaucoup Python mais python est complexe

Kata du mardi 26 au matin par @kheops

lecture, écriture et tri de fichiers

La doc de python pour la manipulation de CSV

https://docs.python.org/3/library/csv.html

Merci @Wara !

Spectacle du 26 novembre

Lydia et Mohamed (gestionnaire de mots de passe)

On peut entrer un nom ou URL de site web, un identifiant, une taille de mot de passe. Il génère un mot de passe aléatoire. C’est stocké dans un fichier.

On utilise la fonction choice pour sélectionner des caractères aléatoires dans l’ensemble des caractères imprimables.

Pour le moment le fichier est écrasé à chaque fois mais on réfléchit à améliorer ça.

Commentaire : « le code est court, c’est cool ».

Proposition de Nicolas : vous pouvez utiliser le mode append de open pour ne pas écraser le fichier.

Proposition de Flo pour simplifier le code : input() peut prendre une chaine de caractères à afficher à l’utilisateur·rice.

Laurine, Nicolas et Gwénaëlle (gestionnaire de mots de passe)

Interface graphique créée par Laurine. On peut entrer titre, identifiant, mot de passe, confirmation de mot de passe et URL du site. Encore quelques petits soucis lorsqu’on redimensionne la fenêtre.

Une autre base de code indépendante qui gère l’entrée de mots de passe et le chiffrement, dans le terminal. Les entrées sont sauvegardées dans un fichier CSV.

Pour le chiffrement, le mot de passe est transformé en liste contenant le code ASCII de chaque caractère. On fait un calcul compliqué sur chaque code ASCII. On utilise l’indice du caractère dans la chaine pour que le même caractère ne donne pas le même chiffrat deux fois.

Laurine a tenté une autre interface graphique qui génère un mot de passe aléatoirement selon la longueur demandée, avec trois niveaux possibles de robustesse, et on peut le copier dans un presse-papier.

Marine et Florian (éditeur de texte)

Première base de code présentée par Florian. Petit soucis de bibliothèques pour la démo. Ça a été un peu compliqué d’installer toutes les bibliothèques sur ma machine. J’utilse tkinter comme bibliothèque graphique et PIL pour gérer les images.

Je fabrique une fenêtre où il y a du texte. Utilisation de la méthode pack() pour insérer les éléments créés dans la fenêtre. Créé des boutons radio, qui ne font pour le moment rien.

Ensuite j’ai voulu faire des trucs à base de chatons qui s’affichent selon ce qu’on tape.

La méthode mainloop() permet d’afficher l’ensemble, si on ne l’utilise pas rien ne se passe.

Marine : j’ai fait des exercices pour débuter le Python que je vais pousser pour que d’autres y ait accès.

Adriel et Fayal (éditeur de texte)

Pour le moment on a juste une première fenêtre affichée avec un texte dessus. Soucis d’ordinateur qui plante lorsqu’on lance l’application…

Wara et Zakia (gestionnaire de mots de passe)

On a déjà fait une liste qui regroupe URL, identifiant et mot de passe. On la stocke dans un fichier CSV.

On est aussi capables d’afficher ce qu’il y a dans personne en analysant la structure CSV du fichier.

C’était compliqué de chercher exactement ce qu’on voulait dans la documentation. Déjà savoir exactement ce qu’on veut n’est pas tout le temps facile.

—>>> Marine - Journalisation - 26 novembre 2019 :

Je suis super fière de moi parce que j’ai codé en Python des exercices progressifs (cf. correction sur Github).

Surtout, le fait de faire directement des exercices tout en allant chercher dans la documentation en ligne ou auprès des autres apprenant.e.s de l’aide me permet d’apprendre des erreurs les plus subtiles tout en rendant plus fluide la programmation dans le terminal.
Le fait de bien m’approprier le langage Python me permet de concrétiser le projet commun avec Florian. J’aime bien travailler avec lui !

Je me suis aussi inscrite sur la plateforme FreeCodeCamp pour m’exercer en Javascript : je recommande !

Il faut que je range mon Bureau parce que c’est le chaos. :wink:

3 J'aimes

Journal de Lydia

Lun 25.11.19 - Cerberus avec @Mohamed

  • Appris :
    - mise en forme .md
    - utilisation ‹ import string › ou ‹ import random ›
    - l’importance des espaces : print() ≠ print ()

  • Vu :
    - utilisation ASCII

Mar 26.11.19 - Cerberus avec @Mohamed

  • Appris :
    - importer bibliothèque de 2 manières : import bidule / from bidule import *
    - obtenir des entrées clavier : print(« bla-bla : ») / bidule = input()

  • Vu :
    - while et for in range

Mer 27.11.19 - Cerberus avec @Mohamed

  • Appris :
    - append : open (« bidule », « a ») as bidule
    pour ne plus écraser un fichier mais bien ajouter les datas les unes à la suite des autres

  • Vu :
    - notion hash (algorithme de hashage) - je pense faire des recherches sur le sujet. J’aime bien la crypto, plus précisément, j’aime l’idée que je m’en fais. Après est ce que je vais aimer en faire…

J’ai remarqué que j’avais un absurde besoin de réécrire des lignes lorsqu’elles n’ont pas été tapées par mes doigts -même si c’est à l’identique.

!!! J’ai dû réécrire mon journal dans une nouvelle réponse parce que le Tribe m’a refusé la ré-édition de ma première réponse. Mohamed et Wara ont partagé mon sentiment de frustration et d’incompréhension.
Du coup, je vais m’amuser à supprimer et re-répondre tous les deux jours haha - à savoir, j’ai tout de même gagné le « badge Éditeur »… tout est très logique !

Jeu 28.11.19 - Cerberus avec @Mohamed

  • Appris :
    - git stash avec @philippe.blayo : récupérer les modif en local
    - git commit --amend : modifier un commit déjà fait
    - faire appel à un fichier présente dans un fichier B, dans un fichier A : from ‹ mon_fichier › import ‹ ma_fonction ›
    - vim, cmd : ‹ :%s/ bidule / newBidule /g › : permet de modifier un caractère à tous les endroits où il apparait

  • Vu :
    - notion de saisie sécurisée - fichier cerberus.py - ‹ 1 › , ‹ 2 › , ‹ 3 ›
    - while fin : ligne 7 du fichier cerberus.py - boucle infinie qui renvoie systématiquement le menu une fois l’action de l’utilisateur finie

Si mes pieds m’y conduisent, demain j’essaye d’intégrer des notions de crypto avec @Mohamed
J’adore travailler avec @Mohamed !!!

Ven 29.11.19 - Forum ouvert
Revu la charte
Recherches sur la crypto
Observation des gamers
Ah et j’ai fait planter mon ordi. J’ai failli foutre en l’air des docs pros. Mais @Wara et @Adriel m’ont bien aidé et rassuré (merci !)

Lun 2.12.19 - WZ avec @Mohamed
Reprise du projet de @Wara et @Zakia
Plénière sur python (compréhension et création de class) avec @agathe_begault

Mar 3.12.19 - WZ avec @Mohamed
Recherche doc crypto : Lecture, tentative de compréhension et tentative d’exécution de la doc trouvée - dernier point compliqué à appliquer.

Mer 4.12.19 - WZ avec @Mohamed
Kata - TDD - python sur Conversion chiffres romains en chiffres arabes avec @kheops

Jeu 5.12.19 - WZ avec @Mohamed
Après-midi en remote avec @Wara et @Florian : katas sur codewars.com
Interessant de tester les outils permettant le travail en remote (on a rencontré des difficultés au début mais on a finalement réussi et c’était plutôt cool - ça épuise)

Ven 6.12.19 - WZ avec @Mohamed

  • Appris :
    - Hash = crypter mais pas décrypter
    - Symétrique = même clé pour crypter et décrypter
    - Asymétrique = clé différente pour crypter et décrypter

  • Vu :
    - Algorithme de cryptage AES

1 J'aime

Journal de Mohamed

25/09/19 - Cerberus avec @lyd.sanaa

  • Ce que j’ai appris :
  • La mise en forme des fichiers Markdown
  • L’importance des espaces : print() =/= print()
  • La conversion du code ASCII en caractères

26/09/19 - Cerberus avec @lyd.sanaa

  • Ce que j’ai appris :
  • L’utilisation des fonctions/méthodes input() , .append , choice() (lib random) , .read() , .write()
  • La différence entre import bidule et from bidule import *
  • Qu’il existe des différences entre l’utilisation de python sur mobile et desktop. La version mobile est plus tolérante.

J’aime beaucoup Python et tout comme le C, je pense que Python sera un de mes langages de prédilection :ok_hand:

27/11/19 - Cerberus avec @lyd.sanaa

  • Ce que j’ai appris :
    - L’utilisation de append avec la méthode open (merci @Nydragon)

  • Ce que j’ai vu :
    - Après trois jours de projet, je me suis aperçu que certaines méthodes, que je pensais appartenir à la librairie csv, sont natives à python.
    - Il y a beaucoup de différence entre Python 2.x et Python 3.x. Il faut faire attention lorque l’on fait des recherches.

28/11/19 - Cerberus avec @lyd.sanaa

  • Ce que j’ai appris :
    - Cette magnifique commande pour vim « :%s/ bidule / newBidule /g ». Elle permet de remplacer un truc par un autre truc (merci @Adriel)
    - Faire appel à une fonction d’un fichier dans un autre fichier : from mon_fichier import ma_fonction
    - expérimenter un conflit sur git avec @philippe.blayo et @lyd.sanaa. J’ai vu comment utiliser git stash : permet de récuperer les modifs en local, et git commit --amend : permet de modifier un commit déjà fais.

  • Ce que j’ai vu :
    - Comment faire une boucle infinie en Python en utilisant while, True et False
    - Comment faire une saisie sécurisée en Python

Encore une journée très sympa. J’aime de plus en plus Python. C’est un langage très simplifié dans le sens où on va droit au but. Il ne faut surtout pas hésiter à faire du TDD.
C’est super de travailler avec @lyd.sanaa !!!

29/11/19 - Forum ouvert

C’était une journée calme. J’ai geeké avec @Florian @laurine et @Nydragon à League of Legends et me suis amélioré.

2/12/19 - WZ avec @lyd.sanaa

@lyd.sanaa et moi avons récupéré le projet gestionnaireMotDePasseWZ.
Nous avons fais une plénière avec @agathe_begault sur les Class en Python.

3/12/19 WZ avec @lyd.sanaa

C’était une matinée un peu « administrative » dans le sens où on à parlé des différentes manières pour s’organiser et travailler à distance ; du système des référents…
Avec @lyd.sanaa on a fait de la recherche sur la crypto :

Une journée qui a fait surchauffer mon cerveau.

4/12/19 - WZ avec @lyd.sanaa

Super journée.

7/12/19 - WZ avec @lyd.sanaa / Forum ouvert

Journée sympa dans l’ensemble. Un peu triste de ne pas avoir pu participer entièrement à la plénière de ce matin. J’ai pu voir différentes choses dont :

Avec @lyd.sanaa et @Wara (et les petites interventions de @Yannick et @kheops) on a vu l’algorithme de cryptage AES et découvert la libraire/méthode pycrypto. On a pas réussi à aller jusqu’au bout mais je pense comprendre dans les grandes lignes, comment ça fonctionne.

Ah oui, tout cela a été fait en remote !! (Avec l’outil framatalk.org). Ça a été sympa de travailler à distance mais je préfère travailler en IRL, avoir le contact humain, etc…
Donc j’espère que les transports seront opérationnels la semaine prochaine !!

2 J'aimes

27.11.19

Absente le matin

– après midi –

Vu de l’avancement de @Nydragon et @Laurine.
Je n’ai pas pu installer pyperclip, à voir pourquoi plus tard.
Pas une journée productive.

27/11/1961

Je suis arrivé avant 10h !!!
J’ai fait des katas cools sur https://www.codewars.com #satisfaction #malaucerveau
J’ai bossé avec Marine sur la fonction input()
J’ai allègrement ignoré le projet

28/11/2019

Réveil bien raté, c’est con j’aurais bien aimé être là pour la MasterClass.
J’apprécie de plus en plus codewars.com, j’ai fait 3 katas cet aprèm, le deuxième m’a pris un temps fou à cause de la « déformation piscine 42 » : J’ai tendance à vouloir recoder toutes les méthodes alors qu’elles existent déjà la plupart du temps, même si la démarche est intéressante, ça prend énormément de temps et mes méthodes persos sont souvent bien laborieuses et incomplètes par rapport aux natives.
Je suis content de moi au final, j’avance bien. Python m’énerve un peu a vouloir faire son original (pas de !=, pas de i++… alors que c’est quand même pratique et que ça marche dans tous les langages, cayrelou)
:heart:

29/11/2019

Plutôt cool comme forum ouvert, quelques katas basiques pour découvrir c++ et beaucoup de gaming dans la bonne humeur !

4 J'aimes

Journal du soir (27 novembre)

  • J’ai oublié de faire mon journal ce matin… Rapidement : on a fait une pleinière
    sur la cryptographie. J’ai appris qu’il n’y a pas de méthode de « hashage »
    qui ne donne jamais la même clé pour deux fichier différents ! C’est toujours
    une question de probabilité. Quelque part, ça me rassure parce que je trouvais
    ça vraiment magique. C’est aussi la preuve qu’on ne peut pas reconstruire le
    fichier à partir de sa checksum.

  • Dans l’après-midi, on a réussi à travailler sur PyQt5 avec Fayal. C’était un
    peu laborieux… On aurait peut-être dû faire du code, quitte à implémenter
    manuellement certaines choses, plutôt que d’essayer d’utiliser à fond le
    framework, ce qui est assez difficile dans le cas où on n’a pas la moindre
    idée de ce qu’il fait.

  • J’ai trouvé la bonne came en terme de de documentation pour PyQt5

  • Je connaissais la syntaxe f"coucou, {prenom} !" pour écrire une chaîne de
    caractère formattée, j’ai découvert la syntaxe b"<format>" pour définir le
    format d’un QTextDocument. Je ne l’ai pas comprise… En tout cas, ça
    n’a rien à voir avec une chaîne de caractère. Et ç’a à voir avec le type
    QByteArray et une histoire de Union[]

Journal du midi (28 novembre)

  • Ce matin, on a rencontré Sonia qui travaille à Énercoop. Elle nous a parlé de
    son parcours et de la souffrance au travail. Elle nous a expliqué comment elle
    a pu s’en sortir, avec l’aide d’une psychologue du travail (je crois?).

  • J’ai trouvé très chouette qu’elle vienne nous en parler, et j’espère être en
    mesure de reconnaître les situations toxiques pour moi et les autres à
    l’avenir, et savoir réagir correctement.

  • On a aussi parlé du lien (relatif) entre les développeuses et les
    administrateuses système. J’ai appris ce qu’était une devops.

  • J’ai appris la commande help dans bash ! Elle me permet de me renseigner
    sur les builtins de bash sans lire le man bash de 4 716 lignes ! Je suis
    super surpris de ne jamais avoir pensé à essayer cette commande ! oO

  • J’ai appris qu’edf existait toujours, et l’existence de… tde ? Je ne suis
    pas sûr du nom mais en gros, il y a quelque chose qui s’occupe du transport de
    l’électricité.

  • J’ai appris que beaucoup d’entreprises qui fournissait le l’énergie moins cher
    qu’edf sous couvert d’arguments écologiques proposait probablement un
    service bullshit, en tout cas pas plus écolo que les autres.

  • Il y a aussi une histoire d’arène, qui consiste en une réserve d’énergie
    nucléaire. Je trouve ça aberrant de ne pas payer l’électricité, mais
    d’investir indirectement dans la création d’un certain type d’électricité. Je
    ne sais pas si je peux avoir la garantie que toute l’énergie que je consomme
    sera produite d’une manière un peu plus écologique.

Journal du soir

  • J’ai mieux compris PyQt5. On a réussi à implémenter une « MenuBar » avec
    Fayal.

  • J’ai appris que le retour de object.method().method1().method2() sera le
    retour de la dernière méthode appelée. Ça peut paraître con, mais je
    pense que c’est une source intarissable de confusion et d’erreur. J’ai besoin
    de clarifier quelques points, mais je pense pouvoir conceptualiser ce
    processus comme un pipe. Ce que ça me facilite la vie !

Journal du soir (29 novembre)

  • J’ai oublié de faire le journal de ce midi… C’est sûrement parce que j’étais
    plus concentré sur le fait qu’on allait manger un kebab que sur le fait qu’on
    changeait de moment dans la journée.

  • Ce matin, du coup, j’ai appris les commandes normal gq{motion} et
    gw{motion}, ainsi que leurs différence. J’ai appris l’option formatexpr,
    formatprg et formatoptions, et les options built-ins de vim pour formatter
    du texte.

  • J’ai appris les bases de par, une commande bien trop complète (un vrai bijou
    mais trop peu documenté) pour formater du texte.

  • J’ai appris que vim pouvait balancer le texte d’une sélection depuis un
    fichier dans une commande, et remplacer ladite sélection par son résultat. Si on
    veut, on peut aussi écrire le résultat (le stdout) d’une commande dans le
    fichier, si ça intéresse des gens (:r !). La sélection, c’est ce que fait
    formatprg avec {motion} qui choisit un programme à utiliser pour le formattage
    de texte avec la commande gq{motion} (mais pas la commande gw{motion}, qui
    ne simule que le comportement du builtin!)

Journal du soir

  • On a réussi à configurer nos ordinateurs respectifs pour faire tourner le code
    de l’autre groupe sur nos machines. Pour arch, on a utilisé sudo pacman -S tk et sudo apt install python3-tk pour ubuntu. L’essentiel c’est que ça
    marche.

  • J’ai un peu mieux compris ce délire de pip… Je ne connais pas les détails de
    son implémentation ni de son comportement, mais j’ai appris qu’il existe des
    gestionnaires de paquets spécialisés pour tel ou tel langage. Je suppose que
    c’est aussi le cas de npm. On peut parfois passer par pacman dans certains
    cas. J’ai besoin d’en apprendre plus à ce propos.

  • J’ai appris que tk faisait partie de la bibliothèque standard. Je ne
    comprends pas pourquoi on a dû installer quelque chose, mais d’un autre côté,
    je n’ai pas fait l’effort de chercher à comprendre… Je vais plutôt chercher
    dans le comportement général de pip & cie.

  • J’ai testé la dernière snapshot de Minecraft. Elle tourne super bien ! Ils
    ont fait un boulot d’optimisation non-négligeable sur la 1.15. J’ai appris
    qu’à l’ancienne, Minecraft considérait le nombre maximum de FPS comme le
    nombre minimum. Du coup il surchauffait tout le temps pour atteindre le palier
    spécifié (120 par défaut, je crois…). Maintenant que ce comportement a été
    rectifié, il est beaucoup plus pépère et se contente des 60 fps qu’il fait
    sans effort. Ils sont aussi en train de refondre complètement le moteur
    graphique.

  • J’ai aussi appris qu’il ne fallait pas que je parte du principe que ce qui est
    une string doit être entre guillement, ni que ce qui semble être un entier ne
    doit pas l’être. Merci Wara qui m’a beaucoup aidé à clarifier les choses à ce
    sujet, tu m’as aussi aidé sur d’autres cas concrets.

  • L’après-midi, on a parlé de PNL. Pas le rappeur, mais du truc à l’origine de
    cette théorie du « plutôt visuel, auditif ou kinesthésique ? » avec Élodie,
    Marine et Wara. C’était chouette.

  • C’est vrai qu’on s’est tapé des grosses barres, mais j’ai aussi appris des
    choses intéressantes. Je reste néanmoins prudent sur l’interprétation de cette
    recherche. Les liens de cause à effets sont trompeurs dans ce genre de
    situation. C’est facile de raconter du grand n’importe quoi.

  • Cependant, j’ai été bluffé par l’expérience qu’on a faite et les résultats
    obtenues. Je n’ai pas pu établir ce fameux lien de cause à effet entre le
    comportement observé et le processus étudié, mais la corrélation était réel.

  • J’ai appris que la théorie ne s’arrêtait pas qu’au « VAK », mais parle aussi
    du Dialogue Intérieur, et que même dans le VAK il y a beaucoup de catégories
    bien spécifiques (Remémoré, Construit, etc).

  • Ça fait un journal un peu long… C’est ce qui arrive quand j’écris dans le
    RER ; je prend mon temps.

  • Ah ! Et j’ai appris avec Lydia et Wara que les options de cp différaient sur
    MacOS et les système GNU/Linux. Notamment pour agir d’une manière récursive
    (sur tous les dossiers et les sous-dossiers), on utilise l’option courte -r
    sous GNU/Linux, tandis que c’est -R pour MacOs. De même, l’option
    --verbose ne semble pas exister sous Mac. Dans tout les cas, il faut se
    référer au man de l’ordi sur lequel on se trouve qui fait office de loi.

Journal du midi (28 novembre)

  • Ce matin, j’ai compilé le firmware de la numworks sur mon ordinateur ! Ça
    marche ! Je peux créer ma propre version de epsilon.

  • J’ai appris que le builtin select de bash pouvait prendre en argument *
    pour générer une liste de mot à partir du répertoire courant.

  • Par la même, j’ai appris que j’ai aussi le droit de faire $(*). Ça doit
    avoir un intérêt dans des cas relativement rares, mais ça peut permettre de
    substituer ls, alors pourquoi pas (je ne sais pas si ça fait vraiment une
    différence au niveau noyau… ls n’est pas une builtin de bash.

  • On pourrait tester et vérifier (ou pas!) une différence du temps d’exécution
    entre un ls et un echo *.

  • Je n’ai pas franchement envie de travailler à nouveau sur le code du projet de
    Nicolas Gwén et Laurine… C’est pas très grave, on va le faire. Je ne pense pas
    que ce soit ma journée non plus.

Journal du midi (3 décembre)

  • J’ai encore oublié de le faire ce midi. Je ne l’ai pas fait non plus le soir
    parce que je suis arrivé en retard après les ateliers scratch à COMPANS. Et
    puis je n’étais pas vraiment présent à ada.

  • Ce matin, donc, j’ai appris que refactorer était plus abordable que je ne le
    pensais. J’ai découvert « l’œil » de Yannick. J’ai été frappé par la manière
    dont il a envisagé le « remaniement » du code. Ça m’a totalement retourné
    l’esprit. J’étais vraiment en train de me prendre la tête sur le ton :
    « Ouais, il va falloir qu’on déclare une variable de décalage en x pour
    remplacer toutes les constantes par x+qqc, ça va être relou et long, je ne
    suis pas sûr que ça racourcisse le code… ». J’ai appris que globalement, dans
    une bonne quantité de cas, déclarer une fonction c’est un bon moyen de
    refactorer du code. J’ai une petite idée des étapes qui ont permis à Yannick
    d’arriver à cette conclusion dans ce cas précis, mais je pense que le mieux
    est de me faire ma propre expérience… Je suis très content du code que j’ai
    écris !

  • J’ai aussi utilisé nohup command ce matin ! J’ai lancé feh depuis un
    terminal que j’ai ensuite fermer, sans affecter feh. En gros, nohup dit
    à mon terminal : « Quand tu te fermes, n’envoies pas tout les signaux
    généralement importants aux sous-shells et autres processus enfants ».
    Pratique dans certaines situations ! J’ai aussi appris qu’il existe des
    commandes, comme dd, qui ignore de toute manière ses différents signaux :

    # Dans un terminal
    $ dd if=un_gros_fichier of=/dev/null
    # Dans un autre terminal, après fermeture du précédent
    $ ps aux | grep dd
      => output effectivement la commande `dd` du précédent call.
    
  • Je ne sais plus quand est-ce que j’ai appris la commande ps aux. Récemment
    et grâce à Tristan et Agathe.

Journal du midi (6 décembre)

  • Ce matin, il y a Florian, Lydia, KheOps, et moi. On a fait un remote sur
    Framatalk avec les autres, avec la problématique « Comment Laurine aurait pu
    se cacher des services américains lors de ses recherches pour son TPE ? »

  • J’ai appris que le vpn n’est pas réellement une surcouche au protocole
    HTTPS, mais plutôt qu’on envoyait toutes ses données de notre FAI au vpn qui
    s’occupait, d’une manière transparente pour le FAI, de faire le travail de DNS
    et de chiffrer la connexion. C’est toujours plus difficile de l’exprimer à
    l’écrit…

  • J’ai appris qu’on pouvait se connecter à thepiratebay.org depuis Ada, en
    clair. J’aimerais vraiment comprendre ce qu’à fait François en détail. On est
    des pirates à Ada, maintenant.

  • J’ai appris l’existence de l’OS Tails. J’ai très envie de le tester et d’en
    avoir un. Le pouvoir de son OS entier dans sa poche m’attire…

  • J’ai fait un journal du midi à midi ! :smiley:

Journal du soir

  • Dans la catégorie « Truc que je ne fais plus jamais parce que c’est trop
    casse-gueule », il y a éteindre brutalement mon ordi pendant que je suis en
    train de compiler avec le gestionnaire de paquet. Ça ne m’a rien foutu en
    l’air de grave, mais j’ai dû réparer deux-trois trucs et ça me fait un peu
    trop peur à l’avenir…

  • J’ai appris les bases de gpg avec KheOps. C’est vraiment de la « pretty good privacy ». Plus que la syntaxe pur, j’ai surtout appris la philosophie
    et les mécanismes employés, ainsi que les pratiques courantes. J’ai un peu la
    flemme de détailler plus ici parce que j’ai l’impression que ça reviendrait à
    écrire un tuto assez complet… J’ai beaucoup de gratitude pour KheOps qui m’a
    basiquement évité des mois de recherches pour arriver à un résultat en terme
    de compréhension sûrement pas aussi bon. J’ai l’intention de pratiquer.