jeudi, octobre 09, 2008

Mono 2.0

Un petit post rapide pour vous indiquez que Mono (plateforme .NET portable sous Linux notamment) vient de sortir sa version 2.0

http://www.silicon.fr/fr/news/2008/10/07/sortie_de_mono_2__le_clone_libre_de__net

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.

jeudi, juillet 31, 2008

Analyseur de contenu

Sur le forum de WebRankInfo, quelqu'un a proposé un petit outils que je trouve fort sympathique. Il en existe très certainement d'autres, mais comme c'est la première fois que j'en utilise un, j'en profite pour lui faire un peu de publicité.

Il s'agit d'un analyseur de contenu. En gros, ca permet de visualiser le nombre d'occurrence de chaque mot sur le site afin de vérifier si la pertinence des mots clés est correct.

Voici le résultat pour les mots clés apparents :


Voici le résultat pour l'analyse :



Et pour terminer, un petit récapitulatif des liens internes et leurs textes associés :


J'en profite également pour signaler que cette même personne a mis en service un système de capture d'écran de site

mercredi, juillet 16, 2008

Tutoriel installation vTiger


Comme dis dans un précédent post, je travaille sur un dossier concernant le CRM gratuit vTiger. L'objectif est de rendre disponible un CRM complet à moindre frais. Pour réaliser mon dossier, je me suis servi d'un hébergement Lycos (Website XS).


Ce dossier est consultable sur mon site concernant l'hébergement : dossier vTiger

Celui-ci n'est pas encore terminé, n'hésitez pas à me faire part de vos remarques.

mardi, juillet 08, 2008

Positionnement Google

Je viens de trouver un petit outils très intéressant afin de pouvoir visualiser son référencement "naturel" sur le moteur de recher google.

L'outils est très simple, vous saisissez votre URL, les mots clés ... et quelques secondes plus tard vous voyez la page et et la position où votre site apparait !

Voici le lien : http://www.sam-mag.com/default.aspx?id=68&mnu=68

mercredi, juillet 02, 2008

Générateur de site map

Après avoir lu quelques articles sur le référencement, j'ai lu à plusieurs reprises que pour faciliter, il était nécessaire d'avoir un site map

Voici un site que se charge de le faire en ligne, très pratique et rapide : http://www.xml-sitemaps.com/

Référencement des sites flash sur Google

Et oui, depuis bien longtemps, on lit que si l'on veut un site bien référencer, il ne faut pas faire de site en flash (ou si l'on en fait un, rajouter suffisamment d'html pour qu'il soit visible) car les moteurs de recherches ne savent pas lire Flash ... et bien ca y est, google sait le faire :
Indexation animations flash

mardi, juillet 01, 2008

CRM gratuit - vTiger

Après plusieurs tentative, j'ai enfin réussi à configurer vTiger sur un hébergement de type Lycos.

Il est assez intéressant de voir que l'on peut mettre à disposition de tous ces commerciaux un CRM sans trop d'effort et qui plus est gratuit! Le plus gros du travail est de le paramétrer (clients, fournisseurs, produits ...)

Si vous souhaitez avoir une description du produit en francais, cliquez-ici. Sinon pour le site officiel, c'est par ici

Pour ma part, bien que je n'ai pas encore testé complètement la solution, ses deux points forts sont le mode web et le plugin outlook qui permet de synchroniser contact, agenda et messages.

Je publierai prochainement un post dans lequel j'expliquerai l'ensemble des étapes à réaliser pour y parvenir ...

lundi, juin 30, 2008

Solutions d'hébergement - www.solutions-hebergement.fr

Lycos a mis en place un système d'affiliation qui consiste à promouvoir leurs solutions en échange de quoi, ils fournissent une commission non négligeable. Pour d'informations Affiliation Lycos

Pour ma part, j'ai choisi de promouvoir leurs offres via un site internet dans lequel on pourra retrouver toutes les informations pour réaliser son site internet et surtout sa boutique en ligne.

Pour l'instant, je n'ai pas encore terminé le site mais il est déjà publié. N'hésitez pas à me faire des retours : Créer son site ou sa boutique en ligne

samedi, mars 22, 2008

SharpDevelop 3.0 Beta 1

Ca y est la Beta 1 est sortie depuis le 19 février !

Pour ceux qui ne connaisse pas encore SharpDevelop, il s'agit d'un IDE pour la plateforme .NET OpenSource fonctionnant sous Windows (possibilité sous Linux via Mono mais non supporté). Cet IDE est basé sur un principe de plug-in ce qui le rend extensible facilement pour qui le veut.

La nouvelle version prend en charge le framework 3.5 et donc les nouvelles fonctionnalités qui en découle. Notamment, Daniel Grunwald a écrit un designer WPF pour lequel il recherche de bonnes âmes pour l'idée particulièrement pour le binding.

Pour plus d'information :
annonce de la sortie beta 1

Le site de sharpdevelop

vendredi, mars 14, 2008

Réplication SQL Server - RMO de SMO

Lorsque l'on réalise certains développements, nous sommes amenés à rencontrer les réplications SQL Server avec des contraintes de licences compte tenu des budgets disponibles.

J'ai rencontré cela en souhaitant mettre en place une réplication de fusion entre un sql server 2005 workgroup et un serveur sql express.

