Interface simple d’accès à BingSearchAPI

Il y a une semaine environ, j’ai eu besoin de chercher une centaine d’image sur le web pour faire un POC d’une appli.

Alors, je me prépare à crawler le site du client. Seulement, dans ce monde javascriptisé, c’est la cata de faire un petit script bâteau qui repère juste les img src.

Alors, partons vers Google: inutile de crawler leur propre page web : elle est en chargement asynchrone. Et google, comme ce sont des gens bien ont décidé de déprécier leur API google search image. Je ne sais même pas si elle est encore opérationnelle.

“Alors”, me dis-je, “allons chez le concurrent direct, vive le marché libre !”.

Continue reading

Posted in Uncategorized | 1 Reply

Premier article publié sur zeste de savoir (et autres retours d’expérience)

Vous vous souvenez, il y a quelques mois, je vous parlais de zeste de savoir. Un site édité par une association loi 1901 qui a pour but de partager gratuitement la connaissance sur le web.

Je reviendrait un peu plus loin sur cette expérience passionnante qu’est le développement de zeste de savoir. Je voudrais cependant commencer par une autre bonne nouvelle : je viens enfin de publier mon premier contenu rédactionnel sur zeste de savoir !

Le contenu, le nerf de la guerre

Je suis développeur, mais il faut que l’outil que l’équipe développe soit utilisé, pour cela, il faut que nous ayons des auteurs, pour cela il faut que nous ayons des visiteurs qui liront les contenus, pour cela il faut que nous ayons du contenu et donc des auteurs…

C’est dans cette optique que j’ai donc baissé légèrement ma participation au développement (bien que la QA et la ZEP 12 me prennent beaucoup de temps) pour créer du contenu. Sous conseil de firm1, avec l’aide de Blue Shark, j’ai donc coécris un article à propos de la mise en open source du coeur du framework .NET ! Parce que, oui, Microsoft met .NET sous licence MIT, c’est beau non? Et première bonne nouvelle : cet article est publié aujourd’hui ! Bonne lecture ^^

Continue reading

TEA : agglomérer des JSON en powershell

Il y a peu, j’ai eu un cas d’utilisation un peu chiant :

J’avais un certains nombre (dans mon cas 4) de fichier .json qui contenaient des objets structurés à peu près de la même manière.

Comme je voulais utiliser ces objets comme support de test dans ma base de données, j’ai désiré mettre tous ces JSON en un seul fichier qui représenterait un tableau d’objet.

Pour faire les choses simplement sans aller chercher des usines à gaz, j’ai donc utilisé powershell.

pas à pas ça donne ça :

Et comme on est en PowerShell, il faut bien faire un oneliner pour l’inclure dans un tweet : Out-File list.json ("["+([string]::Join(",", (gc file1.json, file2.json, file3.json))+"]")

Posted in Uncategorized | 1 Reply

Zeste de savoir : un projet opensource pour la beauté du zeste

J’ai enfin trouvé un chez moi dans le monde de l’open source.p

Même si j’ai envie de me retirer petit à petit du développement web, c’est pourtant vers publicsur un projet de site que je compte apporter ma pierre à l’édifice. Ce projet, c’est http://zestedesavoir.com.

mascotte zds

Clem’ la mascotte de zeste de savoir

Ce projet exploite la stack technologique python/django, mysqli, nginx pour le back, et SCSS, JS, Twig pour le front.

L’histoire du projet est simple : le site du zéro, géré par la société Simple IT, devenus tous les deux (le site et la société) OpenClassrooms, l’équipe dirigeante de OC a décidé un virage total en ce qui concerne la communauté de base. Aujourd’hui, la communauté historique est un poids pour le site, la volonté de partager gratuitement des connaissances ou des savoir faire n’est plus à l’ordre du jour, comme le dit une de leur éditrice “si c’est gratuit c’est vous le produit”.

Alors les anciens modérateurs, validateurs, auteurs ont commencé à réfléchir à des nouveaux projets de sites.

Dans une volonté de rassembler une communauté autodidacte à un niveau assez sérieux et qui s’oriente surtout vers l’embarqué, plusieurs d’entre eux ont créé progdupeupl.

Pendant ce temps, firm1, nohar et d’autres (comme mon ami nordiste ShigeruM) ont démarré un projet qui a la même cible que le site du zéro : les débutants.

Et comme on ne refait pas l’Histoire, il était normal que SDZ devienne… ZDS. Vient alors le nom “zeste de savoir”.

Comme progdupeupl offrait une base technique fiable, l’équipe a décidé de forker ce dernier depuis son dépot bitbucket. Et c’est le début d’une belle aventure qui se formalisera le 19 avril 2014 par un parution au journal officiel des status de l’association zestedesavoir.

Personnellement, j’arrive à cette époque comme beta testeur sur leur premier test privé. Le projet me plait, je propose mes services. Quelques semaines plus tard, le code est ouvert au public, ma première pull request peut être envoyée.

Depuis, je me concentre sur le backend, n’étant pas particulièrement doué pour l’intégration front.

Ma petite fierté, est le débuggage complet du système de tag qui permet une meilleur sémantique sur les forums de zds. Travailler sur ce système m’a permis d’en apprendre plus à propos de Solr, un moteur de recherche ultra puissant dont la seul faiblesse est qu’il est en Java et développé par la fondation Apache (documentation, tout ça…)

Ce que je désirerai faire pour le projet?

  • Créer quelques méthodes d’API en lecture pour faciliter la navigation au sein du système de tag lorsqu’on est sur mobile;
  • Ajouter la possibilité pour un membre d’envoyer une correction orthographique qui se présenterait à l’auteur comme une Pull Request
  • Une appli winphone 8.1 voire carrément une appli universelle

Programmation asynchrone et barre de progression

Le Framework .NET 4.5 a apporté une nouveauté assez géniale : await/async.

Cette nouveauté permet de manipuler les tâches asynchrone d’une manière facilitée, et surtout sécurisée.
Facilité parce qu’il suffit de ne retenir que trois mots Task, async, await.
Sécurisé car il est presque impossible d’avoir un deadlock quand on utilise les décorateurs async/await alors qu’on fait du multithread.

Le code de base est celui-ci :

Il est absoluement nécessaire d’avoir dans votre fonction un await quelque part.
L’effet de await est globalement de lancer la tâche, attendre qu’elle finisse, prendre son résultat et le retourner sans se soucier de l’encapsulation sous forme de Task.
L’avantage principal, c’est que le temps qu’il passe à attendre… il n’utilise pas de ressource processeur.
Ce qui peut s’avérer une très bonne chose si votre tâche demande beaucoup d’attente (communication avec une BDD, un service web…)
Continue reading