Le blog professionnel d'Amine Benkirane

Aller au contenu | Aller au menu | Aller à la recherche

jeudi 26 janvier 2012

Faire une action sur plusieurs fichiers filtrés dans un répertoire grace à un ls‏

Une commande sous Linux qui peux s'avérer utile si vous souhaitez effectuer une action sur certains fichiers seulement dans un répertoire. Pour cela, vous pouvez utiliser une boucle for comme la suivante:

for i in $(ls -al | grep <filtre_sur_les_fichiers>); do <action_linux> $i <répertoire de destination>; done;

Pour déplacer, par exemple, l'ensemble des fichier qui contiennent l'expression "p_file" dans un répertoire "/users/mon_user/rep_cible", la commande serait:

for i in $(ls -al | grep p_file); do mv $i /users/mon_user/rep_cible; done;

Importer/ exporter un dump d'une base Oracle

Dans ce billet, je vais vous présenter les commandes d'export et d'import d'une base Oracle grâce aux fichiers Dump. Ceci peut s'avérer très important pour récupérer ou recréer en local des bases de données distantes ou tout simplement pour créer une base de test à partir de la production. Ces commandes suppose que vous avez installé un client Oracle sur votre machine locale et que les exécutables sont bien dans votre PATH:

Tout d'abord, il faut commencer par l'export d'une base Oracle grâce à la commande suivante :
exp <nom_user>/<password_user>@<ip_nom_machine_oracle> file=<nom_fichier_dump_a_creer>.dmp log=<nom_fichier_logs>.log rows=y owner=<nom_owner_schema_Oracle>

Le paramètre rows=y indique que l'on souhaite récupérer les données. Si vous ne voulez récupérer que le schéma de la base sans les données, il suffit de positionner ce paramètre à 'n'.

Le fichier dump créé, il est alors possible de l'importer sur une autre base Oracle à l'aide de la commande d'import suivante:
imp <nom_user>/<password_user>@<nom_machine_oracle_pour_import> file=<nom_fichier_dump_a_importer>.dmp log=<nom_fichier_logs>.log

Je vous ai présenté, ici, les commandes basiques d'import/export d'une base Oracle mais celles-ci sont beaucoup plus riches. Si vous souhaitez plus de détails sur ces commandes, vous pouvez vous rendre sur le site Developpez.com où se trouve un article plutôt complet sur la sauvegarde et restauration de données Oracle.

mardi 24 janvier 2012

Afficher les messages Oracle sur la console SQL Developer

Sur SQL Developer, si vous souhaitez afficher les messages en sortie à l'aide de la fonction Oracle dbms_output.put_line, il faut l'activer préalablement à l'aide de la commande suivante :

set serveroutput on;

Vous pourrez alors voir les messages si vous taper l'instruction PL/SQL suivante par exemple :

dbms_output.put_line('Ceci est un message : ' || ma_variable);

vendredi 20 janvier 2012

Comparaison des meilleurs outils d'intégration du marché (Jenkins, Quickbuild, UrbanBuild/AnthillPro, Bamboo, Apache Continuum, TeamCity, Go/Cruise Control) - Décembre 2011

Depuis quelques années, avec la montée de l'agilité dans la gestion des projets informatiques, l'intégration continue devient de plus en plus une problématique très importante dans les entreprises. Elle induit l'automatisation du cycle de vie des applications informatiques. Les processus de compilation, l'exécution des tests et même le déploiement soit sur des serveurs de développements ou de production sont alors exécutés de manière la plus atuomatique possible à des fréquences variables.

Les moyens de cette automatisation sont, entre autres:

  1. la mise en place d'outils comme Maven ou Ant,
  2. l'écriture de tests unitaires à l'aide de frameworks de tests comme JUnit/JMock pour le language Java,
  3. la réalisation de tests fonctionnels ou d'intégration avec des outils comme Selemium ou SOAP UI.

Ces différents outils et frameworks mis en place au sein des projets sont les fondements de ce qu'on appelle aujourd'hui les usines logicielles. Basées sur les moyens ci-dessus, elles nécessitent le déploiement d'un outil orchestrateur que l'on appelle le serveur d'intégration. Celui-ci permet de lancer de manière automatique ou manuelle à fréquence variable différentes tâches.

Dans ce cadre, j'ai réalisé une étude comparative des outils d'intégration actuels du marché dont j'ai souhaité partagé les résultats aujourd'hui. En effet, il n'existe aucune étude sur internet actuellement qui compare les principaux outils d'intégration du marché. Ces informations sont donc intéressantes pour n'importe quel architecte, chef de projet ou développeur qui souhaite mettre en place ce type d'outil dans son entreprise. Cette étude est basée seulement sur les documentations et informations officielles (forums, blogs des éditeurs) et pas sur des tests réels sur des machines.

