Blog Mono de Christophe Narbonne

Blog d'un passioné pour les passionés. Knowledge is Power

RecentComments

Comment RSS

Débat sur l'indentation : espace ou tabulation ?

L'indentation est-elle une question de préférence ?
Dès lors que l'on code en groupe je ne pense pas. C'est avant tout un moyen de rendre notre pensée plus lisible et structurée pour les autres développeurs (et soi même).

Usuellement, le développement normalisé s'indente à l'espace. Voici quelques normes :

  • 2 espaces pour le style GNU (mais indentation propre pour les accolades).
  • 2 espaces pour le style pico.
  • 4 espaces dans les recommandations K&R, Java ou VisualStudio.
  • 4 espaces selon les recommandations Python.
Bref les normes et les standards en règles de programmation parlent en espace ...

Alors, pourquoi cet article ?
Car je ne vois pas d'avantage à l'espace par rapport à la tabulation. j'ai un nombre conséquent d'argument pour la tabulation et c'est avec que j'indente mes codes.
  • Taille des sources réduite.
  • La configuration de l'IDE fixe la taille de l'indentation au gout du développeur sans modifier la source.
  • Accélère les déplacements dans la source.
  • Evite d'user la touche espace qu'on utilise déjà trop.
  • Facilite le parsage du code si nécessaire (dans le cas ou ce serait significatif ex: Python).
  • Plus rapide en cas de retouche à la va-vite sans IDE.
Pourquoi donc utiliser l'espace ? Pourquoi les normes choisissent l'espace et non la tabulation ?
Avez-vous des arguments pour l'espace au-delà du fait que tous les standards le recommandent ?

Configuration par défaut dans Visual Studio.

 

Posted: oct. 28 2008, 11:23 by christophen | Commentaires (4) RSS comment feed |
  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Général | Débat

Deux projets intéressants: Quake-light et Brahma

Deux projets ce matin me sont tombés sous les yeux et m'ont agréablement étonnés.

Le premier en en béta privée, c'est le portage de Quake 1 en silverlight (sous le nom de Quake-light). Aux vues de la vidéo/screencast même les réfractaires peuvent avoir une idée plus claire de ce qu'aporte le silverlight.
Lien vers la vidéo: http://channel9.msdn.com/shows/Continuum/QuakeLightPreview/

Un second projet me parait plus prometteur qu'une simple démo, c'est à la base un projet pour .NET 3.5 maintenant compatible Mono, c'est ou ce sera probablement la gamme au-dessus de Plinq (parallel Linq) niveau performance. En utilisant opengl et la carte graphique (GPGPU) Brahma calcule et effectue vos requêtes. Les unités de calculs des cartes graphiques étant souvant divisés, l'auteur du projet compte en plus paralléliser les requêtes.
Site officiel: http://brahma.ananthonline.net/

 
Posted: oct. 24 2008, 09:50 by christophen | Commentaires (0) RSS comment feed |
  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Général | Présentation

Mise à jour plus tôt que prévue?

Alors que Mono 2.2 est prévu dans un mois et quatorze jours, une mise à jour de correction parait déjà sous le numéro 2.0.1.
Comme attendu, aucune réelle nouveauté, la nouvelle version de GTK# embarquée apporte juste un petit nettoyage de l'api, une intégration de l'installeur windows et quelques bugs corrigés.

 

Téléchargements
Changelog

Posted: oct. 24 2008, 08:41 by christophen | Commentaires (0) RSS comment feed |
  • Currently 4,666667/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Général | Mono | News

Mono 2.0, enfin sur MacOS!

Avis aux amateurs du système à la pomme, Mono 2.0 vous est désormais disponible compilé. De plus grâce au projet gtk-macosx les applications GTK# tournent maintenant sous mac sans avoir à installer le serveur Xorg et s'avère beaucoup mieux intégré. Les menus qui étaient sous la barre des titre se trouvera enfin dans la barre de menus classique de MacOS. Cette évolution faite, faire des paquets MacOSX pour des applications intégrées en GTK# telles que Tomboy ou banshee deviennent nettement plus accessible et d'ailleurs les membres des projets ne s'en sont pas gênés pour le faire !

Tomboy pour MacOS :

