dimanche 31 août 2008

Proverbe chinois

Celui qui sait qu'il sait, écoute-le.
Celui qui sait qu'il ne sait pas, éduque le.
Celui qui ne sait pas qu'il sait, éveille le.
Celui qui ne sait pas qu'il ne sait pas, fuit le.

vendredi 29 août 2008

Environnements de développement pour Mono

MonoDevelop:
MonoDevelop est un IDE (Integrated Development Editor - Environnement de développement) pour GNOME. MonoDevelop est, à l'origine, conçut pour C# et les autres langages de la plateforme .NET tout en restant ouvert aux autres langages de développement. MonoDevelop inspire à être plus qu'une simple IDE: il se veut être une plateforme évolutive sur laquelle il est possible de bâtir n'importe quel outil de développement.
MonoDevelop est, à l'origine, un portage sous GTK# de l'IDE SharpDevelop et a fortement évolué depuis.
MonoDevelop est l'environnement de développement mis en avant par le projet mono (et donc supporté par Novel).
A noter que code source de MonoDevelop a récemment été entièrement révisé afin d'offrir une interface d'intégration de greffons la plus flexible possible.
Le but de cette opération est d'offrir aux développeurs l'opportunité d'étendre les capacités et fonctionnalités de l'éditeur de manière indépendante.
Quelques informations en vrac:
  • Fonctionne sous Linux (Suse, et tout autre distribution supportant Mono), Mac OsX et Windows (MonoDevelopWin32)
  • Nécessite Mono (Implémentation libre du FrameWork .Net)
  • Pas de débuggeur intégré mais disponible via un greffons (plug-in). Note: Suite a une modification important du coeur de MonoDevelop, Le débuggeur plus en état de fonctionnement. Cependant, cela devrait être disponible sous peu.
  • Compile C/C++, C#, Gtk#, Boo, Asp.Net
  • Pas de Web Designer (tout comme CSharpDevelop)
  • Dispose d'un gestionnaire de greffon accompagné d'une base de donnée en ligne. Le gestionnaire est accessible via le menu outil de MonoDevelop (ou l'utilitaire "mdtool gsetup")

Quelques exemples démontrant les capacités de MonoDevelop:

SharpDevelop:

SharpDevelop est un environnement de développement .Net destiné à offrir une alternative libre et gratuit en lieu et place de de Microsoft Visual Studio.
SharpDevelop est un projet actif aux fonctionnalités abouties. SharpDevelop semble offrir une réelle alternative à Visual Studio pour les développements d'applications courantes.
Il faudra cependant noter plusieurs points importants:
  1. Il n'existe pas d'éditeur Web pour épauler les développements ASP.NET.
  2. Le support, depuis l'éditeur, de certaines technologies avancées (wizard, editeur spécifique) ne sont pas encore disponibles ou fonctionnels.
Un regard sur cette intéressante comparaison entre CSharpBuilder and MS Visual Studio .Net fournira une bonne vue d'ensemble et quelques précisions.
Finalement SharpDevelop est intimement lié au Framework .Net de Microsoft et ne fonctionne par conséquent que sous Windows.
Quelques informations en vrac:
  • L'éditeur semble plus aboutit que MonoDevelop.
  • Nécessite le Framework .Net 3.5
  • Capable de compiler du c# Microsoft, c# Mono ou Boo.
  • Fonctionne uniquement sous Windows.
  • Debugger intégré.
  • Pas de Web designer.
X-develop:  
Mise-à-jour du 08 oct. 2008


X-Develop de Omnicore est un outil de développment commercial compatible Unix.
Ce dernier supporte .Net  et par conséquent les développements Mono.

Slick Edit:  
Mise-à-jour du 08 oct. 2008


Slick Edit est un outil de développment commercial lui aussi.
Ce dernier est disponible pour Windows, Linux, MacOS X et Eclipse.
J'ai jeté un oeil sur la version Eclipse... et les captures d'écran sont allèchantes.

DevStudio 2:  
Mise-à-jour du 20 oct 2008

DevStudio 2 est un des produits commerciaux de RemObjects (incluant Visual Studio 2008).
DevStudio semble être un outil de développement performant pour .Net à destination des plateformes Mono et Windows.
A voir absolument!
Outre un environnement de développement, RemObject propose toute une série d'outil pour les développements en .Net, Delphi et Mono (ex: Oxygene de RemObjects ). RemObject fournissent également un compilateur pascal pour .Net (compatible Mono), Un remote Object Framework (compatible Mono), etc.

jeudi 28 août 2008

Second life et Mono

Dans l'environnement virtuel Second Life, il est possible d'exécuter des scripts "Linden Script".
Ces scripts ont pour but de faire effectuer, par les résidents (avatars), des actions et interactions sur l'univers second live (y compris d'autres résidents).
L'exécution des scripts étaient pris en charge par le moteur d'exécution propriétaire nommé LSL.
Ce dernier moteur aurait été ré-écrit (avec quelques adaptations semble t'il) pour fonctionner avec la machine virtuelle .Net de mono.
Il semblerait que la nouvelle implémentation .Net exécute les scripts Linden jusqu'a 220 fois plus vite.

Sur le wiki de second live il existe un article permettant de comparer les performances d'exécution des scripts exécuté par le moteur natif et le moteur ré-écrit pour mono.
L'exemple le plus frappant reste quand même la génération du labyrinthe.

La plateforme mono devient décidément bien populaire.

source: Cet article sur le blog de Miguel de Icaza.
Voir également l'article "SecondLife rolls out Mono-powered servers".
Quelques information complémentaires sur Wikipedia dont la lecture est conseillée.

mardi 26 août 2008

On mentira

Pas besoin de commentaire à qui sait comprendre ;-)

