(InvokeRequired + Invoke) < SynchronizationContext
Tous les développeurs savent qu’il faut être prudent lorsqu’on est en Corée du Nord ou lorsqu’on s’amuse avec les Winforms dans un contexte multi-threads. On ne doit pas, plus précisément, accéder à un contrôle graphique à partir d’un thread différent de celui dans lequel il a été créé. Ceux qui ont essayé (tous, je crois) ont découvert qu’une InvalidOperationException était levée :
(Lire la suite…)
CIL Programming, presque under the hood of .NET
J’ai terminé il y a quelques semaines la lecture d’un des seuls livres publiés au sujet du langage intermédiaire de la plateforme .NET. J’ai nommé CIL Programming, Under the hood of .NET de Jason Bock.
Je me suis appliqué, un parfait cover to cover, mais je le regrette un peu. Il ne doit pas être évident d’écrire un livre sur un sujet aussi chiant particulier, donc je ne peux raisonnablement pas être aussi acerbe que déçu. Car j’ai été assez déçu.
(Lire la suite…)
ALT.NET en France : Rencontre Parisienne #3
Je vous en avais parlé : la troisième rencontre ALT.NET Parisienne elle a eu lieu mercredi dernier, en (très) petit comité. Nous étions seulement trois : Robert Pickering, Mathias Kluba, et moi-même. La faute à l’été et aux congés ; il n’y avait pas de foot ce soir là.
(Lire la suite…)
Lettre ouverte à Microsoft à propos d’Entity Framework
David Laribee a laissé un message sur le groupe de discussion ALT.NET, indiquant que plusieurs personnes avaient travaillé à la rédaction d’une lettre ouverte à Microsoft, au sujet de sa solution ORM en devenir : Entity Framework.
Cette lettre, qui prend forme d’une pétition, a pour but d’attirer l’attention sur les principales faiblesses du framework. Il ne s’agit pas d’une condamnation, mais plutôt d’une synthèse argumentée qui tente de regrouper les critiques ayant mobilisé le plus de voix au cours des derniers mois.
(Lire la suite…)
Etes-vous ALT.NET ?
Si vous avez l’habitude de lire les blogs nord-américains de la communauté .NET, vous avez très certainement déjà rencontré un post traitant du sujet, ou au moins y faisant allusion. Il est même probable que vous sachiez parfaitement en quoi consiste le mouvement ALT.NET. Si vous n’avez pas l’habitude de trainer sur ces blogs et que vous avez tout de même entendu parler de la communauté ALT.NET, c’est bon signe.
Malheureusement, cela fait de vous une exception. En France, ALT.NET reste globalement très méconnu.
(Lire la suite…)
Une astuce volée à Jon Skeet
Si certains d’entre vous trouvent pénible le fait de devoir s’assurer qu’un évènement est non null avant de le lancer, voici une idée :
Profitez de la contravariance sur les delegates et initialisez votre event de la sorte :
Quand les closures nous facilitent la vie
Aujourd’hui j’ai une devinette pour vous. Elle est très simple, mais je suis obligé de l’introduire par une mise en situation un peu pénible. Soyez courageux, il n’y a rien à gagner.
Imaginez une application capable de recevoir des messages du réseau. Lorsqu’un message de type A est reçu, l’application doit afficher à l’utilisateur une fenêtre assez complexe construite à partir des données du message. L’utilisateur peut ensuite interagir avec la fenêtre en question, avant de la fermer.
Les contraintes :
- Les fenêtres doivent être affichées très rapidement, l’utilisateur devant être averti le plus tôt possible de l’arrivée d’un message de type A.
- Les fenêtres ne sont pas modales, il peut donc y en avoir plusieurs affichées simultanément.
- La construction des fenêtres (création des différents contrôles graphiques) est relativement longue.
- Les opérations de binding entre les données du message et les contrôles existants d’une fenêtre sont rapides.
Au delà de l’Intégration Continue : le Monitoring Continu
Je viens de terminer l’écoute d’un des derniers podcasts de Scott Hanselman, dans lequel il échange avec Owen Rogers. La discussion tourne autour de l’intégration continue. Owen est assez au courant : il est l’un des créateurs de CruiseControl.NET, le serveur d’intégration continue sans doute le plus utilisé dans le monde .NET.
Ce que j’ai trouvé intéressant, voire original dans cette discussion, c’est le développement qui a eu lieu autour de l’idée du monitoring.
En introduction, Scott joue l’ingénu et demande à Owen pourquoi on aurait besoin d’un serveur d’intégration continue alors qu’un pauvre script planifié pourrait très bien faire l’affaire. Owen lui fait la liste des principales caractéristiques et avantages d’une solution comme CruiseControl, et insiste tout particulièrement sur la capacité d’un tel système à produire et agréger différents rapports concernant les builds et les projets. Il explique également qu’au delà des fonctionnalités de journalisation et de statistiques, un outil d’intégration continue offre des mécanismes de notification pouvant informer les équipes en temps réel, et leur fournir des détails sur l’état des différentes builds.

En effet, la notion de feedback est indissociable de l’intégration continue.
Constructeurs statiques en C#
On m’a posé une question il y a quelques temps :
“Et en C#, il y a l’équivalent des blocs static de Java ?”
La réponse est oui. En C# on peut définir des constructeurs statiques qui seront exécutés lors du premier accès à un membre statique de la classe.
- Une instance du type est crée.
- Un membre statique du type est accédé.
La Veille Technologique et le Génie Logiciel
Tous les informaticiens ont conscience de faire partie d’un monde en permanente évolution. C’est tellement évident que même les plus obtus et les moins à jour arrivent à le reconnaitre. Tous ne prennent pas la peine de trouver des excuses ; l’essentiel étant surtout de conserver sa petite bulle de confort. Je me demande si tout ça est encore possible aujourd’hui, ou pire, inévitable.
Au XVIème, Léonard de Vinci imaginait des machines volantes. En 1903, les frères Wright faisaient décoller (et voler un peu) le premier avion. Quelques 65 années plus tard, l’Homme marchait sur la Lune. Ce matin, j’apprends en lisant un article sur Futura-Sciences qu’on aurait retrouvé les protons manquants de l’univers. Formidable.
Et bien pour moi, l’ingénierie logicielle, c’est un peu pareil.
La vitesse d’évolution des techniques et la multiplication des outils dans ce domaine atteignent des proportions vertigineuses et continuent de croitre de façon exponentielle. Cela pourrait même poser un problème à tous ceux qui veulent garder la tête hors de l’eau. On en arrive à se demander si dans quelques années, la veille technologie sera encore possible à l’échelle de l’individu sans que d’importants compromis soient faits.
(Lire la suite…)
Articles