vendredi 23 novembre 2007

MIN_ACTIVE_ROWVERSION

Depuis l'arrivée du Service Pack 2 de Sql Serveur 2005, est apparue une nouvelle fonction appellée MIN_ACTIVE_ROWVERSION()
Cette fonction permet de renvoyer la prochaine valeur de type Timestamp à insérer dans la base de donnée.En comparaison avec ce qui se faisait avant le SP2, MIN_ACTIVE_ROWVERSION() correspond à la valeur renvoyée par @@DBTS + 1.
Note : Nous allons travailler avec un type timestamp. Sachez que ce type peut être aussi appellée rowversion. D'ailleurs les deux écritures sql sont correctes.
Prenons un exemple : Voici une table contenant une colonne de type timestamp

Create table Person.ClientWithRowVersion (version ROWVERSION)Nous allons insérer une nouvelle ligne dans cette table, puis faire une Select pour récupérer le résultat :
Insert Into Person.ClientWithRowVersion Values (DEFAULT)
Select * from Person.ClientWithRowVersionLe résultat est :
(1 row(s) affected) version
---------------------------
0x00000000000007D3Maintenant effectuons un test sur la valeur renvoyée par MIN_ACTIVE_ROWVERSION() et par @@DBTS
print 'MIN_ACTIVE_ROWVERSION : '
print MIN_ACTIVE_ROWVERSION()
print '@@DBTS'
print @@DBTS
------------------------------------------------------------------
MIN_ACTIVE_ROWVERSION :
0x00000000000007D4
@@DBTS
0x00000000000007D3Le résultat attendu est bien correct, MIN_ACTIVE_ROWVERSION() est bien la prochaine valeur insérée et @@DBTS la valeur en cours.
La où cela devient intéressant (et où l'on comprend l'intéret de cette nouvelle fonction) c'est lors de l'ajout d'une transaction dans notre exemple.Nous allons récupérer les valeurs PENDANT la transaction :
BEGIN TRAN

INSERT INTO Person.ClientWithRowVersion VALUES (DEFAULT)
SELECT * FROM Person.ClientWithRowVersion
GO

PRINT 'MIN_ACTIVE_ROWVERSION'
PRINT MIN_ACTIVE_ROWVERSION()
PRINT 'DBTS'
PRINT @@DBTS
GO

COMMIT

---------------------------------------
0x00000000000007D5

(1 row(s) affected)

MIN_ACTIVE_ROWVERSION
0x00000000000007D5
DBTS
0x00000000000007D5Que constatons nous ? Que la valeur de MIN_ACTIVE_ROWVERSION n'a pas été encore mise à jour, alors que celle de DBTS, si .
Là où cette implémentation est judicieuse, c'est lors de l'utilisation de cette fonction lors d'une synchronisation.L'un des principes lors d'une synchronisation, c'est la récupération des enregistrements de la base de données Source.Grâce à l'utilisation de MIN_ACTIVE_ROWVERSION() vous êtes sûr de ne récupérer que les enregistrements VALIDES par la base de données, et non des enregistrements en cours de validation et donc potentiellement incorrects...
Par Sébastien Pertus publié le 23/11/2007 à 11:00

Appels asynchrones en ADO.NET 2.0

ADO.NET V2 apporte une simplification appréciable pour exécuter de manière asynchrone des requêtes en BD pour l'espace de nom SqlClient.

L'exemple

Un peu à la façon des proxies Web Services générés automatiquement par Visual Studio 2003 lors de leur référencement, la classe « System.Data.SqlClient.SqlCommand » propose de nouvelles méthodes « Begin* » et « End* » permettant d'exécuter de manière asynchrone des requêtes sur une base de données SQL Server. Par exemple :
BeginExecuteNonQuery : le pendant de ExecuteNonQuery pour les requêtes actions asynchrones.
BeginExecuteReader : le pendant de ExecuteReader pour la récupération d'un jeu de données en asynchrone.Voici donc les grandes étapes pour récupérer un jeu de données de manière asynchrone sur SQL Server :
Etape 1 : création d'un délégué qui permettra de définir une signature afin de lier un IDataReader à une DataGridView : // Delegue definissant la mise jour la grille lors du callback
public delegate void ProcessDelegate(IDataReader dr);
Etape 2 : création de la méthode exécutée en fin d'appel asynchrone et qui utilisera le délégué précédent pour lier le IDataReader à la DataGridView. Vous noterez l'utilisation de la propriété « InvokeRequired » afin de vérifier si le handle du contrôle a été créé sur un autre Thread ou pas (utile pour la liaison puisque cette dernière ne peut se faire que sur le même Thread que celui qui a créé le contrôle) :
// Methode executee en callback