28/02/2009: Mise à jour
"On mentira" est un titre d'un album du chanteur Roch Voisine.
Ce titre parle principalement de l'amour et des 1095 jours... durée fatale d'un amour.
Ces 1095 jours correspondent à trois ans, le temps nécessaire pour que les hormones actives durant les 3 premières années d'une rencontre finissent de faire leurs effets.
Après cette période, si l'on reste ensemble, c'est vraiment une histoire de sentiment.
Dans le cas d'une histoire purement physique, l'amour et l'attirance s'en ira avec les hormones et dans ce cas, la seule issue est la fin de l'histoire du couple.... "la durée fatale d'un amour" comme le dit si bien Roch Voisine.

J'ai la chance de me marier pile 3 ans après notre rencontre (précisement le jour de notre rencontre).
Toujours suivant cette même chanson, le 1096 jours... et nous ne chercherons pas les tords... ce n'est pas dans les habitudes de notre nouvelle vie (nouvelle vie... nouvelles habitudes)

Le rasoir d'Ockham

Lors de la récente lecture du "Rasoir d'Ockham" écrit par Henri Loevenbruck, j'ai redécouvert une fois de plus le principe de parcimonie énoncé comme suit:

" Les entités ne doivent pas être multipliées par delà ce qui est nécessaire ".

Appliqué à l'enquête criminelle du livre, ce principe voulait "ne pas multiplier les suppositions pour expliquer un méfait".
Ainsi, l'on se concentrera sur l'explication la plus simple et la plus évidente. Si cette dernière n'est pas la bonne, elle ne résistera pas à la démonstration de son bien fondé. Il sera alors encore temps d'envisager une autre hypothèse.
Comme mentionné par l'auteur, il y a divers avantages à l'application de cette méthode:
  1. On ne s'encombre pas l'esprit avec de multiples suppositions qu'il est difficile de démontrer.
  2. Le temps nécessaire au traitement de l'hypothèse la plus simple est réduite au minimum (plus facile de mener une seule guerre de front).
  3. L'esprit n'est pas encombré par des hypothèses inutiles. Par conséquent la complexité du raisonnement s'en trouve allégé. Avec la simplicité, le risque d'erreur diminue également.
  4. Dans plus de 80% des cas, l'explication la plus simple est celle qui convient.
Ce principe de raisonnement datant du XIV ieme siècle refait régulièrement surface dans mes lectures tout comme dans mon travail.
Mais quel est la rapport entre le principe de parcimonie/d'économie d'Ockham et les développements informatiques ?

