vendredi, août 22, 2008

Sharpdevelop 3.0 Beta 2

Une nouvelle béta est disponible pour SharpDevelop 3.0

Vous retrouverez toutes les informations sur la beta ici

Dans les nouveautés :
1 - Possibilité d'éxécuter SharpDevelop sur sa clé USB
2 - Un nouveau modele pour l'affectation de propriétés via les ressources
3 - L'intégration de StyleCop (analyseur de code qui génère des warning en fonction des règles spécifiées)
4 - L'intégration de plugin Reflector
...

jeudi, août 14, 2008

SP1 .NET 3.5 et Visual Studio 2008

Un SP1 vient de sortir pour le framework .NET 3.5 et Visual Studio 2008. oici le détails des évolutions du framework:

ASP.NET Dynamic Data, qui fournit une infrastructure élaborée permettant un développement piloté par les données rapide sans écriture de code et un nouvel ajout à ASP.NET AJAX qui assure la prise en charge de la gestion de l'historique de navigation (prise en charge du bouton Précédent). Pour plus d'informations, consultez Nouveautés dans ASP.NET et le développement Web.

Améliorations principales apportées au Common Language Runtime, dont notamment une meilleure disposition des images natives .NET Framework, le choix de la vérification des noms forts pour les assemblys d'un niveau de confiance suffisant, des performances de démarrage d'application améliorées, du code mieux généré qui améliore le temps d'exécution des applications de bout en bout et le choix de code managé à exécuter en mode de randomisation du format d'espace d'adresse (ASLR, Address Space Layout Randomization) s'il est pris en charge par le système d'exploitation. En outre, les applications managées qui sont ouvertes à partir de partages réseau ont le même comportement que les applications natives lorsqu'elles sont exécutées avec un niveau de confiance totale.

L'amélioration des performances apportée à Windows Presentation Foundation, notamment un démarrage plus rapide et de meilleures performances pour les effets Bitmap. Une meilleure prise en charge des applications métier, la prise en charge de l'écran de démarrage natif, la prise en charge du nuanceur de pixels DirectX et le nouveau contrôle WebBrowser constituent des fonctionnalités supplémentaires de WPF.

Les éditeurs d'application ClickOnce peuvent décider d'opter pour la signature et le hachage appropriés de leurs scénarios, les développeurs peuvent installer par programme des applications ClickOnce qui affichent une personnalisation particulière, et les boîtes de dialogue d'erreur ClickOnce prennent en charge les liens vers des sites d'assistance technique spécifiques aux applications sur le Web.

Entity Framework est une évolution de l'ensemble de technologies d'accès aux données ADO.NET existantes. Il permet aux développeurs de programmer en se servant de bases de données relationnelles en termes de modèles de domaine spécifiques aux applications plutôt que de modèles de base de données sous-jacente. Pour plus d'informations, consultez Mise en route d'Entity Framework. Entity Framework introduit des fonctionnalités supplémentaires, notamment la prise en charge de nouveaux types SQL Server 2008, la sérialisation de graphiques par défaut d'entités et la source de données d'entité. Dans cette version, Entity Framework prend en charge les nouvelles fonctionnalités de flux de fichiers et de date dans SQL Server 2008. Le travail de la sérialisation des graphiques aide les développeurs souhaitant générer des services Windows Communication Foundation (WCF) qui modélisent des graphes complets en tant que contrats de données. La source de données d'entité fournit une expérience traditionnelle des sources de données pour les générateurs d'applications ASP.NET qui veulent utiliser Entity Framework.

LINQ to SQL inclut une nouvelle prise en charge des nouvelles fonctionnalités de flux de fichiers et de date dans SQL Server 2008.

L'infrastructure des services de données ADO.NET se compose d'une combinaison de modèles et de bibliothèques, ce qui permet d'exposer les données sous la forme d'un service de données REST (Representational State Transfer) flexible qui peut être utilisé par des clients Web sur un réseau d'entreprise ou sur Internet. Cette infrastructure effectue la création de services de données sur n'importe quelle source de données. Un modèle de vue conceptuelle du schéma de stockage sous-jacent peut être facilement exposé via une forte intégration à ADO.NET Entity Framework. Les services créés à l'aide de l'infrastructure des services de données ADO.NET, ainsi que les services Windows Live (dev.live.com) compatibles, sont facilement accessibles à partir de n'importe quelle plateforme. Pour les applications clientes s'exécutant sur des plateformes Microsoft, un jeu de bibliothèques clientes est fourni pour assurer l'interaction avec des services de données simples. Par exemple, les clients .NET Framework peuvent utiliser LINQ pour interroger des services de données et une couche objet .NET Framework simple afin de mettre à jour des données dans le service.

Windows Communication Foundation simplifie désormais l'utilisation du sérialiseur DataContract en fournissant une meilleure prise en charge de l'interopérabilité, en améliorant le débogage dans les scénarios de confiance partielle et en étendant la prise en charge du protocole de syndication pour une utilisation plus large dans les applications Web 2.0.

Le fournisseur de données .NET Framework pour SQL Server (SqlClient) ajoute une nouvelle prise en charge des fonctionnalités de flux de fichiers et de colonnes fragmentées dans SQL Server 2008.


Source : Microsoft

mardi, août 12, 2008

Convention pour de nommage et bonnes pratiques C#