private void ExecuteOnCallBack(IAsyncResult result)
{
// Recuperation de la commande initiale passee en parametre lors du BeginExecuteReader
SqlCommand cmd = (SqlCommand)result.AsyncState;
SqlDataReader reader = cmd.EndExecuteReader(result);
// Verifie si le handle du controle a ete cree sur un autre Thread ou pas.
if (dataGridView1.InvokeRequired)
dataGridView1.Invoke(new ProcessDelegate(Process), new object[] { reader });
else
Process(reader);
}
Etape 3 : création de la méthode permettant de lier le IDataReader à la DataGridView selon le modèle défini par le délégué précédent : // Methode executee pour realiser la liaison de donnees

public void Process(IDataReader dr)
{
BindingSource source = new BindingSource();
source.DataSource = dr;
dataGridView1.DataSource = source;
dr.Close();
}
Etape 4 : Codage de l'appel asynchrone. Vous noterez la modification de la chaîne de connexion : « async=true » : private void Form1_Load(object sender, EventArgs e)
{
// La chaine de connexion doit etre positionnee dans un fichier de configuration. En dur dans le code, c'est Mal !
string connectionString = "data source=(local);initial catalog=Northwind;user id=sa;password=XxXx;async=true";
SqlConnection cn = new SqlConnection(connectionString);
cn.Open();
SqlCommand cmd = cn.CreateCommand();
cmd.CommandText = "sSelectOrdersDetail";
cmd.CommandType = CommandType.StoredProcedure;
// Appel asynchrone
IAsyncResult iar
= cmd.BeginExecuteReader
(
new AsyncCallback(ExecuteOnCallBack),
cmd,
CommandBehavior.CloseConnection
);
}
L'exemple que vous trouverez en attache permet d'exécuter une procédure stockée sur la base exemple Northwind sur SQL Server 2000. Vous noterez l'utilisation dur « WAITFOR » pour simuler un long traitement : CREATE PROCEDURE dbo.sSelectOrdersDetail
(
@OrderID INT = NULL
)
AS
BEGIN
WAITFOR DELAY '000:00:10'
SELECT [Order Details].*
FROM [Order Details]
WHERE ( (@OrderID IS NULL) OR (OrderID = @OrderID) )
END

Cet article a été réalisé sur les versions suivantes :
Framework .NET version 2.0.50215
Visual Studio 2005 version 8.0.50215.44 (beta2.050215-4400)
Par Frédéric Colin publié le 25/09/2005 à 20:01

mardi 6 novembre 2007

L'actualité des moteurs de recherche

Depuis près d'un an maintenant, Google intégre des sitelinks sous les sites de fort trustrank. Un sitelink étant constitué de liens internes de votre site, visibles en tapant uniquement le nom de votre domaine sans son extension dans une recherche sur Google.
En d'autres termes, si vous obtenez un backlink sur un site possédant un sitelink, ceci sera très bénéfique pour augmenter votre propre trustrank (indice de confiance Google).
A noter que ceci n'a rien à voir avec votre Pagerank, notion qui semble devenir de plus en plus obsolète malgré une mise à jour massive et souvent à la baisse de ceux-ci ces derniers jours.
Google propose maintenant, dans ses " Webmaster Tools " (rubrique " Links > Sitelinks ") une rubrique où les liens actuels sont affichés. Il est alors possible d'en ajouter d'autres ou de modifier ceux existant.

Microsoft prend des parts dans Facebook

Facebook, le nouveau réseau social en vogue qui fait parler de lui, vient d'être valorisé à 15 milliards de dollars grâce à Microsoft qui vient de prendre une participation de 1,6% de Facebook pour la modique somme de 240M$.
Facebook avait refusé précédemment 1M$ de Yahoo pour son rachat. En d'autres termes, cette petite participation empêche les autres acteurs intéressés par Facebook de rentrer facilement dans son capital (je parle de Yahoo et de Google), Microsoft obtenant ainsi une exclusivité publicitaire sur Facebook jusqu'en 2011.

Soirée Ref-Party 3ème édition

Le 11 Décembre 2007, une 3eme soirée Ref-Party aura lieu dans un espace exceptionnel de 700m2 pour y accueillir plus de 500 personnes. Nous y accueillerons le monde du référencement et de la publicité en ligne.
Les inscriptions seront disponibles début Novembre. Cette 3ème édition sera organisée par David BERDAH et Sébastien POULET-MATHIS.


Source :moteurzine.com

lundi 29 octobre 2007

F#: la programmation fonctionnelle orientée objet bientôt dans Visual Studio

