Lorsqu’on met en place un site SharePoint MOSS 2007 basé sur le modèle de publishing on obtient un site de base avec deux menus à plusieurs niveaux :

Ainsi un site vide avec peu de niveaux de profondeur n’aura pas de grand soucis lors de l’affichage de ces deux menus.
En revanche, lorsque la structure des données commence à devenir conséquente :
- Plusieurs niveaux hiérarchiques (Départements, Services, Unités, Localités, …)
- Plusieurs pages par niveaux
Ces deux menus commencent à devenir conséquent.
Imaginons par exemple une structure simple de hiérarchisation :
- 4 niveaux
- 6 items par niveaux
On obtient un arbre sous la forme :
- Niveau 0
- Niveau 1 - 1
- Niveau 2 - 1
- Niveau 3 - 1
- Niveau 4 - 1
- Niveau 4 – 1
- …
Le calcul du nombre d’items est donc :
- 6 * 6 * 6 * 6 = 1296 items
Cela devient rapidement un nombre conséquent, qu’il faut maintenant rapprocher avec le volume pris dans le fichier HTML pour chaque Item, car cela ne vient pas que d’un ensemble d’UL et de LI comme le pensent souvent des designer HTML.
En effet, chaque Item possède dans le rendu HTML :
- Sa définition propre de type tableau
- <td style="white-space:nowrap;"><a class="zz1_GlobalNav_1 topNavItem zz1_GlobalNav_3" href="http://blogs.developpeur.org/xxxxxxx/Pages/default.aspx" style="border-style:none;font-size:1em;">MyItem</a></td>
- La conservation de son état de base dans le ViewState
De ce fait, si on fait un calcul “à la louche”, en considérant que chaque Item prendra 0.5KB (peu importe la valeur), il suffit de faire cette simple multiplication pour comprendre l’importance de la profondeur à définir.
Si on veut afficher les 4 niveaux dans le menu horizontal, le poids sera donc :
- 6 * 6 * 6 * 6 * 0.5 = 648 KB
Ce qui ne tient pas compte du menu de gauche (vertical).
Si on réduit simplement d’un cran cette profondeur d’affichage, le calcul sera donc
Comment effectuer cette modification ?
Pour définir le niveau de profondeur des menus (verticaux ou horizontaux), il faut, comme pour la précédente astuce du ViewState, éditer la MasterPage et chercher l’objet ASPNET “SharePoint:AspMenu”.
On trouve dans cet objet un paramètre :
- MaximumDynamicDisplayLevels
Celui-ci correspond au nombre de niveaux sous le niveau latéral de base. Ainsi pour afficher les 4 niveaux précités, cette valeur sera assignée à 3 et pour redescendre à 3 niveaux, on choisira 2.
Exemple avec un cas concrèt
Nous allons prendre une page de contenu light avec l’affichage à 4 niveaux

On obtient dans cet exemple, un poids du fichier HTML chargé par l’utilisateur de plus de 1.800KB :

Si on réduit ce niveau d’un cran (donc 3 niveaux affichés), en changeant donc uniquement la valeur “MaximumDynamicDisplayLevels” du ASPMenu horizontal de 3 vers 2 :

On obtient alors un poids du rendu HTML de moins de 600KB :

Cela revient donc dans notre exemple à diviser par 3 la taille de la page HTML qui sera transféré à chaque utilisateur lors du chargement de celle-ci.
Conclusion
Même s’il est tentant de penser que l’affichage de tous ces niveaux de menu va rendre service aux utilisateurs, dites-vous qu’au dessus de 2 niveaux, les utilisateurs ne savent plus où cliquer. Quand on ajoute trop de dynamisme, le rapport entre le poids occupé, le temps de chargement et l’utilisation est à étudier.
Pensez toujours que vous n’êtes pas l’utilisateur standard du site puisque vous le concevez. L’utilisateur basique doit pouvoir comprendre simplement et rapidement comment trouver l’information qu’il veut sans avoir à chercher 3 Heures.
Romelard Fabrice [MVP]
Toujours dans la suite des articles sur l’optimisation des performances de sites basés sous Microsoft Office SharePoint Server 2007, voilà une des fonctionnalités intéressantes :
Cette fonctionnalité est disponible uniquement pour une ferme basée sur MOSS, en effet, l’activation du BlobCache sur une ferme WSS provoque une erreur :

Mais qu’est-ce que ce principe ?
Dans un site SharePoint, tout ce qui n’est pas dans le répertoire “12” est en base de données. Le résultat de cette logique n’est pas dramatique en soit, mais on voit très rapidement que de nombreux fichiers de Design peuvent se trouver dans cette base de données :
- Les fichiers de script (.JS)
- Les fichiers de design (.CSS)
- Les images
Lorsque chaque utilisateur arrive sur la page par défaut, il y a un grand nombre de requêtes SQL qui sont exécutées pour uniquement extraire ces fichiers et les associer au rendu HTML transmis à cet utilisateur.
Ce fonctionnement peut rapidement saturer inutilement le serveur SQL.
Le principe du BlobCache de SharePoint 2007 est donc la mise en cache sur disque de contenu suivant le type choisi afin de limiter les requêtes inutiles exécutées par le serveur SQL.
Comment cela fonctionne ?
On va donc définir en premier lieu les informations suivantes :
- Les types de fichiers (par extension)
- La taille maximale du cache que l’on veut conserver sur disque
- La durée de rétention de ces fichiers
- Le lieu de stockage de ces fichier sur le serveur frontal
Une fois ces informations connues, on il faut comprendre que le BlobCache se paramètre manuellement sur chaque application Web de chaque serveur frontal.
Ainsi dans une ferme classique MOSS :
- 2 Web Front End
- 1 Serveur App (Search MOSS)
- 1 Serveur SQL
On va donc définir ce paramétrage sur les serveur Web Front End toutes les Web Applications (sauf le site d’administration).
Pour cela, on va éditer le fichier Web.Config de chaque Web Application, et localiser le bloc (généralement il se situe juste au dessus de la fermeture du bloc </SharePoint>) :
<BlobCache location="C:\blobCache" path="\.(gif|jpg|png|css|js)$" maxSize="10" enabled="false" />
On va modifier ce fichier avec les informations précédemment définies :
- location : Répertoire de stockage de ces fichiers de cache. Attention, il est fortement déconseillé d’utiliser le disque système pour cela.
- path : Type de fichier que l’on va conserver en cache. De base, ce sera les images, JavaScript et CSS, mais on peut y ajouter des Flash
- maxSize : Taille maximale du volume de fichiers en cache. Attention, cette valeur est en GB, il convient donc d’avoir cet espace disponible sur le lecteur du répertoire choisi
- max-age : Temps de rétention des fichiers en secondes
- enable : Activation ou non de la fonctionnalité
Le fichier peut donc être comme celui-ci :
<BlobCache location="D:\blobCache" path="\.(gif|jpg|png|css|js)$" maxSize="10" max-age="14400" enabled="false" />
Une fois les Web.Config modifiés sur toutes les Web Applications de tous ses serveur Frontaux, on voit apparaître sur chaque serveur frontal un résultat comme celui-ci :