Voici les résultats basés sur des besoins identifiés comme important (2 premières colonnes du tableau comparatif) pour un outil d'intégration:

Légende  du tableau

Tableau comparatif complet



Avantages / Inconvénients

L'ensemble des informations de cette étude comparatives des outils d'intégration actuels du marché au dernier trimestre 2011 se trouve sur les tableaux ci-dessus. J'espère que ces informations vous serviront pour le choix de l'outil le plus adapté à votre contexte d'entreprise. Sinon, vous pouvez toujours me laisser un commentaire si vous souhaitez plus d'informations...

mardi 10 janvier 2012

Oracle 10G/11G : ACL

Depuis la version 10G d'Oracle, pour pouvoir se connecter à d'autres serveurs depuis le serveur de base de données, il peut être nécessaire de configurer correctement les listes de contrôles d'accès (ACL). Pour se faire, il faut utiliser la fonction SQL suivante de création des ACL d'Oracle:

dbms_network_acl_admin.create_acl (
acl => 'ldap_acl.xml'
, description => 'LDAP Server access control'
, principal => 'SOMEUSER'
, is_grant => true
, privilege => 'connect'
);

Voici la description des différents paramètres de cette fonction:
  • acl : il sert à préciser le nom de l'ACL à créer. Dans l'exemple, c'est ldap_acl.xml,
  • description: il permet de donner une description de l'ACL qu'on est entrain de créer,
  • principal: il permet de préciser le nom de l'utilisateur Oracle pour lequel on va affecter l'ACL,
  • is_grant: permet d'activer ou désactiver le privilège pour l'utilisateur précisé précédemment,
  • privilege: indique le privilège à accorder à l'utilisateur pour l'ACL en cours de création.

Pour ajouter à l'ACL, un privilege pour un utilisateur, la fonction est la suivante:
  dbms_network_acl_admin.add_privilege (
acl => 'ldap_acl.xml'
, principal => 'SOMEUSER'
, is_grant => true
, privilege => 'resolve'
);

Pour assigner l'ACL à un serveur, un domaine ou une adresse IP avec ou sans une fenêtre de port possibles, la commande est la suivante:
dbms_network_acl_admin.assign_acl (
acl => 'ldap_acl.xml'
, host => 'my.ldap.server.com'
, lower_port => 389
, upper_port => 389
);

J'ai utilisé dernièrement ces différentes commandes pour permettre à un utilisateur Oracle d'accéder au serveur LDAP de l'entreprise pour laquelle je travaillais. Celle-ci n'avait pas de DBA disponible pour effectuer cette configuration. Eh oui dans l'informatique, il faut être un mouton à 5 pattes pour s'en sortir...


mercredi 4 janvier 2012

Emulateur Android

Pour vérifier le bon fonctionnement de l'émulateur Android fourni avec l'Android SDK, il faut aller dans le répertoire platform-tools et lancer la commande :

adb devices

Cette commande permet aussi de lancer l'émulateur si celui-ci est arrêté.

Pour forcer l'arrêt de l'émulateur en cas de dysfonctionnement, la commande est :

adb kill-server

Pour voir les logs de l'émulateur, la commande est:

adb logcat

Retours sur l'Agile Tour 2011 (2/2)

Je fais suite  à mon premier billet concernant l'Agile Tour 2011 pour vous faire part cette fois des conférences auxquelles j'ai assisté l'après-midi.

Améliorez l'efficacité de vos cérémonies agiles

Suite à la formation que j'ai suivi sur SCRUM, il m'avait paru que les différentes réunions n'étaient pas forcément évidentes à mener étant donné que chaque membre de l'équipe peut donner son avis. 7 à 10 personnes qui émettent chacune leur opinion pour à la fin prendre une décisionn,  cela ne doit pas être évident dans la vraie vie. J'ai donc décidé de suivre cette conférence qui devait me donner une partie des réponses à mes questions.

