Image 01

Archive for the ‘programmation’ Category

CodeTrack

Tuesday, July 24th, 2007

CodeTrack est un gestionnaire de bugs simple et léger, qui fait bien son travail. Il n’a pas besoin de base de données en backend. Il est plus simple que Mantis (qui reste pour moi la référence), et peut être mieux adapté pour les petits projets. Les deux sont évidemment infiniment moins tortueux et plus agréables à utiliser qu bugzilla.

Iron Ruby

Tuesday, August 1st, 2006

Wilco Bauer travaille à l’implémentation d’IronRuby. Il marche ainsi sur les traces d’IronPython qui est une implémentation de Python pour .NET supportée par M$ et qui est à un doigt de sortir sa version 1 (à l’heure où nous mettons sous presse 1.0 RC1).

Wilco Bauer a l’air de travailler assez vite et d’être impliqué, ce qui peut déboucher prochainement sur une version utilisable.

Firebird

Tuesday, July 18th, 2006

Firebird évolue régulièrement, et avec une belle énergie. De par ses performances, l’étendue de ses fonctionnalité, sa licence très souple et la richesse des méthodes d’accès au données, il s’agit d’un excellent choix de développement, notamment depuis qu’il permet de créer un moteur embedded. La version 2 est en Release Candidate.
Quelques liens utiles :

Firebird

Tuesday, May 23rd, 2006

Firebird évolue régulièrement, et avec une belle énergie. De par ses performances, l’étendue de ses fonctionnalité, sa licence très souple et la richesse des méthodes d’accès au données, il s’agit d’un excellent choix de développement, notamment depuis qu’il permet de créer un moteur embedded. La version 2 est en Release Candidate.
Quelques liens utiles :

Le paradoxe de Python

Monday, May 15th, 2006

J’arrive peut-être avec quelques trains de retard, mais je viens de tomber sur un post de blog qui date de 2004, de Paul Graham, qui invente un concept plaisant, qu’il a appelé le Paradoxe de Python.

Son idée est qu’un programmeur qui fait du Python est intéressant, puisqu’il a pris le temps d’apprendre Python. Il l’a certainement fait par goût, puisque peu d’entreprises demandent du Python (ce qui est probablement en train de changer), donc il est intéressé par la programmation plus que par le salaire. Une entreprise qui demande la connaissance de langages ésotériques a donc plus de chance d’engager de bons programmeurs, qui travaillent plus par passion que par intérêt.

Comme il le dit lui-même, les langages sont des cibles mouvantes. Il y a comme un cycle : Python passe du stade de langage ésotérique à celui de langage important, donc les programmeurs vont l’apprendre parce que les entreprises vont commencer à le demander, et les programmeurs passionnés vont apprendre le prochain langage qui monte. Aujourd’hui, c’est Ruby.

LINQ

Monday, May 15th, 2006

