Skip to content

📝 Blog

[AtomFly] découverte d'un drone

Comme la liste des projets Ă  faire est infinie, autant en rajouter un.
C'est ce que s'est dit Philippe en commandant une série de drones AtomFly :)

Le principe est d'avoir un petit drone complet, trĂšs simple dans sa conception, mais sans aucun code pour le faire voler.

Un exemple de code est fourni pour connaßtre la façon d'accéder aux moteurs et aux capteurs, mais c'est tout : c'est le AtomFly Challenge !

Je vous ait fais une petite vidéo de découverte de l'engin, la suite sera pour les outils et le test de fonctionnement.

Cahier de vacances - exercism

Petit changement de programme aujourd’hui.
Je voulais vous parler d’un site proposant des exercices dans diffĂ©rents langages dont Go : Exercism.io

Outre le cÎté sympa des exercices, classés par difficulté et progressifs, il y a un aspect communautaire trÚs intéressant.
Vous pouvez choisir d’avoir un retour sur votre code en le soumettant aux mentors. Le procĂ©dĂ© est bien fait et les retours toujours bien ciblĂ©s. Il est mĂȘme possible de soumettre des modifications et avoir les retours Ă  nouveau.
Cerise sur le gateau, quand un exercice est publiĂ© par quelqu'un, ses commentaires sont accessibles et une discussion peut dĂ©marrer. Vous pouvez profiter de l’expĂ©rience de chacun, des erreurs ou amĂ©liorations suggĂ©rĂ©es.

Dans le cadre de mon cahier de vacances, j’ai commencĂ© la partie en Go, toujours depuis ma droplet et avec Working copy comme outil de synchro (avec un repository GitLab associĂ©).
La procédure est assez simple.

  1. installer l’outil ligne de commande de exercism
  2. J’ai choisi de lancer le premier exercice depuis ma droplet avec l’outil exercism. Un rĂ©pertoire est alors créé.
  3. Sur Gitlab, je crĂ©e un repository dĂ©diĂ©, je le laisse en privĂ© pour le moment 😅
  4. J’ai ajoutĂ© une clĂ© SSH de ma droplet sur gitlab pour pouvoir pousser le code initial.
  5. Pour ajouter ce code initial, j’ai suivi les instructions donnĂ©es lors de la crĂ©ation du repository, je les met ci dessous pour rappel.

git config —global user.name "votre nom"git config —global user.email "votre email"cd "votre rĂ©pertoire"git initgit remote add origin git@gitlab.com:<votre utilisateur>/<votre repository>.gitgit add .git commit -m « Initial commit »git push -u origin master

Me voilà paré pour suivre mon process maintenant maitrisé et décrit dans un précédent article.

J’ai dĂ©jĂ  pas mal appris de petit dĂ©tails sur la façon Go de rĂ©soudre des problĂšmes.

A votre tour !

Cahier de vacances - arguments

Pour l’étape suivante, je vais m’intĂ©resser au sujet de l’issue #2 : passer des arguments Ă  mon outil.

Comme vu dans un article prĂ©cĂ©dent, je crĂ©e tout d’abord la branche et la MR depuis GitLab.

En guise d’API de test, je vous propose d’utiliser l’API du site OpenWeather qui nĂ©cessite une ApiKey.
Pour ce qui est de rĂ©cupĂ©rer cette clĂ©, je vous renvoie vers une de mes vidĂ©os oĂč j’en parle.

Dans un premier temps, je vĂ©rifie que ma requĂȘte fonctionne.
Il suffit de reprendre le code précédent et faire un appel comme décrit dans un de mes exemples IoT.

http://api.openweathermap.org/data/2.5/weather?q={city name},{state code},{country code}&appid={your api key}

Je peux maintenant ajouter la gestion des arguments passés à Dobby.
Je devrais d’ailleurs dire, une premiùre gestion des arguments.
En effet, je vais tout d’abord utiliser le package flag.
Il est assez simple à appréhender, je vous montre ça tout de suite.

var urlPtr = flag.String(« url », « », « Url que Dobby va appeler pour vous. »)
var apiKeyPtr = flag.String(« apikey », « », « ApiKey a utiliser pour appeler votre url. »)
flag.Parse()

Ce package permet de définir des arguments en indiquant leur nom, une valeur par défaut et une description.
Il faut ensuite demander un parsing de ces arguments pour obtenir des pointeurs sur ces valeurs (oui, pas la valeur en direct, il faut que je me rĂ©habitue Ă  cette façon de penser des annĂ©es 70 et du C 😇 )

L’appel se fait alors de cette façon, en se rappelant que les arguments sont rĂ©cupĂ©rĂ©s par des pointeurs.

response, err := http.Get(*urlPtr + « &appid=« + *apiKeyPtr + « &units=metric »)

Pour lancer dobby, on peut continuer en mode ‘go run’

~/Dobby/src# go run dobby.go -url=http://api.openweathermap.org/data/2.5/weather?q=Chamonix -apikey=<votre Api Key>

