"…mais ce serait peut-être l'une des plus grandes opportunités manquées de notre époque si le logiciel libre ne libérait rien d'autre que du code…"

Archive for août 2007

Quelques liens en vrac: plone, grok, sharpdevelop, dabo, geniusql

Posted by patrick sur août 21, 2007

Quelques liens en vrac

– sortie de plone 3.0 (http://plone.org, « The culmination of over a year of hard work by the Plone Team, Plone 3.0 is available for download for all platforms today. This release is the most user-friendly, powerful and highly anticipated release of Plone ever, and has an amazing amount of new functionality. Some highligts:

  • Full versioning support, history and reverting to older revisions
  • Improved performance
  • Inline (Ajax) editing
  • Link and reference integrity checking
  • Automatic locking and unlocking
  • Improved handling of permissions and sharing
  • Upgraded visual (WYSIWYG) content editor
  • Full-text indexing of Word and PDF documents
  • Wiki support and multiple new mark-up formats
  • Rules engine for content
  • Strengthened security« )

Dans le même genre de produits basés sur Zope voir

Grok (http://grok.zope.org/, « Grok is a web application framework for Python developers. It is aimed at both beginners and very experienced web developers. Grok has an emphasis on agile development. Grok is easy and powerful. You will likely have heard about many different web frameworks for Python as well as other languages. Why should you consider Grok?

  • Grok offers a lot of building blocks for your web application.
  • Grok is informed by a lot of hard-earned wisdom.

Grok accomplishes this by being based on Zope 3, an advanced object-oriented web framework. While Grok is based on Zope 3, and benefits a lot from it, you do not need to know Zope at all in order to get productive with Grok« )