L'oratrice est une Coach (encore une) et certifiée SCRUM Master. Elle accompagne ou a accompagnée, depuis 15 ans, plusieurs équipes en phase de transition vers SCRUM. Tout au long de son discours, elle insiste sur la dimension humaine liée à la bonne gestion des cérémonies agiles. L'agilité nécessite un comportement et une façon d'être spécifique. Pour que tout se passe bien, il faut être ++ comme elle dit. ++ veut dire qu'on est soit même dans une idée plutôt positive de nous-même et avec les autres. On peut alors être constructif pendant la cérémonie agile puisqu'on est dans un pied d'égalité avec les autres membres de l'équipe. On est en phase de collaboration. Dans le cas contraire, la réunion ne pourra être constructive puisque les interactions entre nous et les autres membres de l'équipe seront parasytées par du négativisme (on se sent supérieur aux autres ou inférieur, on sent qu'on n'a pas notre place dans l'équipe).

Conduite du changement et gestion de conflits

Cette conférence est liée à la précédente toujours dans cette esprit des difficultés rencontrées par les équipes agiles. Cependant, l'oratrice, psychologue clinicienne, apparemment débutante dans la prise de parole en présence d'un public assez nombreux n'était pas vraiment à l'aise. Elle n'a fait que lire son support de présentation. On n'entendait parler de gestion de conflits, de stress mais cette lecture assez monotone  a complètement anihilé la conférence. Du coup, j'en ai pas retenu grand chose malheureusement. 45 minutes très longues en pure perte...

Ni Gladiateurs ni Bisounours - une équipe remarquable au quotidien

Avec la première conférence de l'après-midi, celle-ci était sans doute la meilleure de cette deuxième partie de journée. L'orateur, Christophe Thibaut, est un consultant senior ayant 20 ans d'expérience en développement et direction de projets. Il sait bien de quoi il parle et est plutôt très pragmatique.

Lors de cette session, il nous parle de la vie d'une équipe de développement en mode agile avec un focus sur les problèmes rencontrés dans ce mode de fonctionnement. Un des éléments qui revient souvent, et c'est le cas dans n'importe quelle équipe, est la gestion des conflits. Le problème dans l'agilité c'est que cela peut perdre un temps certain et créer une dynamique dans l'équipe très négative. En effet, l'efficacité d'une équipe agile réside dans la communication entre ses membres. Un conflit mal géré aboutit toujours à des blocages entre certains membres de l'équipe. Les interactions ne se font plus et l'équipe aura alors beaucoup de mal à s'autogérer et livrer dans les temps.

Christophe nous donne ainsi quelques élements pour éviter que les conflits fragilise une équipe agile. L'un des plus intéressants aspects de cette session fut alors la découverte des "core protocols" de communication. Je dis intéressant mais je ne l'utiliserais pas forcément dans la vie de tous les jours même en milieu professionnel. Pour ceux qui, comme moi, ne connaissent pas les "core protocols" c'est en fait un moyen de gérer la communication au sein d'une équipe à l'aide d'un protocole. Déjà pour moi, c'est pas l'idéal, s'il faut un protocole pour communiquer avec mon équipe c'est qu'il y a déjà un problème. Bref, ce n'est que mon point de vue après ce qui est important c'est la finalité des core protocols. Ils nous montrent qu'il est important dans une équipe que chacun de ses membres puissent indiquer à un autre membre que ce qu'il fait est bien ou pas bien, qu'une personne peut avoir envie de faire une pause, de faire autre chose, de demander de l'aide, etc...

Les core protocols permettent cela grâce à des mots clés. Je vais vous présenter dans la suite quelques exemples choisis par l'orateur.

Check in

C'est le mot clé qui est utilisé pour "entrer" dans l'équipe. Son utilisation indique aux autres membres de l'équipe que la personne est bien présente et motivée pour travailler sur ses tâches. Quand on arrive le matin, par exemple, la personne dit:

  • Check in
  • Je suis content d'arriver au boulot
  • Je suis content parce que j'ai trouvé dans la nuit la solution à mon problème d'hier
  • Je suis énervé car j'ai passé 2 heures dans les bouchons

L'équipe répond alors: Bienvenue!

Ask for help

Ce core protocol, comme son nom l'indique, est utilisé lorsqu'une personne de l'équipe a besoin d'aide. La personne dit alors:

  • Quelqu'un peut m'aider j'ai un problème avec un bug que je n'arrive ps à résoudre depuis deux jours ?

Le membre de l'équipe qui le souhaite peut répondre alors oui et prendre le temps d'aider la personne qui a demandé de l'aide.

Check out

Sans justification, ce core protocol peut être utilisé par n'importe quel membre de l'équipe pour "sortir" de l'équipe. Un membre de l'équipe est fatigué, énervé de travailler sur la même tâche depuis 2 jours sans arriver à une solution, ne peut pas tenir ses engagement, etc... Il dit alors:

  • Check out

Il va alors prendre une pause, boire un café et revient plus tard ou il rentre chez lui.

J'en ai présenté que trois mais il existe beaucoup d'autres core protocols comme Perfection Game, Pass, Protocol chec, Intention Check. L'avantage avec les core protocols c'est qu'ils forcent les membres d'une équipe à se parler et surtout à se dire ce qui va ou va pas. Ils nous apprennent qu'il est important de :

  • faire des retours positifs à quelqu'un ainsi que des négatifs,
  • de demander de l'aide à l'équipe,
  • de faire une pause quand on arrive plus à avancer,
  • ...

Cependant, à mon sens, leur utilisation rends l'individu proche d'une machine. De plus, ils aboutissent à des contraintes puisqu'on est obligé de les utiliser lorsqu'ils sont mis en place dans une équipe. Cela déshumanise les individus sans oublier le fait que vu de l'extérieur les autres personnes doivent prendre les membres de ce genre d'équipe pour des fous ou des membres d'une secte. En tout cas, c'était intéressant de savoir que ce genre de moyen existe.

Les frontières de l'équipe

L'orateur, un consultant de SFEIR, a commencé sa conférence par un petit jeu basé sur les fameux oeufs en chocolat Kinder. Il a partagé 6 personnes du public en deux équipes de 3 avec chacune 3 oeufs. La première, spécialisée sur une tâche, s'est organisée en une personne qui devait sortir l'oeuf de son papier alluminium, la seconde devait manger tous les chocolats et la dernière était spécialisée dans la réalisation de la Kinder surprise. La seconde équipe elle multi-disciplinaire dont chaque membre devait faire les 3 étapes d'affiler avec son oeuf. Bien sûr, c'est l'équipe multi-disciplinaire qui l'a emporté. L'orateur en conclut par l'efficacité en agile d'équipe multi-disciplinaire.

Pour la suite, se fut en résumé, une nouvelle formation à SCRUM avec des illustrations basées sur la bande-dessinée Asterix. Une équipe d'irréductible, les agiles, représentée par le village gaulois au milieu de tous les autres (PO, client, équipes non agiles, ...) que sont les différents camps retranchés romains.

Une session qui ne m'a pas vraiment laissée d'éléments instructifs.

Conclusion

Malgré certaines sessions très peu intéressantes, j'ai quand même eu beaucoup de retours intéressants sur l'utilisation de l'agilité dans le milieu professionnel. J'ai pu voir les difficultés rencontrées par les équipes agiles et surtout les moyens de les atténuer au maximum. En résumé, il n'est pas évident de mettre en place l'agilité mais, comme tout, l'important c'est d'adopter une attitude positive avec soi-même et les autres. Un élement important de l'agilité c'est qu'une équipe ne performe pas du jour au lendemain. Cela nécessite plusieurs mois de travail ensemble pour améliorer sans cesse les choses. Il est donc primordial, à mon sens, plus qu'avec des méthodes traditionnelles, que cette équipe ne soit pas dissoute après quelques mois. Cependant, l'agilité c'est aussi une façon d'être et de penser en équipe. Quelqu'un qui a une expérience dans l'agilité aura plus d'aisance à se réintégrer dans une nouvelle équipe agile puisqu'il aura, au moins, acquis l'état d'esprit agile. J'aurais aussi compris qu'au delà de l'équipe elle-même, le succès de la mise en oeuvre de l'agilité dans une entreprise est basé sur la confiance de ses dirigeants envers leurs équipes agiles.

mardi 20 décembre 2011

APEX : installation gratuite pour POC

J'ai parlé dans un précédent et lointain billet de la technologie APEX d'Oracle. Aujourd'hui, je vais vous donner la procédure pour installer APEX sur votre PC local afin de voir les différentes fonctionnalités offertes par la technologie (et il y a en a beaucoup !!!!!)

Etape 1 : Installation d'Oracle XE

Avant d'installer APEX, il vous faudra une base de données Oracle. Si vous n'en avez pas, je vous conseille de récupérer la version gratuite sur le site d'Oracle : http://www.oracle.com/technetwork/database/express-edition/downloads/index.html. La dernière version stable à l'heure où j'écris cet article est la 11g.

Il vous faudra pour cela vous enregistrer chez Oracle si vous n'avez pas déjà un compte. L'archive fait plus de 300Mo, il est donc possible que cela prenne un peu de temps à moins que vous ne soyez l'heureux détenteur d'une ligne fibrée :))...

