Affichage des articles dont le libellé est Web. Afficher tous les articles
Affichage des articles dont le libellé est Web. Afficher tous les articles

samedi 3 mars 2012

Comment insérer des équations dans Blogger? (Revisité)

Dans le passé, j'ai indiqué comment ajouter des équations à Blogger en ajoutant des images générées par Microsoft Office ou Libre Office. Cette méthode n'est pas idéale. Si je veux créer une page Web contenant des équations et du contenu interactif, deux logiciels minimum sont utilisés: Libre Office ou Microsoft Office et un éditeur Web. Par la suite, les images des équations sont générées et collées comme image sur la page Web. Pour un site Web avec beaucoup d'équations, ce processus est très long. Si une ou plusieurs équations sont erronées, les images sont modifiées dans le traitement de texte, transformées en images et collées à nouveau dans la page Web. Ouf! Il y a surement une façon plus rapide. Effectivement, en cherchant, il y en a une. Il existe une application JavaScript nommée MathJax qui transforme du code LaTeX en magnifique équation sur le Web. Comme je suis un admirateur inconditionnel de LaTeX, je ne pouvais pas être plus heureux! Si vous n'êtes pas fou de TeX ou LaTeX, MathJax n'est probablement pas pour vous. J'aime LaTeX, car je peux écrire une équation au clavier plus vite qu'avec la souris et une interface graphique.

L'installation de MathJax dans Blogger est simple. Dans le Tableau de Bord de Blogger, aller dans l'onglet Présentation. Choississer le sous-onglet Modifier le code HTML. Chercher pour la balise < /head > . Juste avant cette balise, insérer le code suivant:

Enregistrer le modèle et vous êtes prêt pour insérer des équations avec MathJax. Comment fait-on pour insérer des équations? Commençons avec une équation bien simple: \[ \alpha + \beta = \gamma \] Le code pour cette équation est:
\[ \alpha + \beta = \gamma \]
Les symboles \[ et \] servent de balises à MathJax. Ce n'est pas du LaTeX. Le code à l'intérieur des balises est du code LaTeX. Essayons maintenant d'afficher une équation plus complexe, comme les équations de Maxwell: \[ \begin{aligned} \nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \\ \nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\ \nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\ \nabla \cdot \vec{\mathbf{B}} & = 0 \end{aligned} \] Fantastique! La qualité graphique est sublime. Le code LaTeX pour cette équation est:
\[
\begin{aligned}
\nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \\   
\nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\
\nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\
\nabla \cdot \vec{\mathbf{B}} & = 0 
\end{aligned}
\]
N'importe quel code LaTeX pour équation fonctionne. N'oubliez pas d'entourer votre code des balises \[ et \], sinon MathJax ne fera rien. Pour plus d'informations, je vous conseille d'aller visiter le site de MathJax.

lundi 14 novembre 2011

Comment insérer un jeu Unity dans Blogger?

Lorsque je pose cette question sur Internet, je me retrouve sur des sites qui proposent des Gadgets à ajouter à Blogger. J'ai essayé plein de combinaisons et rien ne marche. Au final, la solution est simple. Lorsque vous compilez votre jeu sous Unity pour le Web, Unity crée un fichier .unity3d et un fichier .html. Le fichier .html contient ceci:
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title>Unity Web Player | WebPlayer</title>
  <script type="text/javascript" src="http://webplayer.unity3d.com/download_webplayer-3.x/3.0/uo/UnityObject.js"></script>
  <script type="text/javascript">
  <!--
  function GetUnity() {
   if (typeof unityObject != "undefined") {
    return unityObject.getObjectById("unityPlayer");
   }
   return null;
  }
  if (typeof unityObject != "undefined") {
   unityObject.embedUnity("unityPlayer", "WebPlayer.unity3d", 680, 550);
   
  }
  -->
  </script>
  <style type="text/css">
  <!--
  body {
   font-family: Helvetica, Verdana, Arial, sans-serif;
   background-color: white;
   color: black;
   text-align: center;
  }
  a:link, a:visited {
   color: #000;
  }
  a:active, a:hover {
   color: #666;
  }
  p.header {
   font-size: small;
  }
  p.header span {
   font-weight: bold;
  }
  p.footer {
   font-size: x-small;
  }
  div.content {
   margin: auto;
   width: 550px;
  }
  div.missing {
   margin: auto;
   position: relative;
   top: 50%;
   width: 193px;
  }
  div.missing a {
   height: 63px;
   position: relative;
   top: -31px;
  }
  div.missing img {
   border-width: 0px;
  }
  div#unityPlayer {
   cursor: default;
   height: 550px;
   width: 550px;
  }
  -->
  </style>
 </head>
 <body>
  <p class="header"><span>Unity Web Player | </span>WebPlayer</p>
  <div class="content">
   <div id="unityPlayer">
    <div class="missing">
     <a href="http://unity3d.com/webplayer/" title="Unity Web Player. Install now!">
      <img alt="Unity Web Player. Install now!" src="http://webplayer.unity3d.com/installation/getunity.png" width="193" height="63" />
     </a>
    </div>
   </div>
  </div>
  <p class="footer">« created with <a href="http://unity3d.com/unity/" title="Go to unity3d.com">Unity</a> »</p>
 </body>
