XD blog

blog page

2013-10


2013-10-31 Choisir des couleurs pour un graphe

J'ai parfois besoin de pas mal de couleurs sur un graphique (avec matplotlib par exemple) et je ne sais jamais quelles couleurs choisir après rouge, vert, bleu. Bref, j'imagine que dans la liste suivante, si chaque couleur porte un nom, c'est qu'on peut les reconnaître.


more...

2013-10-27 Convert HTML into JSON

I needed to convert a HTML string into JSON. After looking for results without any success, I thought doing it myself should be faster than searching. As an exemple:

content = '<html><body><div class="an_example"><p>one paragraph</p></div></body></html>'
js = HTMLtoJSONParser.to_json(content)
print (js)
Will produce this:
{'html': {'body': {'div': {'p': {'': 'one paragraph'}, '#class': 'an_example'}}}}

The implementation of HTMLtoJSONParser follows:


more...

2013-10-23 Using pythonnet

I migrated over Windows 8.1 and I realized my version of pythonnet for Python did not work anymore. I got the following error:

ImportError: dynamic module does not define init function (PyInit_clr)
I did not really try to understand but I knew I had to access the sources first because the official website of pythonnet does not provide any version for python 3.x. So I looked for pythonnet on github, I found this. I got the sources which did not compile on the first try unless I apply the three following modifications: After the compilation completed (on Windows 8.1 + Visual Studio 2012, 2013), I could use the two files clr.pyd and Python.Runtime.dll the same way. There were some others modifications I do not remember exactly. Anyway, my version is located here sdpython/pythonnet.

2013-10-20 Quelques restaurants à Paris toujours

Entendu à la radio : Louvre Bouteille. Dans un journal : Aux Deux Amis, L'Ami Louis (> 100€), Chez Nenesse (> 40€), Le Baratin, Au Passage, Autour d'un verre, L'essentiel, Au rendez-vous des chauffeurs, Clandestino.

2013-10-14 Mon PC est mort ce soir

Je fais régulièrement des sauvegardes qui ne servent à rien la plupart du temps à rien sauf quand le disque dur de mon PC me lâche. Là, je suis très content de pouvoir continuer sur un autre portable en recopiant mes données même s'il faut que j'installe une tonne de logiciels (python, latex, office, 7zip, ...). Ca m'est arrivé il y a quelques jours et j'ai appréhendé la situation avec calme même si j'ai été surpris que mon portable lâche après seulement six mois.

Sauvegarder peut être terriblement contraignant. Il y a bien sûr des solutions style stockage distant. Mais l'offre gratuite est limitée à 5 Go et étudiée pour qu'elle soit dépassée dès qu'on y stocke ses photos. De plus, je n'aime pas trop me dire que mes données sont répliquées trois fois à tous les coins du monde.

J'en suis donc revenu aux solutions artisanales. On sauvegarde si cela n'est pas trop coûteux de même qu'on écrit des articles de blogs si cela ne pas prend pas trop de temps de les mettre en ligne. Donc, ça doit se faire en trois clics de souris au plus. Une autre chose utile est la possibilité de garder l'historique des dernières modifications apportées à un document. On efface par mégarde, on supprime un paragraphe qu'on ne voulait pas supprimer...

Pour ces deux raisons, j'en suis venu à utiliser Tortoise SVN. Tous les fichiers que je souhaite conserver y sont archivés. Et je peux récupérer facilement l'historique. Pour le reste, j'ai codé moi-même la sauvegarde (voir synchronize). Elle récupère la liste des fichiers recensés par Tortoise SVN et recopie les fichiers modifiés depuis la dernière sauvegarde sur un disque dur externe.

Toutes mes copies ne sont pas cryptées mais je contrôle les supports sur lesquels mes données sont recopiées. J'utilise malgré tout des services style dropbox ou skydrive pour facilement transbahuter certains depuis mon ordinateur vers mon téléphone portable (la lecture pour le métro).

2013-10-02 Ways to show code in a blog post

I found another way to show code in a blog. It looks nicer than prettify. The only change is to indicate the langage you want to use to highlight you piece of code. It is called SyntaxHighlighter.

You need to insert the following lines in the header:

<link href="/js/shCore.css" rel="stylesheet" type="text/css" />
<link href="/js/shThemeDefault.css" rel="stylesheet" type="text/css" />
<script src="/js/shCore.js" type="text/javascript"></script>
<script src="/js/shAutoloader.js" type="text/javascript"></script>
And those one at the end of the body:
<script type="text/javascript">
SyntaxHighlighter.autoloader(
  'js jscript javascript /js/shBrushJScript.js',
  'applescript /js/shBrushAppleScript.js'
);
 
SyntaxHighlighter.all();
</script>
Then to highlight a piece of code:
<pre class="brush: js">
var your_code_here='simple try';
</pre>

I also tweaked the css style to reduce the size in shCore.css:

.syntaxhighlighter textarea {
  ...
  font-size: 0.98em !important;
  ...
}
And to remove the green question mark, in shThemeDefault.css:
.syntaxhighlighter .toolbar {
  /*color: white !important;
  background: #6ce26c !important;
  border: none !important;*/
  display: none;
}


Xavier Dupré