lundi 7 octobre 2013

Formats de date en .Net - Cheat-Sheet

Vu que je me demande souvent si le format de date .Net des mois utilise un m minuscule ou majascule et quel caractère est utilisé pour les millisecondes je me suis fait une petite cheat-sheet (un copion quoi) accrochée à mon mur.

Voici les liens vers mon copion disponible en A4 sur 2 pages ou en A4 sur une seule page avec 2 colonnes :



mardi 1 octobre 2013

Ma fonction powershell retourne un tableau avec plusieurs éléments au lieu de l'objet demandé


Après un long débogage dans des scripts powershell je me sens obligé d'écrire un petit post sur ce blog. Cette session de débug aura au moins l'avantage de m'avoir appris ce qu'était le mot clé return en powershell et qu'il ne fallait pas se fier aux apparences !

Par exemple, la fonction :

function get-string
{
    'hello world' -match 'hello'
    return $Matches[0];
}
Que ce passera t-il si on appelle cette fonction dans le shell ? En tant que développeur C# je m'attendrai à avoir la valeur "hello" ou une chaîne de caractère.

Voici ce que me retourne la commande get-string:
True
hello
Deux valeurs ! Comment est-ce possible ? Je n'ai qu'un seul return dans ma fonction et la valeur $Matches[0] ne contient que la chaine "hello" si j'affiche cette valeur ou si j'ajoute un watcher sur cette variable. Que s'est-il donc passé ?

Si on prend le temps de lire la documentation about_return depuis le shell ou sur internet, on peut y lire que le mot clé return retourne également toutes sorties non interceptées. Le mot clé match retourne un booléen pour indiquer si un match a été réalisé ou non. Donc une donnée booléenne est envoyée et non récupérée dans la fonction. Cette donnée est donc ajoutée à la sortie de la fonction en plus de l'objet retourné via le mot clé return.

mardi 23 juillet 2013

ORA-12018 lors de la creation d'une vue materialisée avec un database link

Ce matin, j'ai voulu recréer sur une base de données Oracle, une vue matérialisée avec un Fast refresh utilisant un database link. La particularité de cette vue materialisée est qu'elle utilise un dblink portant le même nom que le schéma sur lequel se trouve la table que je souhaite avoir dans ma vue matérialisée.

Il semblerait que cette particularité génère une erreur sur certaines versions d'Oracle.

SQL> CREATE MATERIALIZED VIEW local.mytable BUILD IMMEDIATE REFRESH FAST As Select * From master.mytable@master; 

CREATE MATERIALIZED VIEW local.mytable BUILD IMMEDIATE REFRESH FAST As Select * From master.mytable@master 
ERROR at line 1: ORA-12018: following error encountered during code generation for "local"."mytable" 
ORA-00942: table or view does not exist 

Un workaround pour contourner cette erreur consiste à d'abord la vue materialisée en Complete Refresh puis de la modifier pour qu'elle utilise un Fast refresh. Donc ici pour ma table mytable:

CREATE MATERIALIZED VIEW MyMaterializedView BUILD IMMEDIATE REFRESH COMPLETE As Select * From master.mytable@master;
Alter MATERIALIZED VIEW MyMaterializedView REFRESH FAST;
 
Je n'ai pas trouvé d'explications claires sur le pourquoi de ce bug mais en tout cas le workaround semble bien fonctionner.

lundi 13 mai 2013

Comment déterminer si un Type dispose d'un constructeur sans paramètre

Il existe plusieurs solution pour déterminer par réflexion si un Type dispose d'un constructeur sans paramètre. Voici 2 manières de faire :
  • typeof(TypeT).GetConstructors().Any(c => !c.GetParameters().Any())
  • typeof(TypeT).GetConstructor(Type.EmptyTypes) != null 

Bonne réflexion !



jeudi 25 avril 2013

Ajouter un programme du XP Mode dans windows 7 en seamless mode

Le XP Mode l'utilisation d'applications fonctionnant sur windows XP sur Windows 7. Le XP Mode est simplement une machine Virtuelle "Windows Virtual PC avec une image de windows XP Professionnel installée dessus.
Virtual PC permet un mode "seamless". Le seamless mode permet de travailler avec les fenêtres des applications tournant sur la VM sur le bureau de la machine host. Cela donne l'impression qu'il n'y a pas du tout de machine virtuelle et que tout est géré par l'OS de la machine hôte.

Il est possible de lancer directement depuis Windows 7 des applications s’exécutant en XP Mode en seamless mode depuis le menu démarrer de Windows 7. Voici la petite procédure à suivre : 

  1. Sur la machine virtuelle (XP Mode) aller dans le dossier %allusersprofile%\start menu (C:\Documents and Settings\All Users\Start Menu)
  2. Créer un raccourci vers votre application dans ce dossier
  3. Après quelques secondes, votre lien s'affichera dans le dossier "Windows Virtual PC/Windows XP Mode Applications" de votre Windows 7 et démarrera automatiquement le XP Mode et votre application
 Et voila !

Liens:

mercredi 24 avril 2013

Sites de cours vidéos en ligne

Voici une liste de sites permettant de suivre des cours/formations/workshops pour les développeurs .Net


vendredi 15 mars 2013

Afficher le contenu d'un dossier avec IIS express

Par défaut IIS express ne permet pas d'explorer le contenu d'un dossier. Si vous souhaitez changer ce comportement, voici la procédure à suivre :

Ouvrez le fichier de configuration d'IIS express:
[Windows7]
C:\Users\{Username}\Documents\IISExpress\config\applicationhost.config

Ensuite il faut aller ajouter ou modifier l'élément "directoryBrowse" qui se trouve dans /configuration/system.webServer. Cet élément doit être configuré de la manière suivante :  

C'est à dire :

<configuration>
[...]
<system .webserver>
[...]
<directorybrowse enabled="true"/>
[...]


[...] représente d'autres éléments qui ne nous concernent pas.

dimanche 3 mars 2013

Attention le petit oiseau va sortir ...

Après LockHunter, voici un autre petit outil bien pratique que j'utilise souvent lors de mes journées de développeur : Greenshot.

Cet outil permet de prendre des captures d'écran (screenshots). Une fois installé, vous disposez d'une nouvelle icône (un G vert)dans votre barre des tâches qui vous permet de configurer Greenshot.

Greenshot permet de prendre une capture d'écran d'une fenêtre en particulier, d'une zone de votre écran ou de votre écran au complet. Une fois la capture réalisée, il est possible d'ajouter des annotations sur votre capture avant de la sauvegarder en png, jpeg, gif, bmp, ... en gros n'importe quel format d'image standard.

Greenshot est téléchargeable sur le site http://getgreenshot.org/

Mais qui locke mon fichier ?

N'avez vous jamais eu l'envie d'exploser votre clavier lorsque vous souhaitez supprimer/déplacer un fichier et que Windows vous affiche un gentil message d'erreur vous indiquant que ce fichier est actuellement bloqué par un autre processus ? Une petite voix résonne alors dans votre tête et hurle: "Mais qui locke mon fichier ?!?!".

Afin d'éviter une immense frustration, voici un petit logiciel fort sympathique qui va grandement vous servir : LockHunter : http://lockhunter.com/

LockHunter vous indique, entre autres, quel process bloque actuellement le fichier que vous lui avez demandé d'inspecter et vous permet de forcer la suppression ou de terminer ce processus. Le logiciel s'intègre à l'explorateur Windows et est accessible au moyen d'un simple clique droit sur un fichier.

Fini l'énervement et un grand merci à la société CrystalRich d'avoir développé ce petit outil bien pratique !