SharpDevelop(« Vous voulez coder en .net mais sans utiliser l’IDE de Microsoft ? SharpDevelop est celui qu’il vous faut. SharpDevelop (SD) est un IDE basé sur la plateforme .NET (2) qui offre un environnement de développement de qualité et libre comparable à VisualStudio. D’autres possibilités de développement sont intégrées et sont envisageables (mono intégré ; conversion auto en c#… You need to have at least the .NET 2.0 runtime installed on your machine. The SDK is optional but recommended. .NET Framework 2.0 Runtime download (x86), .NET Framework 2.0 SDK download (x86). Supported operating systems: Windows XP SP2 and later (eg Windows Server 2003 and Windows Vista)« )

dabo (« http://dabodev.com/, Desktop applications: That’s what Dabo does. It’s not YAWF (yet another web framework). There are plenty of excellent web frameworks out there, so if that’s what you are looking for, Dabo isn’t for you. But there are almost no desktop application frameworks out there, and if you want to create applications that run on Windows, OS X or Linux, Dabo is for you!

Dabo is a 3-tier, cross-platform application development framework, written in Python wxPython GUI toolkit. And while Dabo is designed to create database-centric apps, that is not a requirement. Lots of people are using Dabo for the GUI tools to create apps that have no need to connect to a database at all..Dabo’s authors, Ed Leafe and Paul McNett, have strong backgrounds in database application development using the awesome and underrated Microsoft Visual FoxPro development environment.« )

http://projects.amor.org/geniusql (« Geniusql is a public domain, low-level Object-Relational Mapper for Python applications. If you’re familiar with Martin Fowler’s work, you can think of Geniusql as providing a Data Source layer. It primarily uses a generic Table Data Gateway architecture (as opposed to the more tightly-coupled Active Record architecture recently popularized by Ruby On Rails and Django).

If you want a more powerful solution, we recommend skipping Active Record and going straight to a Data Mapper like Dejavu. Dejavu uses Geniusql behind the scenes for RDBMS back ends, but allows you to mix and match them with RAM, filesystem, and other stores.« )

http://www.aminus.org/blogs/index.php/fumanchu/2007/08/18/storm_sqlalchemy_and_geniusql (« As Mike Bayer mentioned, I recently did some cross-ORM comparisons. The charts below all show « number of requests » on the X axis and « number of seconds to complete those requests » on the Y axis…I used trunk versions of Geniusql (1.0) and SQLAlchemy (0.4, without using the orm subpackage), and the latest stable distro of Storm (0.10). All test runs were done on my Win2k laptop, which has a 2GHz CPU and 512MB of RAM. PostgreSQL 8.0.0rc1 was the DB engine, and psycopg2 was the driver.« )

Posted in CMS, Dabo, ORM, python | Leave a Comment »

Utilisation de sqldeveloper pour accéder à une base Microsoft_SQL_Server

Posted by patrick sur août 20, 2007

Toujours dans le but de développer des applications C# à partir du mois de septembre, je regarde les outils graphiques que je peux utiliser pour voir le contenu d’une base de données Microsoft SQL Server. Sous Oracle, j’avais utilisé sqldeveloper et j’en étais très content. La version 1.2 de sqldeveloper permet d’accéder aux bases de données MySql, Access et SqlServer. Pour Sqlserver, il faut juste charger un pilote que l’on peut trouver là (il faut d’abord s’enregistrer auprès d’oracle): http://sourceforge.net/project/showfiles.php?group_id=33291(« Open source JDBC 3.0 Type 4 driver for Microsoft SQL Server (6.5, 7.0, 2000 and 2005) and Sybase. jTDS is the fastest JDBC driver for MS SQL Server and is a complete implementation of the JDBC spec. For more information see http://jtds.sourceforge.net/« ).

Pour installer le pilote jTDS voir http://forums.oracle.com/forums/thread.jspa?messageID=1762500 (« Download jTDS – SQL Server and Sybase JDBC driver from http://sourceforge.net/project/showfiles.php?group_id=33291(« In Oracle SQL Developer open Tools -> Preferences, Database -> Third Party JDBC Drivers, Add Entry, Browse the unzipped driver and add the jtds-1.2.jar file« ).

Et ça marche !

Utilisation des méta-données de sqlserver (information_schema) pour connaitre le contenu d’une base de données:

‘select * from vs2005db.information_schema.tables’ (‘vs2005db’ est le nom de votre base de données appelée aussi ‘TABLE_CATALOG’

VS2005DB dbo GroupeDetail BASE TABLE
VS2005DB dbo Ville BASE TABLE

select column_name, data_type, character_maximum_length from vs2005db.information_schema.columns where table_name=’albums’;

ID bigint (null)
TITRE varchar 100
DATE_SORTIE datetime (null)
ID_SERIE bigint (null)
RESUME varchar 500

Pour plus d’infos voir http://www.sqlteam.com/article/using-metadata

View Name Description
CHECK_CONSTRAINTS Holds information about constraints in the database
COLUMN_DOMAIN_USAGE Identifies which columns in which tables are user-defined datatypes
COLUMN_PRIVILEGES Has one row for each column level permission granted to or by the current user
COLUMNS Lists one row for each column in each table or view in the database
CONSTRAINT_COLUMN_USAGE Lists one row for each column that has a constraint defined on it
CONSTRAINT_TABLE_USAGE Lists one row for each table that has a constraint defined on it
DOMAIN_CONSTRAINTS Lists the user-defined datatypes that have rules bound to them
DOMAINS Lists the user-defined datatypes
KEY_COLUMN_USAGE Lists one row for each column that’s defined as a key
PARAMETERS Lists one row for each parameter in a stored procedure or user-defined function
REFERENTIAL_CONSTRAINTS Lists one row for each foreign constraint
ROUTINES Lists one row for each stored procedure or user-defined function
ROUTINE_COLUMNS Contains one row for each column returned by any table-valued functions
SCHEMATA Contains one row for each database
TABLE_CONSTRAINTS Lists one row for each constraint defined in the current database
TABLE_PRIVILEGES Has one row for each table level permission granted to or by the current user
TABLES Lists one row for each table or view in the current database
VIEW_COLUMN_USAGE Lists one row for each column in a view including the base table of the column where possible
VIEW_TABLE_USAGE Lists one row for each table used in a view
VIEWS Lists one row for each view


select constraint_name,column_name from vs2005db.information_schema.KEY_COLUMN_USAGE where table_name=’albums’;


select constraint_name, constraint_type from vs2005db.information_schema.table_constraints where table_name=’albums’;

PK_ALBUMS                  PRIMARY KEY

Posted in bases de données, C_sharp | Leave a Comment »

GrassHopper: faire tourner des applications ASP.NET sur des serveurs J2EE

Posted by patrick sur août 17, 2007

En lisant les flux RSS du blog de Miguel de Icaza (http://tirania.org/blog/miguel.rss2), (infos disponible aussi sur http://blog.mainsoft.com/blog/feed/) une information intéressante pour mono: faire tourner des applications ASP.NET sur des serveurs J2EE.

http://tirania.org/blog/archive/2007/Aug-16.html (« A few years ago we met Rafi at one of our Mono summits in Boston, he works for Mainsoft and he has always been amazing. Watch his interview on what he is doing with Grasshopper here and here. He talks about Mainsoft’s contributions to Mono, about his testing procedures and the kind of things that are possible with Grasshopper when integrating ASP.NET applications when running on J2EE servers. »)

Quelques définitions

http://en.wikipedia.org/wiki/J2EE (« The platform was known as Java 2 Platform, Enterprise Edition or J2EE until the name was changed to Java EE in version 1.5.

Java EE is defined by its specification. As with other Java Community Processstandard since providers must agree to certain conformance requirements in order to declare their products as specifications, Java EE is also considered informally to be a Java EE compliant; albeit with no ISO or ECMA standard


The original J2EE specification was developed by Sun Microsystems.

Starting with J2EE 1.3, the specification was developed under the Java Community Process. JSR 58 specifies J2EE 1.3 and JSR 151 specifies the J2EE 1.4 specification.

The J2EE 1.3 SDK was first released by Sun as a beta in April 2001. The J2EE 1.4 SDK beta was released by Sun in December 2002.

The Java EE 5 specification was developed under JSR 244 and the final release was made on May 11, 2006.

The Java EE 6 specification is being developed under JSR 316 and is scheduled for release in 2008. « )

http://en.wikipedia.org/wiki/Java_%28programming_language%29 (« Java is a programming language originally developed by Sun Microsystems and released in 1995. Java applications are typically compiled to bytecode, although compilation to native machine code is also possible. At runtime, bytecode is usually either interpreted or compiled to native code for execution, although direct hardware execution of bytecode by a Java processor is also possible.

The language derives much of its syntax from C and C++ but has a simpler object modelJavaScript, a scripting language, shares a similar name and has similar syntax, but is not directly related to Java. and fewer low-level facilities.

The original and reference implementation Java compilers, virtual machines, and class libraries were developed by Sun from 1995.

As of May 2007, in compliance with the specifications of the Java Community Process, Sun made available most of their Java technologies as free software under the GNU General Public License. Others have also developed alternative implementations of these Sun technologies, such as the GNU Compiler for Java and GNU Classpath


Main article: Java version history

The Java project has seen many release versions. Since 1995 they are:

http://dev.mainsoft.com/ ( » We believe that for Visual Studio developers, the fastest route to open systems is extending your existing .NET development skills to the Java EE platform. Grasshopper 2.0 enables you to produce .NET Web and server applications that run on Linux & other Java-enabled platforms using ASP.NET 2.0 controls, role-based security, and C# generics. Check out our developer blogs, interop forums, code samples, and how-to articles to learn how…« )

http://dev.mainsoft.com/Default.aspx?tabid=130 (« For most .NET developers, there is simply no substitute for the Visual Studio® IDE, the .NET Framework, and either Visual Basic or C#. With Grasshopper, you can use your favorite development environment from Microsoft® to deploy applications on Java-enabled platforms such as Linux®. Grasshopper is the freely available Developer Edition of Mainsoft® for Java EE, a Visual Studio plug-in that you can use to create server and ASP.NET applications, or port existing .NET 2.0 applications on Linux and other Java-enabled platforms, without having to re-engineer your code in Java.

Grasshopper 2.0 introduces support for the Visual Studio 2005 development environment, Visual Basic, and C# 2.0, including the generics language feature, the .NET Framework 2.0, and ASP.NET 2.0 controls. Use Grasshopper and the Visual Studio IDE to code, compile, debug, and deploy your application natively on the Java EE platform. »)

http://blog.mainsoft.com/blog/ (Le blog des développeurs de Mainsoft)

Posted in ASP.NET, C_sharp, J2EE, java, mono | Leave a Comment »

Mapping objet relationnel avec NHibernate, SqlAlchemy et RubyOnRails

Posted by patrick sur août 17, 2007

D’abord quelques définitions:

http://fr.wikipedia.org/wiki/Object-relational_mapping (« L’object-relational mapping (ORM), que l’on pourrait traduire par « correspondance entre monde objet et monde relationnel » est une technique de programmation informatique qui crée l’illusion d’une base de données orientée objet à partir d’une base de données relationnelle en définissant des correspondances entre cette base de données et les objets du langage utilisé« )

http://fr.wikipedia.org/wiki/Hibernate (« Hibernate est un framework open source gérant la persistance des objets en base de données relationnelle. Hibernate est adaptable en terme d’architecture, il peut donc être utilisé aussi bien dans un développement client lourd, que dans un environnement web léger de type Apache Tomcat ou dans un environnement J2EE complet : WebSphere, JBoss Application Server et WebLogic de BEA Systems (voir (en) BEA Weblogic).

…NHibernate est un framework open source gérant la persistance des objets en base de données relationnelle. Il est l’implémentation .NET de Hibernate qui a vu le jour en Java« )

Le patron de conception ActiveRecord

http://fr.wikipedia.org/wiki/Active_record_%28patron_de_conception%29 (« En génie logiciel, le patron de conception (design pattern) active record est une approche pour lire les données d’une base de données. Les attributs d’une table ou d’une vue sont encapsulés dans une classe. Ainsi l’objet, instance de la classe, est lié à un tuple de la base. Après l’instanciation d’un objet, un nouveau tuple est ajouté à la base au moment de l’enregistrement. Chaque objet récupère ses données depuis la base; quand un objet est mis à jour, le tuple auquel il est lié l’est aussi. La classe implémente des accesseurs pour chaque attribut« )

http://www.theserverside.com/tt/articles/article.tss?l=RailsHibernate (« ActiveRecord is « an object that wraps a row in a database table or view, encapsulates database access and adds domain logic on that data »[Fowler, 2003]. This means the ActiveRecord has « class » methods for finding instances, and each instance is responsible for saving, updating and deleting itself in the database. It’s pretty well suited for simpler domain models, those where the tables closely resemble the domain model. It is also generally simpler then the more powerful, but complex Data Mapper pattern« )

Le patron de conception DataMapper

http://martinfowler.com/eaaCatalog/dataMapper.html (« Objects and relational databases have different mechanisms for structuring data. Many parts of an object, such as collections and inheritance, aren’t present in relational databases. When you build an object model with a lot of business logic it’s valuable to use these mechanisms to better organize the data and the behavior that goes with it. Doing so leads to variant schemas; that is, the object schema and the relational schema don’t match up….The Data Mapper is a layer of software that separates the in-memory objects from the database. Its responsibility is to transfer data between the two and also to isolate them from each other. With Data Mapper the in-memory objects needn’t know even that there’s a database present; they need no SQL interface code, and certainly no knowledge of the database schema« )

http://www.theserverside.com/tt/articles/article.tss?l=RailsHibernate (« The Data Mapper is « a layer of mappers that moves data between objects and a database while keeping them independent of each other and the mapper itself »[Fowler, 2003]. It moves the responsibility of persistence out of the domain object, and generally uses an identity map to maintain the relationship between the domain objects and the database. In addition, it often (and Hibernate does) use a Unit of Work (Session) to keep track of objects which are changed and make sure they persist correctly.« )

http://en.wikipedia.org/wiki/SQLAlchemy (« SQLAlchemy is an open source SQL toolkit and object-relational mapper for the Python programming language released under the MIT License. SQLAlchemy provides « a full suite of well known enterprise-level persistence patterns, designed for efficient and high-performing database access, adapted into a simple and Pythonic domain language ». SQLAlchemy’s philosophy is that SQL databases behave less and less like object collections the more size and performance start to matter, while object collections behave less and less like tables and rows the more abstraction starts to matter. For this reason it has (like Hibernate for Java) adopted the Data Mapper pattern rather than the active record pattern used by a number of other object-relational mappers. »)

Le patron de conception UnitOfWork

http://martinfowler.com/eaaCatalog/unitOfWork.html (« When you’re pulling data in and out of a database, it’s important to keep track of what you’ve changed; otherwise, that data won’t be written back into the database. Similarly you have to insert new objects you create and remove any objects you delete…A Unit of Work keeps track of everything you do during a business transaction that can affect the database. When you’re done, it figures out everything that needs to be done to alter the database as a result of your work« )

http://www.sqlalchemy.org/features.html (« The Unit Of Work system, a central part of SQLAlchemy’s Object Relational Mapper (ORM), organizes pending create/insert/update/delete operations into queues and flushes them all in one batch. To accomplish this it performs a topological « dependency sort » of all modified items in the queue so as to honor foreign key constraints, and groups redundant statements together where they can sometimes be batched even further. This produces the maxiumum efficiency and transaction safety, and minimizes chances of deadlocks. Modeled after Fowler’s « Unit of Work » pattern as well as Hibernate, Java’s leading object-relational mapper.[More]« )

Comparaison de Hibernate avec le patron de conception ActiveRecord de Ruby On Rails

Différence d’architecture logicielle:

– http://www.theserverside.com/tt/articles/article.tss?l=RailsHibernate (« The core difference between Rails ActiveRecord and Hibernate is the architectural patterns the two are based off of. Rails, obviously, is using the ActiveRecord pattern, where as Hibernate uses the Data Mapper/Identity Map/Unit of Work patterns. Just knowing these two facts gives us some insight into potential differences…general implication of which should be fairly obvious. The ActiveRecord (Rails) will likely be easier to understand and work with, but past a certain point more advanced/complex usages will likely be difficult or just not possible. The question is of course, when or if many projects will cross this line. Let’s look at some specifics of the two frameworks. To illustrate these differences, we will be using code from my « Project Deadwood » sample app. (Guess what I’ve been watching lately. 🙂

Exemples de code:

Soit une table créée avec l’ordre SQL suivant:

create table miners (


   first_name VARCHAR(255),

   last_name VARCHAR(255),

   primary key (id)


Avec RubyOnRails:

Your corresponding ruby class (miner.rb) and sample usage looks like this.

class Miner < ActiveRecord::Base

endminer.first_name = "Brom"

Avec Hibernate:

On the other hand, your Hibernate class (Miner.java) specifies the fields, getters/setters and xdoclet tags looks like so.

/**  * @hibernate.class table="miners"  */
public class Miner
private String firstName;
private String lastName;     /**      * @hibernate.id generator-class="native"      */
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }      /**      * @hibernate.property column="first_name"      */
public String getFirstName() { return firstName; }
public void setFirstName(String firstName) { this.firstName = firstName; }      /**      * @hibernate.property column="last_name"      */
public String getLastName() { return lastName; }
public void setLastName(String lastName) { this.lastName = lastName; }

Avec sqlalchemy:

# describe a table called 'miner',  query the database for its columns

miners_table = Table('miners', meta, autoload=True, autoload_with=engine)
>>> class Miner(object):

...     def __init__(self, first_name, last_name ):

...         self.first_name = first_name

...         self.last_name = last_name


...     def __repr__(self):

...        return "<Miner(%r,%r)>" % (self.first_name, self.last_name)
mapper(Miner, miners_table) 
theMiner = Miner(first_name = "Brom")


http://www.theserverside.com/tt/articles/article.tss?l=RailsHibernate (« In the last section, the Miner class we looked at was single table oriented, mapping to a single miners table. ORM solutions support ways to map associated tables to in memory objects, Hibernate and Rails are no different. Both handle the most of the basic mapping strategies. Here’s a non-exhaustive list of association supported by both of them, including the corresponding Hibernate – Rails naming conventions where appropriate.

  • Many to One/One to one – belongs_to/has_one
  • One to Many (set) – has_many
  • Many to Many (set) – has_and_belongs_to_many »)

