Archives de Tag: qt

QtCreator 2.3 beta – les nouveautés


Flattr this

Salux !

QtCreator 2.3 beta vient d’être publié, nous allons donc jeter un œil à ce qui nous attend :

  • Le formatage de code dispose de plus d’options, on a quasiment les mêmes possibilités qu’un EDI « classique » (Eclipse pour ne citer que lui). Autre ajout majeur, la possibilité de définir des paramètres différents pour un projet, pour ceux qui travaillent avec différentes équipes ayant chacune leurs habitudes (captures ici et ici).
  • Possibilité de déploiement sur tout « Linux distant ». Je ne suis pas très familier avec le déploiement, j’imagine que ça concerne les possesseurs de smartphone un peu bizarre.
  • Possibilité d’utiliser le compilateur clang (les BSDiens vont être ravis).
  • Auto-complément dans un thread séparé pour éviter les freezes (ah tiens je connais ça moi… sur un autre projet…)Capture d'écran
  • Monitoring QML via la nouvelle option dans la barre latérale « Analyze »
  • Meilleure recherche et parcours des tutoriels/exemples.
  • Déploiement par Wifi pour Symbian (CODA)
  • Ajout divers pour QML
Pour les impatients qui voudraient tester le bestiau, je ne saurais vous conseiller de compiler depuis le dépôt git afin d’avoir les modifs au fur et à mesure de leur arrivée.
Le Manchot Enragé
Publicités
Tagué , , , , , , , ,

DbMaster 0.9 – ce qui vous attend


Flattr this

Salux !

La sortie de la version 0.8 est un peu sortie inaperçue, et a surtout avec quelques déboires de packaging (JE CHERCHE UN MAINTENEUR !) il est vrai. Cela n’empêche le projet le continuer son chemin et de vous présenter quelques points validés, pour certains déjà en cours de travaux.

Refactoring gestion des connexions

Et oui, encore du refactoring… Et sur une partie que je pensais figée qui plus est. J’ai pu discuter un peu sur la ML Qt pour me rendre compte que ma gestion des connexions est juste désastreuse. Je vais essayer de remédier à tout ça. En deux mots, une connexion doit avoir une durée de vie la plus courte possible et être libérée immédiatement (ce que font les autres outils du genre BTW).

Regrouper les onglets de l’éditeur de requêtes en un seul

A l’usage, je me suis rendu compte qu’une fonctionnalité d’AnySQL Maestro faisait cruellement défaut : chaque requête étant ouverte dans un onglet séparé, cela devient très vite inutilisable. Les gars d’AnySQL ont eu la bonne idée de ne faire qu’un seul onglet « Requêtes » et d’y regrouper toutes les requêtes. Idée que je vais reprendre.

Trier et ordonner les connexions

Lorsque l’on a un certain nombre de connexions (disons >5) il devient intéressant de pouvoir les ranger de manière thématique. Bref, au moins pouvoir faire un bête glisser-déposer pour ordonner tout ça.

Filtre dans les tables

Lorsque l’on affiche une table et que l’on veut restreindre à une seule partie du résultat (typiquement tous les manteaux rouges) on est obligés de passer par l’éditeur de requêtes.

A terme, directement dans l’outil table, on pourra filtrer le résultat facilement.

Support des index

Dans la catégorie fonctionnalité SQL les adaptateurs fourniront la liste des index en-dessous des colonnes.

Cette liste est évidemment incomplète puisqu’elle ne présente que les morceaux « importants ». Pour la totale, rendez-vous ici.

Le Manchot Enragé

Tagué , , , , , ,

Changement de licence pour DbMaster


Flattr this

Salux !

Gros sujet de réflexion actuel, sur lequel je n’ai malheureusement que peu de temps à consacrer, la licence de DbMaster. Je l’avais mise « par défaut » en GPLv3, mais je regrette aujourd’hui ce choix, trop restrictif.

Poursuite & financement du projet

Le projet a tapé dans l’œil de ma boss, qui voudrait bien commercialiser un produit dérivé avec des options supplémentaires. C’est -en partie- dans cette optique que le système de plugin a été développé.

