Affichage des articles dont le libellé est RUBY. Afficher tous les articles
Affichage des articles dont le libellé est RUBY. Afficher tous les articles

jeudi 15 avril 2010

R'QUID recherche développeur Ruby

Bonjour,

Afin de re-dynamiser R'QUID, je recherche un ou plusieurs développeur(s) Ruby ayant des connaissances sur :
- OLE (Word, Excel)
- Ruby/wxWidgets (interface graphique)
- Sachant utiliser des librairies (Gems) et comprendre une doc.

Serais un plus :
- Adopte et utilise les méthodes agiles :)
- Connaissance de l'outil PowerAmc
- Connaissance de Business Objects, d'un ETL ou quelques connaissances en BI/Décisionnel (ou intéressé d'en connaître)
- Aime l'Open Source

Son rôle sera de mettre en place des outils packagés, exécutables, simple d'utilisation pour tous utilisateurs d'un outil BI, ou consultant décisionnel.

Je m'engage à une réelle montée en compétence des développeurs dans le domaine du décisionnel :)

Pour toutes questions et/ou candidature écrire à dixdix10[at]gmail[dot]com ; sujet : [RQUID][DEV_RUBY]

jeudi 19 mars 2009

Des Gem utiles - résumé

gem ~ bibliothèque [Cf. article installer une Gem] - [.bat d'install] (changer le répertoire ruby\bin)
Pour de meilleures performances, ou parce que ça n'existe pas en standard ;)

require
'rubygems' #inclure une des gem du paquet rubygems

*Indispensable*
  1. install: >$ gem install -r ruby-debug
  • Libxml : pour parser et écrire du XML (XML: format d'export standard des applications) [readme]
  1. install: >$ gem install -r libxml-ruby
  2. usage: require 'xml/libxml' - include LibXML
  1. ex.: "<élan>" => "&lt;&eacute;lan&gt;"
  2. install: >$ gem install -r htmlentities
  3. usage: require 'htmlentities'
  • Faster CSV : lire/écrire avec des fichiers de type csv (fichier à séparateur) facilement, surtout si le fichier comporte une en-tête [doc]
  1. install: >$ gem install -r fastercsv
  2. usage: require 'faster_csv'
  • Choice : arguments de la ligne de commande
  1. install: >$ gem install -r choice
  2. usage: require 'choice'
  • Rubyscript2exe : créer un exécutable en incluant toutes les dépendances en fonction de l'OS utilisé
  1. install: >$ gem install -r rubyscript2exe [doc]
  2. usage: require 'rubyscript2exe'
*Graphisme*
  1. ex.: créer très simplement une image gif redimentionnée à partir de toutes les jpg d'un répertoire : >$ convert -delay 20 -loop 0 *.JPG animation.gif
  2. install: >$ gem install -r rmagick
  3. usage: require 'RMagick' - include Magick [exemple]
  1. install: >$ gem install -r ruby-graphviz
  2. usage: require 'graphiz'
  1. install: [guide d'installation] (installer l'exe dans "ruby\" et non "ruby\gnome")
  2. usage: require 'gtk2'
Tester l'installation d'une gem : >$ ruby -e require "maGemQueGm"

Ils existent vraiment de nombreuses gems, n'hésitez pas à regarder si votre programme open-source préféré n'existe pas sous Ruby !!

mercredi 18 mars 2009

Liste des gems favorites

Le nombre de gems disponibles est supérieur à 7000 !!! autant dire, que pour une problématique donnée, il est fort probable que quelqu'un ait déjà réfléchi à une solution en proposant une gem.

Nous utilisons que quelques gems parmi toutes celles qui sont disponibles (cf. RubForge).

/* ruby-debug
Ruby est livré avec un debugger standard (écrit en ruby) mais il n'est pas très performant. Cette gem permet de debugger des scripts Ruby beaucoup plus rapidement (utilisation d'une API C).

L'installation de la gem s'effectue en ouvrant une fenêtre DOS (Wx+R > tapez "cmd") puis en tapant la commande suivante : gem install ruby-debug.

La gem ruby-debug est dépendante d'autres gems qui sont automatiquement installées telle que columnize, linecache, ruby-debug-base.

Maintenant, il est possible de configurer Eclipse pour utiliser cette gem. Dans Eclipse,
- Cliquer sur Window > Preferences
- Cliquer sur Ruby > Debug > Engine > Fast Ruby debugger (ruby-debug) > OK
- Ouvrir le fichier test_install.rb (cf. Installation Eclipse/Ruby)
- Se positionner sur une ligne avec du code ruby (hors commentaire)
- Double cliquer dans la marge de l'éditeur (ou Run > Toggle Breakpoint) => un point d'arrêt est activé.
- Cliquer sur Run > Debug > Remember my decision > Yes
- Une nouvelle perspective s'ouvre donnant accès aux fonctionnalités du debugger.

/* FasterCSV
Les formats de fichiers étant très nombreux et hétérogènes, il est préférable d'utiliser un format "basique". Le format CSV (Comma Separated Value) est une format de fichier qui est éditable dans un éditeur de texte (pas de codage particulier). Ce format se prête bien pour échanger des données entre différentes applications (Pour en savoir plus sur le format CSV).
FasterCSV est voué à remplacer la librairie standard CSV de Ruby :
  1. En étant bien plus rapide bien qu'étant une librairie pour Ruby.
  2. En étant plus riche en terme de fonctionnalités.
  3. En améliorant la gestion des fichiers CSV.
L'installation de la gem s'effectue en ouvrant une fenêtre DOS (Wx+R > tapez "cmd") puis en tapant la commande suivante : gem install fastercsv.


Pour tester que la librairie est correctement installée, il est possible de créer le script suivant :
require 'rubygems'
require 'faster_csv'
puts FasterCSV::VERSION

L'exécution doit afficher la version de la librairie installée.

/* libxml-ruby
Ruby est livré avec une librairie standard écrite en ruby pour utiliser des fichier XML mais elle n'est pas très performante. Cette gem permet de manipuler des fichiers XML beaucoup plus rapidement (utilisation d'une API C).

Pour installer cette gem sur Windows, il est nécessaire d'avoir utiliser l'installation One-Click (l'installation à partir de l'archive zip ne contenant pas tous les fichiers nécessaires pour une utilisation sous Windows). De plus, il faut absolument que la variable système Path contienne le chemin du répertoire contenant l'exécutable ruby.exe.

A partir de là, l'installation de la gem s'effectue en ouvrant une fenêtre DOS (Wx+R > tapez "cmd") puis en tapant la commande suivante : gem install libxml-ruby.
Pour tester que la librairie est correctement installée, il est possible de créer le script suivant :

require 'rubygems'
require 'libxml'
puts LibXML::XML::VERSION

L'exécution doit afficher la version de la librairie installée.

/* Graphviz-ruby
L'application GraphViz permet de représenter graphiquement des graphes. L'application GraphViz est open source, gratuite et libre de droits. Pour en savoir plus
Une librairie ruby permet de créer facilement des fichiers au format GraphViz afin de générer le graphe désiré. Cette librairie nécessite que graphviz soit présent sur le poste.

L'installation de la gem s'effectue en ouvrant une fenêtre DOS (Wx+R > tapez "cmd") puis en tapant la commande suivante : gem install ruby-graphviz.

Pour tester que la librairie est correctement installée, il est possible de créer le script suivant :

require 'rubygems'
require 'graphviz'
puts GraphViz::RGV_VERSION

L'exécution doit afficher la version de la librairie installée.

Pour plus d'informations :
/* Choice
La gestion des arguments dans Ruby est assez rudimentaire : il faut parser la ligne de commande afin d'identifier d'éventuels paramètres. Cette gem permet de mettre en place des commutateurs au niveau de la ligne de commande. Ainsi il est possible de passer les arguments dans n'importe quel ordre (vu qu'ils sont identifiés par des switches) et des les récupérer très facilement.

L'installation de la gem s'effectue en ouvrant une fenêtre DOS (Wx+R > tapez "cmd") puis en tapant la commande suivante : gem install choice.

Pour tester que la librairie est correctement installée, il est possible de créer le script suivant :

require 'rubygems'
require 'choice'
Choice.options do
end
puts Choice.choices.inspect

mardi 24 février 2009

Ruby on Windows

Un très bon site sur Ruby on Windows (anglais), où vous trouverez bon nombre d'exemples sur *Word/Excel/PowerPoint*

Mais aussi de quoi faire une interface Windows (IHM / GUI) avec la gem WxRuby (exemple)
Et bien entendu de quoi réaliser la *production d'un executable* Windows [rubyscript2exe]
[Réalisation d'un installer Windows avec Inno]

Le résultat en sera donc une *application autonome* de vos programmes Ruby avec une interface Windows, ca vaut le coup d'y jeter un coup d'oeil non ?
[Article OLE][Article GUI]

mercredi 11 février 2009

Ruby TDD - Développement piloté par les Test

Développement piloté par les Test (TDD : Test Driven Development)

C'est bien de développer, faut-il encore garantir que nos programmes supportent les changements et répondent aux exigences. Il est plus sympa d'écrire du code pour répondre aux tests que de tenter d'écrire du code pour que la classe ne fonctionne pas (qui prendra le temps de tester dans cette situation?). Le but est de répondre au besoin, n'écrire que le code qui répond au besoin et rien de plus (YAGNI :You Ain’t Gonna Need It) [article détaillé]
require "test/unit"
class TestMonObjet < Test::Unit::TestCase
def test_attribut
monObjet = MonObjet.new("un titre")
assert_equal
"un titre", monObjet.nom
end
end
Inclure ensuite la classe MonObjet
NB: Vous pouvez notez qu'il est vraiment facile de créer une classe de test, alors plus d'excuse!

jeudi 5 février 2009

Ruby et les OLE

OLE : Object Linking and Embedding ("chaînage et incorporation d'objets")
Sorte de bibliothèques de fonctions au format Windows (*.dll)

Pourquoi les OLE sont si importantes ?
Les ole permettent d'accéder à toutes les fonctions des applications windows, et permettent de développer sous le pack office, mais aussi sur tout logiciel respectant cette architecture, ayant une API ou un SDK (c'est le cas de PowerAmc, BusinessObjects, Cognos...). Nous utilisons donc les API pour réaliser nos développement *QUID*.
Il est tout à fait possible d'intéragir avec le langage vba (qui peut comporter des facilités), mais qui est aussi très aisé sous Ruby ;) (créer tout de même un module pour récupérer les constantes).

[RubyDoc OLE] [SimWi's Blog] où se trouve un ex intéressant avec Word.
[Ruby OLE Browser] un script ruby permettant d'instrospecter vos objets/librairies disponibles.

NB: pour travailler avec des formats ouverts (OpenOffice, XML, PDF) on préfera utiliser des gem.

mercredi 4 février 2009

Installation d'une Gem Ruby

Une gem est une petite bibliothèque de classes,fonctions,modules (librairie - package de fonction étendues) pour répondre à un besoin précis. Etant réalisé par la communauté, testé, mise à jour, je vous conseille donc avant chaque développement de ne pas regarder s'il existe une gem (soit en standard, soit à télécharger). [RubyGem] [Documentation Gem] [liste]

Inclure une gem à son programme (équivalent à l'import d'un package java *
import java.rmi.*;*)
require 'rubygems'
require 'monPacket/maJolieGem'

La racine des gem se trouve : ruby\lib\ruby\gems\1.8\gems (ici gem en version 1.8)

Installation de RubyGems (si non installée).
- Télécharger la dernière version de rubygems (rubygems-1.3.1.zip par exemple).
- Décompresser l'archive.
- Ouvrir une fenêtre commande DOS
(Wx+R>tapez "cmd").
- Se positionner dans le répertoire de décompression de l'archive i.e. "C:\Temp\rubygems-1.3.1"
- Exécuter la commande "<>\ruby.exe" setup.rb.


Installation d'une gem : (pré-requis RubyGems doit être installé \bin\gem)
Rien de plus simple il vous suffit de vous rendre en mode command (Wx+R>tapez "cmd") et d'aller dans le répertoire des exécutables (bin) : eclipse\ruby\bin

- Aide : >$ gem --help
- Rechercher une gem avec nom (RegExp) : >$ gem list -r .*nom_gem.*
(ou >$ gem query --remote --name-matches *nom_gem*)
- Installer une gem : >$ gem install --remote *nom_gem*
- Liste des gems distantes disponibles : >$ gem query -r

ex.: installer rails :
>$ gem install rails

Résolution de problèmes :
  • Par ce moyen les dépendances sont automatiquement téléchargées
  • Si vous passez par un proxy, il ne vous sera peut être pas possible d'utiliser le "remote", procédez alors comme suit :
  1. Récuperer le proxy (adresse et port) (propriétés Internet Explorer>Connexions>Paramètres réseau)
  2. Créer une variable d'environnement HTTP_PROXY et y mettre la valeur précédemment récupéré e (Wx+pause>avancé>variables d'environnement) [ou juste pour la session]
  • Certains problèmes peuvent survenir car l'application gem est réalisé sous unix, il y a parfois des incompatibilités dans la gestion des chemins ("\","/"). Il vous suffit alors de :
  1. Chercher le(s) fichier(s) "rake_builder.rb" (faire une copie de sauvegarde)
  2. Remplacer "cmd += " RUBYARCHDIR=#{dest_path} RUBYLIBDIR=#{dest_path}" # ENV is frozen" par
  3. "cmd += " RUBYARCHDIR=\"#{dest_path}\" RUBYLIBDIR=\"#{dest_path}\"" # ENV is frozen", sauver [article référant]
  • Si vous n'avez pas le fichier "rake_builder.rb" tenter de mettre à jour RubyGem ou si rake n'existe pas (\bin)
  • >$ gem update --system
  • Rake ne fonctionne pas (compilation pour certaine librairie - "rake non reconnue comme commande interne"), le mettre à jour :
  1. >$ gem install -r rake
  2. ajouter le path pour rake : fenêtre dos >$ PATH=%PATH%;C:\eclipse\ruby\bin
  • En utilisant la commande gem, il est possible d'obtenir le message suivant "erreur : Cette application n'a pas pu démarrer car .dll est introuvable. La réinstallation de cette application peut corriger ce problème". Pour résoudre ce problème, il faut placer la (ou les) dll manquante(s) dans le répertoire bin de Ruby. Il est possible de télécharger les dll. Voici les 3 dlls qui peuvent être manquantes : zlib.dll, libeay32.dll, ssleay32.dll
Test de l'installation d'une gem : >$ ruby -e "require 'xml/libxml'"
Aucun message => OK ; -e:1:in `require': no such file to load => KO

mardi 20 janvier 2009

Installation Eclipse/Ruby

Avoir un environnement avec Eclipse/Ruby :
Installation - Install :
*/ Télécharger eclipse, ruby, jre
Installer Ruby dans le répertoire d'eclipse (eclipse\ruby) - (et la jre dans eclipse\jre)


*/ Il vous faut maintenant installer Core Frameworks (commun pour tous les langages) et Ruby IDE :
- Sur la page Dynamic Languages Toolkit downloads (dltk) récupérer un des liens (section "update site" stable)

- Aller ensuite dans Eclipse Help > Software updates...
- Onglet Available Software > Add Site...
- Coller le lien, sélectionner ensuite le Core et l'IDE (pas besoin du sdk, ni des sources)
---> Dynamic Languages Toolkit (DLTK)
-------> Dynamic Languages Toolkit - Core Frameworks
-------> Dynamic Languages Toolkit - Ruby Development Tools
- Cliquer sur Install... > Next > I accept the terms of the license agreements > Finish > Yes


*/ Référencer l'interpréteur pour créer un projet etc. :
- Une fois installé (Core/IDE), aller dans Eclipse Window > Preferences
Une section Ruby est alors créé.
- Aller dans Ruby > Interpreters > Add... ajouter ruby (vous pouvez écrire un chemin relatif à partir du répertoire eclipse)
---> Interpreter Type : Generic Ruby
---> Interpreter Name : ruby (par exemple)
---> Interpreter Executable : ruby\bin\ruby.exe (en chemin relatif)
- Cliquer sur OK > OK

Vous pouvez désormais créer des projets ruby!
NB: Interpreter Librairies [Ruby] est créé dans tout vos projets, vous pouvez alors créer un projet librairies, et faire un lien raccourci dans vos projets pour éviter de recopier l'ensemble des librairies à chaque projet.


*/ Lancer Eclipse avec une JRE autonome (jre dans le répertoire eclipse)
Il suffit de créer un raccourci avec les arguments suivants :
...\eclipse.exe -vm "jre\bin\javaw.exe" -data "workspace"
-refresh -showlocation
Ou bien il est possbile de créer un .bat dans le répertoire eclipse qui contient
eclipse.exe -vm "jre\bin\javaw.exe" -data "workspace" -refresh -showlocation


*/ Maintenant, nous allons créer un projet Ruby pour tester que tout fonctionne correctement. Dans Eclipse :
-
Cliquer sur File > New > Ruby Project
---> Project Name : Temp
---> Cliquer sur Create new project in workspace
---> Cliquer sur Use default interpreter
- Cliquer sur Finish
- Cliquer sur File > New > Empty Ruby Script
---> Source Folder : Temp
---> File : test_install.rb
- Cliquer sur Finish
- Saisir : puts "Ruby c'est trop fort"
- Cliquer sur Run > Run > Always save resources before launching > OK
Dans la fenêtre console, le message apparaît => tout est OK !


*/ RoR:
Projet Aptana - démo - article sur les auto-tests

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]

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

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.


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.