</html> 
Effacer les styles css, ils vont bousiller la mise en page de votre page. Dans Blogger, ouvrer un nouveau message et aller dans Modifier le code HTML. Coller ce code HTML (sans les styles). Une icône de Unity va apparaître, mais pas le jeu. Dans le code HTML, à l'endroit où est écrit:
if (typeof unityObject != "undefined") {
     unityObject.embedUnity("unityPlayer", "WebPlayer.unity3d", 680, 550);
}
remplacez "WebPlayer.unity3d" avec le lien Web où est hébergé votre jeu. Bon, si vous êtes comme moi, vous n'avez pas vraiment d'hébergeur, alors quoi faire? J'utilise Google Sites pour ce faire. Je me suis créé une page Web nommée FractalGameLab. Je vais dans Google Sites, dans les outils de gestion et j'importe le .unity3d. Je copie ensuite le lien pour télécharger la ressource et je remplace WebPlayer.unity3d par ce lien. Voilà! Le tour est joué. Pour prouver que ça marche, voici une démo de jeu que j'ai fait avec le livre de "Développez des jeux 3D avec Unity" par Will Goldstone.
Unity Web Player | WebPlayer
-->
Unity Web Player | WebPlayer

jeudi 25 août 2011

Comment publier du beau code dans Blogger?

Je voulais faire un tutoriel en ActionScript 3, lorsque j'ai réalisé que copier du code dans Blogger donne un résultat médiocre. Par exemple, si je prends un code en AS3 et que je le copie entre des balises <code>, j'obtiens le résultat suivant:
package
{
    import flash.display.Sprite;
    import flash.events.Event;
  
    /**
     * ...
     * @author
     */
    public class Main extends Sprite
    {
       
        public function Main():void
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }
       
        private function init(e:Event = null):void
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            // entry point
        }
       
    }
   
}

Le résultat est horrible! De plus, je n'ai pas la coloration syntaxique. Heureusement, un très dévoué codeur, M. Alex Gorbatchev, a développé un outil nommé Syntax Highlighter. Ce petit logiciel écrit en JavaScript lit le code entré entre des balises <pre>, le met en forme et le colorie en fonction du modèle de format choisi. Par exemple, si j'aime le code sous Eclipse, il est possible de lui dire d'afficher du code comme sous Eclipse. Le même code avec Syntax Highlighter ressemble à ceci:
package 
{
  import flash.display.Sprite;
  import flash.events.Event;
 
  /**
   * ...
   * @author
   */
  public class Main extends Sprite 
  {
  
    public function Main():void 
    {
      if (stage) init();
      else addEventListener(Event.ADDED_TO_STAGE, init);
    }
  
    private function init(e:Event = null):void 
    {
      removeEventListener(Event.ADDED_TO_STAGE, init);
      // entry point
    }
  } 
}
Quelle amélioration!

Pour installer SyntaxHighlighter, j'ai suivi les instructions de ce site: http://www.commonitman.com/2010/09/how-to-use-syntax-highlighter-3-in.html. La procédure est:
  1. Allez dans Blogger->Tableau de bord->Présentation
  2. Effectuez une copie de sauvegarde avec le lien "Télécharger le modèle dans son intégralité" (optionnel)
  3. Choisissez l'onglet "Modifier le code HTML"
  4. Cherchez la balise </head>
  5. Juste au-dessus de cette balise, copier le code suivant:
    <!-- Syntax Highlighter Additions START -->
    <link href='http://alexgorbatchev.com/pub/sh/current/styles/shCore.css' rel='stylesheet' type='text/css'/>
    <link href='http://alexgorbatchev.com/pub/sh/current/styles/shThemeDefault.css' rel='stylesheet' type='text/css'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js' type='text/javascript'/>
     
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushBash.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCss.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJava.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPerl.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPhp.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushSql.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushVb.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js' type='text/javascript'/>
     
    <script language='javascript' type='text/javascript'>
    SyntaxHighlighter.config.bloggerMode = true;
    SyntaxHighlighter.all();
    </script>
    <!-- Syntax Highlighter Additions END -->
    
  6. Enregistrer le modèle.
