Archives par étiquette : Astuces

[Tips] Changer la culture de tous les threads en 1 ligne de code

Avec ASP.net, il est possible de définir globalement la culture via le fichier de configuration web.config et les attributs uiCulture et culture de la balise globalization :

<globalization uiCulture="fr-FR" culture="fr-FR"/>

Seul problème, cette configuration ne s’applique pas à l’ensemble des threads créés manuellement depuis les pages/handlers/modules.

En effet, si on créé un thread depuis une page, la culture par défaut de ce thread sera la culture du système sur lequel l’application est installée.

Avant .net 4.5, il était donc nécessaire de changer la culture manuellement à chaque création de thread.

Depuis .net 4.5, il est possible de définir une culture par défaut pour tous les threads qui seront créés par votre application via la propriété statique DefaultThreadCurrentCulture de classe CultureInfo :

CultureInfo.DefaultThreadCurrentCulture = ci

monsieur-propre-est-mort-L-1

Le Monsieur Propre des références

Que cela soit par fainéantise ou par manque de rigueur, il n’est pas rare de trouver des projets disposant d’un grand nombre de références dont certaines ne sont en réalité pas ou plus utilisé.

Pour arriver à faire le ménage dans ces références, il est possible d’utiliser des outils qui vont permettre de détecter quelles sont ces références qui ne sont effectivement pas utiles ni utilisées. NDepend est un excellent outil qui permet (entre autres) d’arriver à cela.

En Visual Basic, il existe une fonctionnalité “in the box” qui permet de détecter quelles sont les références qui semblent inutilisées. Libre ensuite au développeur de les supprimer depuis l’interface.

