mercredi 28 janvier 2009

Free Pascal et Lazarus

En tant que développeur Delphi, c'est toujours avec une certaines curiosité que je m'attarde sur Lazarus.
C'est un peu par hazard que je suis revenu faire un tour sur le site officiel... l'ocassion d'écrire un petit billet pour mémoire.
Qu'est ce que Lazarus
Lazarus est une librairie de classes pour FreePascal qui émulent Delphi. Free Pascal est un compilateur sous license GPL fonctionnant sous Linux, Win32, OS/2, 68K et plus encore. Free Pascal a été conçu pour être capable de comprendre et compiler la syntaxe Orienté Object de Delphi.. Lazarus est la piece manquante du puzzle perrmettant de développer des logiciels Delphi pour différentes plateformes. A l'opposé du principe de Java "coder & compiler une fois, exécuté partout", Lazarus et Free Pascal opte pour l'approche "coder une fois, compilable partout". Puisque le même compilateur est disponible sur toutes les plateformes, cela signifie qu'il n'est pas nécessaire de modifier le code pour produire 'exactement' la même application pour différentes plateforme.
Quelle GUI est utilisé? Quel type de Widget?
C'est la partie la plus achevée. Lazarus a été développé pour être totalement et completement indépendant des API. Une fois le code écrit, la compiler link ce dernier aux APIs des widget que vous avez choisi. Si vous voulez utiliser GTK+ ou encore être Gnome compliant... pas de problème. Aussi longtemps que le code d'interfacage existe pour les widgets que vous utiliser... vous pouvez les utiliser (link). S'il n'est pas disponible, vous pouvez l'écrire.
Par exemple. Disons que vous créez un produit pour Windows utilisant les widgets standards de Windows. Et bien maintenant, vous pouvez créer une version Linux.
Premièrement, vous décidez quel est le set de widgets que vous voulez utiliser (par exemple gtk+).
Vous copier votre code sur une machine de développement Linux, vous compilez et linkez ce dernier avec l'interfacage Gtk+ (gtk+ interface unit).
Voila comment vous venez juste de créer une version Linux d'un produit Windows sans coding addtitionnel.

At ce state le Team Lazarus utilise gtk+ comme widget d'origine... mais l'équipe travaille actuellement sur  Qt et les API Win32. Des que Lazarus atteindra la version 1.0, les développeurs seront capable de créder/développer les unités d'interface pour attacher la LCL (Lazarus Component Libraries) a d'autres ensembles de widget.
Est-ce un environnement RAD comme Delphi?
Oui... cependant, il n'est pas encore complet. Certaines portions du Form Designer on encore un grand besoin de développement. Dans son ensemble, l'IDE est complet et peut être utilisé pour la plupart des besoins de développement. Cependant, plusieurs aspects du projet ont encore besoin d'aide.
Puis-je utiliser mon code Delphi
Oui mais dans une certaine mesure. Si le code est du "standard Delphi pascal" et utilise les composants standard trouvés dans Delphi... alors la réponse est OUI.
Par contre, si vous utilisez quelques base de données, OCX ou DCU spécifiques... alors la réponse sera probablement non. Ces éléments sont spécifiques a Windows et fonctionneraient uniquemen t avec Windows. Cependant, si vous cherchez a developper des application Windows en utilisant Free Pascal et Lazarus... alors la réponse sera OUI. Cette fonctionalité n'est pas encore ajoutée à la LCL mais cela sera possible dans le future.
Puis-je créer des applications commerciales?
La réponse est OUI (voir ici pour plus d'informations)
Quelques questions sans réponses
Dans l'immédiat, mes maigres recherches n'ont pas encore répondu au questions suivantes:
  1. Est-il possible de faire des développements attaquant des DB Microsoft Sql Server (en Ado ou OleDB ou SqlClient)?
    C'est déjà possible avec le projet mono (c# compiler pour Linux)... quid pour Lazarus?
  2. Est-il possible de faire des développement web (WebModule) utilisant Apache?
  3. Est-il possible de développer des WebServices?

Sources:

Internet Explorer 8 est disponible

Ca y est, la Release Candidate de IE8 est disponible!
J'ai beau avoir une nette préférence pour FireFox, il est hors de question de faire l'impasse sur cette information.

Télécharger la version pour Windows XP ou pour Vista depuis le site de Microsoft

Pour en savoir un peu plus sur les nouvelles fonctionalités de IE8:
  • Meilleur support des standards, 
  • Nouveau moteur de rendu, 
  • Nouveau mode de compatibilité
Allez jeter un petit coup d'oeil sur cet article de PCInpact.

Mise à jour du 12/02/2009: 
Clubic vient de  publier un article assez complet sur les nouvelles fonctionalités d'IE8.

Source: Ici sur PCInpact

Publication pour Delphi - Blaise Pascal

Voila bien longtemps que je n'avais plus eu vent de publications dans le domaine.
Après la disparition de "Delphi Informant" et "Delphi Magazine" il ne restait plus trop grand chose d'intéressant à lire.

Ce matin, je suis tombé par hasard sur "Blaise Pascal" une publication intéressante autour de Delphi et pascal.
A l'occasion, je pousserai les investigations un peu plus loin.

mardi 27 janvier 2009

SqlServer single-user mode

Parmi les opérations peu fréquentes sous SQL server, il y a l'isolation d'une base de donnée pour raison administrative.
Par exemple, lors remplacement d'une clé primaire "Clustered Primary Key" par une "unique constraint, il est nécessaire de retirer la clé primaire pour la remplacer ensuite par la contrainte (évident n'est-ce pas). Durant le laps de temps entre ces deux opérations, la table reste en libre accès. Il y a donc un risque non négligeable de voir s'insérer des enregistrements indésirables (ne répondant plus au contrainte).
Il convient donc de se protéger contre ce risque!
L'une des options disponibles est de placer la DB en single-user mode.

Note:
Dans notre environnement, nous n'utilisons que des scripts sql.

Et dans ce cadre, il est bien plus facile de placer la DB en single-mode que d'en sortir (arf!!).
Il faut avouer qu'Internet manque cruellement de documentation en la matière. Etant pris au piège pour la Nième fois, je me décide donc documenter cette fonctionalité.

Mettre une DB en Single-user mode
A mon avis, passer en single-user mode est beaucoup trop simple.
A noter que toutes les autres connections SQL sont interrompues.

ALTER DATABASE [TheDatabaseName]
SET SINGLE_USER WITH NO_WAIT

Par contre, pour en sortir, le plus efficace est encore d'utiliser:
C'est ici qu'il est moins facile de trouver la documentation adéquate.

ALTER DATABASE [TheDatabaseName]
SET MULTI_USER

ou encore

EXEC SP_DBOption 'TheDatabaseName', 'single user','false'

Démarrer SqlServer en Single-user mode
Démarrer le moteur SQL en Single-User mode peut s'avérer nécessaire lorsqu'il faut réparer la "master" db.
Voici quelques notes/références annexes:

Meilleurs Voeux 2009

 Parce qu'il n'est jamais trop tard...


Nous vous souhaitons...
De la sérénité à chaque levé de soleil,
la réussite dans chaque facette de votre vie.
La santé en votre for intérieur,
et la famille à vos côtés.
D'heureux souvenirs des jours passés,
et des chemins menant à de meilleurs lendemains.
Des rêves qui font de leur mieux pour se réaliser.
Et finalement, nous vous souhaitons de vous enrichir de toutes ces merveilles que la vie puisse vous offrir.