Or, la licence GPL interdit les travaux dérivés/le link avec du code propriétaire, ce qui rend de facto cette version payante impossible, à moins de demander aux contributeurs de céder leur propriété sur les patchs, ce qui me gêne sur le principe.

Le choix de la licence Apache

J’ai un immense respect pour la Fondation Apache ainsi que son travail effectué. Leur licence est simple et clair et permettra les travaux dérivés tout en conservant la parenté du travail de chacun.

Les dérives sont possibles, certes, que des stagiaires ou des DSI peu scrupuleux reprennent le code et pavanent devant leur boss en toute légalité. Pour être honnête, ça ne m’empêchera pas de dormir.

Je préfère me dire qu’en simplifiant les termes de la licence, des entreprises seront plus enclines pour participer (humainement, financièrement…) afin d’améliorer l’outil en vue de l’utiliser ou de le revendre sous une autre forme. Tant que ça fait avancer le schmilblick…

En deux mots

Le changement n’a pas été fait, ce n’est qu’une question de temps, encore et toujours. J’ai lancé un appel aux contributions sur Twitter, en espérant recevoir un peu d’aide et me dégager du temps pour m’occuper de tous les trucs satellites qui ne sont pas du code mais restent indispensables (doc, site, etc.)

Le Manchot Enragé

Tagué , , , , , , , , ,

Marre de l’anarchie Windowsienne (partie 2)


Flattr this

Salux !

Toujours pas de tar donc. On veut ma peau aujourd’hui. De retour dans le terminal Windows (beuh), j’essaie de compresser ce qui me passe par la main ; sauf que tar cjf me retourne une erreur. La commande serait inconnue. Merde alors, j’ai du zapper un truc… Je retourne sur Linux (Yakuake soit loué) et j’essaie… tar cjf bidule chouette oui c’est bon. Ok ça devient chelou. Cinq minutes de Google plus tard, j’apprends que tar ne permet pas la compression bunzip sur Windows, il faut « bsdtar ». Tellement que ça me saoule, je ne prends même plus le temps de regarder ni pourquoi ni comment. Je télécharges, j’extrais, terminal, bsdtar.exe –version ça marche ! J’essaie la compression, bsdtar.exe archive.tar.bz2 fichiersalacon fonctionne du tonnerre. Je modifie l’application pour spécifier le bon exécutable et apparemment, enfin, ça marche.

Je préviens mes collègues et je leur fournis un joli .zip qui contient l’application. Testons donc, premier lancement sur leur machine : OpenSSL manquant et plus aucun affichage des symboles au format SVG. Je ne vous explique pas le dégoût profond que je commence à développer pour cet OS. Pour OpenSSL, le problème est vite réglé : il lui manquait certaines DLL (POUR CHANGER !!!!). Pour les SVG, je ne vous détaille pas le parcours, mais c’était du genre « faut prendre le contenu du dossier A qui est dans B mais pas A dans C ».

Voilà ! C’est fini, le logiciel fonctionne enfin sur Windows ! Gros soupir de soulagement au sein de l’équipe.

De retour sur Linux, j’explique à mes collègues les problèmes que l’on aura avec la version Windows ; notamment le fait d’intégrer les programmes tiers dans le processus de mise à jour – j’en profite pour leur citer la faille de la libpng qui a contraint une flopée de logiciels à fournir une màj sur Windows, alors que sur Linux le patch a été appliqué sans effets de bord. Et là, comme pour me narguer, j’ai le gestionnaire de mises à jour d’Ubuntu qui me saute à la figure, m’alertant qu’une mise à jour de sécurité importante est disponible pour OpenSSL. Ça, c’est de la coïncidence.

J’ai commencé à aborder un sujet fâcheux : les mises à jour. Et oui, pour ceux qui ne le sauraient pas, les mises à jour sur Windows, c’est À LA MAIN. C’est pas comme si RPM avait été inventé en 1995 non ! J’ai pas trouvé la date d’apparition des premiers dépôts, en tous cas je les ai toujours connus sur Linux (je n’ai commencé qu’en 2005 mais bon). Bref, pour en revenir à Windows, chaque logiciel doit embarquer sa procédure de mise à jour. Il va falloir donc en écrire une (c’est cool !), puisque le logiciel a quelques spécificités techniques (que je ne déballerai pas ici). Je ne vous explique pas la perte de temps.