Une fois le téléchargement terminé, il suffit de dézipper le fichier et exécuter le setup. Un mot de passe d'administrateur vous sera demandé, conservez le bien en tête. Par défaut, Oracle XE s'installe sous Windows dans le répertoire C:\oraclexe. Suite au "clicodrome", Oracle est installé sur votre machine et prêt à être utilisé.

Etape 2 : Téléchargement d'APEX

Une fois votre base de données Oracle installée, vous pouvez télécharger APEX et l'installer. Pour le téléchargement, le lien est le suivant: http://www.oracle.com/technetwork/developer-tools/apex/downloads/index.html. La dernière version stable à l'heure où j'écris cet article est la 4.1.

L'archive est moins volumineuse que celle d'Oracle, un peu plus de 100Mo, elle sera donc téléchargée plus vite. Une fois téléchargé, dézippez le fichier dans un répertoire à votre convenance. Par exemple, c:\Apex.


Etape 3 : Installation d'APEX (scénario comprenant la configuration de l'Oracle APEX Listener)

Il existe plusieurs façons d'installer APEX. Elles sont toutes décrites très précisément sur le site d'Oracle à cette adresse: http://docs.oracle.com/cd/E23903_01/doc/doc.41/e21673/overview.htm#i46634 (voir paragraphe 1.5 Available Installation Scenarios). Je vous présenterais l'installation d'APEX par configuration de l'Oracle Apex Listener.