Dominique & Françoise.

samedi 24 janvier 2009

Les manipulateurs

Voir l'article "La manipulation ... au fond c'est quoi ?" très intéressant sur ce blog "Le petit coin de Steph".


Cet article fait d'ailleurs référence au livre "Les manipulateurs sont parmi nous" d' Isabelle Nazare-Aga que je suis déjà bien décidé à lire.
Si ce sujet vous intéresse, n'hésitez pas à consulter le billet de Steph.

J'en profite d'ailleur pour dupliquer une partie de l'information (histoire de ne pas la perdre si le blog de Steph devait disparaître).

Voici donc une liste de 30 critères permettent de déceler un manipulateur (extrait du livre "Les manipulateurs sont parmi nous" d' Isabelle Nazare-Aga, éditions de l'Homme).
Si quelqu'un répond à 14 de ces critères, il est manipulateur.

01. Il culpabilise les autres au nom du lien familial, de l'amitié, de l'amour, de la conscience professionnelle
02. Il reporte sa responsabilité sur les autres, ou se démet des siennes
03. Il ne communique pas clairement ses demandes, ses besoins, ses sentiments et opinions
04. Il répond très souvent de façon floue
05. Il change ses opinions, ses comportements, ses sentiments selon les personnes ou les situations
06. Il invoque des raisons logiques pour déguiser ses demandes
07. Il fait croire aux autres qu'ils doivent être parfaits, qu'ils ne doivent jamais changer d'avis, qu'ils doivent tout savoir et répondre immédiatement aux demandes et questions
08.Il met en doute les qualités, la compétence, la personnalité des autres : il critique sans en avoir l'air, dévalorise et juge
09. Il fait faire ses messages par autrui
10. Il sème la zizanie et crée la suspicion, divise pour mieux régner
11. Il sait se placer en victime pour qu'on le plaigne
12. Il ignore les demandes même s'il dit s'en occuper
13. Il utilise les principes moraux des autres pour assouvir ses besoins
14. Il menace de façon déguisée, ou pratique un chantage ouvert
15. Il change carrément de sujet au cours d'une conversation
16. Il évite ou s'échappe de l'entretien, de la réunion
17. Il mise sur l'ignorance des autres et fait croire en sa supériorité
18. Il ment
19. Il prêche le faux pour savoir le vrai
20. Il est égocentrique
21. Il peut être jaloux
22. Il ne supporte pas la critique et nie les évidences
23. Il ne tient pas compte des droits, des besoins et des désirs des autres
24. Il utilise souvent le dernier moment pour ordonner ou faire agir autrui
25. Son discours paraît logique ou cohérent alors que ses attitudes répondent au schéma opposé
26. Il flatte pour vous plaire, fait des cadeaux, se met soudain aux petits soins pour vous
27. Il produit un sentiment de malaise ou de non-liberté
28. Il est parfaitement efficace pour atteindre ses propres buts mais aux dépens d'autrui
29. Il nous fait faire des choses que nous n'aurions probablement pas fait de notre propre gré
30. Il fait constamment l'objet des conversations, même lorsqu'il n'est pas là.

vendredi 23 janvier 2009

SQL Server - Les indexes et le préfixe _WA_sys_

Voici quelques informations collectées sur le Net concernant la définition des indexes dans SQL Serveur (version 7).
Récemment, lors d'une révision des tables de notre base de données en SQL 7 (et oui, il en existe toujours), en utilisant la commande sql  "sp_help TableName" j'ai découvert une grande quantité d'indexes préfixés avec "_WA_sys_".
Nous n'avions manifestement pas crées ces indexes... et la question s'est alors posée de savoir pourquoi il étaient là.

Je sais aujourd'hui que l'existence de ces indexes "_WA_sys_" indique une mauvaise optimisation de la base de donnée. Une mauvaise indexation que SQL server a tenté de palier au mieux.
La suite de cet article rassemble le matériel glâné ci et là sur Internet.