Conclusion

Il est temps de faire le bilan, et peut-être aussi de modérer mon propos. Difficile de culpabiliser Microsoft, puisqu’à aucun moment je n’ai utilisé une de ses libs. D’ailleurs, il serait aisé de penser que la faute revient pour beaucoup à gnuwin32, qui aurait mal packagé ses applications. Malheureusement, ce n’est pas aussi simple.

Tout d’abord, quel a été mon problème ? La réponse est simple : en bon libriste, je n’avais pas envie de réinventer la roue carrée (mon client me paie pour ça c’est bien connu) et je me suis dit « Tu veux une somme MD5 ? Prends un logiciel qui sait le faire ». Je m’en suis mordu les doigts. Pourquoi ? Parce que Windows, contrairement à Linux, ne permet aucunement de gérer les dépendances tierces. Là est le formidable avantage des dépôts : je précise que j’ai besoin d’OpenSSL, il va me le chercher, me le télécharge, me l’installe et le met à jour pour moi. Elle est pas belle la vie ?

On retrouve une sale pratique qu’ont les développeurs Java : lorsqu’ils ont besoin d’une bibliothèque, ils vont inclure le JAR à l’application. Et si la bibliothèque en question est mise à jour ? Alors là, silence gêné. Timidement, peut-être qu’on me répondra que ça représente une perte de temps alors qu’en l’état actuel, tant que ça marche

Il est surtout difficile d’en vouloir à gnuwin32, premièrement pour leur patience et leur courage (franchement, mon appli, à côté de la leur, c’était du gâteau à porter sur Windows), ensuite parce qu’ils ont voulu reprendre le concept des dépôts en séparant l’application des bibliothèques tierces.

Mais je sens que ça va partir dans un débat d’idées sans fin. Revenons à notre réalité de développeurs et essayons de résumer clairement la situation.

Clairement, porter l’application sur Windows a été un gouffre en terme de temps, et donc en terme d’argent, tout ça pour patcher le retard pachydermique de Windows sur le terrain du déploiement d’applications.

PS: j’omets sciemment de parler de WSUS, ce qui serait hors propos puisque ce dernier, malgré ses qualités, ne s’applique qu’aux réseaux d’entreprises. Un particulier ne pourrait pas utiliser cette technologie pour mettre à jour Firefox ou autre.

Tagué , , , , , , , , , , , , , ,

Marre de l’anarchie Windowsienne (partie 1)


Flattr this

Salux !

Tout d’abord, je tiens à m’excuser auprès de Microsoft. J’écris ce billet en étant assez énervé, je risque donc de leur reprocher des choses qui ne sont pas (directement) de leur faute. Pas tout à fait. Quoique.

Je vais vous raconter une histoire pas drôle, l’histoire d’un manchot qui passe une heure à essuyer les plâtres d’un système pas vraiment fini.

Tout commence avec un programme écrit en C++. Aïe. Déjà, les connaisseurs voient la chose venir. Je ne suis ni le premier, ni le dernier à savoir que développer du C++ sur Linux finit TOUJOURS par poser des problèmes sur Windows. Des fois, je me demande si ce n’est pas voulu tellement c’est gros. Mais non ! Aujourd’hui, c’est même pas un problème de code ! Miracle non ?

En fait le miracle c’est d’utiliser Qt. J’ai donc mon appli, toute belle toute propre, joliment écrite et prête à fonctionner sur Windows. Je ne peux pas trop vous en dire plus, c’est pour un client (NDA, tout ça).

Par contre, ce que je peux vous dire, c’est que cette appli, elle a besoin de deux petites choses pour fonctionner : OpenSSL et Tar. Aux dernières nouvelles, c’est pas ce qu’il y a de plus dur à trouver. D’ailleurs, si j’omettais de les inscrire dans les dépendances d’un paquet, ça passerait inaperçu. Pourquoi ? Parce que n’importe quelle distribution Linux l’intègre en natif ! Je dis bien n’im-porte-quelle. J’ai pas vérifié, mais je mettrais ma main à couper qu’il en soit de même sur BSD. Et sur Windows ?