Il s’agit donc d’une organisation reprenant l’arborescence de ses sites SharePoint avec les fichiers définis en paramètre.
Tous ces fichiers possède alors une extension supplémentaire .CACHE et on trouve, au niveau racine de chaque Web Application (définie par le numéro dans IIS), trois fichiers BIN :

Ces fichiers contiennent les références vers les fichiers en cache.
Comment remettre ce cache à 0 ?
Le nettoyage du cache existant est à effectuer sur chaque serveur Frontal, soit via le site WEB :
- Site Actions > Site Settings > Modify All Site Settings
- Dans la partie “Site Collection Administration”, on trouve le lien “Site Collection Object Cache”

On trouve alors le paramètre, dans le groupe “Disk Based Cache Reset”, l’option “Force this server to reset its disk based cache”, on coche cette option et valide sur OK

Cette action est donc à effectuer depuis chaque serveur frontal pour effectuer un reset intégral et sur chaque collection de sites de chaque Web Application.
Une seconde option est possible via la commande STSADM :
- STSADM -o setproperty -propertyname blobcacheflushcount -propertyvalue 11 –url ‘http://mywebapp:port’
Attention :
Chaque serveur frontal est autonome dans la gestion des fichiers en cache, il est donc possible d’avoir des décallage au niveau du contenu des serveurs de sa ferme.
Post Scriptum :
Cette fonctionnalité n’est pas dépendante du type de site mais du type de ferme. Ainsi, un Team Site hébergé dans une ferme MOSS peut bénéficier de cette fonction.
Related Links :
Romelard Fabrice [MVP]
Dans le cadre de la liste des articles sur l’amélioration des performances de sites SharePoint :
Nous allons voir une modification qui permet d’améliorer les performances d’un site SharePoint, mais en réalité qui fonctionne sur tout site WEB Intranet et Extranet.
En effet, un site Intranet ou Extranet est essentiellement destiné à un public spécifique et nécessite moins d’informations en terme de retour marketing (surtout pour des Team Sites).
Ainsi, deux informations enregistrées par les serveurs IIS (non cochées par défaut) dans les logs ne sont pas nécessaires, même pour les analyses statistiques :
- Cookies (cs(Cookie))
- Referer (cs(Referer))

