Get Adobe Flash playerPlugin by wpburn.com wordpress themes

Posts Tagged “Cpp”

boost::variant<Boire, Conduire>

boost::variant<Boire, Conduire>

N’avez-vous jamais rêvé d’avoir un type qui permettrait de représenter l’alternative entre deux types A et B (formellement : le type somme de A et B), dans le genre AouB, mais sans devoir tout coder vous-même ? L’utilité ? Si le ministère de la santé devait vous donner un type C++ lorsque vous allez à une soirée qui s’annonce arrosée, ils vous donneraient le type BoireouConduire ! Bon, les programmeurs chevronnés venant du C vont prétendre que les unions remplissent ce rôle ; ce n’est pas faux, sauf que ces dernières ne sont pas très sûres et l’on peut très vite être amené à des comportements anormaux. Vous rêviez d’avoir de vrais types somme en C++, avec une vraie sûreté d’utilisation et bien ancré dans le système de type ? Comme d’habitude, Boost l’a fait.

Read the rest of this entry »

Comments 1 Comment »

multithreadingIl n’est plus rare à notre époque de voir des particuliers lambdas posséder des machines quadri-cores. Cependant, l’exploitation de ces ressources est un domaine à part entière : La programmation concurrente.

En vérité, l’objectif de la programmation concurrente est double :

1) Utiliser les nouvelles ressources de nos ordinateurs actuels et futurs, qui s’orientent vers la démultiplication des unités de calcul
2) Diviser la logique de son programme. Pour étayer ce point nous pouvons prendre l’exemple d’un lecteur vidéo dans lequel une tâche serait chargée de lire la vidéo alors qu’une autre aurait pour rôle « d’écouter » les évènements de l’interface graphique.

Cet article a pour but de vous présenter les problématiques de base de la programmation concurrente ainsi que l’un des outils disponibles en C++ : Boost.thread. Voyez le comme un matériau élémentaire pour aborder le sujet en douceur.

Read the rest of this entry »

Comments 6 Comments »


Pour mon premier post ici, je vais présenter les classes de traits, technique de base liée aux templates du langage C++. En utilisant une classe de traits dans du code template, on délègue une partie du travail à cette dernière.

Read the rest of this entry »

Comments No Comments »

      Après une standardisation du web avec XML, ce dernier révolutionne les protocoles RPC. La grande mode des Web Services : du RPC à base de XML avec le protocole de référence SOAP. Comme d’habitude, les avantages de XML sont vantés : simplicité, extensibilité, et indépendance par rapport aux technologies sous-jacentes. Toutefois, la vitesse peut également être un facteur déterminant dans le choix d’un protocole, et c’est là que commencent les ennuis pour XML …

      Il est donc question dans ce post de comparer deux protocoles de sérialisation binaire et/ou texte : protobuf, développé par Google et utilisé dans la majorité de ses protocoles RPC, et Boost, bibliothèque logicielle de référence en C++ étant donné qu’une partie de celle-ci composera la STL de la prochaine norme C++, j’ai nommé C++1x. Read the rest of this entry »

Comments No Comments »

      Voici la version finale du gestionnaire de mot de passe basé sur AES-256 dont j’ai commencé le développement avant cet été. Adieu la GUI avec l’API Win32, j’ai décidé qu’il valait mieux utiliser un widget toolkit pour des raisons esthétiques et pratiques (autant au niveau du développement que de l’utilisation). J’ai donc choisi Qt, principalement à cause de mon expérience avec cette bibliothèque.

      En ce qui concerne les nouvelles fonctionnalités, se trouvent toutes celles qui étaient cruciales et non-implémentées dans la dernière version par manque de temps : suppression et édition d’entrées, modification de la clé privée, etc. De plus, j’ai conçu l’interface graphique afin de pouvoir l’utiliser rapidement. Un timeout de 10secondes est aussi fixé lorsque l’on copie le mot de passe dans le presse-papiers, pour des raisons de sécurité. Bref, n’hésitez pas à me rapporter les bogues existants, ainsi que vos critiques / remarques.

      Je tiens aussi à remercier 0vercl0k pour ses propositions de fonctionnalités supplémentaires et ses tests. Au passage, un challenge plutôt atypique mais très enrichissant est actuellement disponible sur son blog : l’exploitation d’un stack-based buffer overflow … au sein de son système d’exploitation ! A exploiter, ou au moins tenter ;)

