[C++/Qt] Concaténation de chaînes de caractères

Posté le Wednesday, 22 December 2010 dans Programmation • Tags: performance, qt

Présentation

Qt est un framework orienté objet écrit en C++ et permettant de faire des interfaces graphiques à l’aide de ces widgets. Ce framework est utilisé par le projet KDE depuis ses débuts pour en faire un environnement très complet.

Qt permet donc de faire des interfaces graphiques mais aussi d’accéder à des bases de données SQL, de faire de la communication réseau, une gestion simplifiée des threads, la lecture de fichier XML. Qt intègre aussi le moteur HTML Webkit.

Qt ajoute une couche supplémentaire au C++ permettant de faire de l’introspection de classe un peu plus poussée (comme l’appel d’une méthode dont on ne connaît le nom qu’à l’exécution). Qt permet également la gestion d’évènement par l’intermédiaire d’un système puissant de SIGNALS et de SLOTS.

Dans la suite de cet article nous allons nous concentrer sur une très petite partie de Qt mais qui est utilisée dans beaucoup d’applications écrites en Qt : les chaînes de caractères, et plus précisément, la concaténation de chaînes de caractères.

Concaténation de chaînes de caractères.

Comme dans d’autres langages, la concaténation de chaînes de caractères se fait à l'aide de l ...


Lire la suite ...

Calcul de la distance entre deux fichiers

Posté le Sunday, 06 June 2010 dans Programmation • Tags: qt, performance

Présentation

Suite à un billet sur LinuxFR, où je demandais comment calculer la distance (ou le pourcentage de similitude entre deux logiciels), j'ai obtenu la formule suivante :

distance = 1 - ( C(A) + C(B) - C(AB) ) / Max(C(A), C(B))

où C(X) est la taille du fichier X compressé1.

Après avoir testé les formats gzip, bzip2 et lzma, j'ai conclu que le format de compression le plus performant pour le calcul, est le format lzma, car le dictionnaire avec la mise en commun était le plus gros, et donc le calcul de distance est plus efficace.

Le programme

J'ai donc décidé d'écrire un programme parcourant un dossier (avec plusieurs milliers de fichiers) et de calculer pour toutes les combinaisons des fichiers la distance entre chaque fichier. Ce programme consommant énormément de mémoire, il se peut que pour un grand nombre de fichier, le programme se plante avec une erreur d'allocation de mémoire.

Ce programme permet de pouvoir faire une cartographie de ces fichiers et ainsi de pouvoir les classer. Testé sur des fichiers textes (sources de logiciels), le programme est assez efficace.

Testé sur des images, ou des vidéos, les fichiers sont considérés ...


Lire la suite ...

Présentation de XINX

Posté le Sunday, 02 May 2010 dans XINX • Tags: xinx, generix-group, qt, xml

