Pour le bulletin de cette semaine, je vous propose les sujets suivants :
- Google annonce l'arrêt du support des anciennes versions des navigateurs suivant : IE6, Firefox 2, Chrome 3 ou Safari 2. Demandez à vos administrateurs la mise à jour si nécessaire.
- Les derniers navigateurs internet intègre une base de donnée SQL (en générale SQLite),
- Le nommage dans le code : français ? anglais ou franglais ? That is the question ?
- Le péril du typage faible : le Duck Typing,
- un retour d'expérience sur les système de gestion de configuration. Un article écrit par Martin Fowler qui résume les remarques sur les outils ClearCase, Subversion, ...
- Un article qui propose de faire une synthèse des patterns d'IHM : le MVC, le MVP et le MVVM. C'est quoi toutes ces différences ?
- Un article sur la programmation par aspect (AOP) et l'injection de dépendance (DI) : par l'auteur de la librairie javassit.
- Un résumé du modèle d'événement proposé par IBM pour SCA (Service Component Architecure) : modèle de composant orienté service (SOA) et orienté événement (EDA). Le deuxième article résume la terminologie et la forme en Java.
- Description du standard UUID (Universally Unique IDentifier), depuis wikipédia. C'est un standard qui propose une allocation d'identifier unique dans le temps (modulo 3600 ans, qui peut donc être persistant) et dans l'espace (toutes les machines en réseau) sans coordination centralisé.
- Le composeur pour JavaFX de NetBeans en version preview 2 avec l'intégration des Shapes, des Charts, ... Bientôt sur dans nos IHM,
- La suite sur le sujet du passage des argument d'opération et C# : la question du passage par valeur ou par référence d'objet reste posée : comment gère-t-on le multi-threading avec les qualifiers proposés ?
- Pour terminer, un Quiz sur la compilation d'une interface Java : quelles sont les lignes qui se compile et celle qui ne se compile pas ?
Google Will Stop Supporting Older Browsers
Google has announced they will stop supporting older and less secure browsers like IE6, Firefox 2.x, Chrome 3 or Safari 2 starting with Google Docs and Google Sites editor from March 1st, 2010.
Chrome 4 Now Supports the HTML 5 Web SQL Database API
Google has announced support for the HTML 5 Web SQL Database API, and others are likely to follow soon or have already started on support for this API. In the meantime, the completion of the specification is blocked because all the implementers involved have chosen to use SQLite as underlying database, and multiple independent implementations are required for standardization.
As part of HTML 5, the W3C organization is working on a draft of the Web SQL Database API, a specification which covers storing and accessing data through SQL. The SQL language dialect which is described in the documentation is that of SQLite 3.6.19. This API allows web pages to contain code that interacts with an embedded client database, which is useful for applications wanting to store data locally or for offline browsing.
Nommage en Anglais ou Francais ou Franglais
Au démarrage d'un projet et à des fins de qualité de développement l'équipe doit s'imposer des conventions et des bonnes pratiques à respecter tout au long de ce projet. Il existe de nombreuses bonnes pratiques admises. Par exemple pour les
nommages des variables et attributs on utilise le Camel Case, comme le suggère les conventions de nommage Sun.
The Perils of Duck Typing
The idea behind "Duck Typing", which has recently be made popular again by Ruby and other script languages, is to make the concept of types less restrictive.
Duck Typing is a big time saver when you write code, but is it worth it? Don't you pay this ease of development much later in the development cycle? Isn't there a risk that you might be shipping code that is broken?
The answer is obviously yes.
The proponents of Duck Typing are usually quick to point out that it should never happen if you write your tests correctly. This is a fair point, but we all know how hard it is to guarantee that your tests cover 100% of the functional aspects of your application.
Another danger in the Duck Typing approach is that it makes it really hard to see what the contract is between callers and callees.
Version Control Tools
If you spend time talking to software developers about tools, one of the biggest topics I hear about are version control tools. Once you've got to the point of using version control tools, and any competent developers does, then they become a big part of your life. Version tools are not just important for maintaining a history of a project, they are also the foundation for a team to collaborate. So it's no surprise that I hear frequent complaints about poor version control tools.
In our recent ThoughtWorks technology radar, we called out two items as version control tools that enterprises should be assessing for use: Subversion and Distributed Version Control Systems (DVCS). Here I want to expand on that, summarizing many discussions we've had internally about version control tools.
Model View Controller, Model View Presenter, and Model View ViewModel Design Patterns
This article will compare and contrast the MVC, MVP, and MVVM, and suggest which pattern to use based on your technology of choice and the problem that you are trying to solve.
Aspect-Oriented Programming Beyond Dependency Injection
Abstract. Dependency injection is a hot topic among industrial developers using component frameworks. This paper first mentions that dependency injection and aspect-oriented programming share the same goal, which is to reduce dependency among components for better reusability. However, existing aspect-oriented programming languages / frameworks, in particular, AspectJ, are not perfectly suitable for expressing inter-component dependency with a simple and straightforward representation. Their limited kinds of implicit construction of aspect instances (or implementations) cannot fully express inter-component dependency.
This paper points out this fact and proposes our aspect oriented programming system named GluonJ to address this problem.
GluonJ allows developers to explicitly construct and associate an aspect implementation with aspect targets.
SCA Extensions for Event Processing and Pub/Sub
A new SCA specification, Assembly Model Specification Extensions for Event Processing and Pub/Sub describes the Event Processing and Pub/Sub Extensions for the SCA Assembly Model.
Service Component Architecture (SCA, IBM) : Event Processing and Pub/Sub 2 Extensions
This document describes the Event Processing and Pub/Sub Extensions for the SCA Assembly Model, which deals with Event Processing, which is computing that performs operations on events, including creating, reading, transforming, and deleting events or event objects/representations.
- Event Processing components interact by creating event messages which are then distributed to other Event Processing components. An Event Processing component can, in addition, interact with other SCA components using SCA's regular service invocation mechanisms.
- Publication and Subscription (often shortened to Pub/Sub), which is a particular style of organizing the components which produce and consume events in which the producing components are decoupled from the consuming components. Components that are interested in consuming events specify their interest through a subscription rather than an interface. The same event may be received by multiple subscribers.
• event – a message sent to zero or more parties that contains information about a situation that has occurred
• producer - entity that creates events
• consumer - entity that receives events
• subscription - records a consumer's interest in receiving specific kinds of events from some location
• source – the place from which a consumer receives events
• target – the place to which a producer sends events
• publication – the sending of an event from a producer to some targets
• event type – every event instance can have an associated event type. Each event type is identified by a unique QName and has an associated shape and optionally constraints on the event instance
• channel –a mechanism to connect a set of producers with a set of consumers
• filter - a mechanism for refining the set of events received by a consumer. A filter may operate on business data within the event itself, or on metadata about the event.
Universally Unique Identifier
From Wikipedia, the free encyclopedia
A Universally Unique Identifier (UUID) is an identifier standard used in software construction, standardized by the Open Software Foundation (OSF) as part of the Distributed Computing Environment (DCE). The intent of UUIDs is to enable distributed systems to uniquely identify information without significant central coordination. Thus, anyone can create a UUID and use it to identify something with reasonable confidence that the identifier will never be unintentionally used by anyone for anything else. Information labeled with UUIDs can therefore be later combined into a single database without needing to resolve name conflicts. The most widespread use of this standard is in Microsoft's Globally Unique Identifiers (GUIDs). Other significant uses include Linux's ext2/ext3 filesystem, LUKS encrypted partitions, GNOME, KDE, and Mac OS X, all of which use implementations derived from the uuid library found in the e2fsprogs package.
JavaFX Composer New In Preview 2 :
- JavaFX Shapes
- Animations on States
- Improved Data Support
- JavaFX Effects
- Charts (experimental)
- New Samples
C# Passing Parameters
In C#, parameters can be passed either by value or by reference. Passing parameters by reference allows function members (methods, properties, indexers, operators, and constructors) to change the value of the parameters and have that change persist. To pass a parameter by reference, use the ref or out keyword. For simplicity, only the ref keyword is used in the examples of this topic. For information on the difference between ref and out, see ref, out, and Passing Arrays Using ref and out. This topic includes the following sections:
• Passing Value-Type Parameters
• Passing Reference-Type Parameters
Java Interface Rules
Let's start with a short Java question. Below you can see the interface Test'. Which lines in that interface will be rejected by the compiler?