Note:
Cet article de fond concerne principalement SQL Serveur 7. Depuis SQL Serveur 2005 bénéficie d'outils avancés facilitant l'optimisation des indexes. Il n'en reste pas moins que les informations contenues dans cet article restent pertinentes à plus d'un title (en autre l'existence des indexes _wa_sys_).
Interroger la table SysIndexes

Pour commencer, une requête sql permettant d'obtenir une  liste des indexes présent sur une table.
Cette section est accompagné d'une description en anglais provenant d'une page anonyme sur le net.
L'information n'en est pas moins intéressante.


;  In the following SQL Statement, indID = 0 is excluded because it correspond to the heap.
;               indID=255 is excluded because it exists if table contains a Text or similar column

  SELECT name as IndexName
  FROM SysIndexes idx
  WHERE idx.id in (
    SELECT id from SysObjects tbl
    WHERE  tbl.type='U' and tbl.Name = 'tblTMcVarInstance' )
    and indID not in ( 255, 0 )

Each table and index has a row in sysindexes uniquely identified by the combination of the object identifier (id) column and the index identifier (indid) column. The allocation of pages to table and index is managed by a chain of IAM pages. The column sysindexes.FirstIAM points to first IAM page in the chain of IAM pages managing the space allocated to the table or index.
Each table has a set of rows in sysindexes:
  • A heap has a row in sysindexes with indid = 0.
  • The FirstIAM column points to the IAM chain for the collection of data pages for the table. The server uses the IAM pages to find the pages in the data page collection because they are not linked together.
  • A clustered index has a row in sysindexes with indid = 1.
    The root column points to the top of the clustered index b-tree. The server uses the index B-tree to find the data pages.
  • Each nonclustered index created for the table has a row in sysindexes.
    The values for indid in the rows for each nonclustered index range from 2 to 251. The root column points to the top of the nonclustered index B-tree.
  • Each table that has at least one text, ntext, or image column also has a row in sysindexes with indid = 255.
    The column FirstIAM points to the chain of IAM pages that manage the text, ntext, and image pages.

Qu'est-ce qu'un index _WA_sys_?
Lorsqu'un index est créé à l'aide d'une requête SQL, l'utilisateur est prié de mentionner un nom pour celui-ci.
Dans notre cas, l'exploration de SysIndexes peut révéler des indexes complémentaires préfixés avec" _WA_sys_". D'ou viennent-ils?

Réponse:
SQL Server creates statistics when it can not find an adequate index to perform a particular query. It makes this determination based on an algorithm that takes into account frequently used queries. This prevents the engine from creating statistics every time it doesn't find an index, but still allows it to self-optimize when it determines a need. Remember, the presence of statistics that SQL Server builds is an indication of inadequate indexing. Instead of trying to copy stats around, you should be asking yourself why does SQL Server even have to create those stats in the first place? It is creating those stats because you have not created sufficient indexes for the query patterns your users are placing against the server? Stats are not transferred and are transitory things. Your performance problems are solved by creating the indexes you need, instead of relying on SQL Server to finally determine that you need them, and then creating stats to fill the void your lack of indexes have left.

Les entrées _WA_sys_ apparaissant pour les tables indiquent une mauvaise indexation de ces dernières.

Détecter les tables mal indexées
Suite de la précédente section... puisque dans ce cas  le préfix "_WA_sys_" est automatiquement ajouté, une simple requête SQL sur la table sysIndexes révèlera tous les indexes créés par le processus de mise à jour statistic.

select tbl.Name as TableName, idx.indID, idx.name as IndexName, tbl.id as ObjectID
from sysindexes idx
left join sysobjects tbl on idx.id = tbl.id
where idx.name like '_WA_%' and tbl.type='U'
Les indexes "_WA_sys_", copie de base de donnée et PERFORMANCES!Lors du backup d'une DB, les indexes _WA_sys_ n'y sont pas inclus.
Par conséquent, à la restauration, il ne seront pas restaurés (ou recrée).
La présence d'indexes "_WA_sys_" indique une indexation inadéquat dans la base de donnée... résultant forcement en une faible performance... qui est cependant corrigé par le processus d' "update statistic" et "query optimizer" (d'ou la création "sauvage" d'index _WA_sys_).

Mais attention! Puisque les indexes _WA_sys_ ne font pas parties du procéssus backup/restore, les performances des bases de données mal optimisée seront forcement mauvaises (voir catastrophique) après restoration.
Tant que le processus d'optimisation ne re-créera pas les indexes _WA_sys_ , la base de donnée "fonctionnera sur une seule jambe".

mercredi 21 janvier 2009

Symfony - un framework pour PHP5

Symfony est une framework complet composé d'une librairie de classes pour PHP5.
Il fournit une architecture, des composants et des outils audant les développeurs à concevoir plus rapidement des sites Web complexes.
Choisir Symphonie, c'est assurer un développement rapide mais d'également permettre un hosting et une scalabilité simplifié tout en privilégiant une maintenance "sans surprise".
Le framework Symfony est basé sur l'expérience... il ne réinvente donc pas la roue.
Symfony est basé sur les meilleures pratiques de développement WEB et inclus, par ailleurs, quelques librairies largement réputées.

Pour plus d'info, voir le site officiel qui contient quelques screencasts.

Voici quelques-uns des composants WEB open-source inclus dans le framework Symfony:

  • Prototype, for JavaScript framework (symfony 1.0 and 1.1)
  • script.aculo.us, for Ajax and visual effects (symfony 1.0 and 1.1)
  • Dynarch.com, for the DHTML Calendar (symfony 1.0 and 1.1)
  • TinyMCE, for Rich Text Editing (symfony 1.0)
Symfony utilise également du code PHP provenant d'autres projets open-source:
  • Creole, for database abstraction layer
  • Prado, for i18n support
  • Spyc, for YAML parsing (symfony 1.0)
  • Pake, for command-line tool (symfony 1.0)
Avis personnel:
Au premier coup d'oeil, Symfony semble être un framework complet et bien documenté.
Le fait de retrouver un site officiel bien détaillé est un avantage indéniable.
Qui plus est, l'utilisation de Prototype, Script.aculo.us et TinyMCE (déjà bien connus) renforcent encore l'image de sérieux de cette distribution.
Si je devais un jour entamer un développement d'envergure en PHP, il est certains que j'approfondirai les possibilités de Symfony.

lundi 19 janvier 2009

Utilitaires: Capture, Total Commander, TomBoy, etc

Utilitaires super léger  - Windows
Parmis les utilitaires, ma préferences va certainement aux logiciels légers (moins de 2 Méga-Octets) mais pleinements fonctionnels. La puissance d'un logiciel tient plus souvant de son ergonomie que de la multitude des fonctionnalités.
Capture d'écran
FastStone screen capture est pour moi l'un des incontournable. Simple et pratique, ce logiciel de capture dispose de plusieurs modes de prise de vue (avec une loupe pour ne pas rater un pixel). Cet utilitaire dispose également de fonctions de floutage et d'annotation (ajout de texte, boites et flèche).
Je n'en veux pas un autre
Voir ici pour plus d'info.

Total Commander
Je suis, par exemple, un aficionados de "Total Commander" que je ne remplacerais pour rien au monde par l'Explorer de Windows. Ce logiciel est dédié à la manipulation de fichier... et l'affichage de deux listes (source & destination) facilite grandement mes tâches journalières.
Il faut avouer que j'ai un sacré penchant pour les raccourcis claviers.

Malheureusement, il est payant... mais vaut bien son prix.

Free ISO burner
Joli petit logiciel de 750 Kb permettant de réaliser la gravure d'une image disque au format ISO.
Gratuit, léger et portable... voici un logiciel intéressant. Plus d'info ici et téléchargement .

Express Burn (et les autres)
Logiciel partiellement gratuit et sans fioritures, Express Burn permet de graver des CD vos données, de copier ou créer un des CD audio. Reste encore les options de de vérification de disques, de finalisation, d'overburning et de normalisation des fichiers audios.
Plus d'info ici et téléchargement .

Parmis les autres logiciel de gravure gratuit, il y a:
Restoration
Excellent utilitaire dédié à la récupération de fichiers effacés.
Voir cette fiche descriptive sur Clubic pour plus d'information (ou pour du téléchargement).
Par contre, pour effacer efficacement vos fichiers (car il est bien trop facile de les restaurer), aller jeter un oeil sur l'utilitaire SDelete pour "Safe Delete" de SysInternals (maintenant repris par Microsoft).

Utilitaires systèmes pour Windows
Série d'utilitaires très puissants à ne surtout pas mettre dans les mains d'un néophyte (il pourrait tout casser!).
Aujourd'hui, les utilitaires gratuit de SysInternals sont repris par Microsoft et reste disponible gratuitement.
Voir ici pour plus d'information.

Source: Sources personnelles et en autre Cet article sur Clubic

Tomboy - Windows & Ubuntu
TomBoy est un logiciel écrit en C# et fonctionnant à l'origine sous Mono.
J'utilise ce logiciel de prise de note à la volée (Post-it) depuis presqu'un an sur mon PC Ubuntu.

J'apprends maintenant qu'il en existe une version Windows. Toutes les versions de logiciel "Post-It" m'ayant profondément déçu, j'ai tenté l'expérience de TomBoy sous Windows.
Pour faire fonctionner TomBoy sous Windows, jeter un oeil sur cet article. contenant la plupart des ressources utiles.

Dans mon cas:
  • J'ai installé GTK# Runtime 2.10
  • Fixer un problème d'installation pour Vista (même si installé sous WinXP SP2).
    Voir cet article.
  • Redémarré le PC (primordial).
  • Installé TomBoy.
Finalement, après quelques essais, je me suis retrouvé dans l'impossibilité d'installer le kit GTK# sous Windows. C'est bien dommage :-(

18/02/2009: Un nouvel article concernant l'installation sur Win 32 vient d'être publié.
Il décrit la marche à suivre que voici.

dimanche 18 janvier 2009

Trouble Déficitaire de l'Attention (TDA) et la rilatine

La Rilatine est un médicament utilisé pour augmenter la durée de concentration des enfants atteints de "Trouble Déficitaire de l'Attention"(TDA).

Attention:
Cet article n'a aucune vocation médicale (je ne fais par ailleurs pas partie du corps médical). Je suis donc susceptible de faire des erreurs que je corrigerai lorsqu'elles seront reportées.
Dans cet article j'essaye de transmettre au mieux et le plus simplement possible le peu de savoir que j'ai engrangé. C'est qu'en tant que parent, je suis concerné au premier plan par ce sujet.

Mise à jour, le 4 mai 2011:
D'autres articles relatifs au TDA, TDA/H (ou ADHD en anglais) sont disponibles dans la catégorie TDA/H.
Cliquer ici pour afficher tous les articles de la catégorie TDA/H.

Présentation du TDA
Voici une petite émission Canadienne qui explique assez bien le "Pourquoi" et le "Comment".



La communication dans le cerveau
En complément de l'émission, voici quelques mots et vidéos expliquant le fonctionnement normal de la communication au sein du cerveau.
Pour commencer, les deux animations ci-dessous (bien qu'en anglais) présentent assez bien ce processus de communication où l'impulsion électrique est transformée en message chimique.
Par la suite, une planche explicative mettra le focus sur le processus de diffusion de la dopamine à l'origine du TDA. Ce processus de diffusion de la Dopamine est l'étape finale (chimique) du transfert de l'impulsion électrique.

première vidéo présentant la communication au sens général.

deuxième vidéo présentant l'émission et le recyclage de la dopamine.
La dopamine sont les petits points bleus qui voyage d'un côté à l'autre.


Diffusion de la dopamine
Sous l'effet d'une impulsion électrique, le bulbe émetteur émet de la dopamine (neuro-transmetteur). Cette dopamine est libérée par l'émetteur dans l'espace situé entre l'émetteur et le récepteur (pointillés en rouge).
La dopamine voyage alors jusqu'au récepteur... transmettant ainsi l'impulsion électrique sous forme d'un message chimique.
Ce qu'il est important de savoir, c'est qu'une petite partie de cette dopamine est re-capturée en très faible proportion par l'émetteur (pointillés en vert) et recyclée... le reste de la dopamine atteignant le récepteur.

Schéma de transmission de la dopamine entre le bulbe émetteur et le récepteur (cliquer pour agrandir).



Source du trouble de l'attention
Dans le cas du TDA, la dopamine (neurotransmetteur) n'atteint pas le récepteur  en quantité suffisante.
Au lieu de cela, la dopamine est recapturée par le bulbe émetteur dans une proportion excessive.
Ainsi donc, le message chimique n'est pas transmit au mieux... ce qui,d'une façon générale,  provoque un mauvais fonctionnement de la communication au sein du cerveau.

La Rilatine
La Rilatine (existant aussi sous de nombreux autres noms) est constituée principalement de méthylphénidate. Cette molécule est un inhibiteur de recapture présynaptique de la dopamine (source: ici sur Wikipédia).
En d'autres termes, la Rilatine empêche le bulbe émetteur de re-capturer trop de dopamine (les points bleus). Cela augmente donc la quantité de dopamine pouvant atteindre le récepteur. La connexion pouvant ainsi fonctionner dans de meilleures conditions.

Ce n'est pas une camisole chimique

La rilatine à beaucoup de détracteurs... considérant que l'on "drogue" nos enfants trop difficiles.
Malheureusement, il est fort à parier qu'il ne s'agit pas d'avis éclairés.
En tant que néophyte, il est parfois difficile de juger d'une situation si l'on n'a pas le nez dedans. Je sais de quoi je parle, pour avoir moi même un enfant souffrant de TDA, je peux vous assurer que la vie est épuisante à plus d'un titre.

Les enfants souffrant de trouble de l'attention sont actifs et il n'est pas rare qu'ils aient certains comportements HyperActifs.  
Il y a une différence fondamentale à faire avec des enfants turbulents... et les spécialistes ne s'y trompent pas.
La rilatine n'est pas en vente libre et ne se prescrit pas sur le coin d'une table. Cette prescription est du ressort du spécialiste qui lui même s'appuie sur différents critères.
La rilatine est un médicament que l'on peut placer dans la catégorie des excitants (famille des amphétamines, stimulant du système nerveux central). Utilisée dans les conditions appropriées l'on peut obtenir le résultat adéquat. Si la Rilatine n'était pas la prescription appropriée, cela se ressentirait rapidement dans le comportement de l'enfant ("éteint/amorphe" ou sur-excité).
Il faut cesser les idées reçues, il y a donc peu de risque (voir aucun) de mettre indûment un enfant sous Rilatine (la "camisole" de ses détracteurs) pour faciliter la vie de parents indignes.

L'exemple par le vécu
Mon enfant ( 7 ans) est sous Rilatine depuis peu... et cela semble un choix approprié. Aujourd'hui, j'ai un peu d'espoir... celui de voir mon enfant apprendre normalement et combler son retard d'apprentissage déjà accumulé. L'effet de la Rilatine augmente déjà ses capacités de concentration de façon évidente.
Je peux maintenant me mettre aux jeux de constructions (lego ou autres) pendant plus de 5 minutes.

Je ne serais pas le premier à me plaindre si, au passage, la vie de famille était un peu plus sereine à la maison.
  • Plus de petits bruits/cris aigus incessants/inappropriés lors de chacune de ses activités (lecture, jeux sociaux, ordinateur, ...) 
  • Pouvoir regarder en famille, un film ou un dessin animé, sans qu'il ne perturbe les autres enfants et adultes par ses mouvements impulsifs et perpétuels.
  • Pouvoir profiter de jeux demandant plus de 5 à 10 minutes de concentration.
  • Cesser de s'énerver sur lui parce qu'il semble ne pas intégrer les consignes de vie en famille / groupe. Surtout sachant qu'il a démontré la capacité intellectuelle de comprendre les demandes, mais subit l'incapacité physique de se maitriser.
  • Cette difficulté se ressent aussi par un comportement d'inconscience de soi et des autres. Aller rouler en vélo en famille (à 6) devient alors un vrai parcourt du combattant. Il faut sans cesse surveiller l'enfant qui ne peut se concentrer un minimum. Prévoir les dangers à sa place afin qu'il ne devienne pas un danger pour lui et les autres.
    Cette constatation est d'autant plus frappante, lorsque je regarde le comportement de sa soeur (2 ans plus jeune), capable de faire attention en vélo sur la route.
  • Vraiment regarder avant de traverser un passage pour piéton au lieu de se jeter devant le premier véhicule présent sans même s'être rendu compte de sa présence.
    Lors de demande de regarder avant de traverser, il tourne la tête de gauche à droite, mais de façon évidente, il ne "regarde" pas. Il fait parfois même ce geste avec les yeux fermés, complètement insoucient du danger et des raisons de nos demandes.
  • Incapable de marcher en ligne droite, un pied devant l'autre, mais plutôt toujours se comporter comme un "scoubidou", un savon qui vous échappe perpétuellement des doigts. C'est un enfant qu'on n'ose pas laisser marcher seul sans le tenir par la main... surtout lorsqu'il semble fatigué par sa journée.
  • Cesser d'être harcelé compulsivement par les mêmes questions auxquelles les réponses que nous fournissont ne sont pas écoutées par manque d'attention. Dès la question posée/réponse donnée, la question  est reposée immédiatement sans même se rendre compte que l'adulte a répondu.  Ou parfois reposée après 1 minute, comme s'il avait déjà oublié la réponse.
    Ces remarques sachant que tous les enfants sont impatients, répétitifs ou ont le besoin d'être rassurés, mais dans ce cas, le caractère compulsif/inattentif est remarquable.
  • Cesser d'avoir un enfant qui zappe de contexte de conversation toutes les minutes. Vous n'imaginez pas à quel point il est alors difficile d'avoir une discussion cohérente avec lui.
  • Incapable de se souvenir de façon cohérente de ses activités de la journée. Chose qui peut être vécue dans les deux sens: soit ne pas s'en souvenir, soit affabuler un passé manifestement incohérent.
  • Oublis multiples d'affaires (à l'école par exemple) de façon incontrolée et incontrolable...et ce sans même en avoir conscience.
    Là, la Rilatine l'aidera juste à se concentrer, et potentiellement à s'en souvenir. Pour le reste, comme tous les enfants, c'est une question de confiance en soi et de maturité - moment où vient l'ordre et l'organisation.
  • Plus tous les autres exemples auxquels nous ne pensons pas à l'instant.
Seuls ceux qui connaissent cette situation peuvent comprendre.

Finalement,
avec quatres enfants à la maison (dont une plus jeune), nous ne manquons pas de points de comparaison. Comme tous les enfants, il a déjà démontré une intélligence manifeste en relation avec son âge (impertinent, moqueur, capable d'humour, ...), seul son apprentissage général présente un degré de retard +/- important suivant les domaines (scolaire et social).
Je n'attend pas de la Rilatine qu'il soit un médicament miracle. Mais SI son attention augmente ALORS les performances/aptitudes de mon enfant s'amélioreront certainement dans tous ses domaines déficitaires.

Sources
  • Synapse et transmission synaptique sur wikipedia.
  • Notice du médicament Rilatine (disponible ici).
  • Usage du méthylphénidate (ici).
  • Rilatine Forum (à lire avec du recul).
  • Les différentes animations

mardi 13 janvier 2009

Configuration du séparateur décimal sur IIS Web Server

Introduction
Voici un article tout droit issus du cauchemar du jour.
D'un côté, nous faisons fonctionner une application Web dans laquelle nous demandons à nos utilisateurs d'encoder les valeurs numériques avec un point comme séparateur décimal.
D'un autre côté, le serveur Web fonctionne sous Windows. Nous utilisons des fonctions de conversion pour transformer les nombres encodés (texte) en valeur numérique avant de les stoquer en mémoire.
Ces mêmes fonctions de conversion s'appuyant sur les paramètres de Windows pour effectuer cette conversion.

Windows est un système d'exploitation suffisament flexible pour permettre de définir le format des nombres.
Suivant les distributions de Windows, pour un Anglais le séparateur décimal sera un "point" tandis que pour un Français (ou un Belge Néerlandophone), ce même séparateur sera une "virgule".

Le noeud du cauchemar

Pour des raisons historiques, les routines de conversions de notre application s'appuie sur Windows.
Nous n'avons pas de problème si le système d'exploitation Windows sur lequel fonctionne le Serveur Web est en Anglais. En effet, dans ce cas nous convertissons du texte contenant des nombres utilisant le "point" comme séparateur décimal et Windows utilise également ce même "point" comme séparateur décimal.
Par contre, si le Serveur Web est une distribution  Française... c'est nettement moins marrant!
Dans ce cas, nous essayons de convertir une zone de texte contenant un nombre utilisant le "point" comme séparateur décimal. Cependant, en configuration française, Windows utilise la virgule comme séparateur décimal et... le point comme sépareteur de milliers! C'est la catastrophe.
Suivant la configuration de la machine, le texte "4.001" peut être soit converti/interprété comme un peu supérieur à 4 (Windows en anglais) soit comme la valeur 4001 (Windows en français).


Une solution simple

Et bien, dans le cadre d'un utilisateur quelconque, il suffit simplement de modifier les "régional settings" (paramètres régionaux) pour remplacer le séparateur décimal.
Le graphique suivant montre quel est la suite d'opération à effectuer (Cliquer pour agrandir):


Cependant, cela ne saurait pas être aussi simple pour un serveur web.
Un serveur WEB utilise un utilisateur d'impersonification (et non l'utilisateur courant manipulant le PC) pour initialiser les paramètres du serveur WEB. Modifier la configuration de l'utilisateur courant n'aura aucun effet sur la configuration du serveur web.


Modifier le séparateur décimal
Voici un petit guide pratique pour modifier la configuration du séparateur décimal utilisé par le serveur Web.

Identifier l'utilisateur d'impersonification
Cette étape va identifier l'utilisateur d'impersonification utilisé par le serveur web pour initialiser ses paramètres. 
1) So Logger comme administrateur sur la machine.