Tomboy est un logiciel de prise de note intégré par défaut dans gnome. Il sauve automatiquement les notes qu'il range dans des bloc-notes. Il permet de faire facilement des notes, de les lier, de les gérer et de les mettre en pages. Ce portage est sorti en même temps que la version linux de tomboy, nous avons en bonus accès à la liste des notes directement depuis le dock.Il faut évidement installer mono 2.0 avant de pouvoir faire fonctionner Tomboy.

Dans cette démarche de portage, Tomboy a désormais aussi une version Windows.

Tomboy 0.13 pour savoir comment installer sous Windows :  http://automorphic.blogspot.com/2008/10/tomboy-preview-for-windows-and-mac.html
Tomboy
0.13 pour installer sous Mac OS X : http://armstrong-clan.net/dump/Tomboy-0.13.0.dmg
Pour suggérer des modifications ou reporter des bugs de la version MacOS de Tomboy : http://bugzilla.gnome.org/enter_bug.cgi?product=Tomboy&component=General&version=0.13.x&op_sys=Macintosh


Banshee sur Mac OS X:


Banshee est un lecteur de musique dont le projet est très actif. Il lit les vidéos, trouve les couvertures d'albums, vous trouve la musique sur Last.fm, ouvre les podcast, télécharge les musiques en torrent... bref tout ce que l'on peut attendre d'un bon lecteur de musique dans une interface simple et esthétique. La version MacOSX devrait arriver vendredi. Une version windows est aussi prévue mais pas forcément avec un installeur.


Mono 1.9 était livré avec Mono, Monodevelop et le SDK. Le nouveau Package arrive désormais sans Monodevelop. Monodevelop 2.0 n'étant pas encore sur le point de sortir et étant quasiment nécessaire pour utiliser facilement les nouveautés de Mono 2 (Debugger, Gendarme ...), une bêta de l'ide Mono devrai être packagé pour MacOS après la PDC. Mono 1.9 était une version de développement, au passage vers Mono 2.0 les applications en GTK 2.15 (deuxième nombre impair signifiant version de développement) devrons repasser en GTK 2.14 pour fonctionner avec la librairie intégrée dans le package MacOS.

Si vous pensez utiliser un jour Mono sous MacOS n'hésitez pas à orienter le projet en donnant votre point de vue par le biais de ce sondage officiel : http://spreadsheets.google.com/viewform?key=pvPgcz_0Kij3soDnggioyfw&hl=en

Mono 2.0 pour Mac OS X : http://ftp.novell.com/pub/mono/archive/2.0/macos-10-universal/4/MonoFramework-2.0_4.macos10.novell.universal.dmg

Edit: Grâce à Sinan qui utilise MacOS (dans les commantaires), je vous propose le lien pour que vos applications s'ouvrent sans scripts sh ni console au double-click classique: Comment packager une application .NET/Mono pour MacOS?

Source : Blog de Miguel de Icaza

 

Posted: oct. 20 2008, 19:41 by christophen | Commentaires (4) RSS comment feed |
  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Général | Mono | News

.NET4.0, C#4.0, ParallelFX ... Qu'est ce que la programmation concurentielle?

A l'approche de grands évènements de communication chez Microsoft (dont la Professional Developer Conference), on commence à avoir quelques suspicions sur ce que sera le C#4.0 et .Net 4.0. Le framework ParallelFx qui est à la base un projet Microsoft destiné à multi-threader facilement les applications et des requêtes (PLinq). Ce framework commence à atteindre un certain stade de maturité, il va d'ailleurs bientôt fêter son anniversaire. Peut être ferat-il partie intégrante de .NET 4 ? Bien des éléments nous portent à le croire.


A quoi sert ParallelFX ?
Tirer parti des architectures des processeurs modernes en divisant nos applications en processus concurrents. Mais qu'est-ce que peut bien signifier des processus concurrents ? Je concède que cette notion n'est pas encore familière à tout le monde, si le sujet vous intéresse je vous propose un bref descriptif puis quelques ressources francophones à ce sujet en fin d'article. La division en processus concurrents n'est pas toujours évidente à faire manuellement, intégrer nativement ParallelFX au framework .NET et l'utilisation commune de cette technologie pourrait dissiper certains détracteurs du framework l'attaquant sur la performance.

 