En effet, dans le cadre de sites Intranet ou Extranet
- La notion de Referer est peu, voire pas utile puisque, globalement, ce ne seront que des liens internes au site lui-même qui seront enregistrés
- La notion de cookies n’est pas utile dans le cadre de SharePoint, car ces cookies ne sont que des données techniques
De plus, cela permettra de réduire considérablement la taille des fichiers de log générés par IIS et le temps d’écriture de chaque ligne dans ces fichiers de log. Ceci est aussi applicable sur tous les sites Web Intranet basés sur IIS.
Cette modification, bien que paraîssant légère, permet de gagner dans le traitement de la requête de l’utilisateur effectuée sur le serveur IIS pour chaque composant de la page chargée :
- Page HTML
- Fichiers CSS, Javascript, Images
- Appel au WebServices
- …
Chaque petite portion de seconde gagnée est à multiplier par le nombre d’utilisateurs et de pages chargées.
Pour mon cas, la nouvelle version de notre Portail Intranet Corporate (en cours de migration) fournit avec succès plus de 21 Millions de requêtes par mois (valeur du mois de Juin).
Nous verrons d’autres axes d’amélioration prochainement
Romelard Fabrice [MVP]
Dans mon précédent article, j’avais évoqué le lancement d’une série sur les optimisations possibles pour améliorer les perfomances d’un site SharePoint de type Publishing (Portal Intranet Corporate) :
Après quelques jours de test, voici un bilan sur le résultat de cette modification.
Tout d’abord, l’usage du ViewState en ASP.NET permet d’éviter des rechargements intempestifs de toute la page lors de la modification de certaines parties de cette page. Le cas classique est le formulaire avec des listes déroulantes en cascade.
Dans le cas spécifique du menu de SharePoint (Objet SharePoint:AspMenu), le chargement de ce composant et donc de l’ensemble des liens peut être séparé en deux cas précis :
- Site de Publishing Internet public
- Site de Publishing Intranet ou Extranet
En effet, le comportement de ce menu lors de son chargement est de tester les permissions pour l’utilisateur connecté. Ainsi pour chaque lien à ajouter dans le menu, une vérification est effectuée afin de savoir si l’utilisateur courant a le droit de voir ou non la page destination de ce lien.
Ceci est totalement compréhensible, car un “Content Manager” a souvent bien plus de liens qu’un simple “Reader”.
De ce fait, lors du chargement des composants du menu, SharePoint va effectuer le test des droits qu’il stockera ensuite dans ce ViewState (activé par défaut). Ainsi, lors de la navigation dans certains composants de la page (cas du remplissage d’un formulaire) qui ne nécessite pas de rafraichissement complet, ce ViewState sera utilisé pour éviter d’éffectuer ce test à nouveau.
Pour conclure, dans le premier cas (site Internet), le ViewState du Menu doit être désactivé, mais globalement il ne faut pas utiliser le modèle de publishing pour ce type de site (les pages de Layouts avec des WebParts ne servent à rien pour un site public). Il est même préférable de faire développer une page light par son équipe de designer utilisant des Users Controls plutôt que des WebParts.
Dans le second cas (site Intranet ou Extranet), cela dépendra de votre contenu dans les pages.
Mon conseil est de créer deux versions de la même Master Page (une avec et une sans ViewState) et de faire un test sur une semaine chacune de ces Master Pages par ses utilisateurs (voir directement sur la production).
Vous aurez ainsi un bilan concrèt et le retour de la perception des utilisateurs sur ce changement.
Nous verrons d’autres axes d’amélioration bientôt.
Romelard Fabrice [MVP]
Lorsqu’on utilise SharePoint comme site Intranet, il est important de fournir le meilleur service à ses utilisateurs. L’amélioration des performances fait partie de cette tache.
Un article plus détaillé sur le sujet est en cours de rédaction, mais je peux vous donner quelques grandes pistes de travail :
- Outils à Utiliser :
- Tester le chargement de la page en cours d’utilisation de Fiddler pour générer un rapport avec ACE neXpert
Ce rapport vous donnera de nombreuses informations comme :
- les réponses HTTP anormales
- le poids total du flux lors du chargement
- les fichiers avec un poids anormal (images lourdes par exemple)
- la taille du ViewState ASP.NET
- …
Dans notre contexte SharePoint Publishing, cela peut sembler inutile, mais ces informations sont capitales, car chaque kb économisé est à multiplier par le nombre d’utilisateurs et le nombre de page utilisées.
LES IMAGES
Il est inutile de remonter une image de plus de 600*800, vous devez absolument éduquer vos content managers qui réalisent rarement l’impact d’une image en 3000*4000 affichée dans une image taillée à 100 px de large.
La compression des image JPG est aussi un autre travail à faire pour tous les logos et images génériques de news par exemple (mais aussi toutes celles que vous compter utiliser).
Pour cela je vous propose le script PowerShell simple, il vous suffit d’ouvrir le site SharePoint en mode Explorer, puis de copier les images dans un folder (par exemple “F:\TEMP\PICTURES\”) et de lancer le script PowerShell suivant :
[int]$GLOBAL:TotalPicturesUpdated = 0
function ResizePicture([string]$FilePath)
{
[System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") > $null
#$bmp = new-object System.Drawing.Bitmap($stream)
$bmp = [System.Drawing.Bitmap]::FromFile($FilePath)
[int]$PictureHeight = $bmp.Size.Height
[int]$PictureWidth = $bmp.Size.Width
$BMPTemp = new-object System.Drawing.Bitmap($PictureWidth, $PictureHeight)
$graphicTemp = [System.Drawing.Graphics]::FromImage($BMPTemp)
$graphicTemp.CompositingMode = [System.Drawing.Drawing2D.CompositingMode]::SourceOver
$graphicTemp.CompositingQuality = [System.Drawing.Drawing2D.CompositingQuality]::HighQuality
$graphicTemp.SmoothingMode = [System.Drawing.Drawing2D.SmoothingMode]::HighQuality
$graphicTemp.InterpolationMode = [System.Drawing.Drawing2D.InterpolationMode]::HighQualityBicubic
$graphicTemp.PixelOffsetMode = [System.Drawing.Drawing2D.PixelOffsetMode]::HighQuality
$graphicTemp.DrawImage($bmp, 0, 0, $PictureWidth, $PictureHeight)
$graphicTemp.Dispose()
$bmp.Dispose()
#Write-Host "Pixel: ", $BMPTemp.PixelFormat.ToString()
$BMPTemp.Save($FilePath, [System.Drawing.Imaging.ImageFormat]::Jpeg)
$BMPTemp.Dispose()
}
function StartProcess()
{
# Create the stopwatch
[System.Diagnostics.Stopwatch] $sw;
$sw = New-Object System.Diagnostics.StopWatch
$sw.Start()
cls
$results = (Get-childItem F:\TEMP\PICTURES\* -include *.jpg -recurse)
foreach($myPicture in $results)
{
Write-host "[", $myPicture.FullName, "] - Before Resizing:", $myPicture.Length, "Bytes"
ResizePicture $myPicture.FullName
$GLOBAL:TotalPicturesUpdated +=1
}
$sw.Stop()
# Write the compact output to the screen
write-host " "
write-host " "
write-host " ------------------------------------------------------------- "
write-host " ----", $GLOBAL:TotalPicturesUpdated " pictures updated in Time: ", $sw.Elapsed.ToString(), "----"
write-host " ------------------------------------------------------------- "
write-host " "
}
cls
StartProcess
Vous aurez alors une réduction de plus de 30% de la taille globale.
Vous pouvez alors simplement reprendre les fichiers résultat et les uploader à la place des précédentes versions.
LE VIEWSTATE
Cette partie est plus délicate, mais dans mon cas, cela représente environ 15 à 20 % du fichier HTML envoyé à l’utilisateur (plus de 100 KB de ViewState)
Après quelques recherches, je suis tombé sur ces deux articles :
Le premier explique de facon didactique qu’une grande partie du ViewState généré de base est produit par l’objet ASP.NET “SharePoint:AspMenu” et que ce ViewState généré est totalement inutile pour la navigation.
Il est donc possible de modifier la Master Page de son site de publishing et de modifier celle-ci en désactivant le ViewState pour les objets du Menu (de haut et de gauche). Les objets à modifier sont donc :
- SharePoint:AspMenu
- PublishingNavigation:PortalSiteMapDataSource
Il faut donc rajouter l’option suivante dans les balises de ces objets :
Cette modification est confirmé par le second lien en rapport avec SP 2010
Vous sauvegardez cette master page et l’appliquez pour votre site intranet.
Une petite analyse par Fiddler et neXpert vous confirme le résultat, pour mon cas :
Je vous conseille de valider ce changement sur une plateforme de pré-production avant toute mise en ligne.
Il reste beaucoup d’autres axes d’amélioration, mais ceci sera pour un prochain article.
Romelard Fabrice [MVP]
Pour tous ceux qui, comme moi, possèdent un iPhone 3GS (aussi le cas sur un 3G), il est possible d’avoir la version 4.0 de l’iOS qui est le firmware du téléphone. Cette mise à jour exige au passage l’installation de la dernière version d’iTunes sur le poste de travail (Version 9.2).
La grande question est la liste des mises à jour, car après l’installation, ce n’est pas flagrant, voilà donc une liste des nouveautés de l'iOS 4.0 (en remerciant Romain) :
---------------------------
Options Générales
1. Multitâche par double clic sur le bouton Home
2. Supporte les claviers Bluetooth Apple
3. Jeux sociaux géré par le nouveau système Game Center
4. Ajout de iBooks et du support PDF
5. Plateforme publicitaire iAd
6. Bloquer l’orientation en mode portrait
---------------------------
Caméra
7. Zoom Digital 5x
8. Focus vidéo en tapotant l’écran
---------------------------
Réglages
9. Réglage de localisation par certaines applications
10. Réglage des données célullaire
11. Mot de passe avec chiffres et lettres
12. Nouveaux wallpapers
13. Option pour mot de passe sur 4 chiffres uniquement
14. Preview des Wallpapers pour le Home & Lock screen
15. Paramétrage du Tethering (Paramétrage du partage Internet)
16. Ajout des icones Gmail et Exchange dans Mail, Contacts et Calendrier
17. Supporte plusieurs comptes mails Exchange
18. Dictionnaire personnel
---------------------------
Compas
19. Retrait du bouton lien vers la carte
---------------------------
Menu (Home Screen)
20. Possibilité de ranger les applications dans des dossiers
21. jusqu’à 2160 applications installées sur iPhone au lieu de 180 (12 applis par dossier)
22. Nom de dossier jusqu’à 13 caractères
23. Background customisé pour le Home & Screen Lock
24. Design du dock (barre du bas) changée comme celle de l’iPad
25. Voter pour une application seulement en la désinstallant => retiré
26. Dossier par défaut contenant l’horlode, la calculatrice, le mémo vocal et le compas
---------------------------
Photos
27. Catégorisée par des albums, figures, évènements et localisation
28. Sélection en masse de plusieurs photos
29. Supporte le mode paysage
30. Rotation des photos
31. Redimentionnement des photos
32. Catégorisation par photos & vidéo
33. Mode paysage dans le défilement des photos
---------------------------
AppStore
34. Possibilité d’offrir des applications
---------------------------
Carte
35. Icône « Me trouver » dans Maps
36. Dans la barre de statuts, nouvelle icône pour la localisation
---------------------------
iPod
37. Création de playlist sur l’iPod
38. Playlist nichées (Nested Playlists)
39. Information sur les paroles et Podcast dans les réglages
40. Contrôle du volume avec un casque Bluetooth
41. Visualisation de l’album (Art in Album)
---------------------------
Notes
42. Synchronise avec MobileMe, Gmail et Yahoo!
43. Réglage des comptes visible si synchro activée
44. Réglage des notes dans Mail, Contacts, Calendriers si synchro activée
---------------------------
Calendrier
45. Calendrier des anniversaires
46. Invitations à CalDAV
---------------------------
Calculatrice
47. icône modifiée
---------------------------
Contacts
48. Informations liées par contact des différents comptes (??)
49. Invitation CardDAV
50. Ecran « Nouveau contact » simplifié
---------------------------
Internet
51. Recherche sur le web ou sur Wikipedia
52. Rotation et zoom des vidéos Youtube (à l’horizontal et à la vertical)
53. Uploader un entraînement sur Nike+
54. Police plus grande dans Mail, SMS et les alertes
55. Safari : affichage des recherches récentes avant le champs de recherche
56. Safari : Les plus recherchées s’affichent dans le champs de recherche
57. Safari : Suggestion de recherche par Google si le moteur est positionné sur Google
58. Safari : Affiche un bouton « Rechercher » au clavier si on se positionne sur le champs de ---------------------------
Recherche
59. Safari : Lecture vidéo dans la page
---------------------------
Message (SMS)
60. Inclus un champs de recherche
61. Compteur de caractères restant (activable sur demande)
62. Notification d’echec d’envoi
63. Possibilité de couper l’envoi groupé de SMS
---------------------------
Bourse
64. Possibilité de visualiser rapidement la capitalisation boursière actuelle en place des cours de bourse ou de variation en %
---------------------------
Mail
65. Boites de réceptions réunient en 1
66. Edition depuis la boite d’envoi
67. Supporte plusieurs comptes Exchanges
68. Supprimer les résultats de recherche dans les Mails
69. Organiser ses mails par sujet
70. Apperçu des pièces jointes
71. Ouverture des pièces jointes avec une appli AppStore quand l’extension est connue
72. Affichage simplifié des dates et adresses
73. Affichage de la photo du contact dans Mail
---------------------------
International
74. Vérificateur orthographique
75. Ajoute 2 claviers (Cangjie & Wubihua) pour la Chine
76. Switch possible entre le chinois traditionnel et simplifié
77. Switch le raccourci clavier
78. Supporte le Danois dans le contrôle vocal
79. Supporte le Hongrois
---------------------------
Autre
80. Wifi persistant
81. l’iPhone s’éveille sans fil (Wifi / BT)
82. Gestion de l’IPv6 sur le réseau Wifi
83. Protection des données accrue.
84. Distribution des applications sans fil (?)
85. Gestions de l’appareil mobile (?)
86. Supporte le VPN via SSL (Juniper & Cisco)
87. Supporte Exchange Server 2010
88. Nouveaux drivers Bluetooth pour les appareils A2DP
---------------------------
En espérant que ca vous évitera de vous poser la question pendant des lustres.
Fabrice Romelard [MVP]
Dans le cadre de la gestion de fermes SharePoint, il est très courant d’avoir des problèmes avec les alertes utilisateur envoyées par SharePoint. Il est pourtant primordial de comprendre le fonctionnement de ce système pour fournir la réponse adaptée à ses utilisateurs.
C’est donc ce qui a été fait au travers de cet article assez complet sur ce sujet, publié comme toujours sur le site ASP-PHP.NET :
En vous souhaitant une bonne lecture
Fabrice Romelard [MVP]
Une des fonctionnalités qui a le plus évolué entre SharePoint 2007 et 2010 est le composant de WorkFlow.
On peut désormais créer des WorkFlows pour un Site SharePoint depuis SharePoint Designer 2010, mais aussi depuis Visio 2010.
Attention:
SharePoint Designer 2010 ne fonctionne qu’avec SharePoint 2010 tandis SharePoint 2007 fonctionne avec les versions précédentes (2003 et 2007). Dans le cas où vous avez les deux versions, il vous faudra conserver les deux outils.
La question vient alors de la version de Visio à installer sur son poste, on trouve la réponse ici :
Il est donc indispensable d’installer la version Office VISIO 2010 Premium Edition.
Dans le cas d'un abonnement MSDN ou Technet, il n’y a qu’un seul ISO téléchargeable, mais la déifférence se fait via la clé utilisée lors de l’installation :

Vous pouvez dès lors changer la clé d’installation de Visio 2010 (ou Office 2010 d’ailleurs) :
Aller dans “Control Panel”, puis “Program and Features”, cliquer sur “Microsoft Visio Professional 2010” et cliquer sur le bouton “Change” :

On obtient alors une fenêtre dont la dernière option est d’entrer une Clé de produit

On tape alors sa nouvelle clé pour la version Premium qui se valide automatiquement et on clique sur “Continue”

On clique ensuite sur “Continue” sur le dernier écran pour valider le changement, on voit d’ailleurs que le nom de la version est alors changé au profit de Visio Premium 2010

Il nous suffit dès lors de lancer Visio Premium 2010 pour profiter des nouveaux modèles de Schéma pour SharePoint WorkFlows.
Ces modèles de WorkFlow pour SharePoint sont disponibles dans les modèles de type “FlowChart” sous le nom “Microsoft SharePoint WorkFlow”

Je vous invite à regarder les articles suivant pour une première utilisation de ce module :
Fabrice Romelard [MVP]
Dans le cadre de la mise en place d’une ferme SharePoint Server 2010, les profils utilisateurs et MySite sont indispensables.
Pour effectuer cette mise en place, je vous conseille de suivre scrupuleusement la méthode suivante :
Je confirme au passage que le chargement des profils est extrèmement lent, mais fonctionne (plus de 4 Heures pour synchroniser ~25 000 comptes).
Par la suite, il est possible de vouloir faire fonctionner ses scripts PowerShell exploitant cette base de profils tels que ceux de CodePlex :
Avec un code aussi simple que celui fourni sur le site MSDN - UserProfileManager :
public void CreatePersonalSiteSample()
{
//get current service context
SPServiceContext serviceContext = SPServiceContext.Current;
//initialize user profile config manager object
UserProfileManager upm = new UserProfileManager(serviceContext);
…
On se trouve alors confronté à ce message :
- “No User Profile Application available to service the request, Contact your farm administrator”
Il est inutile de regarder son code dans le blanc des yeux, car c’est le même que pour la version 2007. En revanche, la raison de cette erreur est uniquement liée à la sécurisation à outrance des Services Applicatifs dont le service des “Profils Utilisateurs” appartient.
On trouve l’explication ici :
Il s’agit donc d’ajouter manuellement le compte utilisé lors de ce code (compte administrateur ou de service) comme administrateur de ce service applicatif.
Pour cela, on va dans la “Centrale administration”, puis “Application Management” et on choisit “Manage service application”. On trouve alors tous les services applicatifs dont les profils utilisateurs.
On sélectionne son service de profils et on clique sur le bouton “Administrators”

Une “fenêtre” s’ouvre alors dans laquelle on trouve le compte de service utilisé lors de la création du Service Applicatif. Il suffit donc de rajouter le compte administrateur voulu et cliquer sur “Full Control”

On valide ce changement par “OK”, mais on doit encore aller ajouter ce compte dans les permissions pour ce service applicatif :

On ajoute donc notre compte administrateur et lui donnons la permission “Full Control”, on valide enfin par OK

Cette modification nécessite quelques minutes pour se synchroniser, puis on peut utiliser notre script simplement comme avant :

Il ne vous reste plus qu’à valider vos scripts ou applications.
Fabrice Romelard [MVP]
Maintenant que la version finale de SharePoint 2010 est disponible, il est tant de préparer la migration de fermes SharePoint 2007.
Avant de parler de ces migrations, dont une petite liste de points à suivre est ici :
Voyons un des points d’avancé du moteur de recherche de SharePoint 2010 en rapport avec 2007 :
- Support du WildCard pour toutes les recherches
Dans Tous les contenus

Dans le People Search

On peut aussi ajouter un détail important qui est la recherche des personnes ayant un nom proche du mot tapé :

On peut enfin observer que la page de résultat contient d’office une WebPart de visualisation des 3 premières personnes répondant à la recherche tapée

Ces premières observations peuvent à elles seules justifier le passage du search de 2007 à 2010.
N’oubliez pas que vous pouvez utiliser votre base de profil 2007 dans le People Search de 2010 (utilisé pour cette démo) :
La suite au prochain message.
Romelard Fabrice [MVP]
Dans le cadre de la gestion quotidienne des environnements SharePoint, une des taches obligatoires est le contrôle régulier des logs :
- Log Windows (Event Viewer)
- Log SharePoint (ULS)
Dans le sujet qui nous importe, lors du debbuging, on peut être ammené à définir un niveau de logging supérieur pour certains types de contrôle.
Ceci se fait depuis la Centrale Administration :
- Rubrique “Operations”
- Lien “Diagnotic Logging”

Ainsi dans la partie centrale de la fenêtre, on a le choix du type d’activité à contrôler et le niveau de logging à appliquer :

Ainsi, dans ce cas, j’ai spécifié la mise en place du logging avec le mode Verbeux pour toutes les actions du Timer pour les Job.
A partir de ce moment, on peut voir apparaître l’erreur Event ID 3351 :

Event Type: Error
Event Source: Windows SharePoint Services 3
Event Category: Database
Event ID: 3351
Date: 31.05.2010
Time: 14:10:50
User: N/A
Computer: CHWS008
Description:
SQL database login failed. Additional error information from SQL Server is included below.
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
Une recherche sur google donne différentes raisons, mais toutes semblent liées à la non utilisation du compte de service pour différentes actions :
- Sauvegarde de collection via STSADM
- Service SPTimer
- Outil de Backup dédié
- …
Mais il existe une autre situation qui est liée au changement de niveau de log défini juste avant :
- Les permissions du compte de service “Windows SharePoint Services Tracing” (ou SPTracing)
Ce service gère toute la création et le renseignement des fichier de log ULS. Dans le cas où ses droits ne sont pas assez élevés, on se retrouve avec des fichier de log aillant comme seule information :
05/30/2010 20:01:32.31 wsstracing.exe (0x09DC) 0x05E0 ULS Logging Unified Logging Service uls1 Monitorable Tracing Service lost trace events. Current value 12.
Dont une petite aide est disponible :
Dans notre contexte, il ne suffit pas de redémarrer les services, mais surtout lui changer le compte de service et redémarrer le serveur pour rafraichir toute la configuration.
Le dernier service à contrôler les le compte de service SPWriter :
- Les permissions du compte de service “Windows SharePoint Services VSS Writer” (ou SPWriter)

En effet, de base, ce service est configuré pour fonctionner avec le “Local System Account”, qui n’a donc pas accès aux bases de données SharePoint.
Il vous suffit donc de modifier le compte de ce service et de relancer celui-ci ainsi que le service SPTimerV3 pour ne plus trouver ce message dans les erreurs Windows.
Romelard Fabrice [MVP]
Durant le mois d’Avril 2010, Microsoft Suisse a organisé à Genève, comme maintenant quelques années, les TechDays.
Vous pouvez retrouver toutes ces sessions en vidéo :
Pour ma part, j’ai pu donner cette année deux sessions dédiées à SharePoint 2010 que vous pouvez retrouver ici :
Je vous conseille la première, qui a été un grand plaisir à donner mais aussi à regarder. La seconde était matinale après une très courte nuit, donc moins entrainante.
Je remercie encore tous ceux grace à qui cet évènement a été une nouvelle fois un franc succès et espère pouvoir encore y participer l’an prochain.
Fabrice Romelard [MVP]
Je vous avais annoncé dans un précédent message la création d’un composant Gadget Windows (VISTA et SEVEN) pour utiliser le People Search de SharePoint 2007 :
Après un long moment de validation, Microsoft vient enfin de valider ce composant que vous pouvez retrouver sur le site de la Gallery :
Vous pouvez donc dès maintenant l’installer directement depuis le site de Microsoft et ne plus avoir le soucis avec le format ZIP à renomer.
Je vous invite à donner une note à ce composant, voir un commentaire (sur le site officiel).
PS: Pour le moment, ce composant n’est pas compatible avec le People Search de SharePoint 2010, car Microsoft a modifié le WebService de recherche.
Romelard Fabrice [MVP]
De la même façon que pour le ZUNE, il peut être utile d’accéder à sa librairie iPod ou iPhone depuis sa console (lecture de sa musique lors d’un jeu par exemple).
Le fait est que si l’on branche directement son iPhone en USB sur sa console, on peut accéder uniquement aux photos prises avec son iPhone :

Avec une navigation accessible à tous :

Pour accéder aux musiques, il faut suivre une procédure particulière afin d’ajouter un module à son XBOX 360, la méthode est disponible sur le site du support de XBOX (trouvée sur un forum) :
Ainsi, depuis le menu de la XBOX, il faut choisir le “Marché Jeux” (ou “Game Market Place”) et cliquer sur “Parcourir les contenus jeux” (ou “Explore Game Content”)

Puis cliquer sur “Parcourir” (ou “Browse”)

A ce moment, le choix dépend de la langue définie dans votre profil XBOX Live :
- En Français : Choisir la lettre “M” et chercher “Mise à jour Multimédia facultative” (on ne voit que le début du nom)
- En Anglais : Choisir la lettre “O” et chercher “Optional Media Update”


On obtient alors la possibilité de télécharger le package

qui est bien sur gratuit

Après la confirmation de ce téléchargement, qui nécessitera très peu de temps

On peut alors cliquer sur “Lire maintenant” pour valider l’installation du package

Il vous donnera juste un message vous demandant d’utiliser le jeu pour lequel il a été téléchargé, ce qui en interne veut dire qu’il a été installé

A partir de maintenant les iPod peuvent voir leur contenu dans la Music Library et dans la video Library.
Cas spécifique de l’iPhone et l’iPod Touch
Le soucis est que l’Iphone et l’iPod Touch ne sont pas comme l’iPod standard et tout comme pour de nombreux accessoires, le contenu de ces modèles ne sont pas forcément accessible. C’est donc le cas de la XBOX qui est totalement compatible iPod, mais pas iPhone ou Touch (pour la video et la musique).
Ceci est confirmé par un des messages des FAQ XBOX :
L’iPhone et l’iPod Touch peuvent être explorés par la XBOX uniquement pour les photos prises avec l’appareil ainsi que pour recharger sa batterie. Il existe des solutions alternatives basées sur une technique de Streaming plus ou moins légale.
J’espère que Microsoft et Apple vont trouver un accord sur ce point afin de permettre aux utilisateurs de XBOX 360 d’accéder à la bibliothèque de leur iPhone.
Attention :
Les Podcasts que vous pouvez télécharger sur votre iPod depuis iTunes ou l’appareil lui-même ne sont pas visibles depuis la XBOX. Celle-ci ne va explorer que le contenu déclaré en Music ou Video dans votre iTunes.
Romelard Fabrice [MVP]
Comme nous l’avons vu dans un précédent article, SharePoint 2007 permet de suivre l’usage de son site MOSS, ce qui peut poser des soucis en terme de gestion de taille :
Cette problématique de taille est d’ailleurs soulignée dans le message suivant dans le cas d’un sitze public WCM :
Il est donc obligatoire d’utiliser la commande de nettoyage disponible via STSADM :
Le soucis est que dans le cas d’un site déjà existant avant l’ajout de ce Cumulative Update Pack (ajoutant cette commande), cette commande ne fonctionne pas tel qu’elle est présentée :
Pour ma part, cette commande ne fonctionnait pas et provoquait à chaque tentative des erreurs me disant que la commande n’était pas correctement formée.
De ce fait, j’ai décidé de créer un script PowerShell afin d’exécuter la même commande via PS et non STSADM. Ce script est très simple et basé sur la fonction “DeleteEntries” de classe ”SPAudit” du modèle objet :
Le résultat de ce script est donc le suivant :
function StartProcess([string]$SPSiteAddress, [string]$StrDateEnd)
{
# Create the stopwatch
[System.Diagnostics.Stopwatch] $sw;
$sw = New-Object System.Diagnostics.StopWatch
$sw.Start()
cls
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") > $null
write-host " ------------------------------------------------------------- "
write-host "Open SPSite:", $SPSiteAddress
$Thesite = new-object Microsoft.SharePoint.SPSite($SPSiteAddress)
$DateEndDate = [System.DateTime]::Parse($StrDateEnd, [System.Threading.Thread]::CurrentThread.CurrentCulture)
write-host "Clean all the Audit entries before:", $DateEndDate.ToString("MMM dd yyyy")
$DeletedAuditNumber = $Thesite.Audit.DeleteEntries($DateEndDate)
$Thesite.Dispose()
$sw.Stop()
# Write the compact output to the screen
write-host " "
write-host " "
write-host " ------------------------------------------------------------- "
write-host " ---- ", $DeletedAuditNumber , " audit entries deleted in Time: ", $sw.Elapsed.ToString(), "----"
write-host " ------------------------------------------------------------- "
write-host " "
}
Après une première exécution rapide sur le premier mois à effacer :

Ce script sera ajouté avec les autres sur le site CodePlex :
Il faut aussi penser à faire un Shrink de la base de contenu après l’utilisation de ce script.
Romelard Fabrice [MVP]
Lorsqu’on connecte son iPhone avec son PC sous Windows, une option permet de synchroniser ses contacts avec Outlook (version 64 Bits pour ma part).
Un message peut alors apparaître sans arrêt, même si on décoche cette synchronisation (puisque je passe par le serveur Exchange)

Ce message est donc le suivant :
- Microsoft Office Outlook
- Either there is no default mail client or the current mail client cannot fulfill the messaging request. Please run Microsoft Outlook and set it as the default mail client

Ce message nécessite donc de définir Outlook comme lecteur de mail par défaut. Il faut passer par deux niveaux pour ce paramétrage
Dans Outlook 2010
Pour la version Office 2010, cela se fait depuis le client Outlook en :
- Cliquant sur File (ou Fichier en FR)
- Choisir Options

- On trouve alors dans là première tabulation “General” un groupe “Start up options” ou apparaît donc l’option pour définir Outlook comme client mail par défaut “Make Outlook the default program for E-mail, Contacts, and Calendar”

- On valide alors cela par OK
Dans Windows Seven (Vista est sensiblement pareil)
Il faut cliquer sur Start et choisir “Default Programs”. On choisit alors “Set your default programs”

Après un temps de chargement on trouve une liste d’application sur la partie gauche, dont “Microsoft Outlook”

Il faut donc cliquer sur “Set this program as default”, puis valider par OK
On peut alors relancer Outlook et iTunes pour valider
La source est fournie en ligne :
Le message continue d’apparaître
Il faut alors savoir qu’une KB existe pour ce sujet :
Il faut donc aller dans la base de registre de votre machine pour effacer la clé :
- HKEY_LOCAL_MACHINE\Software\Clients\Mail\Microsoft Outlook
Puis lancer Outlook qui vous demandera alors si vous souhaitez en faire le client par défaut :

Si vous avez toujours le message qui apparaît (comme ce fut mon cas), il faut alors utiliser la méthode brutale qui est expliquée ici (la seconde) :
Cette méthode revient a supprimer ce test lors du chargement de la DLL Mapi, il faut pour cela ouvrir la registry au niveau :
- HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail
Repérer la clé “PreFirstRun” et vider le contenu de cette clé, qui est à la base le message qui nous est affiché

Au passage, on peut y définir le message que l’on souhaite voir apparaître comme le montre la capture suivante

Il faut dès lors renommer cette clé de registre (“PreFirstRun-Save” par exemple) pour désactiver ce message.

Une fois cette modification effectuée, on peut relancer Office pour redéfinir Outlook comme logiciel de messagerie par défaut

Malgré tout cela, lorsque je relance iTunes et aller dans les paramètres de synchronisation de son iPhone, j’obtiens toujours le message d’erreur. J’ai alors découvert que iTunes n’est pas compatible avec Office 2010 :
Bref, je vais devoir attendre une mise à jour d’iTunes pour ne plus avoir à cliquer sur ce message à chaque fois.
Romelard Fabrice [MVP]
Dans le cadre de l’utilisation de SharePoint, une demande régulière est de fournir du FeedBack aux responsables de contenu de l’utilisation de son site.
C’est dans ce contexte qu’un article avait été écrit pour la génération de statistiques :
Il existe sous MOSS un autre axe de remontée d’information qui s’effectue via les Audits d’utilisation.
Pour activer ce fonctionnement, il faut se placer dans le site racine de la collection que l’on souhaite surveiller et aller dans la page de paramétrages de cette collection de sites :
- Site Actions > Site Settings > Modify All site Settings
On y trouve alors dans le groupe “Site Collection Administration”, le lien “Site collection audit settings”

Lorsque l’on va dans cette page de paramétrages, on y trouve plusieurs options de contrôle. Ces options représentent des ensembles d’actions effectuées par les utilisateurs (comme télécharger un document ou encore le Check-in/Check-out de document).

Ainsi, cette sélection activera immédiatement l’enregistrement en base de données de toutes les actions effectuées par les utilisateurs respectant le critère choisi, et c’est justement là que le problème peut se situer.
En effet, la base de données de contenu associée à la collection de sites que l’on a modifié va voir sa table “dbo.AuditData” augmenter sans limite jusqu’à saturation de cette base si vous ne la contrôlez pas.
Ainsi pour mon cas, la collection de sites (moins de 4 GB de contenu) ayant eu le premier choix activé (Opening or downloading documents, viewing items in lists, or viewing item properties) a vu la base de données augmenter à plus de 50 GB de fichiers SQL.
Le rapport de SQL Server pour cette base fournit le statut :

Comme vous pouvez le lire dans la dernière ligne la table d’audit possède plus de 94 Millions de records pour un volume d’environ 35 GB.
Ce cas n’est pas rare, comme le prouve le message suivant :
Il faut donc contrôler la croissance de cette base d’Audit via une commande STSADM ajoutée dans un précédent Update Pack SharePoint (évidemment uniquement pour MOSS) :
Ainsi cette commande permet de définir une période de rétention à chaque exécution, comme l’explique l’exemple en bas de page :
- Your audit log is growing too fast and you want to trim some entries from it. To specify a date of July 4, 2008, and the content database name WSSContent123456, you would use the following syntax :
- stsadm -o trimauditlog –date 20080704 –databasename WSSContent123456
Attention :
L’utilisation de cette commande provoquera sur la base de données de contenu un très grand nombre de requête en effacement (DELETE). Cela va donc impacter fortement la croissance du fichier de Log de transaction, et surtout les performance de votre site SharePoint, il est donc préférable de réserver cette exécution pour un horaire nocturne.
Romelard Fabrice [MVP]
Dans le cadre de l’utilisation du SharePoint People Search, un des principaux reproches existant est l’obligation de passer par le navigateur et donc le site Intranet de recherche.
Bien que ce point soit central, il est vrai que dans le cadre d’une recherche rapide de collaborateur, entre le carnet d’adresse Outlook et le site de recherche Intranet, il y a matière à amélioration.
C’est donc dans ce contexte que j’ai développé ce nouveau Gadget pour Windows VISTA et SEVEN s’installant directement sur le bureau et utilisant le WebService de Recherche de SharePoint.
Microsoft est particulièrement lent dans la validation du Gadget et donc pour le moment le lien officiel sur Windows Gallery n’est pas encore disponible. Le lien est donc sur mon site personnel pour le moment. Ainsi, vous pouvez trouver le module sur le lien :
Une fois que vous avez téléchargé le fichier Gadget, vous double cliquez sur le fichier puis installez le composant. Vous obtenez alors l’affichage suivant :

Il faut donc cliquer sur le petite clé (sous le X) pour définir les propriétés de votre site de recherche :

Il s’agit donc des paramètres suivants :
- Search Site root URL : Adresse racine de votre site SharePoint Intranet (par exemple: http://MyCorporatePortal.mycompany.net)
- Search People Results page URL : Il s’agit de la page de résultat People de votre site Intranet (généralement c’est une des pages du Search Center)
Une fois ces paramètres définis, il faut cliquer sur OK pour les enregistrer et vous pouvez alors taper un simple mot dans la fenêtre et cliquez sur la petite loupe :

Vous obtenez alors les résultats de cette recherche.
On trouve donc :
- Un premier texte “View all results (2)” avec le lien pour tous les résultats qui renvoit sur la page de résultat du People Search, cf second paramètre précédent (ainsi que le nombre total de résultats entre parenthèses)
- Les 10 premiers résultats de cette recherche, affiché avec le nom des collaborateurs (avec un lien vers sa page de détail du MySite profile), le numéro de téléphone et l’adresse Email (clickable pour envoyer directement un Message)
Je vous invite à le tester et me faire les retour en commentaire de ce message (en français ou anglais).
Attention :
Quelques points importants sont à noter.
- Ce composant ne supporte pas les recherches complexes (pas de AND ou OR), il faudra passer par le site WEB pour cela
- Ce composant ne supporte pas les recherches sur des métadonnées spécifiques (pas de support des “ via le WebService). Ainsi, la recherche de tous les employés d’un pays (Country:"CH") se fera par le site WEB
- La valeur du nombre de retour “View all results” est parfois aléatoire et peut être fausse
- Le classement des résultats est différent de celui visible dans le site WEB. Le Web Service ne gère par la “proximité” et renvoit le jeu de résultats brut
J’espère que cela pourra vous rendre autant service qu’à moi. Ce composant est totalement personnalisable si besoin pour votre Intranet Corporate. Pour information, une réflexion est en cours dans mon entreprise pour l’intégrer dans l’Image de base de la future plateforme Windows Seven interne.
Romelard Fabrice [MVP]
PS: Je remercie Michael Staudenmann pour toute l’aide approtée lors du développement de ce composant.
Dans la suite des articles sur les nouvelles fonctionnalités ajoutées dans le logiciel ZUNE Software, voyons le mini lecteur ZUNE :
Avant cette version, il était possible pour les utilisateurs de Windows VISTA ou Seven d’installer un Gadget permettant de lire le contenu de sa collection ZUNE :
Bien que ce composant soit intéressant, il y subsiste de nombreux bugs, mais aussi il est impossible pour les utilisateurs de Windows XP de s’en servir. De plus, cela induisait l’exécution de ZUNE en mode caché.
Ainsi, apràs plus de 135 000 téléchargements de ce composant, l’équipe ZUNE de Microsoft a donc ajouté cette fonctionnalité en natif dans le ZUNE Software. Voyons comment l’utiliser.
Paramètres
Les réglages sont très limités pour ce composant, il faut simplement aller dans les Settings, puis choisir l’onglet “General”.
On peut alors cocher ou non le fait d’avoir le Mini Player toujours en premier plan

On valide par OK et c’est fini ;)
Voyons maintenant l’utilisation de ce module.
Utilisation du Mini Player
Lorsqu’on utilise le lecteur ZUNE Software, on a deux méthode pour avoir la vision Mini Player :
- Soit on clique sur le petit icone en haut a droite

- Soit on réduit la largeur de la fenêtre du ZUNE Software

On obtient donc la fenêtre réduite

Cette fenêtre possède donc les fonctions minimales de lecture. Elle est aussi un tout petit peu plus large que les composants Gadget (du moins sous VISTA), mais reste très discrète.
Romelard Fabrice [MVP]
Pour les utilisateurs des ZUNE classic (non HD), une mise à jour du FirmWare est disponible (V 3.30).
Si cette mise à jour n’est pas déjà appliquée, il suffit de connecter son ZUNE à la machine ou le ZUNE SoftWare (dernière version) est installé pour voir apparaître le message de mise à jour

On clique alors sur “Accept” pour voir ensuite le téléchargement

Puis la mise à jour de l’appareil s’effectue

Qui se termine alors, après une vérification de cette mise à jour par un message

Il vous faudra alors revoir les paramètres de synchronisation, voir de faire un nettoyage total et une resynchronisation du contenu.
Ceci se fait par le menu “Sync Options” des Settings du Device en cliquant sur “Change Sync RelationShip”

Qui va vous lancer un assistant pour ce paramétrage qui vous demande en premier lieu de valider le nom de l’appareil

Puis de sélectionner les types de contenu à synchroniser entre le PC et le ZUNE

Ensuite, vous définissez si vous souhiatez aider Microsoft dans son amélioration du logiciel (par le renvoi d’informations en cas de soucis)

On valide enfin par “Finish” pour revenir à l’écran standard des settings

Des jeux sont aussi disponibles pour ce ZUNE en allant dans le menu “Player Update” et cliquant sur “Install Games”

Cela lance alors l’assistant de mise à jour du ZUNE pour une nouvelle fois uniquement pour ces Jeux

On valide enfin ces Settings de l’appareil en cliquant sur “OK” afin de lancer la synchronisation de l’appareil et du PC, dont le temps dépendra du volume de contenu à transférer

Vous pourrez alors utiliser votre appareil avec sa dernière mise à jour en attendant la Version 4 du FirmWare.
Romelard Fabrice [MVP]
Les 10 derniers blogs postés
-
Article dans Programmez sur les principes SOLID par
Fathi Bellahcene le il y a 1 heure et 1 minutes
-
Parution de mon livre sur WPF 4 par
Perspective le il y a 6 heures et 50 minutes
-
EDM : comment utiliser l’Horizontal Entity Splitting par
Matthieu MEZIL le il y a 19 heures et 57 minutes
-
[WP7Dev][Reactive] Rendre les Reactive Extensions Plus Stables par
Jerome Laban le 09-08-2010, 02:24
-
[SharePoint 2010] [Visio] Manipulation n°1 : Comment générer automatiquement la carte d’un site Web avec Visio ? par
Le blog de Patrick le 09-07-2010, 14:12
-
WinDbg / SOS / PSSCOR2 : Failed to load data access DLL (mscordacwks) par
CoqBlog le 09-06-2010, 22:29
-
Perspective 2.0 : version finale par
Perspective le 09-06-2010, 19:42
-
SharePoint 2010 : Comparaison entre la version 2007 et la version 2010 par
Philippe Sentenac [MVP SharePoint] le 09-06-2010, 12:00
-
Utilisation de la réplication SQL dans le code .NET d'une application mobile - Implémentation & Conseils : PARTIE 1/3 (classe SqlCeReplication & premi... par
Le Blog de Pi-R (Pierre Cambier) le 09-06-2010, 08:37
-
Quelques trucs intéressants (05/09/2010) par
CoqBlog le 09-05-2010, 14:53