Tuesday, 04 August 2015
|
Écrit par
Grégory Soutadé

Gâteau anniversaire 5 ans

Déjà 5 ans ! Les nostalgiques diraient que le temps passe vite. C'est vrai. Il s'en est passé des choses depuis août 2010. Des bonnes, des moins bonnes, la vie quoi... 5 ans, c'est le début de la maturité, du moins pour le blog et les services associés !

Pour cet anniversaire, et parce que les conditions physiques le permettent, je me suis fait un petit cadeau : Déméter.

Quésako ? C'est mon nouveau serveur qui remplace désormais Cybelle. Comme je l'avais annoncé précédemment, il s'agit d'une Cubox i2ex (sans Wifi & bluetooth). On passe ainsi d'un arm11 1,2Ghz avec 512MB de mémoire à un double cortex A9 1Ghz et 1GB de mémoire. La différence ? Trois à quatre fois plus rapide (à la louche) pour une taille diminuée par deux ! C'est surtout visible pour toute la partie dynamique (recherche/forge...). Autre avantage : la Cubox chauffe moins. La fréquence n'est pas plus haute, mais l'architecture est plus optimisée (ARMv6 vs ARMv7), la mémoire plus importante et surtout plus rapide.

SheevaPlug vs Cubox

Point important indirectement lié au nouveau serveur : le temps de présence en ligne (uptime) est maintenant de 24h dans une journée ! Au revoir Orange et son changement d'IP qui nous grève d'une heure. Et bientôt, il y aura même de l'IPv6 (si SFR se décide à mettre à jour ses box Virgin...).

Je dois dire que la migration ne s'est pas faite sans douleur. L'avantage est que j'avais des configurations déjà toutes prêtes, mais, ne pas suivre la procédure d'installation depuis le début amène d'autres problèmes (oubli de modules, de paramètres...). J'ai eu la joie de replonger dans la configuration de postfix/dovecot... aïe ! Aujourd'hui tout semble stabilisé.

Rassurez-vous, Cybelle ne part pas au rebut ! Elle servira de serveur de secours distant en cas de défaillance de Déméter. D'ailleurs, un article est prévu pour parler des mécanismes mis en place à ce sujet.

Concernant le blog en lui même : moins d'articles, mais plus intéressants. Particulièrement tout ce qui tourne autour des liseuses Bookeen avec un jailbreak à la clé (ce qui a demandé pas mal de travail).

L’outil de statistique (iwla) arrive également à maturation. Pour autant, le passage à Debian 8 a fortement perturbé le mois de mai (merci logrotate et la nouvelle conf Apache). Il a donc été moyenné par rapport aux trois mois précédents.