Pour ajouter du code, ajouter la balise <pre class="brush[nom de la brosse];[paramètre de la brosse]> et fermer avec </pre>. Le nom brosse est étrange. En réalité, le nom de la brosse est le nom du code utilisé. Par exemple, pour le code en AS3, la balise est:
< pre class="brush:as3">
   Insérer le code ici.
< /pre >
Pour ajouter un langage, ajouter des lignes au code HTML. La liste des langages supportés se trouve ici.

Amusez-vous bien à publier vos codes!

jeudi 11 août 2011

Comment insérer des équations dans Blogger (Partie 1)?

Certaines personnes m'ont posé des questions qui vont probablement nécessiter d'écrire quelques équations. Le HTML ne permet pas d'écrire des équations aussi facilement que LibreOffice ou Microsoft Word (Word est pénible pour des équations complexes. La notation de LibreOffice est supérieure.). Le site Math in HTML (and CSS) résume bien la situation. Il parle d'un langage d'équations nommé MathML qui permet d'écrire des équations. Voici un exemple d'équation écrite avec MathML:
 a+ß=y (1)  Le code pour cette équation est:
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML">
 <mtable>
  <mtr>
   <mtd>
    <mrow><mi>a</mi><mo>+</mo>< mi>ß</mi><mo>=</mo><mi>y</mi>
    </mrow>
   </mtd>
   <mtd>(1)
   </mtd>
  </mtr>
 </mtable>
</math>

Ouf!!! C'est vraiment pénible! Par exemple en latex, le code serait:
\begin{equation}
\alpha+\beta=\gamma
\end{equation}

Ce qui est beaucoup plus beau et concis.

Je vais être franc, j'ai triché pour écrire le code en MathML. Je ne connais pas MathML et je n'ai aucune intention de l'apprendre. C'est trop complexe. J'ai utilisé un programme nommé LyX. J'ai exporté en XHTML et copier le code dans Blogger. LyX est un traitement de texte WYSIWYM (What You See Is What You Mean) avec une interface graphique qui montre un résultat approximatif du document. Voici une image de l'écran de LyX:
Interface du programme LyX.
LyX formate le texte avec le langage LaTeX. Les formules sont écrites en entrant les commandes LaTeX appropriées. Pour notre formule, nous choisissons dans le menu Insérer->Maths->Formule hors ligne et  entrons \alpha+\beta=\gamma. Le plus beau avec LyX est qu'il n'est pas nécessaire de connaître le LaTeX pour obtenir de fabuleuses équations. Le menu en bas permet au débutant d'entrer tout les symboles qu'il désire comme avec Microsoft Word. Bien entendu, la connaissance de LaTeX accélère grandement la vitesse de saisi des formules.

Une fois les formules créées. Il faut les exporter en HTML. Dans le menu Fichier, sélectionner Exporter et LyXHTML. LyX va générer un fichier XHTML avec votre formule écrire en MathML!  Ouvrer ce fichier avec votre éditeur de texte favori (dans mon cas Notepad++). Repérer la balise <math display="block" xmlns="http://www.w3.org/1998/Math/MathML"> Copier le code à partir du début de cette balise jusqu'à la balise de fermeture </math>. Dans Blogger passer en mode "Modifier le code HTML" et copier le code. Votre formule va apparaître dans votre texte. Cette méthode marche même pour des systèmes d'équations complexes sauf si vous êtes dans Internet Explorer... ou Chrome... Je suis tellement habitué à Firefox que j'oublie les autres fureteurs. IE ne supporte pas par défaut MathML et WebKit le supporte pour les versions 5 et plus. Je dois utiliser des images pour mes équations. Je vais continuer mes recherches et revenir avec une alternative dans le prochain billet.

Anecdote LaTeX.
J'étais au cinéma avec un ami pour voir le film Furtif. Furtif est un film d'action avec Jessica Biel qui raconte l'histoire de trois pilotes choisis pour un programme de développement de drone de combat intelligent. Le drone se nomme E. D. I. Le cerveau d'Edi est une grosse boule censée être un ordinateur quantique. À un moment dans le film, il montre le code source d'Edi. Et quand j'ai reconnu le langage, je me suis mis à rire! J'étais le seul dans la salle à rire et les gens ont dû me trouver étrange. Le langage était LaTeX! Un langage de traitement de texte pour programmer un drone de combat! Oh boy! Pas surprenant qu'Edi soit devenu fou.
Le drone E.D.I., probablement la dactylo la plus chère de l'histoire.