mercredi 17 décembre 2008

Ruby Exceptions

[RubyDoc Exceptions] - begin, rescue, catch, raise, retry <=> try, catch, finally (Java)
Mieux qu'un long discours, un exemple !!

#la bonne façon d'ouvrir un fichier!!
begin
  f = File.new('C:\\myFile.txt', 'r')
rescue => err
  puts "#{err}"
ensure
  f.close unless f.nil?
end

> ouverture du fichier "myFile.txt" en cas d'erreur on affiche l'erreur que l'on récupère (rescue)
> ensure : on s'assure que dans tous les cas on ferme la socket du fichier ;)
NB: on peut bien sur exécuter d'autres traitements...

catch/throw ! on peut vouloir ne pas s'arrêter dans un traitement!
on peut retenter l'opération "
retry/raise"
la récupérer "catch", ou la repropager "throw"
plus de détail dans la doc :)

mercredi 10 décembre 2008

IHM - GUI - Ruby (interface)

IHM : Interface Homme Machine / GUI : Graphical User Interface

Objectif : rendre l'outil facilement exploitable par le plus grand nombre grâce à une interface graphique.

Différent ToolKit existent
Qt, Gtk, Tk, Vruby, Shoes, FxRuby, WxRuby
- Ncurses/Ruby
- Ruby-Gnome

[Ruby/Gtk2, Ruby/QT, Ruby/Fox ou Ruby/wxWidgets ?] [GTK exemple GTK2]


*/ Un petit exemple *Tk/Vruby* lisant les OLE de la machine : [exemple modifié][original]
Il y a deux interfaces à Tcl/Tk inclus dans la distribution standard :
1/ ext/tcltk/- require "tcltk". Syntaxe proche de l'interpréteur de TCL. Description de cette librairie en Japonais uniquement (:s).
2/ ext/tk/- require "tk". Syntaxe proche du modèle d'interface de Tk qui a été fourni pour l'interfaces de Perl et de python.


*/ Qt4 : [Premiers pas en Ruby-Qt4] [Appli en Ruby-Qt4]


*/ Une autre voix intéressante est de réaliser son interface graphiquement avec
wxformbuilder qui fournit en standard un code c++, mais qui génère également du code XRC (xml des interfaces) que vous pouvez exploiter avec firefox2 ou Ruby ;) (WxRuby gem?)

[Une petite description des outils ci-dessus sur ibm.com en English]

Cf. passer des arguments comme pour les programmes unix (ex.: --help)

vendredi 21 novembre 2008

Ruby pack & unpack - Problème de jeux de caractères

Il arrive souvent que dans les applications nous rencontrons un problème avec les différents jeux de caractères (ASCII, LATIN-1, UTF-8) ; il faut alors les convertir. [astuce]
Remarque : afin de gérer tous les caractères de toutes les langues, préférez l'encodage UTF-8.

$KCODE = 'U' #UTF-8 : s'assurer que le code de la page est en UTF-8

En Ruby vous pouvez trouver ceci pour résoudre votre problème : [iconv]

# attention destination, source Latin-1 => UTF-8
@c = Iconv.new('utf-8','iso-8859-1')
text = @c.iconv(mon_texte_a_encoder)


Iconv.new('iso-8859-15//IGNORE//TRANSLIT', 'utf-8').iconv(text)
Cette fonction comporte cependant quelques "Bugs" et vous devez gérer les cas particuliers des accents.
Il est donc préférable d'utiliser
pack, unpack :

*/
unpack : créé un tableau avec le n° du caractère ascii (code ASCII)
C : 0 à 255
c : -128 à 127

*/
pack : ffff
U : UTF-8

Transformer un "string" iso-8859-1 en UTF-8 :
string.unpack('C*').pack('U*')
Ruby Doc [arr.pack] - [str.unpack(format) => anArray]

mercredi 19 novembre 2008

RoR trop Flex!!

Flex sous RoR !

"Flex est une solution de développement créée par Macromedia en 2004 puis reprise par Adobe en 2006, permettant de créer et de déployer des applications Internet riches (RIA) multi plates-formes grâce à la technologie Flash et particulièrement son lecteur . Son modèle de programmation fait appel à MXML (basé sur XML) et ActionScript 3.0, reposant sur ECMAScript."[Wikipedia]