Microsoft planche sur un langage de programmation fonctionnelle depuis quelques années déjà. Baptisé F#, il devrait être proposé dans une prochaine version de Visual Studio. C'est ce qu'a révélé le 24 octobre le responsable des développements Visual Studio chez Microsoft, S. 'Soma' Somasegar (dixit The Register). Ce langage s'adosse à Objective CAML. Une implémentation orientée objets du langage de programmation fonctionnel CAML élaboré par l'INRIA depuis 1985. Microsoft entend faire du F# un langage adapté aux développements complexes, dans le domaine l'informatique financière, scientifique et technique.

source : http://www.journaldunet.com/

vendredi 26 octobre 2007

C# SSII Spécialiste DotNet

Microsoft résume C# ainsi:
"C# est un langage orienté objet élégant et de type sécurisé qui permet aux développeurs de générer une large gamme d'applications sécurisées et fiables qui s'exécutent sur le .NET Framework. Vous pouvez utiliser C# pour créer, entre autres, des applications clientes Windows traditionnelles, des services Web XML, des composants distribués, des applications client-serveur et des applications de base de données. Microsoft Visual C# fournit un éditeur de code avancé et des concepteurs d'interfaces utilisateur pratiques, il intègre un débogueur et de nombreux autres outils qui accélèrent le développement des applications avec la version 2.0 du langage C# et le .NET Framework."Le langage et la plate forme de développement permet donc de développer:
- Des applications dite Web: intranet, extranet et internet. la caractéristique principale de ces applications reside dans le fait que l'on y accède par un navigateur web classique. Dans l'environnement de développement dotNet , il s'agit de développement informatique dit 'WebForm'.
- Des applications Winform: Ces applications, souvent client/serveur, sont moins indépendante du poste de l'utilisateur (Il faut souvent les installer) mais bénéficient de possibilités plus vastes en terme d'ergonomie et donc de richesse/productivitéCe qu'il faut aussi retenir de C#, c'est qu'il a été concu pour être orienté objet . Il s'appuie donc sur les concepts d'encapsulation, d'héritage et de polymorphisme, de classes...Fondement de la révolution initiée par C++ puis java, la notion d'objet, si elle est bien utilisée, permet de concevoir des applications plus robustes,communicantes et dont les 'objets' informatiques ainsi créés sont réutilisables. Les ingénieurs ont étudié depuis déjà plusieurs années ces concepts lors de leur formation.

mercredi 24 octobre 2007

Le web-marketing : Définition d'un projet de site Internet (étapes 1 à 3)

L’une des étapes fondamentales de l’élaboration d’un site web est la définition du projet en lui-même, permettant l’identification du périmètre initial du projet et l’établissement de l’organisation adéquate et des moyens nécessaires, tant humains, techniques que budgétaires, pour sa mise en application. Beaucoup de projets de création de sites internet échouent en raison du manque ou de l’absence de cadrage initial.

Cette étape est articulée autour de 5 tâches distinctes : l’étude des besoins et des attentes (audit préalable), la rédaction du rapport de synthèse, la rédaction du cahier des charges fonctionnel, l’élaboration du plan projet et le plan de maintenance du site. Nous ne rentrerons pas en détail dans toutes ces tâches, mais voici quelques conseils qui sauront vous orienter pour les 3 premières étapes.

1ère étape : Auditer votre client (ou vous-même)

Le but de cet audit préalable est de déterminer l’objectif primaire du projet et les objectifs secondaires, la ou les cibles, les objectifs liés à la perception de la marque, la nature du contenu du site, les spécificités techniques et la stratégie de communication. Il faut donc collecter le maximum d’informations lors de cette étape afin de pouvoir réaliser une étude approfondie du projet (faisabilité, étude de marché, de la concurrence) et conduire à l’élaboration d’un outil maximisé (le site) répondant efficacement à vos besoins et à ceux de votre cible.

Voici un modèle général de questionnaire :

1)Informations générales

- Nom du projet
- URL actuelle ou URL souhaitée
- Contacts pour le projet (nom, email, téléphone)
- Échéance de lancement du site
- Les facteurs externes pouvant influer sur l’échéancier

2)Pourquoi ?

- Quel est l’objectif que vous souhaitez atteindre avec ce projet (quelle problématique d’entreprise souhaitez-vous résoudre au travers de votre site web) ?

3)Pour qui ?

- Qui est votre cible ? Décrivez votre cible (CSP, usage d’Internet...)

4)Valeur

- Pourquoi votre cible aurait-elle besoin de vous ? Quel est son intérêt ?
- Qu’offrez-vous de mieux que votre concurrence ?
- Comment sont perçus vos produits/services par votre cible ?
- Comment votre cible utilisera-t-elle votre site ? Quels sont ses objectifs (ceux de la cible)

5)Perception