Et bien, j'ai le sentiment qu'en ce qui concerne les développements, le principe du Rasoir d'Ockham doit être appliqué à rebours.
Non pas qu'il faille compliquer inutilement le logiciel (workflow, coding, behavior) mais bien au contraire, garder le tout d'une telle simplicité et limpidité que le principe du Rasoir d'Ockham soit également applicable au logiciel.
S'il est possible de prévoir et comprendre le comportement d'un logiciel (ou composant logiciel), il est alors possible de prévoir son influence dans un système plus complexe.
Dans le cas contraire, toutes zones d'ombres n'autorisant pas l'évidente compréhension du logiciel (ou composant logiciel), met en péril la stabilité du système dans son ensemble.
Ainsi, on veillera à ne pas compliquer, plus que nécessaire, les fonctionnalités et le développement d'un logiciel.

Dans le même ordre d'idée, il est plus simple pour l'utilisateur de concevoir le fonctionnement d'un logiciel comme
un séquenceur exécutant un enchainement des tâches simples
que d'appréhender
les multiples combinaisons/possibilités de fonctionnements d'un module paramétrable à outrance.

Une succession de règles et processus simples et invariables est plus faciles à comprendre (1) qu'une combinaison/multiplication de paramètres d'un module qui deviennent, avec le temps, totalement obscurs (et dont l'expression est quelquefois hasardeuse) (2).

Et ce qui est valable pour un utilisateur l'est forcement pour le concepteur, les analystes, les développeurs, les consultants, etc.
C'est ainsi, selon moi, que l'on obtient des logiciels faciles à maintenir et évolutifs.

Il est d'ailleurs plus facile de réutiliser un composant logiciel dont il est facile de comprendre le comportement... et donc de le prévoir (ce qui n'est pas à démontrer... j'espère).
Le comportement n'est prévisible que si le composant logiciel a été conçu comme tel... pour être évident à comprendre... parce qu'il autorise l'application du principe du rasoir d'Ockham... par lequel le concepteur à voulu qu'une fonctionnalité puisse s'expliquer par un principe d'évidence.

Les systèmes Linux sont basés sur cette philosophie de simplicité, de parcimonie, d'économie d'effort (les composants ne font pas "grand" choses mais ils le font bien).
C'est ainsi que le monde du développement libre à accouché de son propre système d'exploitation... en réutilisant des composants simples mais prévisibles pour en construire d'autres plus complexes... mais toujours aussi simple a comprendre.
L'émergence des principes KISS (Keep It Simple Stupid) dans le monde du développement n'est d'ailleurs qu'une expression plus "contemporaine" du principe de parcimonie.

Encore un doute sur les principes de parcimonie lors de la conception (logicielle ou autre)?
Et bien dans ce cas, n'utilisez plus de voiture ou de téléphone mobile... car ils en sont le résultat...
Dans le cas d'une voiture, par exemple, chaque pièce est simple, l'assemblage final est complexe... cependant l'utilisation en reste simple et le fonctionnement prévisible (surtout sur les modèles plus anciens).
Avec un peu d'acuité il est même possible, au néophyte, de deviner l'origine d'une panne.
Même les inconvénients d'électroniques de bord peuvent s'expliquer par le simple fait que cette partie du système recèle une telle complexité qu'il n'est plus possible d'en comprendre (facilement) le fonctionnement et d'en prévoir le comportement.
Cette "zone d'ombre" dans les paramètres du véhicule échappant au principe de parcimonie (de simplicité) et met en péril le système entier... et la voiture ne démarre pas.


1) C'est bizarre comme cette dernière phrase focalise mon esprit vers le développement basé sur des moteurs de gestion de Workflow .
2) La formulation "L'expression des paramètres" me fait à l'instant penser à la génétique.
Est-ce qu'un logiciel fortement paramétrable (et par conséquent presqu'imprévisible s'il est suffisamment gros) peut être, en quelque sorte, considéré comme un système de "génétique" :-) ?
Bon, ce n'est pas vraiment évolutif... sauf si l'on considère les effets de bords (induit pas les paramètres générant des données erronées) pouvant eux-même induire d'autres effets de bords... c'est presque de l'intelligence artificielle ça, non?
Note - 27/08/2008: Comme me l'a le fait remarquer Jyce, ma parabole sur l'intelligence artificielle est tendancieuse et pourrait induire le néophyte dans l'erreur. Je partage son avis.
Donc, en gros, un système d'intelligence artificielle n'est pas une système hautement paramétrable mais plutôt un système évolutif capable d'adapter ses propres paramètres tout seul (par l'apprentissage) pour atteindre seul le but qui lui a été fixé.

