Archives mensuelles : juin 2014

Vie de développeur – Une petite leçon de SQL Server

Cette semaine, j’ai eu droit à une belle leçon de vie avec SQL Server. Quelque chose qui replace l’orgueil du développeur au bon endroit.

En fait, ce n’est pas tant que j’ai commis une grave erreur. Il s’agit plus que j’aie pris connaissance d’un concept qui m’était inconnu jusqu’à présent. Pourtant, il s’agit d’une fonctionnalité au cœur même de SQL Server.

À la fin de ce billet, il y a de bonnes chances que vous vous aillez appris quelque chose aussi. En tout cas, moi j’ai appris quelque chose!

L’histoire

Comme beaucoup d’histoires de ce genre, tout a commencé par un problème qui ne devait pas en être un. C’est quand vous vous dites: « Voyons, ça devrait marcher! » qu’il y a anguille sous roche.

Tout a commencé lorsque j’ai entrepris de me créer une base de données avec Entity Framework. Pour une raison que j’ignorais, à chaque fois que j’exécutais mon application, la base de données créée basée sur mon modèle de données était en mode SINGLE_USER. Cela faisait en sorte qu’au bout de quelques appels SQL, la connexion précédente bloquait toute nouvelle connexion à la base de données.

C’est à moment que le festival de la recherche Google a débuté… et j’en suis revenu bredouille. Il n’y avait littéralement PERSONNE qui avait expérimenté mon problème avant.

Le plus intrigant dans cette situation, c’est qu’il est très suspect d’associer Entity Framework à cette problématique. Après tout, l’ORM est seulement le messager entre la base de données et vous.

Une révélation

À partir de ce moment, j’avais déjà passé pas mal de temps à tripoter les différentes fonctionnalités d’initialisation de base de données d’Entity Framework sans succès.

L’étape suivante de mon plan de match était de voir ce que donnerait la création d’une base de données à la main avec la commande SQL CREATE DATABASE. Il s’agit aussi de l’instant que j’ai eu la révélation. Il s’avérait que même les bases de données créées manuellement étaient créées en mode SINGLE_USER. Tiens, tiens, comme c’est curieux!

Mes recherches m’ont rapidement mené à la base de données système nommée model. Son nom est assez explicite pour deviner à quoi elle sert.

Une base de données pour les gouverner tous

La base de données model est utilisée comme gabarit pour les bases de données que vous allez créer sur votre instance SQL. Chacune des personnalisations que vous ferez sur celle-ci sera intégralement répliquée sur vos nouvelles bases de données.

Mon problème et ma solution étaient situés exactement là. model était justement en mode SINGLE_USER. Cela faisait en sorte que cette configuration était rapatriée sur mes nouvelles bases de données.

La question, qui va rester sans réponses, est: comment ai-je réussi à appliquer cette configuration sur cette très importante base de données? Jusqu’à cette heure, je suis sans explications.

Et puis, alors, avez-vous appris quelque chose de cette leçon d’humilité?

Les liens de la semaine – Édition #85

Développement

.NET

Web

Technologie

Science et autres

Ajuster la largeur du panneau en arbre de la gestion de contenu Sitecore

Sitecore, vous connaissez? Si vous travaillez dans le web, en particulier le monde du développement de site à fréquentation élevée en .NET, il y a de bonnes chances que vous en aillez déjà entendu parler.

Pour les autres, en quelques mots, Sitecore est un gestionnaire de contenu web (CMS, en anglais) développé en .NET. Depuis les derniers mois, je travaille à développer des sites web propulsés par Sitecore pour les clients d’Absolunet.

Or, depuis la mi-2013, les développeurs peuvent mettre en place des solutions en utilisant la version 7 du gestionnaire de contenu. Ayant connu la version précédente, les changements et améliorations peuvent se faire sentir un peu partout dans l’expérience d’utilisation.

Toutefois, le changement le plus marquant est plutôt encombrant et il est surtout plus esthétique qu’applicatif. En voici une image :

sitecore

La taille du panneau contenant la vue en arbre de la gestion de contenu, à gauche, est trop petite pour être vraiment utile. Ce que vous voyez est la configuration par défaut du panneau. Systématiquement, il faut le dimensionner manuellement pour l’utiliser.

Le plus grand irritant, c’est qu’il n’y a pas moyen que la taille personnalisée soit mémorisée automatiquement par le CMS. Ce qui ajoute à l’aspect irritant de la chose. Ceci étant dit, il y a une solution. Toutefois, celle-ci est catégorisée officiellement dans la liste des solutions « Je suis un professionnel du web, je peux faire ce que je veux. »[1].

Solution

Afin de régler définitivement cette situation, il faut procéder à une modification de l’un des fichiers applicatifs du CMS Sitecore. Il fallait bien y penser!

Le fichier à modifier est /sitecore/shell/Applications/Content Manager/default.aspx. À la ligne 145, il faut aller remplacer la valeur suivante: <td id= »ContentTreePanel » valign= »top » width= »175" style= »display: none; height: 100% »>.

La personnellement, j’ai réglé la largeur à 375 pixels et j’en suis très heureux.


Je dois donner le crédit pour l’expression « Je suis un professionnel du web » à mon camarade Cédric.1

Les liens de la semaine – Édition #84

Développement

ASP.NET vNext

.NET

Technologie

Web