jeudi 13 novembre 2008

Tools Box - Boîte à Outils Ruby - Expressions rationnelles

Testez Ruby depuis le web [TryRuby]
Testez vos expression rationnelles depuis le web [Rubular]
Plein d'expression rationnelles (RegExp) déjà toutes faîtes ! [RegexLib]

Expression rationnelles(/régulières) :
  • [pdf Java] Slide 9 à 19
  • RegexBuddy : aide à la création de regExp (payant mais incluant beaucoup de masque par défaut et multi-langage)
  • RegexSR : manipulation de texte

mardi 4 novembre 2008

Conférence - Symposium MicroStrategy 2008

19/11/2008 à Paris - Pavillon d'Armenonville
Symposium Business Intelligence de MicroStrategy
Témoignage client - cas pratique - reporting - migration de bases
Démonstration : (ETL)
MicroStrategy Integrity Manager
[plus d'info]

jeudi 30 octobre 2008

Conférence Information Builders 2008

18/11/2008 Au sommet de la Tour Eiffel
Les thèmes abordés :
- Intégrer facilement les données, les applications et les systèmes
- Déployer la Business Intelligence dans l’ensemble de l’entreprise pour un meilleur pilotage de la performance

Entreprise présentes : Business & Decision (B&D), Micropôle Univers (MU) et bien d'autres
[Inscription][Plus d'info]

Assistant à la conférence, c'est éditeur propose des solutions innovantes à la pointe de la technologie en intégrant un maximum de solutions Open Source dans son outil (il propose par exemple des rapports pdf dynamiques grâce à la technologie Flex)
Les données du rapport sont statiques (inclues dans le rapport, ne se connecte pas à une base distante), mais les données peuvent être visualisées de différentes manières/axes (global, détail par pays...) sur le même graphique (drill/down)

lundi 20 octobre 2008

Conférence RoR 2008 - Cité des Sciences de la Villette

La 3ème édition de la conférence du framework de Ruby (RoR : Ruby on Rails) pour les développement Web se tiendra le 01/12/2008. [inscription]

Bénéficier du tarif 80€ pour une inscription avant le 09/11/2008 (100€ au delà).
A noter qu'en 2007 mon professeur de Java "Christophe Porteneuve" alias TDD très actif sur la technologie faisait parti des experts de la conférence.


vendredi 17 octobre 2008

Premier BUG Talend :s

Java.IO.exception... vive Java...
Le chemin complet au serveur commençant par « \\ » et le « \ » étant un caractère spécial, un des caractères saute...
Bon ok je n’avais qu’a mettre mes fichiers en local… mais quand même ce genre de bug... je trouve ça abusé !

jeudi 16 octobre 2008

Datastage BUG - DATE - NUMBER

1/ Merci Stéphane pour informer de la session Talend (RoadShow)
C'est vraiment une révolution par rapport à Datastage…. Aucun intérêt d'acheter la version server...
Ca m'ouvre aussi beaucoup de nouvelles possibilités sur les cas Generali (pragamatisme, pragmatisme!!)

2/ Datastage c'est de la M$*#@# !!!!!!!!! (bon ça à le mérite d'exister et de répondre à des besoins...)
Comme le type date que nous sommes obligés de transformer

DATE => [DS] => DATE [DOESN'T WORK] Solution : TO_CHAR => [DS] => TO_CHAR => DATE
DATE :

- Dans mon SQL :
TO_CHAR(INF_AFFECTATION.AFF_DATD,'YYYY-MM-DD HH24:MI:SS') as AFF_DATD,

- Type de données : Timestamp 38 (allez savoir pourquoi…)

pour faire dans l'insert :
TO_DATE(:XX, 'YYYY-MM-DD HH24:MI:SS')
Et bien j'ai une erreur Datastage pour le type NUMBER !!

Car avec mon calcul d'ETP j'ai un FLOAT avec énormément de précision (autant que le type NUMBER d'Oracle accèpte)
NUMBER est transformé en DECIMAL 38 (allez savoir pourquoi bis…)

J'obtien l'erreur suivante :
jobName-Transformer: OCI has fetched truncated data

Alors je change donc ma longueur de champ pour la mettre à 9 9 « 999999999 »
Et je me tape une erreur Interne de type « Phantom »

DataStage Job 613 Phantom 3992 kghalo bad size 0x3b9aca14 ********** Internal heap ERROR KGHALO2 addr=0x0 ********* ****************************************************** HEAP DUMP heap name="Alloc statemen" desc=0x193f5c8 extent sz=0x1024 alt=32767 het=32767 rec=0 flg=2 opc=3 parent=192262c owner=0 nex=0 xsz=0x1024 EXTENT 0 Chunk 219a1dc sz= 2036 free " " Chunk 219a9d0 sz= 232 freeable assoc with mark prv=0 nxt=0 ... EXTENT 1 Chunk 21921a4 sz= 32784 perm "perm " alo=32784 EXTENT 2 Chunk 218a16c sz= 32784 perm "perm " alo=32784 ...

En essayant à une valeur de 6 9 « 999999 » j'arrive à mon résultat...
Datastage c'est au petit bohneur la chance...

En dehors des BUGS incompréhensibles, des manques de fonctionnalités, de son prix prohibitif, de respect d'aucune norme, c'est un ELT à recommander...

Sortie de Talend Studio V 3.0 (TOS)

[Blog Responsable Formation Talend France] [Lab Décisionnel pour vous faire la main]

Sortie de la nouvelle version le 15/10/2008. Revenant d'une formation gratuite de Talend (RoadShow) sur Paris j'ai pu tester cette nouvelle version. C'était vraiment plaisant et les organisateurs étaient très disponible (j'arrêtais pas de leur poser des questions) en même temps technique et agréable. Conquis à 100%!!

Le bug de drag on drop est corrigé! Maintenant à vous de jouer!
Plus de 350 composants - un nouveau connecteur SAS disponible dans Talend Ecosystem.

Lors de cette présentation j'ai découvert et apprécié :
- La gestion des contextes façon ruby environnement Développement/Recette/Production facilement réalisable
- la propagation des modifications (maintenance) car on stocke des schéma de données (méta-data)
- les variables globales qui en fonction de contextes sont utilisées (accessible partout dans les jobs) que l’on peut aussi récupérer d’un fichier (connexion aux bases)
- les connecteurs pour à peu près toutes les sources de données
- la facilité de création et le drag on drop (en une journée on s’y fait)
- l'utilisation de fonction/routines (dommage Java…) auxquelles ont peut rajouter les notre (routines « user defined »)

Téléchargement - Documentation - Forum

lundi 13 octobre 2008

QUID : Qualité et Urbanisation de l'Information Décisionnelle

QUID : QUALITÉ ET URBANISATION DE L'INFORMATION DÉCISIONNELLE

L'idée de QUID est de réaliser des prestations efficaces simples et rapides dans le domaine du décisionnel. Il suit le constat que la prestation décisionnelle se penche globalement sur les mêmes problématiques, qu'on réinvente la roue au sein de chaque client (processus de norme, architecture...), et que finalement beaucoup de travail est réalisable automatiquement grâce à des outils, normes & standard.
Un des problèmes est que les techniciens (en général) ne veulent pas entendre parler de fonctionnel, et les fonctionnels ne pas écrire une ligne de code... et pourtant tant de temps gagner à faire du fonctionnel en tapant quelques lignes de code...

QUID est né donc de l'idée de 3 prestataires de sociétés concurrentes (cf. Contributeurs) assis autour d'une table discutant de RoR (Ruby On Rails) et de la facilité de développer avec ce framework.

Le nom de QUID a été défini le 16/04/2008, "QUID parce qu'il a réponse à tout..."

QUID est le résultat d'expérience de travail au sein de projets
- RATP : réalisé au forfait nécessitant de produire rapidement dans un délai très court
- ROCHE : projet de qualité de données basé sur les normes et les standards
- GENERALI : problématique commune, effet de synergie (1+1 = 3)

R'QUID car Ruby est le langage de développement de la plate-forme.
QUID permet d'automatiser des tâches répétitives, sans erreurs sur des technologies propres au décisionnel.
Des réalisations sont déjà présentes sur Oracle, Datastage, Business Objects... (cf. Démonstrations).

Le blog est ici pour parler de QUID et du métier de la Business Intelligence (BI) / décisionnel.