Installation de l'environnement de développement APEX

Tout d'abord, comme je l'avais expliqué dans mon billet précédent concernant Apex, la technologie est complètement installée dans une base de données Oracle. La première chose à faire est donc d'exécuter le script SQL d'installation d'APEX. Pour ce faire, démarrer une console de commande Windows (cmd dans la partie rechercher du menu démarrer). Placez vous alors au niveau du répertoire où vous avez dézippé Apex. Dans l'exemple que j'ai pris, se serait c:\Apex\apex.

Connectez vous alors à Oracle à l'aide de la commande sqlplus /nolog.

Dans l'invite de commande SQL, connectez vous alors en tant qu'utilisateur système à l'aide de la commande CONNECT SYS as SYSDBA. Le mot de passe de l'administrateur que vous avez saisi lors de l'installation d'Oracle et que je vous avez demandé de garder en tête vous sera alors demandé. Saisissez le! Si c'est le bon, vous serez alors connecté en tant qu'utilisateur système.

La prochaine étape est d'installer tout l'environnement de développement APEX à l'aide de la commande suivante :

@apexins tablespace_apex tablespace_files tablespace_temp images

Où:

  • tablespace_apex est le nom du tablespace pour l'utilisateur de l'application APEX.

  • tablespace_files est le nom du tablespace pour l'utilisateur de fichier APEX.

  • tablespace_temp est le nom du tablespace temporaire.

  • images est le nom du dossier virtuel utilisé pour les images d'APEX. Pour les futures compatibilité avec les prochaines versions d'APEX, il est recommandé de définir ce dossier par /i/.

Au final, vous devez exécuter une commande qui ressemble à cela :
@apexins SYSAUX SYSAUX TEMP /i/

Activation du compte de l'utilisateur APEX_PUBLIC_USER

Une fois l'environnement de développement installé, vous devez activé le compte de l'utilisateur APEX_PUBLIC_USER à l'aide de la commande suivante en étant connecté à SQLPLUS en mode SYSDBA comme précédemment:

ALTER USER APEX_PUBLIC_USER ACCOUNT UNLOCK;
Modifier ensuite son mot de passe à l'aide de la commande:
ALTER USER APEX_PUBLIC_USER IDENTIFIED BY new_password;

Droits de connexion à la base de données APEX

Il vous faudra ensuite fournir les droits aux autres machines de se connecter à votre base de données APEX en exécutant la procédure suivante:

DECLARE
ACL_PATH  VARCHAR2(4000);
ACL_ID    RAW(16);
BEGIN
-- Look for the ACL currently assigned to '*' and give APEX_040100
-- the "connect" privilege if APEX_040100 does not have the privilege yet.
SELECT ACL INTO ACL_PATH FROM DBA_NETWORK_ACLS
WHERE HOST = '*' AND LOWER_PORT IS NULL AND UPPER_PORT IS NULL;
-- Before checking the privilege, ensure that the ACL is valid
-- (for example, does not contain stale references to dropped users).
-- If it does, the following exception will be raised:
--
-- ORA-44416: Invalid ACL: Unresolved principal 'APEX_040100'
-- ORA-06512: at "XDB.DBMS_XDBZ", line ...
--
SELECT SYS_OP_R2O(extractValue(P.RES, '/Resource/XMLRef')) INTO ACL_ID
FROM XDB.XDB$ACL A, PATH_VIEW P
WHERE extractValue(P.RES, '/Resource/XMLRef') = REF(A) AND
EQUALS_PATH(P.RES, ACL_PATH) = 1;
DBMS_XDBZ.ValidateACL(ACL_ID);
IF DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE(ACL_PATH, 'APEX_040100',
'connect') IS NULL THEN
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(ACL_PATH,
'APEX_040100', TRUE, 'connect');
END IF;
EXCEPTION
-- When no ACL has been assigned to '*'.
WHEN NO_DATA_FOUND THEN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL('power_users.xml',
'ACL that lets power users to connect to everywhere',
'APEX_040100', TRUE, 'connect');
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL('power_users.xml','*');
END;
/
COMMIT;

Activation du serveur HTTP XML DB d'Oracle

Pour finaliser la configuration d'APEX, il vous faudra activer ou, si c'est déjà actif, fournir le port sur lequel vous souhaitez vous connecter à APEX à l'aide de la commande suivante:

EXEC DBMS_XDB.SETHTTPPORT(port);

Etape 4 : installation de l'Oracle APEX listener

Lorsque votre environnement de développement APEX est complètement configuré, dans le scénario que j'ai choisi de vous présenter, il est nécessaire d'installer l'Oracle APEX listener qui est téléchargeable à l'adresse suivante:

