6ème séquence - Messagerie instantanée

Cette séquence sera sur la construction d’une messagerie instantanée.

Les nouvelles notions sont:

  • la création d’un client-serveur(vue avec le chat bot)
  • l’utilisation de plusieurs clients

Vous pouvez faire un client/server local (ie: il ne passe pas par internet). ça permet d’avoir le client et les serveurs sur la même machine.

Equipes :

Le pad pour l’organisation : https://mypads.framapad.org/mypads/?/mypads/group/ada-tech-school-l21h7m7by/pad/view/organisation-projets-messagerie-n2xu57m2

Journal du Lundi 16 décembre de l’an 2019

Journée documentation. Le projet me plait beaucoup (j’avais prévu de le faire en projet perso).
Tout ce qui est réseau/serveur client c’est pas ce que je préfère faire, mais j’y trouve mon compte dans ce projet, puisque grâce à Android Studio, on peut faire une messagerie instantannée en application pour mobile et donc toucher au visuel, qui m’interesse plus. Et en plus je coderai en Java, j’avais vraiment envie d’essayer ça dans un vrai projet.
Je pense utiliser Firebase pour tout ce qui est hébergement, puisqu’ils proposent un ensemble de
services d’hébergement pour n’importe quel type d’application, dont Android.
Je vois par quel chemin passer pour arrivé au resultat.
Je pense qu’on va faire un truc sympa ! :slight_smile:
Ps : J’ai du jouer avec les branches git pour retrouvé un ancien commit dans un ancien projet,
c’était cool, merci Agathe de m’avoir montré comment faire ! :wink:

Journal du Mardi 17 décembre de l’an 2019

EXCELLENTE JOURNEE ! J’adore ce projet, j’adore mon idée de le faire en application pour Android.
Ca prendra plus d’une semaine mais comme ça je m’occuperai pendant les vacances. J’apprends pleins de trucs, c’est trop bien !!

Lundi 16 déc

  • python operators
  • chiffrer différent de crypter
  • pour le bot pour enregistrer il faut faire w le x n’enregistre pas le fonction :r
  • dans .bashrc : alias pour changer le nom de la commande alias sl="sl -a" |merci @Adriel| ?alias sl -a="sl" ne fonctionne pas?

Mardi 17 déc