J'ai trouvé ces quelques liens sur un forum, cela peut s'avérer intéressant. Cela relate les bonnes pratiques lorsque l'on développe en C#.

Par MSDN ici et
et pour terminer celui-ci de Lance's Whiteboard

vendredi, août 08, 2008

Référencer son entreprise sur Google Map


Depuis quelques temps déjà quand on tape "restaurant arras" ou encore "une société ville", on obtient en premier lieu un résultat issue de Google Map faisant apparaître le nom de la société suivi des ses coordonnées : adresse, téléphone, site et bien sur le plan.

Pour cela, il est possible de le faire s'inscrire via ce lien : Inscrire sa société sur google map

mercredi, août 06, 2008

Gogole Insights for search

Google a publié un petit outils très intéressant que j'ai connu grâce à WebRankInfo.
Celui-ci permet de visualiser les recherches effectués sur un ou plusieurs mots clés, sur une période et en filtrant les résultats par lieux ... quelque chose de très intéressant :-)
Google Insight for search par WRI

lundi, août 04, 2008

System.Math.Round les arrondis en .NET

On me demande de réaliser une fonction d'arrondi dites au 4/5eme qui dit :
si le chiffre après l'arrondi est inférieur ou égal à quatre alors on garde la valeur sinon on incrémente de un.
Ce qui donne pour un arrondi à 2 décimales :
1.234 ==> 1.23
1.235 ==> 1.24
1.236 ==> 1.24
...

Pour moi c'est la fonction arrondi par défaut ... donc, je me dit pourquoi pas utiliser Decimal.Round(1.235m,2) et vérifier le résultat.
Surprise, le résultat n'est pas celui attendu ! Cela me retourne : 1.23, car .NET, la fonction arrondie utilisée est la méthode du chiffre paire le plus près et non pas la plus proche ! Voici un petit article sur les arrondis qui m'a aidé a comprendre : arrondi sur wikipédia

Donc pour utiliser l'arrondi au plus près, il faut utiliser la fonction suivante :
Decimal.Round(1.235m, 2,MidpointRounding.AwayFromZero)

vendredi, août 01, 2008

Synthétiseur vocal en C# : SAPI 5.3

Si vous souhaitez utiliser la synthese vocal dans l'une de vos applications C# en .NET 3.0, je vous conseil de regarder le namespace System.Speech qui permet d'utiliser SAPI (Microsoft Speech API), en ce qui concerne les version sous Vista la 5.3 est disponible. Par contre, pour XP, il faut voir vers la 5.1 :
SAPI 5.1 SDK téléchargement

Optionnel : Pour obtenir les voix en francais, voici un article qui donne une solution :
Synthese vocal en francais

Je n'ai pas regardé, mais peut être que l'on peut passer l'installation du SDK ... car il me semble que les voix sont installés par défaut. Voir dans Panneau de configuration, Voix.

Maintenant que nous avons notre SAPI d'installer, nous allons créer un nouveau projet de type application .NET 3.0 (on est pas obligé de faire du XAML, mais c'est vous qui voyez).

L'objectif de cette petite application et de faire parler votre ordinateur. Avec cette meme librairie, il est possible de faire de la reconnaissance vocale mais je n'ai pas encore abordé le sujet.

1er étape : référencer System.Speech qui est une Dll de .NET 3.0
2eme étape : faire parler au synthétiseur une phrase toute simple
Contrairement a ce que l'on pourrait penser, c'est tout simple !! :)
Voici les quelques lignes de code à ajouter :
System.Speech.Synthesis.SpeechSynthesizer synthetizer = = new System.Speech.Synthesis.SpeechSynthesizer();
//En mode asynchrone
synthetizer.SpeakAsync("Bonjour");
//En mode synchrone
// synthetizer.Speak("Bonjour");


Ensuite, on peut réaliser des textes un peu plus élaborer en utilisant le PromptBuilder qui permet de structurer son texte. Attention, cette fois-ci, le synthetiseur prend la voix correspondant à la culture du système et non plus la voix par défaut. C'est la raison pour laquelle, j'ai précisé la culture dans l'exemple suivant, qui donne la date et l'heure du système :
System.Speech.Synthesis.PromptBuilder pBuilder = new System.Speech.Synthesis.PromptBuilder(System.Globalization.CultureInfo.GetCultureInfo("fr-FR")) ;
pBuilder.AppendText("Nous sommes le :");
pBuilder.AppendTextWithHint(DateTime.Now.ToString("dd/MM/yyyy"), System.Speech.Synthesis.SayAs.Date);
pBuilder.AppendBreak();
pBuilder.AppendText("Il est : ");
pBuilder.AppendTextWithHint(DateTime.Now.ToString("HH:mm:ss"), System.Speech.Synthesis.SayAs.Time24);
synthetizer.SpeakAsync(pBuilder);


.AppendText(string text) réalise la même chose que ce que nous avons utilisé tout à l'heure.
.AppendTextWithHint(string text, SayAs sayAs) lit le texte en fonction du type de donné dont il s'agit par exemple : .AppendTextWithHint("01/01/2008",SayAs.Date) sera lu comme "1er Aout 2008"
.AppendBreak() comme son nom l'indique, cela permet de réaliser une pause entre les mots. Il est possible de préciser le temps de la pause avec un TimeSpan.

Voilà pour un premier test. J'espère pouvoir faire des tests avec la reconnaissance vocal et vous tenir informer.