dimanche 16 août 2009

Code T-SQL pour hacher une chaîne de caractères

Le code qui suit (pour Microsoft SQL Server 2005 et supérieur) permet de hacher un texte selon les algorithmes de hachage suivants : MD2, MD4, MD5, SHA ou SHA1.

Voici le code dans un exemple d'utilisation (si nécessaire, remplacez SHA1 par l'algorithme désiré) :
SELECT SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('SHA1', 'MotDePasse')), 3, 40)
Le format de données de la sortie de "HashBytes()" est binaire (hexadécimal). Dans cet exemple, les données binaires sont converties en texte avec la fonction "fn_varbintohexstr()" pour une utilisation directe comme chaîne de caractères. Les 2 premiers caractères (0x) qui déterminent le format hexadécimal sont aussi retirés du résultat avec "SUBSTRING()".

jeudi 2 avril 2009

Code T-SQL pour unir les valeurs d'une table dans une chaîne de caractères

Le code suivant (pour Microsoft SQL Server) permet de joindre les valeurs d'un champ d'une table afin de construire une chaîne de caractères dont chaque élément est séparé par un délimiteur (qui peut être personnalisé).

La chaîne de caractères ainsi créée peut être utilisée, par exemple, pour passer en paramètre une liste de valeurs sous la forme sérialisée.

Voici le code dans un exemple d'utilisation :
DECLARE @Table table
(
Value varchar(MAX)
)

INSERT INTO @Table VALUES ('12'),('34'),('56'),('78'),('90')

DECLARE @List varchar(MAX)
DECLARE @Delimiter varchar(5) = ','

SELECT @List = COALESCE(@List + @Delimiter, '') + Value
FROM @Table

SELECT @List

lundi 2 mars 2009

Fonction T-SQL pour scinder une chaîne de caractères en table

La fonction suivante (pour Microsoft SQL Server) permet de découper une chaîne de caractères selon un délimiteur quelconque (qui peut être passé en argument) et retourne une table contenant une ligne pour chacune des valeurs scindées.

Cela permet donc, par exemple, de prendre un paramètre dans une procédure stockée de type "varchar(MAX)" comportant une chaîne de caractères avec des valeurs séparées par une virgule, et de découper chacune de ces valeurs pour les utiliser dans une liste "IN ( )" d'une clause "WHERE".

Voici le code de la fonction :
CREATE FUNCTION Split
(
@Delimiter varchar(5),
@List varchar(MAX)
)
RETURNS @TableOfValues table
(
RowID int IDENTITY(1,1),
[Value] varchar(MAX)
)
AS
BEGIN
DECLARE @LenString int

SET @List = LTRIM(RTRIM(@List))

WHILE LEN(@List) > 0
BEGIN
SELECT @LenString =
(CASE CHARINDEX(@Delimiter, @List)
WHEN 0 THEN LEN(@List)
ELSE (CHARINDEX(@Delimiter, @List) - 1)
END)

INSERT INTO @TableOfValues
SELECT SUBSTRING(@List, 1, @LenString)

SELECT @List =
(CASE (LEN(@List) - @LenString)
WHEN 0 THEN ''
ELSE RIGHT(@List, LEN(@List) - @LenString - 1)
END)
END
RETURN
END
Voici maintenant le code d'un exemple d'utilisation de cette fonction :
DECLARE @Table table
(
TableID int
)

INSERT INTO @Table VALUES ('12'),('34'),('56'),('78'),('90')

DECLARE @List varchar(MAX)
SET @List = '12,34,56,78,90'

SELECT * FROM @Table
WHERE TableID IN (SELECT CAST(Value AS int) FROM Split(',', @List))

dimanche 1 mars 2009

Windows 7 disponible dès cet automne

Il semblerait que le nouveau système d'exploitation de Microsoft qui doit remplacer Windows Vista, soit Windows 7, sera disponible dès le début de l'automne prochain (fin septembre-début octobre) en version définitive selon plusieurs sites Web faisant mention qu'un important partenaire de Microsoft (Compal; un assembleur taïwanais qui construit des ordinateurs portatifs pour Acer et HP) aurait affirmé à ses investisseurs que la nouvelle version serait mise en vente à cette période. Microsoft n'aurait pas nié l'information.

Pour plus de détails : PC INpact

Selon moi, cette version aurait dû être un Service Pack de Windows Vista afin d'éviter de faire payer une nouvelle version à la très grande majorité des utilisateurs qui voudront certainement remplacer Vista sur leurs ordinateurs pour libérer les ressources utilisées en trop par celui-ci.

De plus, Windows 7 ressemble beaucoup à Windows Vista en terme de fonctionnalités et côté apparence (outre peut-être l'UAC moins invasif et plus raffiné). Il s'agit donc surtout d'une amélioration au niveau de la performance, de la stabilité et de la compatibilité du système, ce qui aurait justifié une simple mise à jour gratuite de Vista à mon point de vue.

Peut-être que Microsoft souhaitait faire oublier le nom "Vista" en espérant avoir plus de chance avec le "7 chanceux" de Windows 7? Ou serait-ce pour respecter l'échéancier convenu d'environ 3 ans entre deux versions de Windows afin de ne pas répéter l'erreur du délai entre la sortie de Windows XP et Vista?

En passant, le système d'exploitation pour serveur Windows Server 2008 est en grande partie basé sur le noyau de Vista, mais plusieurs fonctionnalités qui demandent beaucoup de ressources système sont désactivées par défaut ou tout simplement absentes.

Personnellement, je trouve que le système d'exploitation Windows Vista (et ses dérivés) se comporte tout de même très bien en général. Le principal problème de celui-ci, c'est qu'il demande une machine relativement puissante et récente afin de fonctionner de façon aussi réactive que Windows XP par exemple. De plus, cette charge excessive du système limite la quantité de ressources disponibles pour les autres applications.

À suivre...

samedi 28 février 2009

Bienvenue!

Bienvenue dans mon carnet personnel relatant, en matière de technologie, certains faits pertinents de l'actualité, les incontournables et mes découvertes. Plus précisément, ce journal a pour but de communiquer mes connaissances et mes opinions sur divers sujets techniques en informatique. Il se veut sans prétention et à titre informatif et éducatif. Les commentaires des lecteurs sont encouragés et donc, n'hésitez pas à faire part de vos réactions.