Lien utiles:
Rasoir D'Ockham sur Wikipedia

jeudi 14 août 2008

L'infrarouge comme énergie renouvelable

Les panneaux solaires sont maintenant bien connus et assez répandus.
Même le grand public s'y est mis en espérant faire quelques pourcent d'économie d'énergie.
C'est malheureusement un mauvais calcul... parce que notre principale consommation d'énergie n'est pas électrique mais fossile (le chauffage!).
Grappiller quelques pourcents d'économie sur les quelques pourcent de consommation électrique d'une facture énergétique, ce n'est pas ce que j'appelle faire des économies.
Surtout que l'investissement nécessaire (l'achat et au placement des panneaux solaires) est tout simplement "mirobolant".

Mis à part cette polémique, les panneaux solaires photovoltaïques ont un faible rendement (entre 20 et 25 %)... pour ne pas dire désastreux.
En gros cela signifie que seulement une vingtaine de pourcent de l'énergie captée (par l'ensoleillement) peut être transformé en énergie électrique.

Cependant, avec l'essor des nouvelles nano technologies, les scientifiques élaborent de nouveaux capteurs.
Ainsi, un capteur infrarouge aurait été mis au point. Dans sa version couteuse, ce capteur atteint un rendement de 92%.
Dans sa version bon marché (gravure sur "sac plastique") il atteint un rendement de 40 à 50 %. C'est encore nettement supérieur aux panneaux solaires.
Ce qu'il y a de bien avec l'infrarouge, c'est que la terre en réémet durant la nuit... par conséquent, il y aura même encore un peu d'énergie à récupérer pendant notre sommeil.
A priori, une technologie peu couteuse et facile à produire se profile à l'horizon.

Le hic dans cette bonne nouvelle c'est que l'électronique nécessaire à l'obtention d'une énergie électrique "consommable" n'existe pas encore.
Les scientifiques ont donc encore un peu de boulot.

Il y a quand même une question que je me pose:
Y a-t-il assez d'énergie infrarouge (en journée) pour finalement produire plus d'énergie qu'avec des panneaux photovoltaïques à mauvais rendement?

Source: voir l'article "L’énergie de demain sera-t-elle tirée de l'infrarouge ?" sur Futura-Science (parution: 12/08/2008)

dimanche 10 août 2008

Format CSV

Si vous avez un jour fait joujou avec Excel, vous avez probablement déjà fait la connaissance du format CSV (Comma-Separated Values).
Si ce n'est pas le cas, allez donc jeter un oeil sur Wikipedia (par ici).
Si vous programmez, vous avez probablement déjà produit des fichiers répondant à ce format.
Mais savez-vous seulement que ce format est décrit dans la RFC 4180 ?

vendredi 8 août 2008

OpenOffice et Mono

La populaire suite OpenOffice est bâtie sur une technologie composant appelée UNO (largement inspirée de COM mais amplement étendue). Presque toutes les fonctionnalités d’OpenOffice sont exposées via quelques interfaces UNO.
Bien que l’interface native soit dévelopée en C++, ces dernières années, beaucoup de passerelles (bridges) on étés crées pour exposer UNO à différents langages, runtime et Object brokers.

Sun a implémenté une passerelle .Net pour UNO quelques années auparavant. Cette passerelle permettant au développeur .Net d’automatiser (scripter), étendre et réutiliser OpenOffice comme une librairie pour C# et autres langages de programmation .Net.