EH BEN NON DUCON ! Faut aller les chercher. Je savais déjà que Windows est assez pauvre en logiciels de base (ironique pour l’OS « mainstream », non ?), ça ne m’a pas choqué plus que ça. Juste conforté dans mes convictions d’anarcho-communo-libriste. Mais bon, je dois être un troll, c’est vrai, qui aurait besoin d’un outil pour chiffrer/signer ou gérer des archives ? Pas grand monde à priori.

Mon client si, alors comme je peux pas lui dire « Utilises Linux, ça te facilitera la vie et la mienne », je m’y colle.

Google. OpenSSL Windows. Je trouve. Quelques liens… Un installeur… Youpi, j’ai l’exe ! Je le copie colle, pour l’instant tout va bien. Je lance la console… BEUUAAA !!! C’est quoi cette antiquité ?? Ah bah oui, sur Windows, il faut savoir une chose : c’est que le terminal n’a pas été mis à jour une seule fois depuis MS-DOS. Cool ! J’agrandis pour y voir plus clair : non non non, le nombre de colonnes est limité. Tu peux pas. Re-cool. J’ai encore plus l’impression d’être sur MS-DOS. Je persiste, je vais dans mon dossier (au passage, le comportement de la touche tab fait peur) et je fais un petit test : « openssl.exe –version ». Enfin une bonne nouvelle, ça m’a l’air de marcher.

Passons à Tar. Google. Tar Windows. Je trouve. Je télécharge. Je parcours la jolie archive et j’extrais « tar.exe ». Ça n’a pas l’air beaucoup plus compliqué : terminal, bon dossier, on exécu… AAAHHHH ! libintl-2.dll manquante. WTF ? Recherche Google : je trouve plein de trucs chelous alors je retourne sur la page de tar. Effectivement, en bas, dependencies, c’est listé. Déjà, je rie un bon coup, parce que n’importe quelle distribution Linux digne de ce nom me l’aurait proposé. Pour tout vous dire, sur Fedora ou Ubuntu, tapez le nom d’un programme qui n’est pas installé et il va même vous indiquer comment l’avoir. Ici, on en est trèèèèès loin. Très très loin.

Re-télécharge, je parcours l’archive, cette fois-ci pour me rendre compte que c’est pas le bon : libintl-4.dll. Zut alors. Retour sur la page, version précédente, par réflexe je clique sur « lib » et re-zut, j’ai des .a. C’est drôle quand même, sur Windows quand on publie une bibliothèque -lib ça veut dire « contient des .a » et -bin « contient des .dll ». Ça me fait doublement rire. Cherchez l’erreur. Rebelote, cette fois c’est la bonne, j’ai réussi. Pfiouf. On extrait, on place (p’tain il devient volumineux le dossier avec toutes ces dépendances) et on re-teste : libiconv-2.dll indisponible. Je google, clique, télécharge, extrait, place, recommence : « tar –version » marche enfin !

Je lance mon application (je vous passe les erreurs de compilation inexplicables par leur cause et leur disparition) et j’essaie la compression + hashage : ça marche pas. Pour changer.

À suivre…

Le Manchot Enragé

Tagué , , , , , , , , , , , , , ,

À l’attention des contributeurs Qt : testez vos patchs avec Qt Autotester


Flattr this

Salux !

Vous le savez certainement, l’un des pires ennemis du développeur est la régression : un patch ou un ajout qui, en réalité, cause plus de problèmes qu’il n’en résout.

Qt n’échappe pas à la règle, d’autant plus que dans le cadre d’un développement ouvert, les tests effectués sur les contributions sont inconnus. Les labs Qt ont donc mis à disposition des contributeurs un outil pour faciliter les tests de non régression.

Le principe est simple : Qt intègre déjà une batterie de tests unitaires afin de valider une branche en attente avant sa fusion avec la branche principale. Afin de gagner du temps, chaque contributeur pourra dorénavant bénéficier d’une interface graphique (disponible ici) pour effectuer ces vérifications.

Sélectionnez une batterie de tests prédéfinis, spécifiez quelle version est concernée, puis attendez les résultats. Exemple donné dans le billet, pour un patch sur QGraphicsView, 19 tests commencent par « qgraphics ».

