Hey le dév ! t’as pas un 06 ?

Vous êtes chasseurs de têtes ? Vous voulez faire craquer tous les développeurs ? Vous voulez augmenter votre reach ? Ces conseils sont pour vous !

Lire la suite

Héberger ses packages sur Visual Studio Online

Depuis Novembre 2015, Visual Studio Online permet de gérer l’hébergement de packages au travers d’un service nuget. Voyons comment cela fonctionne.

Lire la suite

Visual Studio 2013 + Mumble = Patatra !

Lors d’une récente session de dev sous Visual Studio 2013, et pour discuter tranquillement avec des amis, j’ai lancé en simultané le logiciel Mumble. Seulement, dès le démarrage de Visual Studio, quasiment rien de l’interface graphique ne se rafraîchissait. Par exemple, lorsque je survolais les menus avec la souris, je ne voyais pas le « hover » sur les éléments du menu mais si je cliquais le menu s’affichait bien. De même, la fenêtre des propriétés marchait parfaitement bien lorsque je cliquais sur un élément dans l’explorateur de solution mais je ne voyais pas la sélection dans ce dernier. Et le pire étant dans la fenêtre de code, rien de ce que je tapais ne s’affichait, sauf lorsque je redimensionnais Visual Studio.
Pour mieux illustrer, un autre développeur ayant eu le même problème a fait une vidéo sur Youtube :

Apres avoir changé de thème, recherché des potentielles mise à jour correctrices et redémarré le pc, j’ai eu l’idée de tester de couper Mumble et là… MIRACLE ! Tous fonctionnait à nouveau ! En ajoutant « Mumble » à ma recherche sur le net, j’ai trouvé une solution plus précise : desactiver l’overlay de Mumble, celui qui s’affiche en haut à droite de l’écran pour indiquer les personnes en ligne.

En espérant que cet article permettent à d’autres personnes de ne pas rester bloqués trop longtemps.

Mathieu Hollebecq

Obtenir des MaidSafeCoins en 4 étapes

MaidSafe est une entité qui est en train de mettre au point un « nouvel internet » totalement décentralisé et anonyme. Un projet réellement ambitieux mais qui peut rendre internet vraiment anonyme et faciliter la persistance d’une information.
Ce système se base sur une monnaie, les MaidSafeCoins qui sont indexés sur l’espace de stockage mis à disposition par les utilisateurs du réseau. Voyons comment acheter des MaidSafeCoins.

Lire la suite

Obtenir des bitcoins en France

Nous allons voir dans cet article comment acheter des bitcoins de manière sécurisée en étant français avec des euros.
Cet article sera purement technique, et a pour vocation d’expliquer la procédure d’achat des premiers bitcoins plutôt que la philosophie derrière.

Lire la suite

L’API Streaming de Twitter avec le HttpClient .net

La recherche et le streaming

Un des fonctionnalités intéressantes de l’API Twitter est l’utilisation du Streaming. Tout comme la recherche, cette API nous permet de spécifier un mot clé et de récupérer les tweets liés à ce mot clé. Cet article a pour but de vous montrer la différence entre la recherche et le streaming sur l’API Twitter ainsi que l’implémentation de ce streaming en C#.

La différence entre l’API de recherche et l’API de streaming réside en la manière de récupérer les tweets. Avec la première, vous envoyez une requête au serveur Twitter qui vous retourne alors page par page les tweets correspondant à la recherche dans une seule et même réponse. Le fonctionnement est celui d’un échange client-serveur classique :