Pour accéder à cette fonctionnalité propre à l’outillage de VB (non disponible en C#), rendez-vous dans les propriétés de votre projet puis dans l’onglet références :

image

image

L’impact psychologique du nommage

Ceux qui me suivent sur Twitter le savent, je suis en train de mettre en place TFS 2010 au sein de ma nouvelle société et à cet effet nous avons mis en place une toute nouvelle infrastructure matérielle afin d’utiliser un ensemble de machines virtuelles.

Lors de la création de la machine virtuelle destinée à l’installation de TFS 2010, un de mes collègues m’a demandé le nom de machine que je souhaitais pour cette machine virtuelle en me demandant si le nom “VM-TFS” me convenait.

image Je me suis alors empressé de lui dire que je ne souhaitais pas que VM apparaisse dans le nom de la machine afin que les utilisateurs ne puissent pas râler sur l’installation à cause du fait que cela soit une VM. Mon collègue l’a pris sur le ton de l’humour mais j’étais en réalité très sérieux.

Une VM doit réagir comme une machine physique et je ne souhaite pas que les utilisateurs puissent avoir une image négative de TFS à cause du fait qu’il soit installé dans une machine virtuelle. La société n’a pas l’habitude d’utiliser les technologies de virtualisation, il est donc plus simple de ne pas leur mettre sous les yeux un panneau “Attention c’est une VM” à chaque fois qu’ils vont y accéder. L’idée n’est pas de masquer les choses (la nouvelle infrastructure a été présentée après que la migration de TFS 2005 vers TFS 2010 ait été effectué) mais de faciliter l’adoption d’une nouvelle technologie en supprimant des freins liés à des idées préconçues.

Dans le domaine du développement, j’ai également conseillé à plusieurs clients de nommer “intelligemment” certaines classes afin d’inciter une réelle maintenance/refactorisation de celles-ci. Durant des revues de code, ou tests de migration, ou autre type d’intervention, j’ai régulièrement trouvé des classes helpers destinées à faciliter l’utilisation d’une fonctionnalité. Ces classes utilisent souvent un nommage du genre “EasyQqueChose” (EasyDB pour l’accès aux bases de données, EasyXml pour la manipulation XML, etc.) pour bien signifier aux développeurs qu’avec cette classe il sera très simple d’effectuer la tâche qu’ils doivent accomplir.

Seulement avec le temps, la classe destinée à faciliter les choses est devenue un vrai capharnaüm, et est devenue complexe à utiliser. Bien évidemment cette classe doit être refactorée depuis 97879 siècles mais au final elle ne l’est jamais.

Quand je rencontrais ce genre de cas, je proposais souvent la même idée : prendre quelques minutes pour renommer la classe “EasyQqueChose” en “FuckingComplexAndUnusableQqueChose”. Je ne suis parvenu à faire appliquer cette idée qu’une seule fois  (et oui il y a encore beaucoup de développeurs qui ont peur de renommer une classe…) et étrangement quand je suis revenu quelques semaines plus tard chez ce client la classe avait été refactorée (et donc de nouveau renommée).

Crypter les chaines de connexions est inutile

En
me rendant sur la page d’accueil de la plate-forme WordPress, je suis tombé sur le
dernier post de blog de l’équipe de développement de ce logiciel. Ce post intitulé
Secure File
Permissions Matter
” indique de manière censée qu’il est toujours nécessaire de
configurer les permissions d’accès à vos fichiers afin d’éviter tout problème de sécurit”,
notamment liés à votre hébergeur.

Ce qui est plus que surprenant, c’est de voir Matt Mullenweg créateur
de WordPress et une des personnes les plus influentes
du web
commencer son post par une banalité (qu’il est néanmoins toujours utile
de rappeler) pour continuer en s’improvisant expert en sécurité en affirmant que, comme
toutes les autres applications,
WordPress doit stocker
les informations de connexions à la base données en clear text et qu’il est inutile
de vouloir crypter ces informations puisque les clés de cryptage seraient facilement
accessibles puisque stockés sur le système de fichiers…

Voir http://awurl.com/rROy45oeC pour
la citation exacte.

Je sais bien que WordPress est développé en PHP mais bon, ASP.net permet de crypter
des sections de configurations depuis ASP.net 2.0 c’est à dire depuis près de 5 ans,
de plus pour éviter les problèmes d’accès aux clés de cryptage, il
est possible d’utiliser DPAPI
qui résous complètement ce problème potentiel.

Donc bon, peut être que crypter ses chaines de connexions n’est pas aussi inutile
que ça et qu’il est techniquement possible de le mettre en place efficacement…

image

Faire en sorte que le site MSDN ressemble à quelque chose

Le site MSDN de Microsoft indispensable à tous les développeurs est par défaut avec
une mise en page qui donne beaucoup trop d’importance à des éléments annexes aux articles
proposés (arborescence de navigation très large, bandeau rouge trop important, etc.)
Du coup la zone de lecture s’en trouve très diminuée :

image

Sachez qu’il est possible d’avoir une mise en page beaucoup plus lisible et “propre”
en sélectionnant l’option “Switch on low bandwith view” présente en haut de chaque
page. On se retrouve avec cette mise en page qui est beaucoup plus agréable à la lecture
:

image

image

Editer DasBlog sous Visual Studio 2010

Si vous souhaitez modifier le moteur de blog DasBlog sous Visual Studio 2010 vous
risquez de rencontrer différents problèmes.

Lors de l’ouverture de la solution 2008, la conversion automatique ne fait pas le
travail tout à fait correctement puisque l’on se retrouve avec le message d’erreur
suivant : 

C:ProjectsDasBlogsourcenewtelligence.DasBlog.Webnewtelligence.DasBlog.Web.csproj(1529,123):
The expression "$("".VSVersion)" cannot be evaluated. Method ‘System.String.VSVersion’
not found.

image

Afin de résoudre le problème éditez le fichier csproj et identifiez les lignes suivantes
:

image

Supprimez-les et remplacez-les  par l’import suivant :

<Import Project="$(MSBuildExtensionsPath)MicrosoftVisualStudiov10.0WebApplicationsMicrosoft.WebApplication.targets"
/>

Tout devrait alors rentrer dans l’ordre, vous devriez être capable d’éxécuter et modifier
DasBlog afin de l’adapter à vos besoins :

image