Le problème que l'on se rend compte très rapidement c'est que le sql server express ne dispose pas d'agent.
Alors, on commence à explorer d'autres pistes : la réplication transactionelle bidirectionnelle ! Chouette ! Ca fonctionne avec sql express après avoir paramétré msdtc convenablement! Seul contrainte à cela c'est qu'en cas de coupure de lien entre les deux serveurs, plus aucun enregistrements n'est réalisable ...
Retour arrière, il faut utiliser une réplication de fusion, de façon à pouvoir travailler en mode déconnecté (sur une GPAO ce n'est pas négligeable). Deux solutions, soit j'essaie de faire en sorte pour trouver le budget pour une seconde licence ... soit je me débrouille autrement pour faire un "agent".
Et c'est là qu'intervient RMO (Replication Management Object) de SMO (Sql Server Management Object).
Avec ces objets, il est possible de réaliser un pseudo agent grâce à une petite application c#.

Voici un petit bout de code qui permet :
1) de réaliser l'abonnement
2) de déclencher les réplications (reste à faire une tâche planifiée)


public class RMO
{
///
/// Launch a client merge replication (as a sql agent done)
///

/// Subscriber instance name
/// Publisher instance name
/// Publication name
/// Publication DB Name
/// Subscription DB Name
/// Indicate if it is necessary to create subscription
public static void MergePushReplic(string subscriberName, string publisherName, string publicationName, string publicationDbName, string subscriptionDbName, bool createSubscription)
{

// Create a connection to the Publisher.
ServerConnection connPub = new ServerConnection(publisherName);
ServerConnection connSub = new ServerConnection(subscriberName);
MergePublication publication;
MergePullSubscription subscription;

try
{

connPub.Connect();
connSub.Connect();


publication = new MergePublication(publicationName, publicationDbName, connPub);

if (publication.LoadProperties())
{
if ((publication.Attributes & PublicationAttributes.AllowPull) == 0)
{
publication.Attributes |= PublicationAttributes.AllowPull;
}


subscription = new MergePullSubscription(subscriptionDbName, publisherName, publicationDbName, publicationName, connSub);
subscription.SynchronizationAgentProcessSecurity.Login = @"";
subscription.SynchronizationAgentProcessSecurity.Password = "";
subscription.CreateSyncAgentByDefault = true;


if (createSubscription)
subscription.Create();

Boolean registered = false;

// Verify that the subscription is not already registered.
foreach (MergeSubscription existing
in publication.EnumSubscriptions())
{
if (existing.SubscriberName == subscriberName
&& existing.SubscriptionDBName == subscriptionDbName
&& existing.SubscriptionType == SubscriptionOption.Pull)
{
registered = true;
}
}
/*
if (!registered)
{
// Register the local subscription with the Publisher.
publication.MakePullSubscriptionWellKnown(
subscriberName, subscriptionDbName,
SubscriptionSyncType.None,
MergeSubscriberType.Local, 0);
}
*/
// Check that we have enough metadata to start the agent.
if (subscription.SubscriberSecurity != null)
{
subscription.SynchronizationAgent.PublisherSecurityMode = SecurityMode.Integrated;
subscription.SynchronizationAgent.DistributorSecurityMode = SecurityMode.Integrated;
subscription.SynchronizationAgent.OutputVerboseLevel = 1;
subscription.SynchronizationAgent.Output = "c:\\replic.log";
// Synchronously start the Merge Agent for the subscription.
subscription.SynchronizationAgent.Synchronize();

}
else
{
throw new ApplicationException("There is insufficent metadata to " +
"synchronize the subscription. Recreate the subscription with " +
"the agent job or supply the required agent properties at run time.");
}
}
else
{
// Do something here if the push subscription does not exist.
throw new ApplicationException(String.Format(
"The subscription to '{0}' does not exist on {1}",
publicationName, subscriberName));
}
}
catch (Exception ex)
{
// Implement appropriate error handling here.
throw new ApplicationException("The subscription could not be synchronized.", ex);

}
finally
{
connPub.Disconnect();
connSub.Disconnect();
}


}

}


En attendant, voici un petit lien fort utile :
http://msdn2.microsoft.com/en-us/library/microsoft.sqlserver.replication.aspx

samedi, mars 08, 2008

SharpDevelop

Pour ceux dont les limitations des versions Express de Visual Studio sont trop contraigantes et pour ceux qui souhaitent pouvoir modeler un IDE comme bon leur semble voici un projet OpenSource intéressant. Il s'agit de SharpDevelop qui est un IDE en constante évolution. La dernière release est la 2.2 qui supporte le Framework .NET 3.0, la version 3.0 est en cours de développement et celle-ci supporte le Framework .NET 3.5, bien que cette version est disponible, elle n'est pas encore stable.

Un gros avantage de cet IDE est l'intégration de nombreux outils OpenSource très souvent utilisés : NUnit, SVN, ...

Je pense que c'est très intéressant de suivre un tel projet et j'aimerai pouvoir consacrer un peu de temps à celui-ci.

Vous retrouverez tout ce dont vous avez besoin sur http://www.sharpdevelop.net/OpenSource/SD/Default.aspx