Microsoft s’amuse et tente de pallier à un inconvénient éternel, mais relatif, des SGBD : l’intégration dans le code client, en chaînes de caractères, du code d’interrogation de la base de donées, c’est-à-dire du SQL.
LINQ permet d’intégrer en .NET des requêtes de données qui sont intégrées dans le langage lui-même (C# ou VB), donc parsables, complétables par intellisense, etc. en se basant sur de nouvelles fonctionnalités des langages (parfois très nouvelles).

Certes. Cela oblige néanmoins, quand on attaque des bases externes à en intégrer les métadonnées dans des structures du langages (des classes, des tableaux), par exemple en utilisant du mapping relationnel-objet, afin de pouvoir parser les requêtes et de pouvoir correctement les traduire en SQL pour les envoyer au serveur. Ensuite se posent certainement des problèmes de performances, de couplage fort entre deux versions de métadonnées… La bonne manière jusqu’à maintenant, et encore pour un certain temps, de gérer ce problème, est d’encapsuler les requêtes sur le serveur dans des procédures stockées, et de les appeler depuis le client, à la rigueur avec des objets stored procedures qui reconnaissent les paramètres comme une collection d’objets.

L’initiative LINQ ressemble à une volonté de retrouver la souplesse de requêtage obtenue avec des applications de gestion de bases de données locales (type ISAM) comme Paradox, Foxpro ou Access, avec une intégration du langage procédural et de l’accès aux données. SQL Server 2005 tente l’action inverse : faire venir le langage procédural dans le moteur du SGBD. Avec toutefois, simplement une reproduction du problème, puisque même dans une procédure stockée en langage MSIL, tout accès aux données se fait à travers une connexion ADO et l’envoi de nos bonnes vieilles requêtes SQL.

Si vous voulez jouer avec ce qui pour l’instant ressemble à un joli gadget :
download de LINQ

IronPython

Friday, May 5th, 2006

Microsoft, dont l’ardent désir (affiché par son dpt marketing en tous cas) est d’évangéliser l’univers avec .NET, peut-être même jusqu’au Pôle Nord où il pourrait tuer des pingouins, a décidé de soutenir Python sur .NET avec IronPython. On en est à une version beta.

Outils pour Ruby

Friday, April 28th, 2006

Apollo est un projet japonais qui commence à prendre de l’âge (dernière mise à jour en 2004), qui permet d’utiliser la VCL Delphi 6 en Ruby, et donc de faire en Ruby des interfaces graphiques VCL.

RDE est un GUI libre pour environnement windows. Il comporte un débogueur intégré, un début de complétion de code, est scriptable en Ruby. Il est très rapide et peu gourmand en mémoire. Il y a quelques défauts d’interface mais est-ce vraiment rédhibitoire ? Une fonctionnalité amusante est, pour compenser l’absence du code folding (qui utilise le code folding ?), une petite fenêtre de prévisualisation du fichier, qui permet de s’y déplacer.

L’Avenir de Delphi

Thursday, April 27th, 2006

… est en effet bien compromis. Quelques bruits de couloirs des vendeurs de chez Borland :
http://www.lemanix.com/nickblog/PermaLink,guid,c0ee055c-5c2e-44b4-ba7f-116f40d9d13b.aspx

En résumé, les vendeurs Borland ne reçoivent même plus de commission sur les ventes de Delphi, donc ils n’essaient même plus de le vendre. La proportion de grandes sociétés qui utilisent Delphi est trop faible pour que Borland continue à investir dans Delphi.

Merci pour les gens normaux.

Et une annonce de Borland :
http://blogs.borland.com/davidi/archive/2006/02/08/23013.aspx

DDL en Access

Wednesday, August 31st, 2005

Pour mon grand malheur, je dois travailler dans une base Ms Access. Voici quelques infos pratiques qe j’ai eu l’occasion de découvrir en essayant de faire du DDL dans Access.

La plupart de la syntaxe SQL ANSI est supportée à l’intérieur d’Access via le DAO. Un CurrentDb().Execute "SQL String" fonctionne correctement, donc la plupart des syntaxes utilisées par exemple dans SQL Server pour faire du DDL sont exportables telles quelles. Par exemple, un

strSQL = "CREATE INDEX MyIdx ON Table (Column)"
CurrentDb().Execute strSQL

sera parfaitement accepté. On peut créer la même chose via une syntaxe DAO, en utilisant la bibliothèque d’objets, qqch du genre Currentdb().CreateIndex

Un problème : la génération de clés étrangères. Essayé cette syntaxe :

strSQL = "ALTER TABLE Foreigntable ADD CONSTRAINT fk_Foreigntable_references_PrimaryTable FOREIGN KEY (Id) REFERENCES PrimaryTable (RefSejour) ON DELETE CASCADE, ON UPDATE CASCADE"
CurrentDb().Execute strSQL

sauf que, apparemment, le DAO ne supporte pas la syntaxe ON DELETE CASCADE…, dont je ne sais pas exactement si elle est ANSI92, mais elle me semble l’être. Bien, essayé de passer en ADO.

J’ai cru comprendre qu’en Access 2000, CurrentProject.Connection référence la connexion ADO liée au projet actuel, ce qui est assez pratique. Mais l’essai avec un

CurrentProject.Connection.Execute strSQL

ne donne pas beaucoup plus de succès. Quelqu’un dans un newsgroup suggère d’ajouter une option pour utiliser du SQL étendu avec ADO (??), mais je ne me suis pas amusé à tester tout ça. Passé à la syntaxe DAO suivante :

    Dim rel As DAO.Relation

    Set rel = CurrentDb().CreateRelation("fk_Foreigntable_references_PrimaryTable", _
         "PrimaryTable", "ForeignTable", dbRelationUpdateCascade + dbRelationDeleteCascade)

    rel.Fields.Append rel.CreateField("Id_OnPrimaryTable")
    rel.Fields!RefSejour.ForeignName = "Id_OnForeignTable"
    CurrentDb().Relations.Append rel