- Listez des adjectifs sur la manière dont vous souhaitez que votre cible perçoive votre nouveau site
- Qu’y a-t-il de différent par rapport à la perception actuelle de votre entreprise (ou ancien site web)
- Listez des sites web que vous aimez. Qu’aimez-vous dans ces sites ?

6)Le contenu

- Possédez-vous un contenu existant à fournir pour votre site ou est-ce un nouveau contenu ? Qui rédigera le nouveau contenu ?
- Quels sont les visuels dont nous devrons nous servir ? Existent-ils ou devrons-nous les créer (logos, photos, charte graphique...) ?

7)Technologie

- Quels types de technologies souhaitez-vous mettre en place pour votre site (Flash, AJAX...). Si tel est le cas, expliquez comment cela améliorera l’expérience des utilisateurs sur votre site.
- Aurez-vous besoin de fonctionnalités liées à une base de données (CMS pour mettre à jour par votre propre équipe certaines parties de votre site, personnalisation des connexions, espace privé...) ?
- Aurez-vous besoin de transactions sécurisées (dans le cadre d’un e-commerce) ?
- Aurez-vous besoin d’autres fonctionnalités de programmation, comme une fonction de recherche par exemple ?

8)Marketing et communication

- Comment souhaitez-vous que votre cible vous trouve ? Quels leviers initieront une visite (backlinks, incentive, résultats organiques, liens sponsorisés...) ? Si vous avez déjà un site web, comment communiquez-vous votre URL online et offline ?
- Avez-vous déjà une idée sur la stratégie marketing que vous souhaitez adopter pour promouvoir votre site ? Si oui, pouvez-vous nous la décrire ?

9)Mises à jour

- Comment allez-vous planifier la conservation du contenu actuel de votre site et sa mise à jour (dans le cas d’un site web existant) ?
- A quelle fréquence le contenu doit-il être mis à jour ?
- Qui est responsable de la mise à jour et de la rédaction des contenus ?
- Quel logiciel allez-vous utiliser pour vos mises à jour ?
- Notes et commentaires additionnels

10)Budget

- Quel est l’enveloppe budgétaire globale allouée au projet ?
- Comment est réparti le budget dans les différents postes de travail (audit, conception, réalisation, marketing & communication...)

2ème étape : Rédiger le rapport de synthèse

En vous appuyant sur les informations fournies lors de l’audit, rédigez une synthèse pour définir noir sur blanc les objectifs du projet, le profil de la cible, la perception de la cible, le message principal à délivrer et l’avantage compétitif. Voici une trame de rédaction :

1)Sommaire du projet

- Brève description du projet
- Objectifs et échéance de lancement
- Échéance estimée pour atteindre l’objectif commercial

2)Profil de la cible

- Profil de la cible (CSP, niveau d’usage d’Internet...)
- Usage général d’Internet par la cible
- Les besoins et les principaux centres d’intérêt de la cible

3)Perception de la cible

- Comment votre cible vous perçoit ?
- Comment souhaitez-vous que la cible vous perçoive ?
- Comment le nouveau site web permettra d’accéder à cette nouvelle perception ?
- Adjectifs caractérisant le nouveau site

4)Message

- Quel est le message principal à transmettre à la cible ?
- Comment sera transmis ce message ?

5)Avantage compétitif

- Quelles sont les différences avec la concurrence ?
- Quels sont les atouts du site web actuel ?

3ème étape : Le cahier des charges fonctionnel

A l’aide de l’audit préalable, un document exprimant les besoins fonctionnels du site et les différentes tâches que l’internaute aura à accomplir sur le futur site, afin que l’équipe technique du site sache ce qu’elle a à développer et surtout, comment elle doit le développer. Il est donc nécessaire de rechercher, caractériser et hiérarchiser chaque fonctionnalité du site. Ensuite, pour chaque fonctionnalité, une fiche technique sera rédigée comportant :

- L’intitulé
- L’objectif
- Une description précise
- Les critères d’appréciation de la réalisation
- La priorité d’élaboration

Source: moteurzine.com


mardi 23 octobre 2007

15 extensions de sécurité pour Firefox

Firefox de Mozilla
© Mozilla

Chiffrement, alertes de sécurité, définition de mots de passe, protection contre le phishing, le pharming, le spam, ou encore les keyloggers : 15 extensions simples d'utilisation pour Firefox.

Souvent mis en valeur pour sa sécurité, Firefox peut se caparaçonner plus encore grâce à l'ajout d'extensions utilisables directement depuis le navigateur. Disponibles depuis le site de Mozilla, en français ou en anglais, elles s'intègrent aisément pour sécuriser la navigation.

NoScript, Get jetable mail, SCM, PhishTank SiteChecker, Gmail S/MIME, KeyScrambler Personal, SafeDownload, et de nombreuses autres.