jeudi 7 juillet 2011

Evaluant est Happly

Logo HapplyDepuis le premier juillet 2011, Evaluant devient Happly. A partir de là, nous pouvons nous poser la question suivante : Qu’est ce que cela change ? La réponse pourrait se résumer à plein de choses et pas grand chose. Alors, un complément de précision est nécessaire :

  • Ce qui change : un nouveau nom, de nouvelles ambitions et plus de moyens.
  • Ce qui ne change pas : les mêmes équipes, les mêmes valeurs d’entreprise. En résumé, Happly restera le même acteur régional.

Repris de l’article de Philippe.

vendredi 1 juillet 2011

Marshalling en .NET, quelle galère !

Bonjour à tous,

Je n’ai pas consacré beaucoup de temps ces temps-ci au mon blog. Cela ne m’a pas empêché de travailler sur un projet perso. J’en avais déjà parlé à quelques collègues, mon but est de me faire un media center basé sur VLC en WPF. J’avais 3 idées en têtes :

  • Intégrer sans WindowsFormsControlHost la vidéo de VLC pour pouvoir avec la puissance de WPF au niveau des transformations
  • Avoir une interface Metro
  • Avoir une interface Web/REST me permettant de contrôler mon Media Center (de la même façon que l’API sur la FreeboxHD)

C’est maintenant chose faite pour deux de ces trois tâches : une interface métro est assez simple à réaliser en WPF. Par contre, l’intégration de VLC l’est beaucoup moins. Avec l’aide d’un collègue qui a pas mal navigué dans le monde de la 3D, j’ai pu décortiquer le module direct3D de VLC et le reproduire en C#. VLC étant codé en C, il a fallu créer des délégués. J’ai voulu utiliser un wrapper tout fait comme vlcdotnet. Mais là encore, le wrapper bas niveau n’était encore pas réalisé comme il le fallait. Mais il m’a fallu vraiment beaucoup de temps avant de comprendre que mon problème venait du marshalling de .NET. un int* ne peut pas être marshallé en int[] parce que la taille n’est pas connue. Du coup j’avais un tableau de taille 1 alors que c’était un tableau de taille 5 sur VLC. Bref, cumuler des erreurs de marshalling sur 3 callbacks différents, ca fait beaucoup d’erreurs pour comprendre pourquoi ca marche pas…

vendredi 4 février 2011

EUSS en asynchrone !

Euss avance ! Désormais, les requêtes en asynchrones sont réalisable. En tout cas le moteur le plus basique d’euss (le moteur mémoire) les gère. C’est bientôt la fin de DataService Clignement d'œil

mardi 9 février 2010

Comment activer l’intellisense sur les fichiers javascript

Salut à tous,

Je viens juste de lire un post que j’ai pensé qu’il serait intéressant de partager. Vous avez tous certainement déjà entendu parler de jquery et du fait qu’avec la version 1.3, il y avait un fichier vsdoc que vous pouviez télécharger pour avoir l’intellisense lors de l’écriture de javascript avec jquery. Maintenant, un patch a été publié pour visual studio qui active le support des fichiers vsdoc. Pas seulement pour jQuery, mais pour n’importe quel fichier javascript.

Voici le lien vers le post original : http://blogs.msdn.com/webdevtools/archive/2008/11/07/hotfix-to-enable-vsdoc-js-intellisense-doc-files-is-now-available.aspx

Voici le lien vers le site de jquery où vous pouvez télécharger le fichier vsdoc : jQuery web-site (Cherchez “Documentation: Visual Studio”)

Bien-sur, il ne faut pas déployer le fichier vsdoc. Celui-ci est présent simplement pour une aide au développement…

jeudi 7 janvier 2010

Comment améliorer les performances de votre application intranet ASP.NET ?

Avez-vous déjà regardé le nombre de requêtes effectuées par une application web intranet ?J’insiste sur Intranet, parce que je parle des application utilisation l’authentification windows. Généralement, pour  ce type d’applications, on les configure pour rejeter les utilisateurs anonymes. Cependant, cela implique que chaque fichier aura besoin d’une authentification, ce qui totalement faux : les fichiers javascript, css, images, … Tout ces fichiers ne devrait pas nécessiter d’authentification. C’est pourquoi, il faudrait autoriser les utilisateurs anonymes à y accéder.

