Contrairement à hier, j'écris l'article au fil de l'eau.
Raccourcir la boucle 🔗
Bon pour ce second jour j'ai commencé par automatiser un poil la façon de tester le code. Pour le moment je lançais un netcat en écoute sur un port dans un terminal, puis je lançais le go run ircc.go. Sauf qu'à chaque fois que je le quittais, fallait retourner sur le term avec le netcat et le relancer… chiant.
Du coup premier truc de la journée : faire un micro-script shell pour lancer ça dans un tmux :
#! /bin/bash
Reload(){
tmux send-keys -t .+ C-c
tmux send-keys C-c
tmux send-keys -t .+ nc Space -l Space -p Space 6667 Enter
tmux send-keys go Space run Space ircc.go Enter
}
Loop(){
while true
do
read -s -n 1 input
Reload
done
}
Loop
Il permet d'envoyer un Ctrl-c aux deux panes, puis de relancer le serveur et le programme en Go. La boucle permet de relancer ces actions en appuyant sur n'importe quelle touche comme ça c'est on ne peut plus simple.
Foutre des variables et virer le hardcode 🔗
Ouai c'était pas terrible du coup j'ai commencé à mettre tout pleins de variables. Déjà parceque c'est facile à faire, il suffit d'être méticuleux et de ne rien oublier. Pour commencer la journée c'est soft.
J'en ai également profité pour tenter de récupérer les arguments donnés au programme. Pour l'instant j'en ai pas spécialement besoin mais ça pourrait servir ensuite. Du coup j'en profite pour récupérer os.Args (en testant au préalable sa longueur). Je pourrai picorer cet exemple plus tard pour l'utiliser différemment.
Parser un peu mieux IRC 🔗
Bon pour l'instant c'était très très basique. Du coup je me suis attelé à faire ça un peu plus proprement.
Je suis donc parti dans l'idée de récupérer une chaîne de caractère et de l'éclater en plusieurs sous-chaîne (séparée par des espaces) pour ensuite comparer certains champs seulement.
En fonction de ça je déclenche des actions bidons pour le moment.
Se documenter 🔗
J'ai dégainé la RFC d'IRC car ça devenait indispensable sur certains points.
Les emmerdes 🔗
J'entrevois déjà pas mal de limitations dans ma façon de coder. Je me retrouve à balader certaines variables un peu partout (les conn, nick et compagnie). J'imagine qu'il y a moyen de faire autrement mais ça va être vite compliqué sinon.
Il me faut donc trouver le moyen de pouvoir écrire une fonction "envoyer_sur_IRC" qui soit appelable d'à peu près partout sans lui donner le socket et compagnie…
Le code maintenant 🔗
|
|