2) Start | Settings | Control Panel
3) Sélectionner l'entrée "Administrative Tools" puis "Internet Information Services"
4) Effectuer les opérations suivantes dans la console Internet Information Services - IIS pour les intimes (voir graphique ci-dessous).
5) L'utilisateur d'impersonification identifié (IUSR_W2KSRV-SP4 dans le cas présent), modifier le mot de passe à utiliser pas IIS (pour cet article il sera initialisé a PASSWORD).


(Cliquer pour agrandir)


Modifier les droits de l'utilisateur d'impersonification
Pour pouvoir modifier les paramètres de l'utilisateur d'impersonification, il convient d'abord de lui donner plus de droits.
Dans le cas contraire, toutes les modifications apportées au profil IUSR_W2KSRV-SP4 seraient perdues lorsque la machine serait redémarrée.
Effectuer les étapes suivantes:

Etape 1 - Modifier le mot de passe

1) Menu démarrer | Paramètres | Panneau de Control
2) Sélectionner "Administrative Tools" (Outils administratifs)
3) Sélectionner "Computer Management" (Gestion de l'ordinateur)
4) Dans la fenêtre "Computer Management":
4.1) Sélectionner le noeud "Local User and Groups"
4.2) Sélectionner le noeud "Users"
Dans dans l'exemple ci-dessous l'utilisateur d'impersonification IUSR_W2KSRV-SP4 est visible dans la liste (cliquer pour agrandir).