Pourquoi désactiver l’authentification pour ces fichiers améliorerait les performances ? Tout simplement parce que l’authentification windows fonctionne sur le principe suivant : le navigateur envoie une requête en anonyme, le serveur réponds 401 (non autorisé), alors, et seulement à partir de ce moment, le navigateur envoie une nouvelle requête authentifiée, et vous pouvez maintenant récupérer le fichier. Cela veut dire qu’il y a 2 aller/retour pour récupérer un fichier. Cela fait sens pour les pages, mais pas pour les styles, les scripts ou les images. A mon avis, la “best-practice” serait de mettre les fichiers non sensible dans un dossier. Typiquement, le but serait d’utiliser la fonctionnalité de thèmes (même si vous n’avez qu’un seul thème).

Maintenant, nous arrivons à la partie pratique.

Pour chaque dossier contenant uniquement des données non sensible, vous devriez ajouter un fichier web.config contenant les lignes suivantes :

<?xml version="1.0"?> 
<configuration>
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</configuration>


C’est mieux maintenant, mais ce n’est pas suffisant. En effet, il y a aussi les resources script qui sont chargées par le ScriptManager. Puisqu’on ne peux pas rediriger simplement le chemin vers ScriptResource.axd et WebResource.axd, il faut appliquer les changement directement dans le web.config racine de l’application en ajoutant les lignes suivantes dans l’élément configuration racine :



<location path="WebResource.axd">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>

<location path="ScriptResource.axd">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>


J’espère que vous avez apprécié l’astuce. A bientôt

samedi 24 octobre 2009

Comment faire un proxy HTTP

Comme vous l’avez vu, j’ai récemment mis à jour mon projet codeplex zeroconf. Ce projet ne contient pas seulement l’implémentation du protocol DNS et du protocol Bonjour. Il contient aussi l’implémentation du protocol HTTP qui me permet d’envoyer des requêtes HTTP en UDP, chose qui n’est pas faisable avec l’implémentation du framework .NET. Au boulot, j’ai besoin de vérifier qu’une application que j’ai développé fonctionne correctement avec IE6( oui, ca existe encore… malheureusement). Puisque je suis sur Windows 7, je me suis dit que ca pourrait être super d’utiliser IE6 en application virtuelle. Je pense que vous voyer où je veux en venir. Sur une machine virtuel, on n’a pas accès au serveur de développement web démarré par visual studio. Ce que j’aurais pu faire, c’est déployer sur la machine virtuelle, ce qui veut dire, installer IIS, le configurer, passer du temps à vérifier le fichier web.config… Bref, pas une solution des plus simple à mettre en place. Alors, je me suis dit : Ce qu’il me faut, c’est un proxy, et j’ai déjà l’implémentation du protocole HTTP !

Voici le code du fameux proxy :

public class Proxy
{
RestServer proxy;
string hostToRedirectTo;

static void Main(string[] args)
{
Proxy p = new Proxy(ushort.Parse(args[0]), args[1]);
p.Start();
Console.ReadLine();
p.Stop();
}

private void Stop()
{
proxy.Stop();
}

private void Start()
{
proxy.StartTcp();
}

public Proxy(ushort portToListenOn, string hostToRedirectTo)
{
proxy = new RestServer(portToListenOn);
this.hostToRedirectTo = hostToRedirectTo;
proxy.HttpRequestReceived += proxy_HttpRequestReceived;
}

void proxy_HttpRequestReceived(object sender, HttpRequestEventArgs e)
{
e.Request.Host = this.hostToRedirectTo;
e.Response = e.Request.GetResponse(true);
e.Response.Body.Position = 0;
}
}


Comme vous pouvez le voir, la solution est très simple, et ne nécessite qu’une dizaine de lignes de code !!!

vendredi 23 octobre 2009

Bonjour mis à jour

Bonjour à tous,

J’ai mis à jour mon projet codeplex zeroconf. Le principal but de cette release est du refactoring. Ce project n’est pas seulement une implémentation de bonjour, mais contient aussi une implémentation de serveur. Avec cette implémentation de serveur, vous pouvez faire presque tout ce que vous voulez. Le seul désavantage, c’est que je ne gère pas les sessions. Pour comprendre de quoi je parle, je vous conseille de télécharger la dernière release de bonjour et de jeter un oeil à l’assembly Network.dll. Je vous promets que je fournirai un peu plus de documentation à ce sujet.

Vous pouvez déjà regarder la documentation sur le site du projet.

Amusez-vous bien !