Qu’est-ce que la programmation concurrentielle ?
La programmation concurrentielle consiste à diviser en plusieurs tâches nos applications. Quand il n'y a pas d'interactions entre les tâches on parle aussi de programmation parallèle qui est un cas particulier (et le cas le plus simple) de programmation concurrentielle. Ces tâches s'exécutent en parallèle donc il n'y a pas de temps mort et nos applications peuvent tirer parti des processeurs multi-coeurs qui sont aujourd'hui en standard sur les PC (à part netbooks). Sur le papier c'est beau, mais si c'est encore peu utilisé c'est je pense pour ces trois raisons principales :

  • Les développeurs ont rarement étés formés au multi-thread ou préfèrent aller au plus simple
  • Si les threads touchent aux mêmes variables les résultats peuvent devenir aberrants. Mettons une application bancaire ou les évènements sont sur des threads différents. Si un client fait un retrait et un dépôt en même temps il se peut que seul une des deux opérations soit effective (lecture simultanée de la valeur initiale, seul le dernier processus à écrire sera pris en compte).
  • Les interactions entre les threads sont assez imprévisibles et la loie de Murphy pousse ces applications à planter en production mais jamais lors du debug.

 

Quelles solutions apporte ParallelFX ?

Répartir sur des threads indépendants, c'est assez facile même aujourd'hui sans ParallelFX. ParallelFX facilite encore plus et peut par exemple transformer des « foreach » en « Parallel.ForEach » voire en « forall » (dans le cas de requêtes Plinq) qui lancera en parallèle toutes les itérations. De plus il propose le PLinq qui permet donc de multi-threader automatiquement les requêtes. De ce fait ParallelFX porte déjà une bonne solution au premier problème qui est la difficulté. Dans le cas ou les trheads sont indépendant c'est parfait.

Mais quand les threads doivent communiquer entre eux, il reste le risque de valeurs incohérentes et d'erreur aléatoires. Comme en mathématiques quand deux threads parallèles se croisent, il y a risque d'erreur . A l'heure actuelle le moyen le plus simple c'est d'utiliser le mot clef lock quand nécessaire pour verrouiller l'accès aux variables aux autres threads et limiter le risque d'erreur. Mais une autre solution plus simple semble avancer de chez Microsoft... Un développeur Microsoft a récemment ouvert un blog (en) ICI sur les mémoires transactionnelles logicielles (STM -> Software transactional memory). 

Que sont ces « mémoires de transactions logicielles » ?
C'est un moyen en programmation concurrentielle de contrôler la mémoire partagée entre les processus. Les threads ont leurs copies des variables utilisées et la traite sans problème. Si une opération à exécuter sur de la mémoire partagée a eu lieu pendant l'exécution du thread, ce thread est ré-exécuté, sinon il remplace la valeur réelle. Certains feront l'analogie entre ces variables spéciales et les requêtes

Et mono dans tout ça?
Mono grâce à un étudiant français (Jérémie Laval) a déjà PLinq et ParallelFX de pas mal implémenté. Jérémie a porté sa contribution subventionné par Google Summer Of Code (opération où Google donnes quelques pièces aux étudiants qui contribuent au logiciel libre). L'idée de cet article m'est venue de ses hypothèses que désormais je partage sur l'implémentation future de ParallelFX dans .NET4. Voici en français mon interprétation de la fin de son (en) article : « En attente de nouvelles de la PDC2008 voir ce que Microsoft réserve à ParallelFX que je commence à implémenter ça dans Mono ». Plutôt bon signe non?  