http://www.oracle.com/technetwork/developer-tools/apex-listener/downloads/index.html.

Une fois téléchargée, dézippez l'archive dans un répertoire à votre convenance. Par exemple, c:\Apex.
Comme vous l'aurez vu, l'archive est une application Web de type WAR. Vous pouvez démarrer le listener
soit par l'intermédiaire d'un serveur d'applications classique (Tomcat, JBoss, Glassfish) soit en
standalone. C'est cette dernière façon que je vais utilisée. La commande à lancer est:
java -Dapex.port=nnnn –jar <temp directory>\apex.war

Vous pouvez positionner le numéro de port que vous souhaitez. Il doit être différent du numéro de port
de lancement du serveur HTTP XML DB. <temp directory> est le répertoire où vous avez décompressé le
listener.
 
Le chemin vers le répertoire d'installation d'Apex est c:\Apex\apex si vous avez suivi l'exemple que j'ai fourni.
Suite au lancement de cette commande, le chemin vers le répertoire des ressources statiques d'APEX vous sera demandé c'est le dossier images du répertoire d'installation d'Apex. Dans mon exemple donc, c:\Apex\apex\images.
D'autres éléments vous seront demandés comme le nom de l'administrateur du listener ainsi que son mot de passe (et sa confirmation) et le nom du manager du listener et son mot de passe.

Si tout est ok, une fenêtre Web devrait s'ouvrir pour compléter la configuration de l'Oracle Apex Listener. La copie d'écran suivante vous indique les éléments que vous devez saisir dans le formulaire:



Le mot de passe de l'utilisateur APEX_PUBLIC_USER est celui que vous avez défini plus haut.

Lorsque vous avez rempli le formulaire, cliquez sur le bouton Apply pour prendre en compte la configuration. Si tout s'est bien passé, vous devriez accéder automatiquement à l'URL suivante: http://localhost:8787/apex/f?p=4550:1.

Etape 5 : création d'un nouveau workspace

A partir de la page précédente, vous pouvez accéder à la partie administration d'APEX en bas de page. Un login / mot de passe vous sera demandé. Saisissez alors admin et admin se sont les login / mot de passe que vous avez défini pour la connexion Oracle. Modifier ensuite le mot de passe administrateur (demandé automatiquement). Il faudra saisir un mot de passe ayant au moins une majuscule et un caractère spécial comme le $.

Utilisez ensuite ce login/mot de passe pour vous connecter à la console d'administration d'APEX. Vous devriez arriver sur la page suivante (APEX version 4.1):

Allez alors dans Manage Workspaces puis Create Workspace. Choisissez alors un nom pour votre Workspace et cliquer sur Next. Saisissez alors un nom pour votre schema et un mot de apsse associé et cliquez sur Next. Entrez alors les informations sur l'administrateur de ce nouveau Workspace et cliquez sur Next. Si le récapitulatif des informations vous convient, cliquer sur le bouton create Workspace pour terminer sa création.

Retournez alors sur l'URL http://localhost:8787/apex/f?p=4550:1 afin de vous connecter à votre nouveau Workspace qui comprend une belle application exemple de ce que vous pouvez faire avec APEX.

Amusez vous bien !! Et si vous avez des retours sur ce billet, n'hésitez pas, je prends toutes les critiques positives comme négatives...

lundi 12 décembre 2011

Retours sur l'Agile Tour 2011 à Paris (1/2)

Le 6 décembre dernier, j'ai participé à l'Agile Tour 2011 à Paris dans les locaux de Microsoft à Issy-les-Moulineaux. Après avoir suivi la formation SCRUM fin octobre, il était intéressant pour moi d'assister à des conférences autour de l'agilité. Je vais vous raconter le déroulement de ma journée et présenter les différentes sessions auxquelles j'ai assisté. Je le ferais en, au moins deux billets pour alléger la lecture (et que la lecture, pas les infos... :) ).

La plénière d'introduction

Cette journée, prévue pour être très riche en informations autour de l'agilité, a commencé par une récupération des badges et le programme de la journée. Un petit déjeuner est offert, histoire de donner à nos neurones de l'énergie pour suivre les différentes conférences. La première est une plénière d'introduction à l'agile tour. On nous y apprends que l'agile tour a commencé il y a quelques années à peine par quelques villes pour devenir aujourd'hui un évenement mondial organisé dans des disaines de villes des Etats-Unis à l'Australie en passant par le Canada, le Brésil, la France, la Chine, l'Inde, etc... 

Il s'en suit une présentation brève des différents sponsors de l'évenement parmi lesquels Novédia. Il faut bien faire de la pub à tous ceux qui ont permis l'organisation de l'Agile Tour parisien.

La keynote de Martin Woodward

Suite à la plénière, Martin Woodward, Senior Program Manager de l'équipe Visual Studio, présente, en anglais (et se sera le seul),  comment Microsoft met en oeuvre l'agilité dans le développement de ces logiciels comme Visual Studio.