Par le passé, Michael Meeks et la communauté OpenOffice ont portés le code de cette passerelle pour la faire fonctionner avec Mono. Ce qui permet au développeur de créer des solutions basées sur OpenOffice en utilisant l’un des langages de programmation de Mono (C#, Boo, IronPython, IronRuby, F#, VB, Nemerle et autres). Mais même si le moteur existait, il n’était pas installé correctement sur le système… et avoir une solution C#-OpenOffice demandait beaucoup de savoir faire Unix, le genre de savoir faire qui n’est pas facile d’obtenir.

Cette situation à cependant été adressée durant le dernier cycle de développement. Par conséquent une installation Novel OpenOffice dispose maintenant tout les éléments nécessaires. Michael Hutchinson, l’un des meilleurs développeurs Mono, a assemblé les différentes pièces du puzzle afin de simplifier le processus de développement d'applications basées sur OpenOffice.

Il a créé les modèles de développement nécessaires (solution templates) pour développer de telles solutions. Michael a empaqueté ces templates dans un greffon Mono (Mono.Addin) pour les développeurs utilisant MonoDevelop.

Pour développer des solutions OpenOffice, vous devez installer le greffon OpenOffice pour MonoDevelop. Pour ce faire, suivez les instructions disponibles sur le blog de Miguel de Icaza.

Source: Voir l'article "OpenOffice-based applications with Mono and MonoDevelop" sur le blog de Miguel de Icaza

jeudi 7 août 2008

Les enfants et la consommation

Voici un extrait d'un thriller de Maxime Chattam dont je déplore malheureusement l'exactitude. Nos enfants sont trop sollicités... et trop facilement.

<< A la fin des années 70, le marketing ciblant les enfants s'est développé pour devenir carrément ultra-agressif dans les années 80, avec des shows télé entrecoupés de publicités destinées aux enfants, des plubicités de plus en plus subtiles et manipulatrices, accompagnées de campagnes de communication, produits dérivés en jouets, alliances commerciales avec par exemple le secteur agro-alimentaire, martelant toujours le même message: Consommez! Achetez! >>
Maxime Chattam
La Théorie Gaia, pg 251
isbn 978-2-226-18643-0


Je m'en étais déjà rendu compte du temps du "Club Dorothé"... j'avais 15 ans à l'époque. Par contre, le vrai matraquage, c'est mes enfants qui le subissent... et c'est maintenant.
Je m'estime encore assez pondéré vis-à-vis de la société de consommation et en fais profiter mes enfants (en autre en limitant le temps passé derrière le téléviseur)... cependant, tous les parents ne sont pas pareils.

Prise de controle à distance

Dans un monde ou l'ordinateur est omniprésent, il arrive parfois qu'une de vos connaissances ait besoin de votre aide.

Dans ce cas là, rien de plus simple que de se rendre sur place si l'on en a la possibilité.
Dans le cas contraire, il faut prendre le contrôle de son ordinateur à distance... c'est là que les choses se corsent.
En effet, à l'aire du tout numérique, beaucoup d'utilisateurs disposent de modem routeur de pare-feux (sur le routeur ou sur le système d'exploitation). C’est devenu un standard… surtout pour ceux disposant de la télévision numérique.

Si VNC (Visual Network Computing) rend facilement de grands services au sein d'une société, cet outil est totalement inadapté lorsqu'il faut aider Pierre, Paul ou Jacques. Démarrer une session de prise de contrôle à distance pour les particuliers devient un véritable calvaire.

TeamViewer

Voici donc TeamViewer, un logiciel simplissime et gratuits (sous conditions) qui peut franchement vous faciliter la vie.

Pour la personne ayant besoin d'aide, il faut:
1) Télécharger et démarrer le module client ("Start Customer Module" sur le site web) depuis le site TeamViewer.
2) Noter l'ID et le mot de passe qu'il faut transmettre a l'aidant.
De son côté, l'aidant doit:
1 ) Télécharger la version complète depuis le site TeamViewer et l'exécuter (option "run" -- l'installation n'est pas requise) 2) Encoder l'ID fournit par la personne ayant besoin d'aide (en sélectionnant l'option "remote support")

A noter qu'il est possible de transférer des fichiers d'inverser l'ordre aidant/aider.

