Archives de Tag: c++

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é
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é , , , , , , , , , , , , , ,

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é , , , , , , , , ,

Lancement de DbMaster

Salux !

DbMaster sort enfin de mon garage pour être disponible à l’adresse suivante :

https://sourceforge.net/projects/dbmaster/

DbMaster un programme de gestion de base de données open-source écrit en C++/Qt. Les fonctionnalités prévues sont :

  • Multi-plateforme (au moins Linux et Windows)
  • Gestion des connections
  • Gestion les tables (aussi bien les données que la structure) + assistant de création
  • Gestion les utilisateurs+droits
  • Éditeur de requête avec coloration syntaxique, auto-completion, etc.
  • Gestion des transactions
  • Support de la majorité des bases open-source (MySQL, PostGreSQL, Firebird, SQLite…)

La version actuelle est la 0.2. Je ne la conseille que pour les curieux, en effet elle ne possède que très peu de fonctions.

Téléchargement

Vous pouvez télécharger DbMaster :

Je le développe dans le cadre de mon cursus en BTS info, par conséquent je dois vous prévenir que je serai le seul développeur (même si cela me chagrine) pour la branche 1.0 (càd toutes les versions >= 1.0 + màj de sécurité 1.0.x).

Néanmoins je reste ouvert à toute critique/traduction/patch que vous pouvez m’adresser par le tracker.

Màj : migration sur sourceforge.net

Tagué , , , ,