Martin nous parle de la valeur ajoutée liée à la mise en place de l'agilité. L'efficacité des équipes grâce à leur polyvalence. On y entend aussi parler d'intégration continue et de feedbacks réguliers. Deux principes qui permettent d'améliorer la qualité du logiciel chez Microsoft et la mise en oeuvre de nouvelles fonctionnalités.

La conférence est, plutôt, intéressante et animée. On voit bien que l'orateur est américain et habitué aux Key Notes.

Suite à la Key Note, les plénières sont terminées. Les conférences de l'Agile Tour 2011 qui suivent sont organisées en sessions de 45 mins ou 1h30. Il faut alors faire le choix entre 4 thèmes différents parmis les suivants:

  • l'Agile en Entreprise

  • la Qualité Logicielle & Test

  • l'Equipe

  • Ateliers / Idées de Coaching

Malheureusement, le programme récupéré en début de journée est très succint. On y voit que les titres des sessions. Le résumé du contenu de celles-ci n'étant disponible que sur le Web à cette adresse: http://at2011.agiletour.org/fr/programme_paris.html.

J'ai trouvé cela très léger pour choisir les conférences auxquelles on va assister. Bref, pour le reste de la journée, il faudra se baser sur le seul titre de la session pour se décider...

L'ALM agile, Facteur Clé de Succès des Projets Informatiques

Ma première session de 45 mins est celle-ci. Je ne sais pas ce qu'est l'ALM, encore moins agile. La notion de Facteur Clé de Succès des Projets Informatiques est plutôt pleine de promesses. J'y assiste dans le but d'en savoir plus.

L'orateur est un expert ALM. Il nous apprend que l'ALM est l'Application Lifecycle Management. En français, cela donne la gestion du cycle de vie d'une application. En résumé, c'est l'ensemble des phases d'un projet de développement, de l'analyse au déploiement en passant par le développement, bien sûr, les tests. Au cours de la session, l'orateur fait un focus sur Visual Studio Team Foundation qui intègre l'outillage nécessaire pour gérer ce cycle de vie pour des projets de développements agiles. Cela fait suite à la Keynote et c'est encore un peu de pub pour Microsoft. On est dans leurs locaux quand même...

On entends des mots qui sont des fondamentaux de l'agilité inscrits au Manifeste Agile comme:

  • Livrez fréquemment un logiciel opérationnel

  • Une attention continue à la qualité du Logiciel au travers des tests

  •  L'automatisation de processus comme la compilation, l'exécution des tests et le déploiement

  • La transmission de l'information autour du projet avec des outils de communication partagés

Une démonstration des outils agiles intégrés à Visual Studio Team Foundation est faite. On voit, par exemple, comment gérer un Product Backlog, un Sprint Backlog, répartir les tâches entre développeurs, etc...

Une session plutôt intéressante même si tournée principallement sur les outils de Microsoft que je n'utilise jamais mais c'est toujours bon à savoir pour une prochaine discussion avec des développeurs .NET.


Améliorez votre Kanban!

Ne sachant pas ce qu'est un Kanban, j'assiste à cette session. L'orateur est un consultant agile de chez Octo, habitué à mettre en place l'agilité dans des équipes de développements.

Très rapidement, je sais, enfin, ce qu'est un Kanban. En fait, je connaissais déjà sans savoir ce que c'est comme beaucoup d'entre vous d'ailleurs j'imagine. Le Kanban est en fait le fameux tableau où l'on accroche les post-its avec les colonnes A Faire, En cours et Fait. Bon, ce tableau là c'est le Kanban le plus simple mais il en existe une infinité. D'ailleurs, l'orateur nouis propose de partir de ce Kanban et de l'améliorer afin d'obtenir un Kanban plus efficace et plus riche en informations. Venant du monde du développement, les informations sont très pragmatiques et rapidement opérationnelles.

Pour améliorer l'efficacité du Kanban, on nous conseille les élements suivants :

  • positionner les fameuses User Stories plutôt que les tâches: pour accompagner ce positionnement, la définition du "Done" est très importante. Elle doit d'ailleurs être tenue à jour quelque part pas loin ou sur le Kanban lui-même.

  • on peut ajouter des colonnes comme: En test, en pré-production, en qualification, etc...

  • limiter le flux des User Stories à réaliser dans le A Faire: d'après l'orateur, il est inutile de charger le flux des User Stories à faire si l'équipe ne peut pas toutes les prendre en charge. Cela permet une meilleure fluidité et efficacité du déroulement des projets agiles.

  • ajouter la ligne en or: elle permet de gérer des problèmes non prévus mais très urgent. L'exemple même est le bug en production. Cette ligne fera alors passer des tâches avant tout le reste.

  • ajouter un bac rouge: il permet la récolte des User Stories qui ont posées problème pendant le projet. Il sert principallement au moment de la Rétrospective afin d'améliorer le Kanban, l'équipe, les process agiles mis en place.