Exemples d’associations

« As a comparative example, lets look at the many to one relationship. We are going to expand our Deadwood example from part I. We add to the Miner a many to one association with a GoldClaim object. This means there is a foreign key, gold_claim_id in the miners table, which links it to a row in the gold_claims table. »

Avec Hibernate:


public class Miner {

   // Other fields/methods omitted    private GoldClaim goldClaim;


     * @hibernate.many-to-one column="gold_claim_id"

     *         cascade="save"


    public GoldClaim getGoldClaim() { return goldClaim; }

    public void setGoldClaim(GoldClaim goldClaim) {

        this.goldClaim = goldClaim;



Avec RubyOnRails:


class Miner < ActiveRecord::Base

    belongs_to :gold_claim


Avec Sqlalchemy :

parent_table = Table('parent', metadata,

    Column('id', Integer, primary_key=True),

    Column('child_id', Integer, ForeignKey('child.id')))

child_table = Table('child', metadata,

    Column('id', Integer, primary_key=True),


class Parent(object):


 class Child(object):


 mapper(Parent, parent_table, properties={



mapper(Child, child_table)

Pour aller plus loin

http://www.castleproject.org/activerecord/gettingstarted/index.html ( » The Castle ActiveRecord project is an implementation of the ActiveRecord pattern for .NET. The ActiveRecord pattern consists on instance properties representing a record in the database, instance methods acting on that specific record and static methods acting on all records… Complex databases structures (legacy databases mostly) usually are not covered by the range of mapping features supported by ActiveRecord. In this case you might consider using NHibernate directly« )

http://www.sqlalchemy.org/docs/choose.html (« La documentation de sqlalchemy »)

http://en.wikipedia.org/wiki/Nhibernate (« NHibernate is an Object-relational mapping (ORM) solution for the Microsoft .NET platform. It is licensed under the GNU Lesser General Public License.It is a port of the popular Java O/R mapper Hibernate to .NET. Version 1.0 mirrors the feature set of Hibernate 2.1, adding a number of features from Hibernate 3.

NHibernate 1.2.0, released May of 2007, introduces many more features from Hibernate 3 and support for .NET 2.0, stored procedures, generics and nullable types« )

http://www.hibernate.org/343.html (« NHibernate 1.2 introduces many additional features from Hibernate 3. Details about the new features can be found in this blog post. »)

http://blog.hibernate.org/cgi-bin/blosxom.cgi (« The groupblog of the Hibernate Team »)

http://blog.hibernate.org/cgi-bin/blosxom.cgi/Sergey%20Koshcheyev/nhibernate12-is-here.html (« NHibernate 1.2 is not a drop-in replacement for NHibernate 1.0. Before you jump to upgrading all your applications to NHibernate 1.2, note that there are several things that can break. The migration guide in the Wiki contains information about all the changes you need to make to successfully migrate...The next major release of NHibernate will drop support for .NET 1.1. We will continue porting the remaining Hibernate 3 features over to NHibernate. »)

http://www.ayende.com/Blog/category/510.aspx (« Les principales nouvelles sur NHibernate« )

http://www.ayende.com/Blog/ (Blog principal de Ayende @ Rahien)

http://www.hibernate.org/362.html (« NHibernate Quick Start Guide

Posted in Architecture logicielle, DotNet, Nhibernate, ORM | 2 Comments »

DotNet, Mono, C#, Ironpython: quelques liens et définitions en vrac

Posted by patrick sur août 13, 2007

Pour mon retour de vacances, quelques liens sur le framework .NET, C# , Ironpython et Mono (des projets étant à l’horizon au mois de septembre 2007).

Les framework DotNet

http://en.wikipedia.org/wiki/.NET_Framework#.NET_Framework_2.0 («  .NET Framework 2.0. Released with Visual Studio .NET 2005, Microsoft SQL Server 2005 and BizTalk 2006.

.NET Framework 2.0 shipped with Windows Server 2003 R2 (not installed by default).« )

http://en.wikipedia.org/wiki/.NET_Framework#.NET_Framework_3.0 («  .NET Framework 3.0, formerly called WinFX,[1] includes a new set of managed code APIs that are an integral part of Windows Vista and Windows Server 2008 operating systems. It is also available for Windows XP SP2 and Windows Server 2003 as a download. There are no major architectural changes included with this release; .NET Framework 3.0 includes version 2.0 of the Common Language Runtime.[2]. NET Framework 3.0 consists of four major new components:

http://en.wikipedia.org/wiki/.NET_Framework#.NET_Framework_3.5 (« In an interview with Channel 9, Jason Zander, general manager of the .NET Framework team at Microsoft, discussed version 3.5 of the framework.[3] This version will include a new compiler that will support new features such as Language Integrated Query (LINQ), as well as new language features in C# and VB.NET. This version of the framework, containing version 3.0 of the CLR (as opposed to CLR 2.0 in .NET Framework 3.0), will be included in Visual Studio 2008. »)

http://en.wikipedia.org/wiki/Mono_%28software%29 (« Mono is a project led by Novell (formerly by Ximian) to create an ECMA.NET compatible set of tools, including among others a C# compiler and a Common Language Runtime. Mono can be run on Linux, FreeBSD, UNIX, Mac OS X, Solaris and Windows operating systems.

Mono current version is 1.2.4 (as of May 2007). This version provides the core API of the .NET Framework as well as support for C# 2.0 and Visual Basic.NET. Support for the 2.0 APIs[1]. Complete support for the .NET Framework 2.0, including the .NET 2.0 version of Windows.Forms, is planned for Mono 2.2, by the end of 2007[2]. Implementation of .NET Framework 3.0 is under development under an experimental Mono subproject called Olive, but the availability of a Mono framework supporting .NET 3.0 is still not planned yet[3]. An open source implementation of Silverlight has now been integrated into Mono proper, parts of it are in the core of Mono, parts are implemented as part of the Olive components. «  )

http://en.wikipedia.org/wiki/IronPython (« IronPython is an implementation of the Python programming language, targeting .NET and Mono, created by Jim Hugunin. Version 1.0 was released on September 5, 2006.[1]
Until version 0.6 it was released under the Common Public License.[2] Following recruitment of the project lead in August 2004, IronPython was made available as part of Microsoft‘s Shared Source initiative. Authors claim that the license,[3] while not reviewed by the Open Source Initiative, conforms to the OSI’s definition of open source. With the 2.0 alpha release, the license was again changed, to the Microsoft Permissive License.[4]
IronPython is written entirely in C#, although some of its code is automatically generated by a code generator written in Python. »

IronPython Integration Sample and the WPF Designer (Aaron Marten explains how to get the IronPython integration sample working with Visual Studio with WPF Designer)

http://en.wikipedia.org/wiki/Windows_Presentation_Foundation (« The Windows Presentation Foundation (or WPF), formerly code named Avalon, is the graphical subsystem feature of the .NET Framework 3.0 (formerly called WinFX)[1] and is directly related to XAML.[2] It is pre-installed in Vista,[3] the latest version of the Microsoft Windows operating system. WPF is also available for installation on Windows XP SP2 and Windows Server 2003. It provides a consistent programming model for building applications and provides a clear separation between the UI and the business logic. A WPF application can be deployed on the desktop or hosted in a web browser. It also enables richer control, design, and development of the visual aspects of Windows programs. It aims to unify a host of application services: user interface, 2D and 3D drawing, fixed and adaptive documents, advanced typography, vector graphics, raster graphics, animation, data binding, audio and video.
Microsoft Silverlight is a web-based subset of WPF. During development it was named WPF/E, which stood for « Windows Presentation Foundation Everywhere ». Silverlight is based on XAML and JScript. The Silverlight subset enables Flash-like web and mobile applications with the exact same code as Windows .NET applications. 3D features are not included, but XPS, vector-based drawing and hardware acceleration are included
. »)

http://en.wikipedia.org/wiki/Microsoft_Silverlight (« Microsoft SilverlightWindows Presentation Foundation/Everywhere or WPF/E) is a proprietary runtime for browser-based Rich Internet Applications, providing a subset of the animation, vector graphics, and video playback capabilities of Windows Presentation Foundation. Version 1.1 also includes a complete version of the .NET Common Language Runtime, named (code-named CoreCLR,[1][2] so that Silverlight applications can be written in any .NET language. Silverlight aims to compete with Adobe Flash and the presentation components of Ajax. It also competes with Sun MicrosystemsJavaFX, which was launched a few days after Silverlight »)

http://www.mono-project.com/Moonlight (« A page to track the various projects that make up the Mono-based implementation of Silverlight. The goals are:

  • To run Silverlight applications on Linux.
  • To provide a Linux SDK to build Silverlight applications.
  • To reuse the Silverlight engine we have built for desktop applications.

You can see screenshots of the work in progress here.

Silverlight 1.1 (http://silverlight.net) is a new development technology for the Web created by Microsoft based on the CLR that augments it with a 2D retained graphics system and media playback engine and ships a subset of the standard .NET libraries. Currently the Moonlight project supports both Silverlight 1.0 (canvas + browser-based scripting) as well as 1.1 applications (canvas + ECMA CLI powered execution engine).

Building an open source implementation on top of Mono is an obvious choice as Mono has most of the technologies required to implement it but is missing a few components. In this page we will track the work required and the design decisions involved in creating an open source version of it.« )

Les environnements de développement:

http://en.wikipedia.org/wiki/Visual_Studio_.NET#Visual_Studio_2005 (« Visual Studio 2005, codenamed Whidbey (a reference to Whidbey Island in Puget Sound), was released online in October 2005 and hit the stores a couple of weeks later. Microsoft removed the « .NET » moniker from Visual Studio 2005 (as well as every other product with .NET in its name), but it still primarily targets the .NET Framework, which was upgraded to version 2.0. Visual Studio 2005’s internal version number is 8.0 while the file format version is 9.0.[4] Microsoft released service Pack 1 for Visual Studio 2005 on 14 December 2006.[5]

Visual Studio 2005 was upgraded to support all the new features introduced in .NET Framework 2.0, including generics and ASP.NET 2.0. The IntelliSense feature in Visual Studio was upgraded for generics and new project types were added to support ASP.NET web services. Visual Studio 2005 also includes a local web server, separate from IIS, that can be used to host ASP.NET applications during development and testing….. »)

http://en.wikipedia.org/wiki/Visual_Studio_.NET#Visual_Studio_2008 (« Visual Studio 2008,[9], code-named Orcas, is the successor to Visual Studio 2005 currently under development. It is slated to be officially launched on February 27, 2008.[10] The codename Orcas is, like Whidbey, a reference to an island in Puget Sound, Orcas Island. The successor to Visual Studio 2008 is codenamed Hawaii.

The first publically available beta was the September 2006 CTP, released on September 28, 2006. The latest beta is Beta 2, released on July 23, 2007.

Visual Studio 2008 is focused on development of Windows Vista, 2007 Office system, and Web applications. Among other things, it brings a new language feature, LINQ, new versions of C# and Visual Basic languages, a Windows Presentation Foundation visual designer, and improvements to the .NET Framework. It will also likely feature a new HTML/CSS editor influenced by Microsoft Expression Web.[11] J# will not be included.[12].NET Framework 3.5 and by default configures compiled assemblies to run on .NET Framework 3.5; but it also supports multi-targeting which lets the developers choose which version of the .NET Common Language Runtime (out of 2.0, 3.0, Silverlight CoreCLR or .NET Compact Framework runtimes) the assembly will run on. »)

http://www.monodevelop.com/Main_Page (« MonoDevelop is a free GNOME IDE primarily designed for C# and other .NET languages« )

Les flux RSS/ATOM intéressants:

http://ironpython-urls.blogspot.com/feeds/posts/default?alt=rss (« La planète Ironpython« )

http://www.voidspace.org.uk/python/weblog/index.xml (De nombreuses infos sur Ironpython)

http://www.ironpython.info/index.php/Main_Page (« wiki sur ironpython. IronPython brings Python to .NET, and allows you native access to the .NET framework and classes. In addition, Microsoft has built IronPython support into the following systems:

http://tirania.org/blog/miguel.rss2 (« le blog de Miguel de Icaza« )

http://blogs.msdn.com/jomo_fisher/atom.xml (« le blog de Jomo Fisher« )

http://msdn.microsoft.com/fr-fr/rss.xml (« Les nouvelles de microsoft »)

http://blogs.msdn.com/mitsufu/atom.xml (Le blog de mitsufu)

http://blogs.developpeur.org/tom/atom.aspx (Le blog de Thomas Lebrun sur WPF et C#)

http://blogs.msdn.com/tims/rss.xml (« Le blog de Tim Sneath« )

Les sites (avec ou sans flux RSS/Atom)

http://groups.google.com/group/mono-olive (« Olive is the group used to develop the post-2.0 Mono-based technologies. This includes Mono’s efforts to implement pieces of the 3.0 and 3.5 stacks as well as the new Silverlight implementation. »)

http://www.codeplex.com/IronPython (« IronPython is a new implementation of the Python programming language running on .NET. It supports an interactive console with fully dynamic compilation. It is well integrated with the rest of the .NET Framework and makes all .NET libraries easily available to Python programmers, while maintaining full compatibility with the Python language.« )



http://dotnet.developpez.com/cours/ (« Les meilleurs cours et tutoriels .NET »)

http://csharp-source.net/ (Des projets C# open source)

http://monofrance.tuxfamily.org/ (« Monofrance Portail francophone des utilisateurs de Mono. »)


http://www.castleproject.org/activerecord/index.html (« The Castle ActiveRecord is an implementation of the ActiveRecord pattern for .NET. The ActiveRecord pattern consists on instance properties representing a record in the database, instance methods acting on that specific record and static methods acting on all records. project is an implementation of the

Castle ActiveRecord is built on top of NHibernate, but its attribute-based mapping free the developer of writing XML for database-to-object mapping, which is needed when using NHibernate directly. »)