L’interface a été revue avec QtQuick pour être plus esthétique.

 

Capture de Qt auto-test

Capture de Qt auto-test (2)

Informations à retenir

  • Il est possible de travailler avec plusieurs versions/branches de Qt.
  • L’outil est multiplateforme.
  • Possesseurs de Windows, vous pouvez effectuer les tests sur un Symbian à distance.

Source :

Le Manchot Enragé

Tagué , , , , , ,

Qt : modularisation du framework


Flattr this

Salux !

Un billet plus qu’intéressant est apparu dans les Qt Labs blogs de nos trolls favoris. Il s’agit, ni plus ni moins, d’éclater le framework en une multitude de sous-projets.

Si, comme moi, vous suivez l’évolution de Qt depuis quelques temps, vous avez pu vous apercevoir du fait que des nouvelles technologies viennent le compléter version après version. Jusqu’ici, ces technologies étaient disponibles sous forme de module : le développeur pouvant choisir de n’inclure que ce dont il a besoin dans son application.

Nokia a décidé de pousser le concept un peu plus loin avec le projet « Qt Modularization » : éclater le dépôt, donner plus d’indépendance aux mainteneurs respectifs et avoir des feuilles de route séparées. Ce n’est pas sans rappeler QtWebkit, qui a suivi cette voie depuis quelques mois déjà. Peut-être était-ce pour Nokia une façon de tester « grandeur nature » cette séparation.

Quoi qu’il en soit, rien de planifié de manière précise pour l’instant. Deux schémas sont fournis, mettant en opposition l’architecture actuelle et celle à laquelle on pourrait s’attendre.

Architecture Qt 4.7

 

Architecture possible - Qt 4.8 ?

De mon point de vue, modeste contributeur aux plugins SQL, cela signifierait un travail plus facile car je suis obligé de cloner l’intégralité du dépôt alors que moins d’1% me concerne. Je suis assez impatient de pouvoir tester un tel bijou.

Si le concept pouvait être poussé jusqu’à fournir des versions packagées de manière beaucoup plus atomique, alors là, je serais un geek heureux 🙂

Le Manchot Enragé, qui attend toujours que son patch soit validé

Tagué , , , , , , , ,

KDevelop 4.1 : Git et autres joyeusetés


Flattr this

Salux !

Depuis un an déjà, KDevelop 4.0 est disponible. L’IDE des dragons, entièrement de plasma vêtu, publie une nouvelle version, amenant plusieurs ajouts que nous allons détailler ici :

Capture de KDevelop avec git

Git

Je forke, tu forkes, il forke, nous forkons (quasiment) tous depuis quelque temps avec l’outil de chez Linus. L’équipe KDevelop avait déjà migré son hébergement sur ce DVCS, il semblait naturel de fournir une intégration git à KDevelop. C’est donc chose faite, vous aurez le droit de visualiser de merveilleux hash !

Développement « social »

Nouveauté appréciable, en marge de la gestion du code source par un VCS (ou DVCS puisqu’on en parlait), la possibilité d’envoyer directement un patch par email, pastebin (j’aurais tendance à dire corbeille mais en français on comprend pas trop :P) & ReviewBoard (que je ne connais pas, faut que je regarde tiens).

Scripts externes

Déjà vu. Oui, c’est l’impression que l’on a, quand on connait Kate. Ça fait grosso modo la même chose, mais en mieux : possibilité d’interagir avec le code source de manière directe.

Récupérer un projet

KDevelop permet de récupérer un projet et de développer directement. Petit ajout qui se fait désirer quand il est absent.

Éditeur hexadécimal

Par le biais d’un plugin, KDevelop intègre Okteta pour l’édition de contenu binaire.

Support de PHP 5.3

No comment, les développeurs PHP seront contents d’apprendre que la syntaxe PHP 5.3 est pleinement supportée.

Mis à part ça

Plus de 150 bogues ont été résolus depuis la 4.0. Peut mieux faire.

J’essaierai bientôt, si ça peut fournir une alternative au lourdingue Eclipse pour du C++…

Références

Le Manchot Enragé