Liens:
Vous trouverez ici une présentation de ce qu’est ParallelFx ( http://www.techheadbrothers.com/Articles.aspx/decouverte-parallelfx ).
Les soupçons en questions sont amené notamment par ce débat ( (en) http://channel9.msdn.com/posts/Charles/Anders-Hejlsberg-and-Guy-Steele-Concurrency-and-Language-Design/  ).
Un article expliquant brièvement la concurrence (exemples en java) : ( http://blog.xebia.fr/2008/08/13/programmation-concurrentielle-notions-fondamentales/).
Articles Wikipedia sur  La programmation concurrente et Les mémoire transactionnelles logicielles

Posted: oct. 16 2008, 12:03 by christophen | Commentaires (1) RSS comment feed |
  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Général | Mono | News | Présentation

Mono 2.0 et Monodevelop 2.0 Alpha sous ubuntu

    Avis aux utilisateurs d’Ubuntu déçus de ne pas voir dans leurs dépôts mono 2.0. Vous n'arrivez pas à faire fonctionner Monodevelop 2.0 alpha qui tire vraiment parti des nouveautés de Mono? Ne vous forcez pas à passer à OpenSuse pour bénéficié de toutes les nouveautés facilement, un Ubuntéro anglais à fait un script Shell d’installation sous licence GPLv3 que j’ai testé et approuvé. Ce script vous permettra d’avoir Monodevelop SVN et Mono 2.0 confiné dans un répertoire à part qui évitera les conflits systèmes (par défaut ~/opt). Le script ne nécessite pas les privilège root néanmoins il vous faudra préinstaller les librairies nécessaires. L’auteur vous explique son script et son utilisation sur son blog personnel à cette adresse : http://www.trausch.us/2008/10/13/want-to-play-with-mono-20-so-do-i/

Notez que l’auteur à omis de vous rappeler la nécessité du paquet libncurses5-dev (pour la configuration du debugger).

Si vous voulez ajouter des extensions à MonoDevelop en utilisant ce script, ajoutez (vers la ligne 130) les répertoires relatifs des extensions en question,  pour ma part j’ai ajouté :

  • extras/PyBinding : pour pouvoir utiliser MonoDevelop comme IDE Python
  • extras/AspNetEdit : support des projets Asp.NET et export automatisé vers serveurs.
  • extras/MonoDevelop.CodeAnalysis : pour avoir les suggestions de codes proposées par les règles syntaxiques du projet Gendarme.

(vous pourrez voir tous les répertoires si vous avez les sources svn en local. La plupart seront dans monodevelop/extras/nomextention et ce dossier contiendra un fichier configure)

Mon seul regret ? Le support du C# était désactivé et donc l’auto-complétion et les AddIn dépendents… (il y a lui même un problême de dépendence). Autrement dit l’état de la version SVN est très encore instable et donc plus réservée aux personnes qui veulent contribuer à MonoDevelop et aux curieux qu’aux utilisateurs moyens.

 

EDIT: Mono 2.0 ne sera pas dans ubuntu 8.10 qui sort ce moi ci car la "feature freeze" a déjà retenti. Un dépôt privé vous propose mono 2.0 sans monodevelop (dépot hardy, intrepid et gutsy) : deb http://ppa.launchpad.net/firerabbit/ubuntu intrepid main

Posted: oct. 14 2008, 16:13 by christophen | Commentaires (0) RSS comment feed |
  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Astuce | Général | Mono

Voici Silverlight 2.0 !

 

 

Le revendiqué concurrent de flash made in Microsoft est désormais disponible au téléchargement dans sa nouvelle version. On voit que Microsoft essaye de mettre en avant l’aspect communautaire, aspect qui a fait le succès au près du grand public de la plus part des technologies ouvertes courrantes (Java, PHP, C, C++). Pour se faire, le géant de Redmond n’a pas hésité à produire un plugin Eclipse, l’ide java le plus utilisé du monde open source. Ce rapprochement vas de pair avec la publication des spécifications de la syntaxe XAML (Extensible Application Markup Language) par la fondation Eclipse ainsi que la disponibilité en licence open-source du SilverLight Powerpack Control. Rassurez vous Expression Blend et Visual Studio ne seront pas négligés pour autant dans leur support de cette technologie dont l’avenir s’impose grâce aux contrats de Microsoft. De nombreuses sociétés actives sur internet (NBC, AOL, Yahoo!) se sont engagés à diffuser leur contenu avec Silverlight.

Au menu de cette nouvelle mouture de Silverlight : des contrôles multimédia supportant les contestés DRM (Digital Right Management), le support du multi langage comme les applications .NET classique...

 

La portabilité des applications est réelle, les principaux navigateurs peuvent êtres équipés sur Mac comme sur Windows. Le projet Mono quant-à lui (une fois n’est pas coutume) est à la traine pour sortir une version stable de Moonlight 2.0. De ce fait les possesseurs de netbooks, Android et autres amateurs de manchots devront attendre pour pouvoir profiter pleinement des sites utilisant cette technologie. Nous avons pour l’instant un support Alpha, les intéressés trouverons plus d’informations ici (http://www.mono-project.com/Moonlight)  gageons que si l’utilisation de Silverlight explose plus qu’attendu les équipes de mono accélèreront le projet. Silverlight peut dés à présent sans problème fonctionner sur des sites hébergés sur des serveurs linux et ce car c’est le client qui exécute l’application.

Le hic est encore à l’heure actuelle la faible adoption de la technologie. Même Microsoft ne revendique cette technologie installée pleinement accessible que pour un quart des internautes. Néanmoins Silverlight 2 sera installé via Windows Update dans les semaines à venir et nous pouvons penser que Silverlight sera embarqué nativement dans le désormais annoncé Windows 7. Ce passage "en force" devrai faire bondir ce ration d'un quart des internautes en peu de temps.

Aux pressés qui veulent télécharger dés à présent Silverlight 2 voici le lien : http://www.microsoft.com/silverlight

Les fanatiques du W3C pourront toujours essayé de rivaliser avec les balises canvas, audio et video encore supportés par seulement peu de navigateurs… Bonne chance.

Posted: oct. 14 2008, 15:41 by christophen | Commentaires (0) RSS comment feed |
  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Général | News

Mono 2.0 est sorti hier !

Oui, il ne fallait pas passer à coté, voici une énumération non exhaustive des nouveautés de mono 2.0

  • Refonte de l’interface du site du projet ( nouveau site / ancien)
  • Implémentation de presque tout le framework .NET 2.0
  • Implémentation de quelques nouveautés du framework 3.5 (notamment Linq2Object)
  • Ajout d’un débuggeur
  • Ajout d’un analyseur de code nommé  Gendarme
  • Le compilateur C# supporte la version 3.0 du langage
  • Un compilateur Visual Basic 8 entre dans le projet
  • Quelques compilateurs plus anecdotiques (F#, Boo, IKVM, Iron-python …)
  • Mise à jour de XSP le module apache pour faire de l’asp.NET 2.0 sur le framework mono
  • Ajout/Amélioration des fournisseurs managés pour les bases de données MS SQL, PostgreSql, Sybase, Sqlite, Firebird (on regrettera qu’il n’y ai toujours pas de fournisseurs managés pour MySQL).
  • Mise à jour des APIs faisant partie du projet.
  • Nouvelle version de MoMA (Mono Migration Analysis)
  • Compatibilité avec les APIs COM
  • Amélioration de la rapidité et des performances du RunTime (notamment suite à l’analyse de l’ensemble du framework par Gendarme)
  • Ajouts d’optimisations dans le Just In Time Compiler et meilleure gestion de la mémoire
Voilà déjà une belle liste de nouveautés qui justifie le changement majeur de version mais une révision 2.2 est attendue à la fin de l'année devrai arriver avec notamment un interpréteur interactif C# (C# shell) que j'essaierais de présenter avant sa sortie. L'outil que l'on attend donc est MonoDevelop 2.0 qui tirera parti des nouveaux outils dont le débuggeur, Gendarme, support de la syntaxe C#3.0 ... Il devait initiallement sortir avec Mono 2.2 mais semble être reporté à Mono 2.4 en Mars 2009.
 
Beaucoup d'outils ont étés évoqués mais sont de réel sujet à eux seuls, c'est ça qui justifie cette forme listée peu expliquée. MoMA aura quelques chapitres de tutoriel consacré, Gendarme, Boo et le C# compiler devraient être sujets de prochains articles...

Essayez d'être à jours et profitez de ces améliorations: Enjoy!
Posted: oct. 07 2008, 22:46 by christophen | Commentaires (0) RSS comment feed |
  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Général | Mono | News

Nouveau Blogueur

Bonjour, Voici un article sobre présentant en trois points ma personne, mes intérêts et ce blog:

  1. Je m'appelle Christophe Narbonne. Je suis le rédacteur des tutoriels en préparation traitant de la technologie Mono (dont un article sur la toute récente version deux vous attend très bientôt), du tutoriel sur le C#, du tutoriel sur Linq2Object et corédacteur des deux premiers tutoriels traitant de l'ASP.NET. Je n'utilise pas Microsoft Windows en système d'exploitation principal mais l'utilise dans des machines virtuelles à l'occasion.
  2. Mes intérêts sont souvent communautaires ou pratique, il m'arrive de consacrer du temps à des casses têtes amusants mais inutiles (j'ai par exemple créé mon algorithme de chiffrage déchiffrage de texte simple ou visionné des vidéos en ASCII-art).
  3. Si vous vous intéressez à ce qui est en dehors des plates bandes que suggère Microsoft, je risque d'aborder et présenter des outils libres, peut être des langages un peu atypiques en  .NET et à l’occasion poster quelques articles sur leurs utilisations et leurs nouveautés.
Posted: oct. 07 2008, 18:04 by christophen | Commentaires (1) RSS comment feed |
  • Currently 4,5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Général | News