Au cours de cette session, j'apprend que le Kanban est une méthode agile à part entière comme l'est SCRUM mais sans gestion de Sprints. J'ai vraiment appris pas mal de choses grâce à cette présentation même si le PPT était améliorable... :)


Kanban pour la préparation, SCRUM pour la réalisation

Pour continuer dans ma lancée "Kanbanienne" si je puis dire, j'assiste à la suite Kanban pour la préparation, SCRUM pour la réalisation. Le prochain orateur, SCRUM Master et Coach agile depuis 8 ans, nous fait un retour d'expérience sur la mise en place de l'agilité au PMU. Lorsque l'état a décidé de mettre en concurrence le marché du jeu, des entreprises historiques dans le domaine, comme le PMU, ont du évoluer afin de s'adapter aux nouvelles demandes de leurs clients. L'entreprise, assistée par un coach, a décidée de passer ces équipes à l'agilité.

Kanban a, alors, été utilisé dès l'initialisation du programme de refonte des applications en ligne du PMU. Il a permis aux équipes d'intégrer les principes agiles au plus tôt. L'orateur nous montre le Kanban qu'ils ont utilisé pendant la phase de préparation. Un Kanban plutôt complet. Il précise que pour la réalisation, ils sont partis de ce même Kanban sur lequel ils ont simplement changés le nom des différentes parties. La présentation et le retour d'expérience du coach agile nous montre clairement que l'agilité peut être introduite dans des équipes fonctionnant en mode traditionnel sur des programmes informatiques ambitieux. Les questions du public en fin de séance indique que cela n'est, certainement pas, sans problèmes. De gros efforts doivent être entrepris surtout par rapport au top management, non habitué à une telle organisation, qui est très inquiet par rapport à la réalisation concrète des projets. Il en ressort un élément très important de la réussite d'une mise en place de l'agilité qui est la relation de confiance obligatoire entre l'équipe et sa hiérarchie.

Ceci dis la livraison rapide d'un logiciel qui fonctionne permet de montrer l'efficacité de la méthode et incite le top management de croire en ce type d'organisation.


Suite à cette session, c'est la fin de matinée et donc la pause déjeuner. Un buffet complet nous est offert. Ouf, nul besoin d'aller chercher une sandwicherie autour de Microsoft où tout ou presque est plutôt loin. Comme cela a été le cas à chaque présentation, un grand merci aux sponsors!! :)

Dans un prochain billet, je raconterais la seconde partie de journée...


mercredi 30 novembre 2011

Flex et Maven: installer le Flex-SDK dans votre repository Maven

Une des premières difficulté lorsqu'on souhaite industrialiser des applications Flex est l'installation des dépendances Flex dans le repository Maven propre à votre entreprise. Cette démarche n'est pas recommandé du tout par Adobe lorsqu'on lit, par exemple, une des seules pages "officielles" du Web qui parlent de Flex et Maven: https://docs.sonatype.org/display/FLEXMOJOS/Installing+Flex+SDK+into+maven+repository. Pour vous aider dans cette démarche, un très bon lien vers un repository Github qui fournit un script et des fichiers de description pour l'installation des dépendances Maven du Flex-SDK est à suivre => https://github.com/piercer/flex_sdk_maven_install.

Un article de l'auteur du repository se trouve à l'adresse suivante http://www.dz015.com/?p=419.

Par contre, je vous conseille de positionner plutôt le repository Maven de Sonatype dans votre fichier settings.xml. Celui-ci fournit la plupart des dépendances nécessaires au bon fonctionnement des applications Flex. Ajouter, pour cela, les lignes suivantes dans votre fichier settings.xml autour des balises <repositories>:

<repository>
       <id>sonatype</id>
       <name>Sonatype Repository for Flex dependancies</name>
       <url>https://repository.sonatype.org/</url>
       <releases>
              <enabled>true</enabled>
       </releases>
       <snapshots>
              <enabled>false</enabled>
       </snapshots>
</repository>

Pour effectuer convenablement cette installation, il vous faudra aussi le plugin Maven bundle-publisher-maven-plugin qui se trouve à cette adresse :

http://mirrors.ibiblio.org/pub/mirrors/maven2/org/sonatype/plugins/bundle-publisher-maven-plugin/1.1/bundle-publisher-maven-plugin-1.1.jar

Pour l'installer manuellement, la commande maven est :

mvn install:install-file -Dfile=<path-to-file>/bundle-publisher-maven-plugin-1.1.jar -DgroupId=org.sonatype.plugins \
-DartifactId=bundle-publisher-maven-plugin -Dversion=1.1 -Dpackaging=maven-plugin


- page 1 de 5