Me voilĂ  Ă©quipĂ© d’un systĂšme d’arguments, qui fournit Ă©galement des services comme une aide en ligne avec l’argument ‘-h’

~/Dobby/src# go run dobby.go -h
Usage of /tmp/go-build863761866/b001/exe/dobby:
-apikey string
ApiKey a utiliser pour appeler votre url.
-url string
Url que Dobby va appeler pour vous.
exit status 2

Pas mal non ?

Je ne dĂ©veloppe pas plus, je pense passer Ă  un package plus complet par la suite. Je verrais alors de quoi j’ai besoin.

En cadeau, la vue de mon bureau du jour 😇
Lien vers Google Photo en attendant que j’ajoute le plugin pour Ghost. https://photos.app.goo.gl/eTozFE2ea4DWhwnh9

Cahier de vacances - Merge Done

Bon, on va se mettre d’accord : ça reste mes vacances hein 😉
Alors oui, aujourd’hui je n’ai pas publiĂ© d’article et celui ci est assez lĂ©ger.
Que voulez vous, ce n’est pas tous les jours qu’un copain de 30 ans dĂ©barque sur mon lieu de vacances aprĂšs 360km pour me rejoindre đŸ„łđŸ€Ș

Mais comme vous ĂȘtes sages et que je ne reçois aucun commentaire ou email, je vous fais ça vite fait en bord de piscine.

Le code créé et testĂ© dans l’article prĂ©cĂ©dent est maintenant prĂȘt Ă  ĂȘtre poussĂ© et rendu publique.
C’est mĂȘme essentiel pour pouvoir faire le merge et clore la tĂąche en cours. Je ne vous mens pas, vous verrez l’historique de la MR #1, j’ai cherchĂ© Ă  clore avant d’avoir poussĂ© mon code đŸ€Ł

Commençons par ouvrir Working Copy. Le code est bien là, la branche toujours la bonne. Je peux préparer le commit soit par la premiÚre icÎne de Working Copy, soit la seconde qui représente le commit.
J’entre un rĂ©sumĂ© en titre, une explication des modifications, puis j’active l’option Push proposĂ©e. Il n’y a plus qu’à actionner le mot Commit Ă  cĂŽtĂ© de l’option Push.

Pousser le commit

Le code est maintenant dans la branche. Sur GitLab, j’ai maintenant la possibilitĂ© de valider cette MR, puis d’actionner le merge lui mĂȘme.
Il reste alors Ă  aller dans la partie Settings du projet, puis dans la section Visibility, le rendre publique et sauvegarder les changements..

And VoilĂ  ;)
Vous pouvez maintenant accĂ©der Ă  ce superbe bout de code sur ce repository flambant neuf avec toutes les bĂȘtises que je fais et vais continuer Ă  faire.
N’hĂ©sitez pas Ă  me faire part de vos remarques, je ne demande qu’à apprendre.

Quand Ă  moi, je retourne Ă  des projets plus appropriĂ©s Ă  des vacances, Ă  base de piscine, d’apĂ©ro et de pizza :)

Cahier de vacances - enfin du code

Comme prĂ©cisĂ© dans l’article prĂ©cĂ©dent, les diffĂ©rentes Ă©tapes telles que je les envisage sont notĂ©es dans des issues dans le projet sur GitLab.

L’idĂ©e gĂ©nĂ©rale est d’apprendre le langage Go en crĂ©ant un utilitaire capable d’appeler des API web. Il n’y a pas forcĂ©ment un aspect innovant, mais ça me permet d’étudier diffĂ©rents aspects techniques qui pourraient avoir un usage professionnel.

Mais assez d’articles sans code, je me lance !
Tout d’abord, je sĂ©lectionne la page des issues du projet.

Page des issues

J’accùde ensuite à l’issue #1.

Issue 1

Choisir le menu « Create merge request » puis sĂ©lectionner l’option « create merge request and branch »

Création MR

J’en profite pour ajouter un label « Doing » qui indiquerait Ă  d’éventuels collaborateurs sur le projet que je travaille sur cette issue et je me l’assigne.

Label et assign

De retour dans Working Copy, j’effectue un fetch pour rĂ©cupĂ©rer l’existence de la branche, puis je fais son checkout.

Checkout

Je dĂ©couvre que Working Copy va me permettre d’aller assez loin dans mes premiers pas de codeur sur iPad. On peut par exemple crĂ©er un fichier et l’éditer.

Création fichier

Je saisis les quelques lignes de Go nécessaires à cet appel.
Et j’active bien sĂ»r la fonction d’upload sur ma droplet.

PremiĂšres lignes de code

J’accùde ensuite à ma droplet avec Blink, et je lance le code.

Premier lancement

Il ne reste alors plus qu’à pousser le code et faire le merge de la MR.

Pas si mal, non ?
Il m’a fallut beaucoup plus de temps pour le dĂ©crire que pour le faire.