Bon, je ne m’en cacherai pas, je suis un addict de la programmation. J’adore programmer, j’en mange, j’en rêve (ou presque), etc… Et je travaille aussi présentement (avec Cyphermox pour ne nommer que celui-là) sur un projet personnel qui ne décolle pas encore, mais qui a du potentiel… Enfin bref. L’une de mes décisions de conception est d’utiliser un système de fonctionnalités par greffons (plugins), de façon à plus ou moins forcer une bonne division encapsulée des fonctions par objet. Cette approche a le mérite d’économiser un peu sur la mémoire et de ne pas avoir à rechanger le programme au complet parce que y’a un programmeur naze qui a mal compilé la dernière version de la librairie et que ça envoie un password en texte clair sur paypal. Cette décision m’a permis de développer une expertise côté chargement de greffons avec Qt… Mais qu’en est-il du déchargement de greffons? Y a-t-il un moyen de décharger des greffons de la mémoire tout en gardant le greffon dans la totale ignorance de son parent? … Eh bien oui! J’ai utilisé une fonctionnalité de Qt appelée QSignalMapper pour réussir à assigner une fonction de déchargement unique à chaque greffon chargé en mémoire. Fun times, mais ce n’est pas de tout repos.
Tout premièrement, sachez que QSignalMapper est awesome.
Deuxièmement, mon approche pour utiliser QSignalMapper a été de faire un objet d’”attribution de signaux”. Il possède un constructeur qui prend en entrée un pointeur vers l’objet de “cleanup”; un pointeur char* vers la fonction à appeler pour se débarasser des objets qui lui seront attribués; et le classique pointeur vers le parent, présent dans tout QObject. Après, pour la destruction des objets en tant que tel, il y a une fonction qui prend en entrée une Action (de menu ou de bouton, tant que le signal “triggered()” est lancé) et un pointeur QObject vers l’objet à détruire. Cette-dite fonction créera un AUTRE objet, que j’ai appelé “ActionPluginBridge”, et qui est là pour les besoins de “pureté” et de mémoire des signaux à attribuer. De cette façon, je peux “nettoyer” le QSignalMapper au complet à chaque nouvelle attribution. En faisant ça, c’est autrement plus facile d’être sûr que c’est bien attribué et à toutes fins pratiques stable (vive les foreach, soi dit en passant).
Vous avez maintenant ci-haut la structure que j’ai utilisée pour utiliser une même fonction plusieurs fois en gardant l’encapsulation intacte et en ne me faisant pas c…à écrire du code superflu. Là faut juste que je réussisse à faire déguerpir les objets sans crahser…
Code available on request. Évidemment sous GPL, bande de capitalissssssss.
Commentaires spéciaux:
Patrick K. Gauthier: C’est peut-être “impur” comme approche mais je suis comme tu le sais obsédé par le platform-neutre, donc chut. Et ça va compiler sur Linux, Darwin et Windows, donc DOUBLE-chut.
Bon, finalement, je prends le temps de m’arrêter à écrire ce billet. Ça fait très longtemps que l’idée des TabletPC (de tous genres, évidemment) me trotte dans la tête, depuis les ardoises classiques (un ordinateur complet avec seulement un écran tactile pour le contrôler) jusqu’aux convertibles, à la mode depuis quelques années, qui sont des ordinateurs portables classiques avec un écran (tactile, évidemment) qui se tourne et se replie sur le clavier pour donner une “feuille” sur laquelle on écrit. Je trouve la deuxième option intéressante, car elle offre deux façons distinctes d’utiliser l’ordinateur. Alors, je commence ce billet, un peu le fruit de mes réflexions et désirs d’acquisition
Premièrement, comme énoncé plus tôt, l’idée des tablettes m’intéresse depuis que j’ai découvert que la technologie existait - il y a donc de cela un peu moins de 5 ans. Pouvoir prendre des notes de cours sur un bloc-notes électroniques qui n’est aucunement salissant, a une empreinte écologique un peu moins dommageable que d’utiliser un bloc-notes papier+crayon+taille-crayon (disons qu’à la longue ça fait assez gros comme feuilles à recycler à l’université) et sur lequel on peut écrire relativement n’importe où (c’est dur en dessous, pas comme un bloc-notes classique, il FAUT une surface dure pour eux!) est assez intéressant comme principe. De ce fait, la prochaine acquisition que je planifie comme ordinateur portable personnel sera une tablette “lettre US” - non une tablette basée “netbook”, car celles-ci sont en planification présentement.
1- Yeah, STAGE. J’ai un stage chez Ericsson Canada… Et il est de 8 mois! NICE. Je vais essayer de me faire un nom tiens
2- je suis en fusil contre Linux, blog post à venir.
3- J’ai finalement changé ma atheros AR5418agn pour une intel 4965agn. Mieux pour linux. Surtout avec les sleepmode. Là faut juste que je réussisse à ce que la souris se soumette à ma volonté - va pas être facile ça!
Comme certains d’entre vous le savent, j’essaie de coder en C++ avec QT. J’ai toujours des problèmes avec mes interfaces de développement… Sauf en Windows, que j’ai tout récemment, et totalement, lâché.
L’un de mes derniers problèmes est survenu tout récemment (en date du 20 août). Le 18 août, tout fonctionnait bien avec Eclipse. L’intégration chargeait, tout affichait, blah. Le 19, après moult installations, y’a quelque chose qui, manifestement, s’entêtait à ne pas fonctionner, preuve en est, tout sauf IntégrationQT chargeait.
Le bogue est bien simple mais cryptique à SOUHAIT: QtIntegration, pour une raison ou une autre, est TOTALEMENT incompatible avec GTK-Qt-engine (nom de paquet gtk-qt-engine et/ou gtk-qt-engine-kde4, sous Intrepid Ibex et/ou Hardy Heron, selon les dépôts). Vous n’avez qu’à désinstaller la bête par synaptic ou avec “sudo apt-get remove gtk-qt-engine gtk-qt-engine-kde4″.
Si vous voulez tout de même avoir une apparence attrayante aux yeux (qui n’en veut pas!), vous pouvez charger “gnome-settings-daemon” au démarrage de KDE (System Settings -> Advanced -> Autostart).
OH MON DIEU VÉNÉRÉ (même si je ne vénère présentement aucun dieu) QUE JE SUIS HEUREUX. Je suis un nerd fini et un amateur de Final Fantasy. Donc, FF13 sur ma console “principale” est un RÉEL PLAISIR, vu que j’aime pas sony.
FF13 sur 360!
1- Faut absolument que je me fasse des cartes d’affaires. Qqn a une idée?
2- Faut aussi que je me fasse un sous-site plus professionnel… Un blogue comme page d’accueil, ça se fait pas à part chez www.nioutaik.fr …
Bonne journée!
Je suis
OFFICIELLEMENT
FIANCÉ!
…Dites-moi si je dois pleurer et être nostalgique de ma jeunesse, ou me réjouir et sauter jusqu’à la lune.

Que j’en voie pas un (insérez sacre qualificatif ici) chiâler que Office 2007 roule pas sur Linux.