Pour les personnes vraiment maladroites:
L'aidant peut inviter la personne à aider par mail (Depuis le logiciel TeamViewer via le menu Connection | Invite Partner).

Il suffit alors d'indiquer l'adresse e-mail de la personne à aider.
Cette dernière recevra un lien pour télécharger et démarrer le module client.
Elle devra cependant toujours vous fournir l'ID et le mot de passe.

LogMeIn

Une autre option est d'utiliser un logiciel comme LogMeIn.
Voir aussi le mini dossier sur le site de Clubic (ainsi que sa vidéo de démonstration).
Vous pouvez télécharger LogMeIn depuis le site de Clubic ().

mercredi 6 août 2008

Mono, qu'est-ce donc?

Mono est une plateforme logicielle conçue pour permettre aux développeurs de facilement créer des applications indépendantes de la plateforme (du système d’exploitation).
C’est une implémentation open source du Framework .Net de Microsoft (basé sur le standard ECMA pour C# et le Common Language Runtime.

Plusieurs éléments composent Mono:

  • Un compilateur C# - Le compilateur C# implémente toutes les caractéristiques pour compiler du code en C# 1.0 et 2.0 (ECMA), mais également une grande partie du code contenant des spécificités propres à C# 3.0.
  • Un environnement d’exécution Mono – L’environnement d’exécution implémente les spécifications ECMA du Common Langage Infrastructure (CLI). L’environnement d’exécution pourvoit un compilateur Just-in-Time (JIT), un compilateur an Ahead-of-Time (AOT), un chargeur de librairie (library loader), un ramasse miette (garbage collector), un système de threading et des fonctionnalités d’interopérabilités.
  • Une libraire de classes de base – La plateforme Mono est pourvue d’un ensemble étendu de classes qui fournit une fondation solide pour construire des applications. Ces classes sont compatibles avec le Framework .Net de Microsoft.
  • Une librairie de classes Mono - Mono procure également beaucoup de classes qui vont plus loin (et plus encore) que la librairie de classe de base fournie par Microsoft. Elle fournit des fonctionnalités qui sont utiles, surtout pour construire des applications Linux. Par exemple, des classes pour Gtk+, les fichiers Zip, LDAP, OpenGL, Cairo, POSIX, etc.

Source :

Augmentation des tarifs Belgacom

A en croire l'article du site d'information PCInpact, les tarifs de notre opérateur national augmenterons à partir d'Octobre 2008.
Heureusement pour moi, cela ne concerne pas les abonnements ADSL.

mardi 5 août 2008

Let's start blogging

Depuis toujours, j'ai été très vigilent sur le net afin de ne pas laisser de trace personnelle.
Et puis, récemment, j'ai découvert les services de Google. En quelques semaines, Picassa Web, Google Doc, GMail m'ont rendus de très grands services dont je ne me passerais plus aujourd’hui.

Je sors donc de mon anonymat puisque c’est le prix à payer… mais je ne suis pas une personne publique… je n’ai donc rien à craindre.

D'autres services web sont venus se greffer à mes récentes découvertes.

Ainsi, Linked-in m’a permis de retrouver d'anciens collègues (et même des personnes que je ne pensais ne plus jamais pouvoir recontacter).

Le génial Delicious maintien une partie de mes favoris (j’en ai de trop, sur plusieurs ordinateurs et browser… il me faudra du temps pour les migrer).

Et le temps est venu pour moi d’explorer un nouveau service… les blogs.

Je vais rester fidèle à mes récentes découvertes et m’orienter vers Google (et son acquisition blogspot)

Je suis un développeur dans l’âme, en Delphi depuis ses débuts.

Le terrain de jeux était fertile mais je voudrais élargir mes horizons.

Cela tombe bien, mon travail me demande justement d’envisager une nouvelle plateforme de développement.

Depuis un moment, j’explore des domaines comme .Net, Mono-project, Googles Services, AppEngine, Ubuntu. Tout cela est bien intéressant… trop même.

Ce blog se situera donc entre projet privé et exploration professionnelle. Il sera axé sur le développement, les technologies et services du net (Cloud Computing), les systèmes d’exploitation et les environnements de développement alternatifs.

A tout bientôt