Les dernières nouvelles:

http://en.wikipedia.org/wiki/C_Sharp#C.23_3.0_new_language_features (« C# 3.0 is the next version of the language as proposed by Microsoft. It includes new features inspired by functional programming languages such as Haskell and ML, and is driven largely by the introduction of the Language Integrated Query (LINQ) pattern to the Common Language Runtime.[3]« )

http://blogs.developpeur.org/tom/archive/2007/06/27/silverlight-pas-convaincu-par-silverlight-essayer-alors-zero-gravity.aspx (« Interfaces graphiques avec Silverlight: ‘Si vous voulez voir ce qu’il est possible de faire, pendant 4 semaines, avec une équipe de 5 personnes (des designers utilisant Expression Blend et Expression Design, des développeurs utilisant Visual Studio 2008 et des animateurs), alors jettez un oeil sur Zero Gravity. Voir http://timheuer.com/blog/archive/2007/06/26/zerogravity.aspx‘ »)

http://tirania.org/blog/archive/2007/Aug-04.html (« Pretty much all the C# 3.0 features are now completed. As Marek points out there are a couple of areas that still need some work (collection initializers and anonymous types), but we are in good shape to complete the LINQ support in Mono’s C# compiler…The majority of our C# 3.0 support will be available in Mono 1.2.5. The recent developments (type inference) did not make it into the release, so folks will have to wait for 1.2.6…« )

