mBerube.net
A journey to .Net

Programmer avec de la musique

jeudi, 15 octobre 2009 12:12 by mBerube
(Aussi disponible en: English)

Lors de l'épisode 69 du podcast de stackoverflow, une partie de la discussion a porté sur le fait d'écouter de la musique en programmant, à savoir si ça aidait ou non au travail. Écouter cet épisode (et les autres aussi. c'est très intéressant).

Voici quelques constatations personnelles sur l'écouter de musique pour programmer:

  • - La musique m'aide à la concentration dans un environnement de travail ouvert et donc souvent un peu bruillant
  • - Il est très facile pour moi de "produire" du code en écoutant de la musique mais plus difficile d'écrire de la documentation ou de lire des spécifications avec de la musique (spécialement la radio)
  • - Il m'est impossible de mélanger les langues. Par exemple, je ne peux pas écrire quelque chose en français en écouter quelque chose en anglais et vice-versa
  • - Plus la chanson m'est familière, plus le degré de concentration est grand car mon cerveau prend moi de "cycles" pour analyser la chanson

Et vous, quel est votre vision de cela ?

Soyez le premier à noter ce billet

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Categories:   Vie de programmeur
Actions:   E-mail | del.icio.us | Permalink | Commentaires (0) | Comment RSSRss comment feed

Free! par Chris Anderson

mardi, 13 octobre 2009 21:38 by mBerube

Dans les dernières semaines, j'ai lu (ou plutôt écouté le livre audio pour être honnête) Free! par Chris Anderson, à propos de l'économie du gratuit. C'est vraiment fascinant et la recherche qu'il a fait sur différents types d'entreprises basant leur modèle d'affaire sur le gratuit est impressionnante. Je suggère à tous les travailleurs du web de lire (ou d'écouter) ce livre, vous y apprendrez plein de choses intéressantes.

P.S : C'était la première fois que je prenais la version audio d'un livre et ça améliore vraiment beaucoup la "productivité" de lecture car il est maintenant possible de "lire" au volant, dans les transports en commun, en faisant l'épicerie etc. C'est une expérience à répéter certainement.

Soyez le premier à noter ce billet

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Categories:   Revue de livre
Actions:   E-mail | del.icio.us | Permalink | Commentaires (0) | Comment RSSRss comment feed

Intégration de SyntaxHighlighter dans BlogEngine.Net

vendredi, 2 octobre 2009 11:16 by mBerube
(Aussi disponible en: English)

J'étais en train de composer mon premier post vraiment technique (sur asp.net MVC) et j'ai réalisé que je n'avais pas de façon d'afficher correctement des bouts de code. Il est inadmissible pour un blogue de programmeur de ne pas avoir une telle fonctionnalité. Je suis donc parti à la recherche d'un outil et très vite, je suis tombé sur SyntaxHighlighter, un produit open-source écrit entièrement en javascript et très utilisé sur le net. La documentation est claire et l'installation semblait très simple. Ce fût un peu plus complexe que déclaré mais, au bout du compte, j'ai pu l'intégrer de façon satisfaisant dans BE.NET

Download SyntaxHighlighter

En se rendant sur le site "officiel", on peut télécharger la version 1.5. Par contre, en se rendant directement sur le site de l'auteur, on peut télécharger la nouvelle version 2.0. J'ai opté pour celle-là. Le package contient une série de css et de javascript nécessaires pour le fonctionnement de l'application. Pour obtenir le formattage, il suffit d'inclure le code dans un tag <PRE> avec la classe correspondant au langage à afficher. Ex :

<pre class="brush: html;">
<b>bold text</b>
</pre>

Les scripts fonctionnent très bien, c'est au moment l'inclure les références dans BE.NET que les choses se corsent un peu. BE.Net utilise plusieurs règles de réécriture d'URL (url rewriting), il est difficile de référer le script relativement à la page courante donc il faut faire la référence relative au root de l'application. On serait porté à mettre un tag runat="server" sur les scripts et d'utiliser le tilde (˜) pour représenter le root de l'application. Hors, ça ne fonctionne pas puisque le compilateur, à cause du runat="server", valide le code javascript de SyntaxHighlighter et comme il comporte certaines erreurs (ou du moins, une syntaxe que VS2008 n'aime pas), le site web ne compiile plus. J'ai également fait un essai avec du code intégré dans le markup (ex: <%= SiteRoot() %>/Scripts/shcore.js) mais ça ne fonctionne pas non plus puisque le tag header de la page a un runat="server" et comme des contrôles pour les métas tag sont ajoutés dynamiquement au runtime, ASP.NET lance une exception.

Je me suis finalement rabattu sur le ScriptManager, qui me permet 2 choses : je peux ajouter mes fichiers en utilisant le tilde (˜) puisque c'est un contrôle serveur et je peux du même coup combiner les différents scripts nécessaires à SyntaxHighLighter.

<asp:ScriptManager ID="ScriptManager1" runat="server">
    <CompositeScript>
        <Scripts>
            <asp:ScriptReference Path="~/Scripts/shCore.js"/>
            <asp:ScriptReference Path="~/Scripts/shBrushBash.js"/>
            <asp:ScriptReference Path="~/Scripts/shBrushCpp.js"/>
            <asp:ScriptReference Path="~/Scripts/shBrushCSharp.js"/>
            <asp:ScriptReference Path="~/Scripts/shBrushCss.js"/>
            <asp:ScriptReference Path="~/Scripts/shBrushDelphi.js"/>
            <asp:ScriptReference Path="~/Scripts/shBrushDiff.js"/>
            <asp:ScriptReference Path="~/Scripts/shBrushJava.js"/>
            <asp:ScriptReference Path="~/Scripts/shBrushJScript.js"/>
            <asp:ScriptReference Path="~/Scripts/shBrushPlain.js"/>
            <asp:ScriptReference Path="~/Scripts/shBrushPython.js"/>
            <asp:ScriptReference Path="~/Scripts/shBrushRuby.js"/>
            <asp:ScriptReference Path="~/Scripts/shBrushPerl.js"/>
            <asp:ScriptReference Path="~/Scripts/shBrushSql.js"/>
            <asp:ScriptReference Path="~/Scripts/shBrushVb.js"/>
            <asp:ScriptReference Path="~/Scripts/shBrushXml.js"/>
            <asp:ScriptReference Path="~/Scripts/shBrushJavaFX.js"/>
            <asp:ScriptReference Path="~/Scripts/shBrushPowerShell.js"/>
        </Scripts>
    </CompositeScript>
</asp:ScriptManager>

La conséquence de l'utilisation du ScriptManager est que mon implémentation de BE.Net n'est plus totalement compatible avec .Net 2.0. Pas très grave, .Net 4 est sur le point de sortir, il faut vivre dans notre époque, vive .Net 3.5 !

Intégration dans l'éditeur de blogue

BE.Net 1.5 utilise TinyMCE 3 pour éditer les entrées de blogue. L'éditeur a un mode WYSIWYG mais aussi un mode HTML. Il est donc possible de générer les tags nécessaires à l'intégration du code source dans les entrés mais certaines opérations demeuraient manuelles et un peu fasditieuses comme convertir les caractères spéciaux, configurer les options etc. Heureusement, Google ayant "toutes" les réponses, quelqu'un c'était déjà attaqué au problème et avait développé un plugin SyntaxHighlighter pour Tiny MCE. Bien qu'il ne fonctionnait pas très bien avec ma version de Tiny MCE, ça été un jeu d'enfant de faire les corrections dans le code pour le faire fonctionner dans mon éditeur. Aussi, le pluggins ne faisait pas la conversion de caractères mais un petit recherche sur StackOverflow et tout est parfait.

function Save_Button_onclick() {
    var lang = document.getElementById("ProgrammingLanguages").value;
    var code = WrapCode(lang);
    code = code + HtmlEncode(document.getElementById("CodeArea").value);
    code = code + "</pre> "
    if (document.getElementById("CodeArea").value == '') {
        tinyMCEPopup.close();
        return false;
    }
    tinyMCEPopup.execCommand('mceInsertContent', false, code);
    tinyMCEPopup.close();
}

function HtmlEncode(s) {
    var el = document.createElement("div");
    el.innerText = el.textContent = s;
    s = el.innerHTML;
    delete el;
    return s;
}

Voilà ! Tout est fonctionnel maintenant et comme je termine la lecture de Professional ASP.NET MVC 1.0, j'ai plusieurs idées de code à explorer et partager avec vous.
À la prochaine

Soyez le premier à noter ce billet

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Actions:   E-mail | del.icio.us | Permalink | Commentaires (0) | Comment RSSRss comment feed