4.3) Sélectionner l'utilisateur d'impersonification (IUSR_W2KSRV-SP4 dans le cas présent).
4.4) Invoquer le menu contextuel et sélectionner "Set Password". 
Introduire le mot de passe tel qu'encodé précédemment dans la console d'IIS (dans cet article, le mot de passe est PASSWORD).


Etape 2 - Modifier les groupes
Par défaut, l'utilisateur d'impersonnification IUSR_W2KSRV-SP4 n'appartient qu'au groupe "Guests" (invités).
Ce groupe n'offre pas de privilèges suffisants pour modifier les paramètres de cet utilisateur de façon permanente.

Effectuer les opérations suivantes en repartant du point 4.3 de l'étape 1.

a) Invoquer le menu contextuel et sélectionner "Propiétés".
b) Selectionner le volet "Member of" (membre de). Ce volet ne présente que le groupe "Guests" (invités).
c) Ajouter les groupes "Users", "Administrators", "Power Users" (voir image ci-dessous).
Normalement, l'ajout du groupe "Users"devrait être suffisant pour mener l'opération à bien.

Modifier les paramètres de l'utilisateur d'impersonification
1) Faire un log-out de l'utilisateur courant (normalement Adminsitrator)
2) Se logger comme utilisateur  IUSR_W2KSRV-SP4 avec le mot de passe adéquant (dans notre exemple, il s'agit de PASSWORD)

3) Tout comme au début de l'article, modifier les paramètres pour changer le séparateur décimal a notre convenance (un point).