`>_< c’est difficile de penser simple surtout toute seule.

mercredi 18 déc

  • ps aux |grep ssh ps : liste tous les processus ; aux : avec la syntaxe BSD ; | : passe à grep
  • systemctl (system control) – now sshd : ouvrir ssh dans le deamon system à chaque démarage et --now = et aussi lance le maintenant ; systemd = system deamon
  • vimscript :! appelle une commande externe(shell); cmd = commande;
  • bash : passwd [user] changer de mot de passe.
  • chown : change de propriétaire d’un fichier/dossier : chown [propriétaire/?propriétaire du groupe?] [nom du fichier]
  • https://en.wikipedia.org/wiki/Transmission_Control_Protocol
  • https://fr.wikipedia.org/wiki/Network_address_translation
  • https://fr.wikipedia.org/wiki/Routeur
  • http://marionpatrick.free.fr/man_html/html/ssh_1.html
  • https://help.ubuntu.com/lts/serverguide/openssh-server.html
  • https://www.vim.org/download.php#pc
  • tuple : données inchangeables
  • ssh user@machine machine = ip box dans notre cas (doit au préalable ouvert le port ssh des machine qui veulent se connecter) : commande pour accéder au ma session sur l’ordi d’Adriel
  • write UserDeLaMachineDistante pour écrire sur le terminal de la machine distante
  • source .bashrc pour pourvoir utiliser le bachrc de l’ordinateur distant sur mon terminal où est ouvert la session distante
  • dans vimscript g: (global) pour une variable globale dans tout le code, a: (argument) pour une variable dans la fonction; rien ~pour un endroit très précis
  • thread => ex : firefox a un thread par onglet (a le même code pour chaque onglet)
  • dans vim en mode insertion : l’auto complétion se fait avec ^N (pour next) et ^P (pour previous)
  • dans vim :h netrw-ssh-hack => utilisation de ssh {serverhostname} cat '>>' '~/.ssh/authorized_keys' < ~/.ssh/id_rsa.pu dans le shell pour ne plus avoir a taper tout l temps le password quand on a openssh
  • dans bash et vim : ^V + = ^[ qui est un seul caractère
  • ls -a : afficher tout les fichiers même cacher; ls -l : afficher les fichiers en format list (c’est là que tu peux voir les autorisations r,w,x,r…)
  • {serverhostname} = user@machine

autre

jeudi 19 déc

1 J'aime

Lundi 15 dec

  • presque pas avencé sur le projet
  • trés fatigué

Journal du soir (16 décembre)

  • Coucou ! J’ai eu un ratage pour le journal de ce midi… Ce matin, j’ai fait des
    recherches sur vim clientserver sans beaucoup de succès… Je n’ai pas
    compris ce que faisait et comment fonctionnait --remote-wait. Je n’abandonne
    pas de comprendre un jour, mais pour l’instant, à part la documentation
    officielle de vim – que je ne comprends pas – je ne trouve rien…

  • J’ai appris que vim scp envoyait automatiquement mes changements sur le
    serveur quand je sauvegardais. En demandant à chaque fois le mot de passe. Je
    n’ai pas envie qu’on utilise ssh car ça serait trop simple, et j’ai envie de
    me cantonner à ce que nous offre vim, mais c’est vrai que la limite entre
    des appels bash et vim dans ce cas est très fine… J’suis content de faire
    du client - serveur ; j’apprends plein de choses !

  • L’après-midi, du coup. J’ai appris à utiliser le builtin exec[ute] de vim.
    Il nous permet de construire une ligne de commande vim en utilisant des
    variables. C’est beaucoup plus flexible que de taper la ligne de commande en
    dur, ce qui ne suffirait d’ailleurs pas dans la majorité des cas.

  • J’ai appris qu’on pouvait utiliser la méthode gets() sur un dictionnaire en
    python.

Journal du soir (17 décembre)

  • Ce soir, il y a eu l’atelier de programmation proposé à des personnes
    extérieures à ada. On l’avait préparé avec amour, Flo, Lydia et Hana. Je
    trouve que ça s’est super bien passé !

  • Refaire l’exercice de lecture de code m’a permis de me rendre compte d’à quel
    point il est riche dans le domaine des connaissances apportés, et qu’il n’est
    absolument pas évident, même pour des personnes qui ont de l’expérience dans
    le domaine de la programmation. J’aime bien le fait de ne pas avoir à douter
    de si j’apporte des éléments de réponse ou pas, quand on est dans la position
    d’encadrant. On peut apporter des éléments de compréhension pour les autres,
    en laissant le temps à la démarche de se faire toute seule. On se soucie
    beaucoup plus de tout le monde que des cas individuels.

  • J’ai appris que c’était plus « facile » d’encadrer des ateliers avec des
    adultes qu’avec des enfants.

  • J’ai appris l’existence du « Réacteur ». Ça doit être une autre formation. À
    6 500 € pour deux mois, suivi d’un stage.

Journal du midi (18 décembre)

  • J’ai appris ce qu’était NAT (network access translation), j’ai appris à le
    configurer sur la maudite interface du routeur d’orange.

  • J’ai appris que la commande netstat était déprécié pour la commande ss.
    Très bien. J’ai appris l’existence des commandes ip route et route.

  • Le réseau c’est long et compliqué… Trop de trucs… Ma meilleure doc pour
    l’instant, ce sont les articles wikipedia… C’est terrible.

  • Je suis content d’apprendre plein de nouvelles choses !

  • J’ai appris la syntaxe de la commande chown. Je ne vais pas la retenir, mais je sais où la chercher.

Journal du soir

  • J’ai appris l’existence de la commande ufw qui permet de gérer le firewall
    d’Ubuntu. Wara a utilisé cette commande pour ouvrir le port 22, qui sert par
    défaut à la communication en ssh.

  • C’est un peu flippant de se dire que potentiellement n’importe qui peut
    essayer de bruteforce mon mdp utilisateur à distance, étant donné que le
    port 22 est ouvert. Je vais le refermer.

  • On a réussi à configurer ssh pour qu’il cesse de nous demander des mots de
    passe, en ajoutant des clefs publiques au fichier « authorized_keys ».

  • J’ai appris une forme super fancy d’écriture avec la commande cat :

    cat >> fichier1 < fichier2
    

    Je demande à cat d’ajouter (>>) le contenu de stdin dans fichier1. Je
    balance (<) dans stdin le contenu de fichier2. Au final, j’ai écrit
    fichier2 à la fin de fichier1. Tu parles d’un résultat…

  • Pourquoi une formule si complexe pour quelque chose de faisable beaucoup plus
    facilement (cat fichier2 >> fichier1) ? J’ai appris une deuxième chose super
    fancy. Je peux donner à ssh une commande en argument optionnel. Et pour
    distinguer ce qui est exécuté en local de ce qui est exécuté à distance, je
    peux mettre des ' autour de ce qui se fait en distance. Cette forme fancy me
    permet de garantir que le >> est bien fait à distance, avec '>>'.

    cat '>>' 'fichier/sur/le/serveur/distant' < fichier/local/sans/quote
    

    Je ne sais pas si cette forme fonctionne aussi… :

    cat fichier/local/sans/quote '>>' 'fichier/sur/le/serveur/distant'
    

    J’ai encore des tests à faire, et des choses à comprendre… Peut-être que j’ai
    besoin d’expliciter stdin, parce que je passe un stdin local à un stdout
    distant ? En tout cas, la doc de vim utilise la première forme…

  • Ne pas prendre cette information pour argent comptant, c’est ce que
    j’ai l’impression d’avoir appris par déduction, si ça se trouve je suis
    complètement à côté de la plaque, j’ai eu du mal à trouver de la doc à ce
    propos…

  • J’ai découvert les joies et les problématiques du serveur…

Journal du soir (19 décembre)

  • On a fait la rencontre de Barbara. Beaucoup de choses à dire, c’est bien
    au-dessus de mes capacités… Elle m’a permis de beaucoup mieux comprendre des
    choses dont j’ai pu entendre des allusions à ut7, et dont j’ai déjà entendu
    parler ailleurs (avec Élodie…).

  • J’ai appris ce que c’était une « user story ». La navette entre développeuses
    et utilisatrices (« clientes », grrrr…) basé sur la production de « user
    stories » d’un côté, et de MàJ sur un modèle incrémentiel de l’autre (des
    itérations régulières, qui font évoluer le code petit à petit). J’aime
    beaucoup ce modèle parce que j’ai toujours mal vécu la pression des deadlines
    dans ma vie, et c’est une vraie libération pour moi de m’imaginer travailler
    avec ces contraintes sous une forme détourné, en quelque sorte (je ne pense
    pas non plus qu’on s’en débarrasse complètement, il doit juste y avoir moins
    de pression).

  • Cependant, j’ai toujours un peu de mal avec cette idée de mettre
    l’utilisatrice (ou pire ; la cliente!) au centre de la construction du projet.
    Je pense que dans un monde idéal, c’est effectivement ce qu’on doit faire :
    mettre l’humain au centre de nos recherches, mais je pense que ça doit être
    pour tous les humains, non-négociables. J’ai un peu une gêne vis-à-vis de
    l’idée que la seule éthique puisse être de travailler pour une cliente, et
    que le reste on s’en fout (je pensais à amazon entre de nombreux autres
    exemples). L’agile, faut être prudent.

  • J’ai appris l’existence ce matin de LTSP (Linux Terminal Server Project),
    qui, contrairement à ce que son nom indique, permet de se connecter en serveur
    et avec une interface graphique sur une machine serveur depuis différents
    postes sans trop s’emmerder à tout configurer (c’est chouette aussi, bien
    sûr!).

  • Je suis assez impressioné des propositions que j’ai pu apporter au groupe de
    Lydia et Florian. Je leur ai littéralement conseillé de bouger 10 lignes de
    code d’un coup, sans les avoir réellement lues, et ça n’a pas « tout cassé »
    et on a réussi à le faire marcher. Le code c’est un peu magique des fois. J’ai
    appris que je pouvais aussi avoir une bonne intuition des choses, sans
    vraiment y faire gaffe… Ou un truc comme ça. En tout cas, je suis assez fier
    de ce coup.

Journal du soir (20 décembre)

  • Aujourd’hui, on a fait « La roue de l’influence », Lydia, Élodie et moi. Je
    suis très content d’avoir entendu parler de leurs vies respectives, et je suis
    très content d’avoir pu parler de la mienne. C’est toujours loin d’être
    exhaustif pour chacune d’entre nous, mais j’ai appris beaucoup de choses sur
    elles, et sur moi.

  • Je pense que c’est un bon exercice pour prendre confiance en soi, rien que
    dand le fait qu’on est obligé de raconter nos vies. Je pense qu’on a une
    grande tendance à ne pas vouloir raconter nos vies, de peur qu’elle soit
    inintéressante ou bien de passer pour égocentrique, et c’est surtout un
    exercice pas facile, et plus riche qu’on ne le pense, pour soi comme pour les
    autres. J’ai appris ça.

  • J’accorde donc une importance toute particulière, non seulement au fait
    d’écouter la vie des autres, mais désormais aussi au fait de
    raconter la mienne !