Tagué , , , , , , , , ,

DbMaster v0.7 beta

Salux ! Flattr this

Après cinq longs mois de développement, la version 0.7 arrive au stade de beta ! Toutes les fonctionnalités ont été implémentées, mais certains bogues persistent (liste). J’ai fait tout ce qui était prévu, et plus encore !

Pour les impatients : Télécharger la beta.

Hébergement sur dvp.com & github.com

Je quitte petit à petit sourceforge.net. Le code source est hébergé par GitHub et la plateforme de développement (Redmine) est fournie par developpez.com. Les informations dans les pages Contribuer/Installer ne sont par conséquent plus à jour, elles le seront pour la refonte du site.

À retenir

  • Pool de connexions dans un thread séparé
  • Impression des requêtes
  • Outil de recherche
  • Export HTML
  • Tooltip « Le saviez-vous ? »
  • Amélioration de l’intégration visuelle à Linux
  • Ordonnanceur de requête

Vous avez dit « beta » ?

DbMaster 0.7 n’est pas encore fini : il reste de nombreux bogues à trouver/corriger. Je vous invite donc à l’essayer et à raporter les bogues à vue : http://projets.developpez.com/projects/dbmaster/issues.

À venir

Dans les prochains jours je fournirai les paquets binaires pour Ubuntu Linux et Windows 7. Dès la RC le choix sera, bien entendu, plus étoffé.

17 nov, Release Candidate (RC) : on prépare la version finale et on créé la branche 0.7.

1er déc, version finale : DbMaster 0.7 sera prêt, propre et disponible à tous sur Linux ET Windows.

Poursuite du projet

Le calendrier de la v0.8 sera présenté en même temps que la v0.7 RC (le 17/11). Désormais, l’intervalle entre deux versions est fixé à six mois, afin de faciliter le travail des testeurs/intégrateurs.

Le Manchot Enragé

Tagué , , , , ,

Compiler le plugin QIBASE pour Ubuntu


Flattr this

Salux !

Ce tutoriel s’adresse aux utilisateurs de Firebird et d’InterBase souhaitant développer un applicatif Qt autour de leur SGBD préféré.

Rappelons que Qt s’appuie sur le framework QtSql pour se connecter à une base de données par le biais de drivers propre à chacun d’entre eux (comme le fait JDBC). Dans cet article j’expliquerai brièvement comment compiler le driver QIBASE, nécessaire pour Firebird/InterBase, sur les distributions Linux ne l’ayant pas intégré dans leurs dépôts.

Ce tutoriel est écrit depuis Ubuntu 10.04 « Lucid Lynx » mais il est tout à fait applicable aux autres distributions. Dans ce cas, prenez soin de contrôler les chemins des bibliothèques & outils Qt.

Première étape,

Télécharger le framework Qt :

http://qt.nokia.com/downloads (pour connaître la version installée sur votre ordinateur tapez ‘qmake –version’)

Et la bibliothèque Firebird :

sudo apt-get install firebird2.1-dev

Deuxième étape,

Préparer Qt :

tar -xzf qt-everywhere-opensource-src-4.6.3.tar.gz
cd qt-everywhere-opensource-src-4.6.3
cd src/plugins/sqldrivers/ibase

Dans ce dossier se trouve ibase.pro. Éditez-le avec votre éditeur favori et modifiez la ligne suivante :

unix:!contains( LIBS, .*gds.* ):!contains( LIBS, .*libfb.* ):LIBS
→    *= -lgds

doit devenir :

unix:!contains( LIBS, .*gds.* ):!contains( LIBS, .*libfb.* ):LIBS
→    *= -lfbclient

En effet, le driver est initialement prévu pour InterBase. Si vous utilisez ce dernier, ne modifiez rien !

Dernière étape,

Compiler le driver :

qmake
make

Retourner au dossier qt-everywhere-opensource-src-4.6.3
Installer le plugin dans le répertoire de Qt :

sudo cp plugins/sqldrivers/libqsqlibase.so /usr/lib/qt4/plugins/sqldrivers/

Épicétou. Maintenant vos applications prendront en compte le driver.

Le Manchot Enragé

Tagué , , , , , , ,