Dans notre cas, nous avons également modifié l'option de localisation à "English (United Kingdom)"


Application des paramètres
Pour que les paramètres soient sauvés de façon permanente et appliqués au serveur WEB, le plus facile est encore de rebooter/redémarrer la machine.

Note: lors de nos essais, il a été constaté qu'un IISReset ne fonctionnait pas comme attendu. En effet, les nouveaux paramètres de l'utilisateur d'impersonification n'étaient pas correctement appliqués. C'est probablement parce que l'utilistaire IISReset tue sauvagement certains processus du serveur web avant de les redémarrer.

La sécurité
Maintenant que les paramètres de  IUSR_W2KSRV-SP4 sont correctement sauvegardés dans le système, il faut re-modifier son profile pour ne pas laissé de trous de sécurités béants.
Il est impératif de retirer les groupes que nous avons ajoutés à l'utilisateur d'impersonification IUSR_W2KSRV-SP4. Seul le groupe "Guests" présent à l'origine doit rester sélectionné.

Sans cette modification de sécurité, n'importe quel bug dans l'application internet fonctionnant sur le serveur web offrirait une porte dérobée aux hackers expérimentés. Sans modification, le serveur web utiliserait le compte IUSR_W2KSRV-SP4 avec des droits d'administrations (groupe "Administrators"). En cas de bug, le hacker pourrait alors prendre le contrôle complet de la machine sans aucune difficulté.



lundi 12 janvier 2009

Windows Azure - la platforme qui révolutionnera l'informatique

Voici un article entamé il y a plusieurs mois et agrémenté au fil du temps.
J'essaye d'y faire la synthèse des informations glanées, ci et là, sur la plateforme Windows Azure et ses relations avec les autres technologies "made in" Microsoft.
Malheureusement, le domaine est vaste et la synthèse qui en découle difficile à conduire en un seul article.
Même s'il a été composé au mieux, je ne dispose plus de temps à lui allouer (même pour du fignolage).
Il sera donc publié en l'état, ainsi, soyez donc indulgent si je me suis offerts des largesses orthographiques avec le contenu.
Bonne lecture.

 
Introduction
Déjà abordé dans l'article "Windows Azure - Le cloud computing façon Microsoft" (à lire), la nouvelle plateforme de Microsoft serait bien en passe de modifier profondément le paysage logiciel de la prochaine décennie.
Google et ses différents services ayant déjà démontré depuis des années que ce modèle est plus que fiable, pourquoi Microsoft s'y lancerait-il pas?


Déjà bâtie sur les fondations d'un data center et environnement "cloud computing", Azure permettra aux petites sociétés de mettre en place des logiciels d'envergures sans devoir obligatoirement lever des fonds pour investir et maintenir une infrastructure couteuse.
Les "data centers" Cloud Computing prenant en charge les problématiques de bande passante, disponibilité de temps machine et de ressources, Windows Azure se présente comme une plateforme + solution attractive.
Ainsi, avec l'excellent et populaire environnement .Net comme autre pierre angulaire, Microsoft s'assure le support d'une très large communauté de développeurs pour sa nouvelle plateforme Azure.
Et cela, c'est sans compter sur "la réplication" transparente dans les data centers "Cloud Computing" et quelques autres concepts avancés par Microsoft.
Si Microsoft est loin d'avoir tout inventé, il faut reconnaître de l'assemblage s'organisant autour de la plateforme Azure est prometteur.

Windows Azure... pas seulement du pure Web
De prime abord, l'on pourrait penser que Windows Azure et son modèle Cloud Computing n'intéresserait que les sociétés envisageant des logiciels/services Web.
Mais qui peut aujourd'hui se targuer d'ignorer le Web. Même si certaines applications n'ont pas de front-end sur le Web, Internet peut permettre d'offrir des services (Web Services) complémentaires aux clients.
Demain, Windows Azure permettra de mettre en ligne des applications pour lesquelles l'on n'envisageait pas d'avenir orienté Web (des ERP, des logiciels de Compta, gestion de stock, CRM, etc) et ce avec la même rapidité qu'une application stand-alone.
Même les plus réticents aux "Web" trouverons leur bonheur car Windows Azure n'impose pas l'exécution ou le stockage de l'application sur le Web (voir détails plus loin).