http://tirania.org/blog/archive/2007/Jul-02.html (« Marek Habersack has written a Guide on Porting ASP.NET Applications to Linux using Mono. This is a complement to Jonathan Pobst’s Porting Winforms Applications to Linux using Mono. AjaxWidgets: In addition to the two Guides above, the Thomas from Frost Innovations (the makers of Ajaxwidgets has written a tutorial on how he run ASP.NET 2.0 apps on Linux with Mono.« )

http://ironpython-urls.blogspot.com/2007/07/new-release-ironpython-20-alpha-3.html (« We have just released IronPython 2.0 Alpha 3. This release is a snapshot of the on-going progress with IronPython 2.0 and the DLR. The most significant changes in this release include more work to use dynamic sites from IronPython and improved evaluation mode support. This release is also timed to closely coincide with the IronRuby release and provides a near-identical DLR release…« )

http://tirania.org/blog/archive/2007/Jun-21.html (« Needless to say, we believe that Silverlight is a fantastic development platform, and its .NET-based version is incredibly interesting and as Linux/Unix users we wanted to both get access to content produced with it and to use Linux as our developer platform for Silverlight-powered web sites. »)

http://spellcoder.com/blogs/dodyg/archive/2007/08/08/7756.aspx (« In Summary :

  • Less Code Matters A Lot.
  • C# 3.0 really shines for back end development. It doesn’t add much value in the current ASPX Page structure code behind.
  • IronPython really shines for CodeBehind code or anything related to UI programming. I can’t fathom using it for back end programing due to the lack of refactoring support.
  • Using both C# 3.0 and IronPython in the same project is a joy.« )

Posted in active record, C_sharp, DotNet, Ironpython, mono | 1 Comment »