Ce billet fait suite à la sortie de la version 0.9.0 de XINX et va vous décrire ce logiciel. XINX est éditeur de feuille de style XSL (il fait également éditeur JavaScript et CSS mais actuellement moins bien que ce que peuvent faire d'autres).

Il permet l'édition des feuilles de styles en proposant de compléter sur le nom des balises (normal), sur les attributs (normal), sur les valeurs d'attributs : les variables, les paramètres, ... Il propose également automatiquement les différents paramètres lors de l'utilisation d'un call:template.

L'éditeur est fortement tourné vers l'édition de feuille de style XSL pour génération d'HTML mais peut être utilisé pour générer du XML.

XINX

Historique

Depuis un certain temps déjà (5 ans), je travaille pour la société Generix Group éditant et intégrant un ERP1 du nom de GCE.

Sur la partie Web de cet ERP, il est possible d'intervenir à plusieurs endroits pour modifier son fonctionnement :

  • Le paramétrage (BDD) : Modification d'un paramètre pour agir sur le comportement du logiciel
  • La couche métier (JAVA) : Lit le paramétrage (BDD) et réalise les traitements. Il est possible de développer de nouveaux objets, mais aussi de dériver ...

Lire la suite ...

[Qt] Transformation d'une vue tableau en une vue hiérarchique

Posté le Monday, 21 September 2009 dans Programmation • Tags: qt

Pour visualiser des données internes à l'écran, Nokia/Qt nous propose l'architecture MVC à l'aide des classes QAbstractItemModel et de ses sous classes (QAbstractListModel, QAbstractTableModel, ...). Le but de l'architecture MVC est de séparer la représentation mémoire des données, de l'affichage qu'elles auront.

mvc1

Si les données sont par exemple issue d'une requête SQL, le modèle QSqlQueryModel permet de représenter la sélection SQL, à l'écran dans un composant QTableView. Ces données sont alors représentées sous forme d'un tableau deux dimensions.

tableau

Si l'on veut représenter les dossiers de l'ordinateur, le modèle QDirView permet d'afficher les données de façon hiérarchique.

qdirview

Il est également possible d'écrire nos propres modèles pour représenter nos propres données.

Le but de cet article est de présenter l'écriture d'un modèle, transformant une vue plane (tableau deux dimensions) en vue hiérarchique. Pour cela nous allons prendre l'exemple de l'affichage d'une liste de catégorie1.

Présentation de l'exemple

Nous allons voir ci-dessous comment transformer une vue plane en une vue hiérarchique. Pour cela nous allons prendre l'exemple d'une liste de catégorie. Ces catégories seront stockées dans une base de données Sqlite ...


Lire la suite ...

Parseur XML

Posté le Sunday, 31 May 2009 dans Programmation • Tags: performance, qt, xml

Bonjours à tous,

L'utilisation des fichiers XML est, à ce jour, un fait dans la plupart des logiciels et est fortement à la mode. Une entreprise qui ne fait pas un peu de XML est souvent has-been. On utilise alors le XML à bon ou mauvais escient.

Avantages / Inconvénients

Pourquoi utiliser les fichiers XML ? Les fichiers XML sont, pour commencer, des fichiers textes, il seront donc toujours lisibles, ce qui garantit une meilleur pérennité de l'information. Les fichiers XML sont structurés hiérarchiquement et suivent une syntaxe stricte. Ainsi le XML est lisible informatiquement par les différents langages de programmation existant, pour organiser vos données, en utilisant différents niveaux. Les fichiers XML peuvent être commenté ce qui peut améliorer la lisibilité pour un humain.

Le gros inconvénient du XML est sa verbosité. Pour chaque noeud dans la hiérarchie, il y a une balise de début, et une balise de fin contenant le nom de la balise. Le fichier est moins compact que s'il avait été écrit en binaire. Cela peut poser des problèmes comme alourdir les communications réseaux (ex: pour les ...


Lire la suite ...

XINX 0.8.1.0

Posté le Tuesday, 26 May 2009 dans XINX • Tags: xinx, generix-group, qt, xml

Bonjour à tous,

Erratum : La dernière version est numéroté 0.8.1.1. Un petit bug (pouvant être gênant lors de l'ouverture de feuille de style sans utilisation du mode projet) a été corrigé dans la foulé. La page est corrigé en conséquence

Je souhaite vous annoncer la sortie de la version 0.8.1.0 0.8.1.1 de XINX. Pas d'énorme changement pour vous depuis la version 0.8.0.0 (sinon nous serions passés à la version 0.9.0.0) mais de gros changements internes.

Vue Contenue

ContentViewDock.png

En fait, la partie gérant la vue contenue a été complètement ré-écrite. Elle est maintenant parallélisée et partagée entre les différents éditeurs. Au final l'empreinte mémoire, ainsi que la fluidité a chargé les différents fichiers de XINX devrait être amélioré. (Enfin j'espère, car je n'ai pas fait de benchmark). De ce coté le code est lui aussi beaucoup plus propre et plus souple.

XINX étant toujours dans les versions 0.XX, je n'ose vous rappeler que ce n'est pas ce qu'on appelle une version finie, mais une série de bêta ;) . Étant donné le peu de test que j'ai pu ...


Lire la suite ...

KMyMoney - Logiciel de compte

Posté le Saturday, 23 May 2009 dans Logiciels • Tags: kde, qt

Logo

Voilà un bon logiciel sur lequel on peut compter (mouarf ! mouarf ! mouarf !), KMyMoney est un éditeur de compte. Je l'utilise quotidiennement, et je décide donc d'en parler un peu, pour que d'autres personnes puissent s'intéresser aussi à ce logiciel.

Summary

KMyMoney est un logiciel de gestion de compte pour particulier. Il vous permet de gérer plusieurs de vos comptes en banque, en vous permettant de saisir les dépenses et les recettes sur chacun de vos comptes.

Registres

Vous pouvez également lui indiquer vos échéances (par exemple : forfait téléphone, prêt immobilier1, mais aussi salaire, vos virements internes ou externes, ...) qu'il s'occupera de mettre à jour dans le registre automatiquement ou à votre demande.

Echeancier

Après une année d'utilisation, il vous permet également de sortir un rapport détaillé sur vos dépenses et vos recettes suivant les catégories saisies pour vos opérations. Cette information peut vous être très utile pour voir où se trouve le "trou" de votre porte monnaie et ainsi faire une rustine. Il vous permet aussi de vous projeter vers l'avenir et de faire votre budget pour l'année prochaine. KMyMoney vous offre pour cela, la saisie de votre budget, ainsi que plusieurs rapports ...


Lire la suite ...

KDE4 devient instable ...

Posté le Saturday, 11 April 2009 dans Logiciels • Tags: debian, kde, qt

Titre trolleur, cela ne veux pas dire que KDE 4 est moins stable qu'avant mais qu'il a passé une étape supplémentaire chez Debian.

Voilà quelques jours déjà que la distribution Gnu/Debian intègre KDE 4 dans sa version instable. C'est une grande nouvelle car cela va permettre à toute les personnes se trouvant en instable et n'ayant pas touchées à la branche expérimental de Debian de pouvoir tester KDE 4.

Malheureusement pour les traumatisé de KDE 4, l'intégration de ce dernier remplace KDE 3.5 et ne viens pas se positionner en parallèle. Il me semble pourtant que lors du passage de KDE 2 à KDE 3, il était possible d'avoir les deux bureaux en même temps sur sa machine et de switcher de l'un à l'autre sans difficulté. Cela signifie donc peut-être aussi la perte d'utilisateur pour KDE sous Gnu/Debian au profit d'un autre environnement de bureau.

Afin d'effectuer la migration en douceur, Gnu/Debian propose un assistant de migration de KDE du nom de Kaboom. Cet assistant, démarrer lors de la première connexion de l'utilisateur et vous propose alors de sauvegarder votre ancien dossier de ...


Lire la suite ...

XINX 0.8.0.0

Posté le Friday, 06 March 2009 dans XINX • Tags: debian, xinx, generix-group, qt, xml

Editeur

J'ai le plaisir de vous annoncer la sortie de la nouvelle version de XINX.

XINX est un éditeur de projet web basé sur les technologies XSL, HTML, CSS, JavaScript. Il possède un mode projet permettant de dériver les projets à la manière des consultants GCE de l'entreprise Generix Group.

Cette dernière version a mis beaucoup de temps pour sortir et est moins complète que celle que je souhaitais faire à l'origine. Cela viens de plusieurs raison :

  • de gros changement interne
  • moins de temps le soir et le week-end.

La prochaine version 0.8.1 contiendra les développements que je n'ai pu mettre dans cette version. N'hésitez pas à faire un retour sur les problèmes que vous rencontrez pour que ces derniers soit également corriger pour la prochaine version.

Nous allons détailler ci-dessous les différentes amélioration incluse dans cette version.

QCodeEdit - Le nouvel éditeur

L'éditeur de texte de cette version a complètement été remplacé. On est passé de QTextEdit (éditeur de texte de Qt Software) à QCodeEdit (Développé par Luc Bruant aka fullmetalcoder). Heureusement que les APIs de ces deux éditeurs sont très similaire ce qui a permis d'effectuer les changements assez rapidement (quelques ...


Lire la suite ...

Qt 4.5 est sortie

Posté le Tuesday, 03 March 2009 dans Logiciels • Tags: qt

Voilà quelques heures que la dernière version de Qt est sortie. Cette version, numéroté 4.5, est essentiellement orienté performance.

Logo

Elle contient entre autre1

  • Une mise à jour de QtWebKit vers un version de WebKit plus récente (avec un nouveau moteur JavaScript plus rapide, la possibilité d'ajouter des greffons comme Flash...). Il est également possible d'utiliser les balises d'HTML 5.
  • Amélioration des performances sur le moteur de rendu ainsi que sur le rendu du texte. Une librairie permettant de faire des tests de performance a été incluse : QtBenchLib.
  • Le support de Mac OS X Cocoa
  • La possibilité de faire des transformations XSLT
  • Un débuggeur QtScript2

Qt

  • Le support du format OpenDocument (ODF version 1.0, ne supportant que le texte et les images)
  • Amélioration du support des proxys
  • Amélioration de QtDesigner, QtLinguist
  • Une meilleur intégration au thème Gtk

Cette nouvelle version apporte également une grande nouveauté puisqu'elle est LGPL. Il est donc désormais possible de faire une application propriétaire à l'aide de cette librairie sans prendre une licence chez Qt Software. Par contre si une entreprise souhaite un support pour la librairie, il faudra tout de même acheter une licence.

Téléchargement

La sortie de Qt ...


Lire la suite ...