Blogofile, un générateur de site web statique
28 novembre 2012 | Catégories: web | View CommentsLa toute dernière version de Blogofile 0.8.b vient de sortir plus d'un an après la version 0.7.1 que j'utilise pour ce site web. Blogofile est un générateur de site web statique, c'est-à-dire qui dépend uniquement de fichiers textes. Il existe une multitude de projets similaires dont Pelican, nanoc, Octopress, Cytoplasm, rstblog et plusieurs autres. Le site web mathematism.com a fait le choix de nanoc et mickgardner.com a choisi Jekyll. Un autre a choisi de coder son propre ReStructuredText-Writer en le basant sur docutils.
Pour ma part, j'ai choisi Blogofile, car il est basé sur le langage Python, comprend la syntaxe ReStructuredText et aussi parce que j'ai été capable de l'utiliser dès la première journée contrairement au projet Hyde aussi basé sur Python, mais que je n'ai jamais réussi à comprendre.
D'autres personnes ont fait le même choix que moi tel que le créateur de Mako Templates qui explique son choix dans son texte how coders blog ainsi que ses blogofile hacks. Finalement, voici trois autres sites qui expliquent leur passage à blogofile: asktherelic.com, paolocorti.net et lukeplant.me.uk.
Coloration syntaxique avec pygments
27 janvier 2012 | Catégories: web | View CommentsDernièrement, j'ai utilisé Pygments pour générer différents fichiers css de coloration syntaxique. Alors, pour obtenir la liste des styles existants:
>>> from pygments.styles import get_all_styles >>> styles = list(get_all_styles()) >>> styles ['monokai', 'manni', 'perldoc', 'borland', 'colorful', 'default', 'murphy', 'vs', 'trac', 'tango', 'fruity', 'autumn', 'bw', 'emacs', 'vim', 'pastie', 'friendly', 'native']
Pour créer le fichier css approprié:
pygmentize -S fruity -f html -a .pygments_fruity > pygments_fruity.css pygmentize -S friendly -f html -a .pygments_friendly > pygments_friendly.css pygmentize -S monokai -f html -a .pygments_monokai > pygments_monokai.css
Utiliser Sage dans une page web
14 octobre 2011 | Mise à jour: 07 mai 2012 | Catégories: web, sage | View CommentsLorsque j'ai participé aux Sage Days 31 à Seattle en juin dernier (conférence dont l'objectif était de développer le Sage Notebook), j'ai rencontré Jason Grout (Drake University, Iowa). Le projet de Jason était de parvenir à utiliser Sage directement dans une page web (voir la discussion public single cell sur sage-devel pour en savoir plus).
Son projet est toujours en cours, mais il semble déjà être fonctionnel à en juger la page web de Rob Beezer (University of Puget Sound, Washington) qui illustre un exemple en faisant des calculs sur le graphe de Petersen et le calcul d'un factoriel.
Essayons d'immiter ce qu'il a fait! Dans la cellule qui suit, on définit une fonction de deux variables \(f(x,y) = \frac{xy}{e^{x^2 + y^2}}\) et on affiche ses lignes de niveau. Cliquez sur le bouton Calculer pour les afficher. Vous pouvez aussi changer la fonction et réévaluer la cellule.
Les graphes 3D fonctionnent aussi. Par exemple, ajoutez la ligne suivante dans la cellule et cliquez sur Calculer:
plot3d(f, (x,-4,4), (y,-4,4))
Vous obtiendrez le graphe 3D de la surface \(z = f(x,y)\).
Comment faire ?
Pour rendre ceci possible, il faut d'abord faire appel au serveur Single Cell logé à l'adresse http://aleph.sagemath.org. Cela se fait avec le code suivant:
<!-- Sage Free Trial --> <script type="text/javascript" src="http://aleph.sagemath.org/static/jquery.min.js"></script> <script type="text/javascript" src="http://aleph.sagemath.org/embedded_sagecell.js"></script> <script> $(function() { var makecells = function() { singlecell.makeSagecell({ inputLocation: '#first_cell', editor: 'codemirror', replaceOutput: true, hide: ['editorToggle', 'sageMode', 'computationID', 'messages', 'sessionTitle', 'done', 'sessionFilesTitle', 'sessionFiles', 'files', 'sageMode'], evalButtonText: 'Calculer' }); } sagecell.init(makecells); }) </script>
Et un peu plus bas dans la même page web, on écrit le code suivant, ce qui crée la cellule ci-haut:
<!-- First cell --> <div id="first_cell"><script type="text/code">f(x,y) = x * y / exp(x^2 + y^2) G = implicit_plot(f(x,y) , (x,-3,3), (y,-3,3), contours=30, cmap='hsv') G.show(aspect_ratio=1) </script></div>
MathJax pour afficher du LaTeX dans une page web
07 septembre 2011 | Mise à jour: 05 janvier 2012 | Catégories: mathjax, web | View CommentsMathJax est un logiciel libre qui permet d'afficher des formules mathématiques dans une page web et qui fonctionne quelque soit le navigateur utilisé.
MathJax se veut le successeur de JsMath tous deux développés principalement par David P. Cervone. Pour Cervone, il était important que le projet survive en son absence (on se sait jamais ce que la vie nous réserve) et ne dépende pas que de lui. Ainsi, il s'est assuré d'avoir les appuis nécessaires : le projet est notamment parrainé par l'American Mathematical Society et est soutenu par l'American Physical Society, Elsevier et le projet Euclide. Les sites web MathSciNet et MathOverflow utilisent maintenant MathJax.
Pour utiliser MathJax dans cette page, j'ai copié les lignes suivantes dans le code de la page:
<script type="text/x-mathjax-config"> MathJax.Hub.Config({ extensions: ["tex2jax.js"], jax: ["input/TeX", "output/HTML-CSS"], tex2jax: { inlineMath: [ ["\\(","\\)"] ], displayMath: [ ["\\[","\\]"] ], processEscapes: true }, "HTML-CSS": { availableFonts: ["TeX"] } }); </script> <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
Ainsi, des formules telles que:
Of a set \(\mathcal{S}\) is a bijection \(\psi : \mathcal{S} \rightarrow \mathcal{S}\).
se transforment en:
Of a set \(\mathcal{S}\) is a bijection \(\psi : \mathcal{S} \rightarrow \mathcal{S}\).
Autres exemples:
\(\pi = \frac{C}{d}\) devient \(\pi=\frac{C}{d}\)
\(\int\cos(x) dx = \sin(x) + K\) devient \(\int\cos(x) dx = \sin(x) + K\)
On peut changer les options d'affichage des formules en faisant un clic-droit sur les formules. Par exemple, je trouve que le résultat est plus beau lorsque HTML-CSS est utilisé plutôt que MATHML. On peut changer ce paramètre dans allant dans Settings -> Math Renderer. Par contre, HTML-CSS est un peu plus long à charger.