Les billets de blog

Golang, comment définir un destructeur

Si vous avez un peu bourlingué sur Go, vous savez qu’il n’existe pas de “destructeur” sur les structures. Mais en cherchant un peu, vous allez pouvoir utiliser le garbage collector et simuler un destructeur. Je me suis rendu compte en utilisant un peu Go pour créer mon blog, que si je ne faisais pas attention je pouvais avoir des centaines de connections à la base Mongo ouvertes et jamais fermées.

POO vs Composinting

Si vous vous êtes intéressé au langage “Go”, alors vous devez savoir qu’il n’est pas un langage purement objet mais “de compositing”. Mais quand vous codez en Go, vous avez cette impression de coder avec des classes et des objets. Alors c’est quoi la différence ? On va se réferer à la page de FAQ: https://golang.org/doc/faq#Is_Go_an_object-oriented_language et on lit: Is Go an object-oriented language? Yes and no. Although Go has types and methods and allows an object-oriented style of programming, there is no type hierarchy.

Gogs - le vrai clone de github

Vous trouvez gitlab lourd et pas facile à installer, je vais vous parler de Gogs ! Le service Git qui est, pour le coup, vraiment un clone très proche de GitHub et très facile à mettre en place. Apparement je suis super à la bourre niveau news parce que le projet Gogs a plus de 2 ans. Mais c’est pas grave, j’ai envie de vous parler de mes tests.

Go-Pipe, streamez à la unix/like en Go

Vous connaissiez les “pipelines” de Gulp, et bien voici celles de Go grâce à un boulot intéressant (mais datant d’un an déjà) de Gustavo Niemeyer sur sa page Go.pipe - un package permettant de traiter des flux, d’ajouter ses propres traitements, et surtout sans trop de douleurs. L’idée est simple. En bash, on utilise des pipelines. C’est une notion courante qui utilise une notation spéciale qui permet de rediriger des entrée/sorties de commandes en commandes.

L'intérêt des closures en Go

Vous avez entendu parler des “closures” et “generators” qui sont implémentés par plusieurs langages (comme le Python). Mais je sais aussi que beaucoup n’ont pas conscience de l’intérêt particulier de ce pattern. Et comme je me suis retrouvé dans une situation où un generator m’a fait gagné beaucoup de temps, je vais vous montrer à quoi ça sert avec deux exemples: un qui explique le fonctionnement, et un autre qui peut vous rendre service, à savoir “itérer indéfiniement”.

JWT en Go

Vous avez envie de gérer l’autorisation de vos API REST en Go avec JWT ? Personnellement c’est mon cas. Alors voilà comment on s’y prend. JWT (JSON Web Token) est fortement utilisé depuis plusieurs années maintenant. Il permet de signer une clef et de permettre l’autorisation d’un utilisateur dans des échanges client-serveur. Il est intégré au protocole OAuth2 et bénéficie d’une RFC. Pour faire simple, c’est un peu comme gérer des sessions… Mais sans session.