En abordant une vue plus large, les Web Services,Applications Web, etc peuvent être utilisés pour dynamiser le business d'une société existante en permettant aux clients, fournisseurs et partenaires d'interroger une partie de l'infrastructure de la société.
Une grande partie de la population est déjà familière avec ce principe car qui ne connait pas l "Internet Banking" ou les services/sites web des mutuelles. Les constructeurs automobiles y ont également largement recours dans leurs processus de distribution (ce n'est pas les concessionnaires qui le démentirons).
 
Windows Azure va stimuler, faciliter et sécuriser la création de tels éco-systèmes de services ou applications que cela soit sur site propre, sur le web ou en fonctionnement hybride (site-propre + web).

Les quelques points développés ci-dessous vont levé une partie du voile sur l'infrastructure Azure.
En y regardant de plus prêt et en assemblant les blocs, les plus clairvoyants y verront probablement les prochaines environnements de développements.

Data Center ou On-Promise
Bien que prévu pour fonctionner dans les data-centers de Microsoft, les applications écrites pour la plate-forme Windows Azure pourront être exécutées sur site propre (dénommé "On-Promise").
Les plus réticents pourront ainsi créer un environnement de type Azure au sein de leur propre société.
A l'heure actuelle, les seuls Data Centers disponibles pour la plateforme Azure se trouvent aux USA mais Microsoft planifie une extension en Europe (probablement Dublin et Amsterdam).

Avantages des data-centers:
L'utilisation de Windows Azure en Data Center présente un certain nombre d'avantages.
En voici quelques-uns:
  • Réplication des informations stockées (usuel dans le modèle "Cloud Computing").
  • Prise en charge de la maintenance et mise-à-jour des systèmes d'exploitation.
  • Serveurs d'applications ("services" seraient probablement plus approprié)
  • Service de transfert de données.
  • Pas de down-time.
  • "Pay as you go" (payer pour ce que l'on consomme).
  • Eco-système complet basé sur la platforme .Net, WCF, Asp, WPF, SilverLight
  • Disponibilité d'une DB relationnelle (Sql Azure, incluant la réplication)
  • etc
Pin-Point
Pin-point est une boutique en ligne de Microsoft permettant aux développeurs Azure de vendre leurs applications.
Avec l'aide des data-centers de Microsoft destinés à la plateforme Azure, la vente ou l'achat et le déploiement d'applications devient un jeux d'enfant (ou presque).
Se faire connaitre en tant que développeur ou société de développement Azure est forcement facilité.
L'achat, le test et le déploiement d'application Azure devient Trivial et d'une incroyable rapidité (plus besoin de trouver les machines de tests, d'acheter du matériel supplémentaire, etc).

Avec Pin-point et Azure le déploiement de software .Net s'apparente au modèle "Appliance" utilisé pour bon nombre d'applications (distribution d'application sous forme de machine virtuelle pré-configurée).
La principale différence réside dans le déploiement de code source plutôt que de fichiers binaires.

Dallas
A l'instar des AppStore (boutique en ligne permettant d'acheter des application), Dallas est une boutique en ligne permettant d'acheter de l'information.
Il est ainsi possible de publier et consommer des flux d'information de façon uniforme... mais en plus de pouvoir envisager de les rentabiliser.

Avantage:
Plus besoin de concevoir, implémenter et gérer par soi-même une solution de publication payante (et son infrastructure) lorsque l'on veut vendre de l'information.

Cas d'utilisation:
Publication d'article/journaux payant (le soir, le monde, etc), cotations et traitement d'information sur les marchés boursiers, informations statistiques diverses, info-traffic, indices de consommations, quantification anonyme de consommation de produits (médicaments) dans les officines, consommation food et no,-food dans les chaînes de magasin, résultat d'étude marketing, etc.

Un certain nombre d'information apparemment sans valeur peuvent être valorisée à l'aide d'outil statistique et être revendue (ou offerte) sur le net. J'imagine que bon nombre de résultats d'études "type universitaire" pourrait être partagé de cette façon.
Dallas peut devenir une plateforme et une plaque tournante du partage de l'information.
C'est qu'avec Dallas, il n'y a plus besoin de mise en page (et publication sur magazine ou net) pour l'émetteur d'information et le consommateur n'aura plus de besoin de traitement et réintégration de l'information dans un système informatique tiers; Dallas offre une interface "unifiée" pour partager l'information.

Service Bus, un layer de communication
La plateforme Azure dispose de son propre layer de communication (Service Bus) basé sur Windows Communication Foundation (WCF). Le Service Bus permet aux applications Azure de communiquer ensembles et ce de façon sécurisée (peu importe qu'elles soient prise en charge sur le Cloud ou On-Promise).
La communication entre les différentes applications se présente comme des "services" d'accès/de communications, "service" rendu par la plateforme Azure.
Ce service bus fonctionnant sur le Cloud, il permet également aux applications Azure (ou non) de communiquer avec d'autres applications Azure (ou non).
Un serveur d'une société X faisant fonctionner un ERP Z pourrait ainsi communiquer avec une application Azure (qu'elle soient prise en charge sur le Cloud ou On-Promise) ou bien encore directement avec un autre ERP-Y d'une Société H; Dans ce cas de figure étriqué, le "Service Bus" de la plateforme Azure prendrait en charge la communication entre les différents intervenants.

La vidéo ci-dessous présente un introduction (cas pratique de "Dinner now!") au Service Bus.
Ce cas d'utilisation néanmoins complexe met en avant la flexibilité du Service Bus. 

Get Microsoft Silverlight

Plus d'articles et de vidéos a propos de "Windows Azure Service Bus" sur channel 9.
Cet articles aborde d'ailleurs la mise en place (coding) autour du service bus.

Le cout

Concernant la politiques des couts, Microsoft n'a pas l'intention de prétendre être plus économique qu'une infrastructure physique réelle.
Selon le principe "Pay as you go", les factures mensuelles reprendront en charge votre consommation réelle de ressource.


A noter quand même que la plateforme Azure permet d'éviter les couteux problèmes de planifications et investissements matériels ainsi que les problèmes de redondance, mise-à-jour, down-time et de personnel.  

Voici, a titre d'exemple officieux, les cout qui auraient étés en application pour des projets pilotes:
  • 0,08 Eur par heure d'utilisation processeur.
  • 0,10 EUR / mois par la location d'un Giga-Octect (1 Go) de stockage.

Les coûts s'articulent autour de 3 éléments faisant l'objet d'une structure de prix propre.
A savoir:
  • L'utilisation de Windows Azure (l'utilisation du système d'exploitation)
  • La base de donnée "Sql Azure"
  • Le serveur d'application.

Regroupement des équipes Microsoft
Windows Azure est probablement destiné à devenir le principal business de Microsoft.
Microsoft en est d'ailleurs convaincu et réorganise son savoir faire de façon stratégique.
C'est ainsi que l'on apprend que Microsoft fusionnement ses entités Windows Serveur et Windows Azure (sources: articles Microsoft et PcInpact).
Si le message ne semble pas assez claire, il n'est pas bien risquer de considérer qu'à terme "Windows Azure sera aussi important de Windows Server sur tous les plans".


SilverLight 
Basé sur l'environnement .Net, Silverlight permet d'exécuter du code .Net sur une machine cliente.
A la base, Silverlight se présentait comme une alternative au Flash Player d'Adobe.
Mais puisqu'il est basé sur .Net, Silverlight bénéficie d'extensions intéressantes comme Windows Presentation Foundation, Windows Communication Foundation. Ainsi, Silverlight dispose intrinsèquement d'outils puissants pour exécuter une application de type "Windows" sur le client. La couche Windows Communication Foundation fournissant un accès au support de stockage distant.

En effet, de part son principe Silverlight est une extension du Web n'autorisant pas de stockage d'information (ou modification de la configuration) sur le poste client.
Mais de source officieuse, cela pourrait changer prochainement... et avec l'avènement de Windows Azune, Silverlight devient une nouvelle pierre angulaire. En effet, Silverlight pourrait exécuter localement des applications de type Windows qui stockent (ou pas) localement leurs informations de traitements.
Windows Azure et WCF offrent le support de communication et de stockage, la disponibilité de l'information, des services Webs et les applications à exécuter sur les postes clients.

C'est un peu comme télécharger ses applications à la demande en fonction de ses besoins. Elles fonctionneraient indépendamment de la même façon au travail, chez un client ou à la maison.
Seul besoin... Un navigateur internet et Silverlight. Pour les visionnaires, on est à mis chemin entre le poste de travail et les applications de type "Web Pure".
 
Il faut aussi savoir que Silverlight propose (ou proposera prochainement) un support matériel bien plus étendu que les produits concurrents (eg: Flash Player, etc).
Hormis la traditionnelle Webcam, le restant du matériel de la machine peut (pourra) être accessible depuis Silverlight. Une machine rudimentaire équipée de Silverlight et d'un scanner Code Barre peut alors devenir un puissant "point of sale".

Finalement et non des moindres, en plus de l'environnement internent (via le browser Internet), la prochaine mouture de SilverLight (v4) supportera de façon transparente les périphériques mobiles et les télévisions.

Avec un peu d'imagination, j'imagine qu'il soit facilement possible de créer un logiciel de comptabilité fonctionnant sous SilverLight ayant la capacité:
  1. De se télécharger depuis une plateforme Azure (et donc toujours à-jour).
  2. De dialoguer avec la plateforme Azure pour le traitement/stockage des informations.
  3. De dialoguer avec des applications tiers (pour l'intégration de service).
Bien que n'ayant jamais testé Office 2010, il me semble raisonnable de penser que la version Web d'Office 2010 puisse être bâtie sur cette nouvelle mouture de Silverlight et Windows Azure (gestion d'accès concurrents).

Le site de Clubic publie également l'article "S.Guthrie : les nouveautés de Silverlight 4 en vidéo".

Avis personnel
Google dispose déjà d'une solution Cloud Computing depuis quelques années (AppEngine).
Mes quelques recherches sur le sujet fûrent des plus captivant et force est de constater que Google dispose d'une force de calcul astronomique (ses data centers) et d'une main-mise sur l'information.
Google dispose donc de l'infrastructure adéquate laissant Microsoft loin derrière lui dans le domaine du Cloud computing... jusqu'aujourd'hui.

Si Microsoft sort maintenant du bois pour sauter dans les nuages (the Cloud :-) ), il ne dispose malheureusement pas des avantages de Googles.
Par contre, la très populaire plateforme .Net de Microsoft peut, elle, faire la différence.
Cet avantage là est indéniable!!!
Par le passé, l'émergence de la plateforme .Net, des technologies WCF (Windows Communication Foundation) & WPF (Windows Presentation Foundation) pouvaient être perçus comme des actions informatico-marketing pour "faire vendre" les produits de la société de Redmond.
Cette course aux nouvelles technologies et le manque de compatibilité ascendante en résultant (en lieu et place d'une consolidation des technologies Microsoft), ont souvent été mal reçu et mal perçu par le monde économique.
C'est que l'investissement constant que nécessite les plateformes Microsoft agace les professionnels. Vista en à d'ailleurs fait les frais puisqu'il est un cuisant échec dans le monde professionnel!.

Aujourd'hui, l'existence de la plateforme .Net, WCF, WPF, SilverLight, ASP.NET (supportant nativement, rapellons le, le caching et les Web-Farms) s'inscrivent en droite ligne dans l'exploitation d'une solution Cloud Computing.
Microsoft se lance dans le Cloud Computing en disposant déjà de tous les outils nécessaires; la plateforme et les technologies .Net déja bien éprouvées sont supportés par une large communauté de développeur.
Il ne reste plus à Microsoft qu'à se concentrer sur son infrastructure et l'ouverture de ses data-centers.

Microsoft et Google disposent chacun de leurs propres avantages stratégiques.
Mais Microsoft pourrait avoir envisager la meilleure des approches.

vendredi 9 janvier 2009

Regular Expression (exemples)

Voici quelques exemples de régular expressions

Remplacer les quotes
L'exemple suivant (en javascript) remplace toutes les simples et doubles quotes dans une chaine de caractères.
L'option g est utilisé pour faire un remplacement global (de toutes les occurences).

_ObjRemark.value = sValue.replace( /\"|\'/g , ' ' ); 

Remplacer du texte
Dans l'example suivant (en javascript), l'object _RemarkIcon (une image) peut faire référence soit à l'image RemarkFilled.gif, soir a l'image Remark.gif.
Quelque soit le cas de figure, le nom de fichier (gif) doit être substitué avec une nouvelle valeur.

_RemarkIcon.src = _RemarkIcon.src.replace( /Remark\w*.gif$/ , 'RemarkFilled.gif' )

\w indique n'importe quel caractere alpha.
\w* une suite quelquonce de caratere alpha.
gif$ se terminant par gif ($ étant la fin de string/ligne)

Autre example
text

Regular Expression (ressources et Livres)

Faisant suite à un précedent article, voici quelques ressources complémentaires concernant les régular expressions.

Livres
Dans la gamme des très bons ouvrages, je retiendrais "Mastering Regular Expression", de l'éditeur O'Reilly dont il n'est plus nécessaire de mentionner la qualité des ouvrages.
    
Regular-Expressions.info
Site web très fournit relatif à l'utilisation des régular expressions dans différents domaines (Delphi, .Net, PowerShell, Grep, etc). Ce contient également un tutorial.

RegExBuddy
Utilitaire permettant de tester, collection et inspecter en détail des expressions régulieres.
Voir ici pour plus d'informations.

Cours sur W3School????

mercredi 7 janvier 2009

Encryption de données

TrueCrypt est un projet open-source qui mérite d'être plus connu.
Il permet de créer des disques/partitions entièrement encryptés à la volée.
Pour ce faire, TrueCrypt utilise des algorithmes robustes tel que AES ou TwoFish.
Ce qui est également intéressant, c'est que TrueCrypt peut être utilisé pour activer un disque virtuel encryptant des données à la volée sur une clé USB!!! C'est une combinaison idéal pour la protection des données sensibles.
Finalement, et non des moindres, TrueCrypt fonctionne aussi bien sur Windows XP/2000/Vista que Linux (Ubuntu/...).

Voir le site officiel pour plus d'info.

Installation sur Ubuntu
Pour l'installation de TrueCrypt sur ubuntu:
  • Se rendre sur www.truecrypt.org, télécharger la version Linux depuis la section "download".
  • Utiliser le gestionnaire d'archive pour décompresser l'archive, cela décompresse un exécutable (ex: truecrypt-7.0a-setup-x86).
  • Exécuté le programme d'installation (./truecrypt-7.0a-setup-x86).
    Le programme d'installation reconnait la distribution Ubuntu et s'installe correctement.
    L'icone est ajoutée dans le menu "Applications|Accessoires". 
  • Effacer l'archive et le programme d'installation.
Pour plus d'information sur l'utilisation et l'installation sur Ubuntu, voir cet article sur ubuntu-fr
Personnellement, je recommande vivement la lecture de la documentation Pdf de TrueCrypt, elle est complète et explique étape par étape la constitution d'un volume encrypté.

Dismount failed sous Ubuntu
J'ai remarqué qu'il était visiblement impossible de faire un Dismount d'un volume encrypté sur mon Ubuntu 10.10 - nommée Maverick Meerkat.
Chaque tentative se terminant par le laconique message "device-mapper: remove ioctl failed: Périphérique ou ressource occupé Command failed".
En furetant sur le Net, j'ai trouvé quelques informations qui m'ont permises de faire mon Dismount en toute sécurité (du moins, en apparence).
Pour commencer, il faut savoir que mon volume encrypté est la deuxième partition de mon lecteur USB (myPasseport), il me faudra aussi retirer le volume non encrypté du système avant de débrancher physiquement le disque.
J'ai donc mon lecteur physique myPasseport (/dev/sdb):
  • Partition 1 (/dev/sdb1) 5Go monté par Ubuntu - DeviceName: MY PASSEPORT
  • Partition 2 (/dev/sdb5) 293Go monté avec TrueCrypt - DeviceName: truecrypt1
Voici la marche à suivre:
  1. S'assurer qu'il n'y a plus aucun soft qui utilise l'un des deux volumes (MY PASSEPORT ou truecrypt1).
  2. Démarré un terminal et passer en mode administrateur (sudo -i)
  3. Taper la commande suivante:
    umount /media/truecrypt1 && truecrypt -d && rm -rf /tmp/.truecrypt_aux_mnt1/
    TrueCrypt affichera le message d'erreur... mais inutile d'y faire attention.
  4. Utiliser le navigateur de fichier (le volume truecrypt1 à déjà disparu) et éjecter l'autre volume USB (MY PASSEPORT dans mon cas).
  5. Aller dans TrueCrypt, ce dernier répertorie toujours le volume truecrypt1 même s'il n'est plus connecté.
    Faire un "Dismount All" rafraîchit la liste et met visiblement de l'ordre.
Après toutes ces opérations, je peux librement disposer de mon lecteur USB externe et même remonter le volume encrypté sans devoir rebooter mon PC.