(crédits image : https://dev.twitter.com )

Principe du streaming

Concernant le streaming, les tweets retournés ne vont pas l’être dans une seule et même réponse. En effet le serveur maintiendra la connexion indéfiniment et dès qu’un nouveau tweet concerné par la recherche faite va être soumis à Twitter, celui ci va nous être retourné dans la foulée. Ce cas d’utilisation est notamment intéressant dans des applications de type “live tweet” :

(crédits image : https://dev.twitter.com )

Implémentation en C#

L’url de requête sera https://stream.twitter.com/1.1/statuses/filter.json en POST. A cela s’ajoute un ou plusieurs paramètres. Pour une utilisation de base, nous ajouterons le paramètre “track” qui aura comme valeur votre recherche (un hashtag ou tout simplement un mot ).

Cette requête ne semble pas compliquée, mais l’extrait de code suivant, qui fonctionne dans le cas d’une simple recherche, va ici échouer. Le souci ne vient pas directement de ce code mais de la librairie OAuth que j’avais réalisée suite à un de mes précédents articles (code source disponible en une seule classe ici : https://skydrive.live.com/?cid=230FED47B214039C&id=230FED47B214039C%212851 )

static async void ComputeStreaming(string search)
{
    OAuthRequester.ComputeHmacSha1 = ComputeHMACSHA1Hash;
    string consumerKey = "yourConsumerKey";
    string consumerSecret = "yourConsumerSecret";
    string oauthToken = "yourOAuthToken";
    string oAuthTokenSecret = "yourTokenSecret";
    string searchUrl = 
"https://stream.twitter.com/1.1/statuses/filter.json"; Dictionary<string, string> contentParams = new Dictionary<string, string>(); contentParams.Add("track", search); var searchRequest = OAuthRequester.SignRequest(HttpMethod.Post,
searchUrl, consumerKey, consumerSecret, contentParams,
oauthToken, oAuthTokenSecret);
using (StreamReader reader = new StreamReader(
await (await searchRequest).Content.ReadAsStreamAsync())) { while (!reader.EndOfStream) { string result = reader.ReadLine(); JObject root = JObject.Parse(result); Console.WriteLine(root["text"].ToString()); } } }

Il n’y pas forcément d’erreur de conception dans ma librairie, l’erreur serait similaire avec l’utilisation de “WebClient” ou “WebHttpRequest”. De la même manière, la requête sera lancée, mais rien ne sera renvoyé et au bout d’une minute, vous recevrez un timeout. Le souci provient de la manière dont HttpClient traite la réponse par défaut, le client a bien commencé à recevoir la réponse, mais il attend d’avoir reçu tous le contenu avant de renvoyer votre objet “HttpResponseMessage”. Or, le principe du streaming est de laisser la connexion ouverte et de recevoir le contenu au fur et à mesure, donc HttpClient ne peut pas gérer le cas de figure de cette manière. Mais, heureusement, il suffit d’une petite modification pour gérer le cas particulier des réponses sous forme de flux et non de sous forme de contenu entier. Il suffit de modifier l’appel de la méthode “client.SendAsync(…)”, dans notre cas, nous utiliserons la surcharge suivante:

HttpResponseMessage response = await client.SendAsync(request,
HttpCompletionOption.ResponseHeadersRead);

La différence réside en l’ajout du paramètre de type “HttpCompletionOption” qui, s’il est omis, prend par défaut la valeur “ResponseContentRead” qui signifie que HttpClient attend de recevoir tout le contenu de la réponse avant de la traiter. La valeur qui nous intéresse ici est “ResponseHeaderRead” qui signifie que la réponse sera traitée dès que les header seront reçus. Le contenu en lui même sera reçu plus tard, lors de l’appel de “ReadAsStreamAsync()”. Avec la modification de la requête, vous pouvez à présent tester le code un peu plus haut qui fonctionnera cette fois-ci (testez avec un sujet populaire du moment pour voir le streaming agir ).

Conclusion

Parfois complexe à utiliser dans certains SDK, l’API streaming de Twitter consiste en une simple requête en POST. La seule petite difficulté est de ne pas attendre de recevoir tous le contenu pour traiter la requête comme le font par défaut les clients HTTP en .net mais de la traiter dès réception des headers. HttpClient permet ce traitement particulier avec la modification du paramètre HttpCompletionOption.
La mise à jour de la classe helper OAuth 1.0 est disponible ici.

Par Mathieu Hollebecq

Récupérer une session perdue sous firefox

Je suis un grand fan des onglets mais il arrive que Firefox crashe inopinément et me perde ma 100aine de sites que je dois regarder…

Mais on peut heureusement les récupérer !

Sous Windows (et uniquement sous Windows)

Attention : Si vous aviez plusieurs fenêtres ouvertes et que vous avez fermé par inadvertance la mauvaise, vous pouvez peut-être encore tenter de cliquer sur “historique” dans le menu (appuyez sur la touche alt pour l’ouvrir) puis “fenêtres récemment fermées”. Sinon, si c’est dû à un caprice de firefox après fermeture, essayez la procédure suivante :

1. Fermez Firefox

2. Rendez-vous dans votre dossier AppData/Roaming/Mozilla/Firefox/Profiles ou entrez directement %APPDATA%/Mozilla/Firefox/Profiles dans la barre d’adresse de l’explorer.

image

3. Ensuite ouvrez le répertoire au nom bizarre : xxxxx.default.

Et cherchez un fichier répondant au nom de sessionstore.bak. Vérifiez que le contenu correspond bien à vos onglets en l’ouvrant avec un éditeur de texte (clic droit / Ouvrir avec…). Si ce n’est pas les bons sites, cherchez le fichier sessionstore.bak le plus récent (il peut y en avoir plusieurs).

4. Copiez-le dans un endroit sûr au cas-où puis renommez-le en sessionstore.js

5. Réouvrez Firefox, vos onglets devrez être là ! Dans ce cas, vous pouvez supprimer la copie faite au point 4 (Ne touchez plus au sessionstore.js !)

6. Partagez cet article, vous sauverez sûrement d’autres personnes !

PS : Si vous ne trouvez malheureusement pas votre sessionstore dans ce répertoire, il est possible que vous n’ayez pas choisi de conserver vos onglets, ou que votre version de firefox soit trop vieille. Dans ce cas, je suis désolé, cet article ne pourra vous aider plus…

Par JCVASSELON