Overblog Suivre ce blog
Administration Créer mon blog

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

26 Janvier 2012 , Rédigé par benkirane Publié dans #Divers trucs et astuces pour Linux

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;

Lire la suite

Importer/ exporter un dump d'une base Oracle

26 Janvier 2012 , Rédigé par benkirane Publié dans #Divers trucs et astuces pour 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.
Lire la suite

Afficher les messages Oracle sur la console SQL Developer

24 Janvier 2012 , Rédigé par benkirane Publié dans #Divers trucs et astuces pour Oracle

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);

Lire la suite

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

20 Janvier 2012 , Rédigé par benkirane Publié dans #Les outils pour l intégration

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 Selenium 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é partager 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...

Lire la suite

Oracle 10G/11G : ACL

10 Janvier 2012 , Rédigé par benkirane Publié dans #Divers trucs et astuces pour Oracle

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...


Lire la suite

Emulateur Android

4 Janvier 2012 , Rédigé par benkirane Publié dans #Les technologies mobiles

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

Lire la suite

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

4 Janvier 2012 , Rédigé par benkirane Publié dans #La gestion de projets

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.

Lire la suite