Skip to content

10 avril 2018

Emmanuel Gaillot edited this page Apr 10, 2018 · 1 revision

Participants

Les nouvelles depuis la dernière fois

  • J'ai refait mon site perso
    • j'ai appris qu'on ne pouvait pas changer une variable SASS depuis JavaScript
  • Je travaille sur un « gros déploiement »
    • pas mal de questions sur les migrations de données, les processus, etc.
  • J'ai bossé sur un script pour identifier les doublons de expect — dans l'espoir de pouvoir ensuite les extraire dans des matchers.
    • ensuite, on mettra ça dans une gem.
  • J'ai découvert Gosu — la lib pour jeux en 2D, pas le truc docker pour lancer des processus
    • de l'espoir d'en faire quelque chose.
  • J'ai refait des éponges, mais en 2D, avec Processing
    • j'ai révisé la différence entre récursion, récursivité, récurrence, etc.
  • J'ai tenté d'utiliser Jupyter Notebook
    • C'est un peu décevant : ça fait plein de trucs, mais je n'ai pas de cas d'utilisation (traitement Big Data). Il y a un côté Literate Programming séduisant, mais les blocs de code n'ont pas l'air reliés…

Les envies du jour

  • Programmation multi-threads / multi-process… en C
    • des récipients qui se remplissent et se vident ?
    • un serveur qui lance des processus et des threads
  • Programmer un parcours d'arbre en Node.js

Ce qui s'est passé

  • Un serveur en C !
    • D'abord, retourner un code système
      • comprendre le code compilé avec objdump
    • Puis, afficher "Hello world"
    • Puis, c'est parti pour de vrai
      • Créer une socket avec socket(int domain, int type, int protocol)
      • Relier la socket à l'interface réseau du serveur avec bind(int socket, const struct sockaddr *address, socklen_t address_len)
      • Écouter sur la socket avec listen
      • Boucle while pour servir plusieurs clients
      • sleep pour mettre en évidence le délai induit par un temps de traitement
      • fork pour créer un nouveau processus et traiter en parallèle chaque requête
        • un moment de panique : fork duplique les descripteurs ouverts, du coup il faut fermer la socket dans le parent et l'enfant pour vraiment fermer la socket
        • on apprend à utiliser dprintf

Le code du jour

https://github.com/ut7/gymclub/tree/20180410-multithreadC/multiprocess

Ce qu'on retient de la session

  • le C, c'est chaud…
  • … mais comme on est proches du métal, on apprend davantage comment le système d'exploitation fonctionne
  • dprintf
  • comment faire du copier-coller avec le bouton du milieu sous Unix
  • révision de la mécanique du fork
  • On a réussi à la fin à vérifier qu'on crée bien des processus différents

D'ici la prochaine fois, on voudrait / pourrait…

  • Voir jusqu'à quelle vitesse je peux requêter / afficher une série d'images avec JavaScript
  • Repotasser les pointeurs sur fonctions en C
  • poursuivre le script de détection de duplication de expect
  • Poursuivre avec Gosu
Clone this wiki locally