Revenons aux statistiques pures avec les 10 articles les plus consultés (en gras, consultation principalement pour les images. Entre parenthèses, l'année de publication) :

Il y a beaucoup de visites qui se font sur la page d'accueil (donc non comptabilisées). Mais, avec 5 articles de moins d'un an dans le top 11, c'est vraiment pas mal. Le top 2 reste inchangé. Ces 11 articles représentent 27% des pages affichées (au moins).

Des chiffres, encore (entre parenthèses, les années précédentes) :

  • 34 articles publiés (49, 50, 60, 60)
  • 21 300 visites (25 000, 12 000, 18 000, 9 000)
  • 9 Go de données envoyées (5.5, 2.7, 2.5)
  • 23 000 pages affichées

Des chiffres plutôt stables (hormis le nombre d'articles), avec une moyenne de 58 visites par jour, ce qui est plutôt bien.

Quid de la suite ? Améliorer l'existant (passage en Python 3), une petite application de notes en vue et, dans l'idéal, refaire le style CSS du blog. Vu le temps disponible, ce sont des objectifs réalisables sur ... un an, à moins qu'il ne commence enfin à pleuvoir en continu durant trois/quatre mois :)

Thursday, 16 July 2015
|
Écrit par
Grégory Soutadé

Capture d'écran IWLA

Deuxième version d'IWLA, le clone d'AWSTATSl'analyseur de log web écrit en Python.

Qu'est ce qu'on trouve dans cette version ? Et bien ... tout. Cette version arrive au niveau d'AWSTATS en ce qui concerne mon usage, et même le dépasse !

Quelques fonctions non présentes dans AWSTATS :

  • (Meilleure) Détection des robots
  • Affichage des différences entre deux analyses
  • Ajout facile des ses propres moteurs de recherche
  • Traçage d'IP
  • Détection de lecteur de flux RSS
  • Support des fichiers de log compressés

Pour le reste, on retrouve toutes les briques de bases. Mon seul regret est de n'avoir pas encore mis en place les tests automatiques.

Monday, 06 July 2015
|
Écrit par
Grégory Soutadé

Bookeen doesn't provides any way to hack their e-ink e-readers. Nevertheless, after they introduce a secured update file format for the first Cybook serie, they come back to a "tar-like" format for their e-readers based on Allwiner platform (new Odyssey, Muse, Nolimbook...). With this format, they try to be closest to Android platform.

Be careful : handling all bookeen's readers is difficult because there is a lot of derived/customized readers available ! For this, Bookeen has its own server that checks for serial number to determine which update to serve. A special attention must be done with manipulating boot and bootloader images, it can bricks your e-reader !

This tutorial will only works with UNIX/Linux tools, I do not plan to do it for Windows.

So, let's start. An archive is commonly named CybUpdate.bin. In facts it's a .tar.bz2 file.

First, decompresse it :

mkdir decompressed
cd decompressed
tar -jxvf ../CybUpdate.bin

The following content should be created :

contents
bootloader.fex
boot.fex
rootfs.fex

I think that boot.fex and bootloader.fex are optional, but not sure. Two types of files are present :

  • contents that contains meta information
  • fex files

Contents has the following format :

<ident>|<filename>|<length>|<sha256sum>|<version>

idents are :

  • LOAD for bootloader
  • BOOT for boot partition
  • ROOT for rootfs

Fex extension is a generic one that actually is flash images in different format (vfat, ext...).

In bootloader.fex and rootfs.fex we have a file "/version" specifying the current version (allowing to do checks). Mounting bootloader and rootfs is quite easy :

mkdir root
sudo mount -t ext2 rootfs.fex root -o loop

mkdir bootloader
sudo mount -t vfat bootloader.fex bootloader -o loop

After doing modifications, just unmount the directory and the image is automatically generated ! (Don't forget to update contents metadata).

boot.fex is more complex, it has Android bootloader format. You have to use split_bootimg.pl to decompress it.

mkdir boot
cd boot
../split_bootimg.pl ../boot.fex
> Page size: 2048 (0x00000800)
> Kernel size: 10863524 (0x00a5c3a4)
> Ramdisk size: 2253456 (0x00226290)
> Second size: 0 (0x00000000)
> Board name: sun5i
> Command line: 
> Writing boot.fex-kernel ... complete.
> Writing boot.fex-ramdisk.gz ... complete.

Then we decompress ramdisk :

mkdir ramdisk_decompressed
cd ramdisk_decompressed
gzip -dc ../boot.fex-ramdisk.gz | cpio -i

You can re compress it with :

find | cpio -o | gzip -c > ../boot.fex-ramdisk.gz

Rebuilding boot is done with mkbootimg. Be careful to use the same parameters split_bootimg.pl displayed !

./mkbootimg.py --kernel boot.fex-kernel --ramdisk boot.fex-ramdisk.gz --pagesize 2048 --board sun5i -o ../boot.fex

As you see, there is nothing complicated here, but mistakes with boot/bootloader or init scripts can bricks your e-reader.

Have fun !

Wednesday, 01 July 2015
|
Écrit par
Grégory Soutadé

Logo Dynastie

Sortie de la version 0.3 de Dynastie. Pour rappel, il s'agit de mon générateur de blog. En test depuis quelque mois, c'est maintenant officiel. Les différences ?

  • Support des brouillons
  • Ajout du marqueur "dyn:firstpageonly" : le sous-arbre n'apparaît que sur la première page
  • Ajout du marqueur "dyn:ljdc_last" : dernière image "les joies du code"
  • Quelques corrections de bug

Suite à l'introduction de la syntaxe Markdown, je n'utilise plus que cette dernière. Si un jour j'ai du temps, il faudra que je teste avec Django 1.8 et que je passe le code en Python 3.

Tuesday, 23 June 2015
|
Écrit par
Grégory Soutadé

Fenêtre principale de KissCount

Après une année blanche, voici la sortie de la version 0.5 de KissCount. Déjà 6 ans ! Le code est devenu assez mâture. Tellement qu'il faudrait VRAIMENT passer en Qt 5... Mais cette version n'est pas dénuée de nouveauté : Les tags (étiquettes) viennent rejoindre l'ensemble des fonctionnalités présentes. Il y a aussi quelques corrections de bugs.

Petit point faible côté empaquetage : seule la version GNU/Linux 64 bits est disponible. Il y a une version cross-compilée pour Windows qui malheureusement plante au démarrage (impossible de savoir pourquoi).

À priori, la version suivante ne sortira pas avant longtemps vu le peu de temps disponible que j'ai et de la maintenance/développement sur mes autres projets...

Dernier gif les joies du code Git push --force