Read the rest of this entry »

Comments 5 Comments »

      TinyPasswordManager est un gestionnaire de mot de passe Open Source et (bientôt) multiplate-forme. Basé sur le chiffrement AES avec clé de 256bits, je l’avais initialement développé pour un usage personnel. L’objectif initial est d’obtenir un gestionnaire simple, c’est-à-dire n’utilisant pas de bibliothèques, et sécurisé. Pour l’instant, seule la version pour Windows est dévelopée entièrement, avec GUI. En ce qui concerne la version pour les systèmes dérivés d’UNIX, je prévois de poster d’ici peu de temps la version ligne de commande, puis, par la suite, envisager le développement d’une GUI avec QT ou GTK.

      Pour les spécifications “techniques”, la passphrase choisie par l’utilisateur est hashée avec SHA256. Le hash obtenu est utilisé comme clé AES. En ce qui concerne la méthode de padding, j’ai opté pour la technique décrite dans la norme ISO 10126, à savoir le remplissage avec des octets aléatoires, en spécifiant la taille du bourrage dans le dernier.

      Enfin, le mode d’opération d’AES utilisé est CBC. Pour rappel, avec un chiffrement en mode ECB, tous les blocs sont indépendants : chaque bloc est simplement chiffré avec la clé. Cela pose quelques soucis en matière de confidentialité car deux mêmes blocs auront un résultat chiffré identique, ce qui n’est pas le cas avec CBC, mode utilisé en général dans lequel chaque bloc est XORé avec le bloc chiffré précédent, puis chiffré.

Je mets à disposition le binaire ainsi que les sources :

Read the rest of this entry »

Comments 5 Comments »

Arora logoJe vais aujourd’hui vous parler d’un (presque) nouveau venu dans le monde des browsers : Arora

Arora est un navigateur web libre, gratuit et multiplateforme. Il est entièrement écrit en C++, à l’aide du célèbre toolkit graphique Qt, qui est entre autre la pierre angulaire de l’environnement de bureau libre KDE, et qui est utilisé par d’autres projets tels que Google earth et Skype.

Depuis sa version 4.4, Qt intègre le moteur de rendu WebKit. Un moteur de rendu est un composant logiciel permettant d’interpreter du code HTML pour le faire apparaître sous une forme de page web.
WebKit est réputé pour ses performances et son respect des standards. C’est aussi le moteur de rendu utilisé par le navigateur Safari (Apple dirige d’ailleurs le développement de WebKit)

Arora a initialement été crée par un développeur Qt pour tester le bon fonctionnement de WebKit dans Qt. Cette vieille version est d’ailleurs toujours disponible dans les démos fournies avec Qt. Suite à ça, son développeur, Benjamin Meyer a continué l’améliorer.

Arora fournit toutes les fonctionnalités que l’on est en droit d’attendre d’un navigateur : Gestion des onglets, des bookmarks, historique, gestionnaire de téléchargement. Il supporte aussi les plugins flash et java de Firefox pour peu que votre version de Qt soit supérieure ou égale à Qt 4.5.
Fait notable pour un navigateur actuel, arora est léger :)

La page du projet

Screenshots

Téléchargement (Pensez tout de même à vérifier si arora n’est pas déjà disponible dans les dépôts de votre distribution, ce qui est par exemple déjà le cas sous Gentoo et Debian (mais vous ne pourrez pas utiliser flash et java puisque la version de Qt disponible dans les dépots debian est la 4.4 …))

@+

Comments 3 Comments »

 
Le premier article du blog est là !

Il s’agit d’un article traitant du module Memcheck de Valgrind, qui permet de détecter les fuites de mémoire (memory leak) ainsi que d’autres mauvaises utilisations de la mémoire.

Vous pouvez le télécharger ICI

J’espère que vous prendrez plaisir à le lire et qu’il vous sera utile.

Fireboot

Comments No Comments »