Tous les articles par Marc

Aujourd’hui c’est #VotreJob sur twitter

Alors c’est l’occasion de mettre une nouvelle version de mon CV, un peu plus en phase avec ma situation actuelle.

Chef de projet informatique innovant : CV Chef de projet

Me retrouver sur les réseaux sociaux : Viadeo, Linkedin

Cette mise à jour est visible : ici

Pour résumer, je suis actuellement chef de projet technique au GIP Sim@ris à Rouffach. J’apporte mes compétences techniques sur un projet de gestion du dossier médical patient. Mon rôle est de seconder le directeur de projet dans la gestion d’une équipe de 15( +2) développeurs.

Nos principaux objectifs sont l’intégration du marché suisse ainsi que la la migration de notre application d’un frameworks en fin de vie (WebObject) à un environnement standard (Spring + Hibernate).

En parallèle de cette activité de co-gestion d’équipe, je suis responsable de la cellule R&D associée au pôle édition logiciel. Je travaille notamment à intégrer les technologies de développement mobile dans notre DPI.

Les différentes activités du GIP Sym@ris sont disponibles sur le site du Gip Symaris ; http://www.symaris.com

Auparavant j’ai eu plusieurs expériences professionnelles ces dernières années qui me permettent aujourd’hui d’avoir une expertise dans un grand nombre de technologies telle que l’architecture objet, la programmation en C++ ou encore la veille technologique.

Ces différentes expériences m’ont permis d’être à l’aise dans un grand nombre de configuration de développement ou de gestion de projet : je pratique les méthodes agiles et je suis apte à mettre en place un serveur d’intégration continue. D’un point de vue langage de programmation, si le C++ est celui que j’ai le plus pratiqué, je connais aussi le Java/J2EE, le Fortran et j’ai pu pratiquer des langages de scripts tel le python ou encore le perl.

Actuellement en poste, je reste ouvert à toute proposition me permettant de mêler de manière efficace la recherche de solution et d’innovation technologique.

Compétences informatiques

Environnements GNU Linux (Debian), Windows
Langages C/C++, Java, LaTeX
Framework : Spring, Hibernate, AngularJS, ExtJS
Script Perl, Bash
Tech. Web HTML/CSS, JavaScript, PHP/MySql
Parallélisme MPI, PM2, CUDA, OpenMP, Threading Building Blocks
IDE Netbeans, Eclipse, Visual C++, emacs
Débuggeur DevPartner, Valgrind, gprof
Bureautique OpenOffice.org, Office, Latex
Logiciels div. Qt-Designer, gnuplot, OAR, The Gimp, skencil
IHM Qt-Trolltech, Java Swing

Pinterest, une communauté basée sur le partage d’épingle

Ma découverte de la semaine : la communauté Pinterest.

Cette communauté semble se baser sur le partage, non pas de bookmark, mais d’images.

L’idée première semble de pouvoir sauvegarder chaque lien sur chacune des ressources graphiques que l’on pourrait rencontrer ou rechercher. Il est possible de classer ces différentes ressources en fonction d’une thématique.

Pinterest

Là ou cela devient intéressant, c’est qu’à cette simple fonctionnalité de bookmarks, s’ajoute un aspect communautaire. Il est en effet possible de voir, de partager, et de bénéficier des sélections de tout à chacun et c’est là que ce site devient intéressant. En effet, la recherche d’image ne se fait plus dans l’immensité du Web mais dans une sous-partie déjà sélectionnée par la communauté. Il est vrai que cela peut être contraignant, car cela impose d’être un suiveur plus qu’un découvreur … mais suivant le type de recherche que l’on effectue, cela peut grandement gagner du temps.

De prime abord, le premier contact fut un peu distant car il faut avoir un compte pour consulter les différents résultats du site. Il est possible d’avoir un aperçu, mais dès qu’un scroll est nécessaire, la navigation se stoppe en demandant une connexion. Une fois cette étape réalisée, le site offre tout son potentiel et présente une vraie alternative à la recherche d’image classique via les moteurs de recherche.

le Blog Pinterest

Pinterest, le site

Oracle : Update or Insert = MERGE

J’ai du répondre à une question simple de prime abord, comment mettre un jour un référentiel, non prévu pour être versionné, et ayant pu évoluer de manière différente sur chacun des différents sites de manière indépendante.

Après quelques recherches, le principal mot clé qui pouvait revenir était : MERGE

Un merge pour un développeur, c’est quelque chose de connu et ce n’est pas souvent envisager comme quelque chose de simple et de généralisable.
En théorie si, mais en pratique, c’est souvent durant cette étape que la livraison de son code prend un retard inattendu.

Alors avant d’envisager une telle pratique quand on utilise traditionnellement le SQL pour faire de simple CRUD … on cherche du simple … on envisage de se mettre au PL …. voir de faire une mini application faisant ce que l’on veut.

Et pourtant, le merge cela peut aussi être simple dans certain cas et cela peut rapidement être mis en place.

Comme dit en introduction, mon contexte était le suivant :
– Mise à jour de référentiel
– Pas d’assurance sur l’état du référentiel avant travaux
– Pas nécessairement le temps de s’assurer de la cohérence des données pour chacun des sites.

A priori, il existe plusieurs techniques, plus ou moins simple pouvant arriver à ce résultat.
Dans mon cas, il fallait que le génération du script se fasse dans un temps relativement court … et en ne demandant pas de devenir DBA au passage.

Le processus choisit pour l’actualisation de la table fut le suivant :

– Mise en place d’une date de fin pour l’ensemble des champs du référentiel utilisé en production (assurance de conserver les champs pour les données déjà saisies).
– Injection de la nouvelle table de référentiel
– merge proprement dit entre l’ancienne table et la nouvelle afin d’actualiser les champs utiles, quelques soit l’état de la table initialement.

En SQL, cela donne cela :


-- Généralisation de la date de fin à l'ensemble des occurrences de la table
update SOC_TYPE_DOMICILE set datefin= '01/11/14';

-- Injection de la table référentiel nouvelle version
CREATE TABLE "SOC_TYPE_DOMICILE_REF"
( "CODE" VARCHAR2(10 BYTE),
"CODEREGROUPEMENT" VARCHAR2(10 BYTE),
"DATEDEBUT" DATE,
"DATEFIN" DATE,
"LIBELLE" VARCHAR2(100 BYTE),
"RANGAFFICHAGE" NUMBER(3,0),
"ANCIENCODECSD" VARCHAR2(10 BYTE),
"CODEREGROUPEMENTTYPE" VARCHAR2(10 BYTE),
"ID_LIBELLE" NUMBER(7,0)
);

Insert into SOC_TYPE_DOMICILE_REF (CODE,CODEREGROUPEMENT,DATEDEBUT,DATEFIN,LIBELLE,RANGAFFICHAGE,ANCIENCODECSD,CODEREGROUPEMENTTYPE,ID_LIBELLE) values ('SIFO','SIT_LOC',to_date('01/01/07','DD/MM/RR'),to_date('01/11/14','DD/MM/RR'),'Sans information','1','0',null,null);
Insert into SOC_TYPE_DOMICILE_REF (CODE,CODEREGROUPEMENT,DATEDEBUT,DATEFIN,LIBELLE,RANGAFFICHAGE,ANCIENCODECSD,CODEREGROUPEMENTTYPE,ID_LIBELLE) values ('HEBST','SIT_LOC',to_date('01/01/07','DD/MM/RR'),to_date('01/11/14','DD/MM/RR'),'Hébergement stable','2','2',null,null);
Insert into SOC_TYPE_DOMICILE_REF (CODE,CODEREGROUPEMENT,DATEDEBUT,DATEFIN,LIBELLE,RANGAFFICHAGE,ANCIENCODECSD,CODEREGROUPEMENTTYPE,ID_LIBELLE) values ('HEBPR','SIT_LOC',to_date('01/01/07','DD/MM/RR'),to_date('01/11/14','DD/MM/RR'),'Hébergement précaire ou de durée incertaine','3','A',null,null);
Insert into SOC_TYPE_DOMICILE_REF (CODE,CODEREGROUPEMENT,DATEDEBUT,DATEFIN,LIBELLE,RANGAFFICHAGE,ANCIENCODECSD,CODEREGROUPEMENTTYPE,ID_LIBELLE) values ('HOP','SIT_LOC',to_date('01/01/07','DD/MM/RR'),to_date('01/11/14','DD/MM/RR'),'Hôpital sans perspective de logement à la sortie','4','B',null,null);
Insert into SOC_TYPE_DOMICILE_REF (CODE,CODEREGROUPEMENT,DATEDEBUT,DATEFIN,LIBELLE,RANGAFFICHAGE,ANCIENCODECSD,CODEREGROUPEMENTTYPE,ID_LIBELLE) values ('SAB','SIT_LOC',to_date('01/01/07','DD/MM/RR'),to_date('01/11/14','DD/MM/RR'),'Sans abri, absence totale d hébergement','5','1',null,null);

-- Merge
-- deux cas : la ligne existe : dans ce cas on modifie le libellé pour qu'il corresponde exactement avec le résultat attendu (les valeurs, même modifiées, ne changent pas de sens)
-- La ligne n'existe pas, on l'insère
MERGE INTO SOC_TYPE_DOMICILE S
USING SOC_TYPE_DOMICILE_REF R
ON ( S.CODE = R.CODE )
WHEN matched
THEN UPDATE SET S.DATEFIN = null, S.LIBELLE = R.LIBELLE, S.RANGAFFICHAGE = R.RANGAFFICHAGE, S.ANCIENCODECSD = R.ANCIENCODECSD
WHEN not MATCHED
THEN INSERT (CODE,CODEREGROUPEMENT,DATEDEBUT,DATEFIN,LIBELLE,RANGAFFICHAGE,ANCIENCODECSD,CODEREGROUPEMENTTYPE,ID_LIBELLE)
VALUES (R.CODE,R.CODEREGROUPEMENT,R.DATEDEBUT,R.DATEFIN,R.LIBELLE,R.RANGAFFICHAGE,R.ANCIENCODECSD,R.CODEREGROUPEMENTTYPE,R.ID_LIBELLE);

-- et c'est fini ...

Duplication de clé USB

des fois on se fait plaisir avec peu de ligne de commande ..

Duplication de la clé
dd if=/dev/sdc of=/dev/sdd bs=4096 conv=notrunc,noerror

Hors avec des clés de tailles différentes, on obtient :

fsck /dev/sde1
fsck from util-linux 2.20.1
e2fsck 1.42.8 (20-Jun-2013)
La taille du système de fichiers (selon le superbloc) est de 7793408 blocs
La taille physique du périphérique est de 7674624 blocs
Le superbloc ou la table des partitions est peut-être corrompue !

Un simple : resize2fs -f /dev/sde1 7674624

et tout est de nouveau opérationnel :

fsck /dev/sde1
fsck from util-linux 2.20.1
e2fsck 1.42.8 (20-Jun-2013)
/dev/sde1 : propre, 25468/1925120 fichiers, 303289/7674624 blocs

Je vais de nouveau mettre ma sd card classique dans le Eeepc et la microSD dans une nouvelle go-pro ^^

Maisons de santé, un projet en devenir

Travaillant depuis maintenant deux ans pour un éditeur de logiciel en phase avec le monde de la santé, c’est avec un grand intérêt que je suis le projet de l’Asip Santé quand à son label maisons de la santé.

L’objectif est de permettre aux acteur de la santé de s’assurer que le logiciel qu’ils évaluent ou qu’ils possèdent répond correctement à un ensemble conséquent mais indispensable de fonctionnalités.

A l’inverse, cette homologation permet pour un éditeur de connaître, dans les grandes lignes le périmètre d’une solution pour ce type d’acteur.

A titre perso, cette définition de périmètre me permet de voir l’étendu du travail à accomplir pour réaliser ce type de développement … et après un premier passage sur le DSFT de l’Asip santé ( lien ext ), il y a du travail en perspective.

Mise à jour de wordpress

Depuis quelques temps, les mises à jours automatiques ne se faisait plus pour raison de mémoire, et là,
je n’ai pas fait attention à qui à changer ses pré-requis mais elle est passée.

Avec cette mise à jour et la suppression de tous les commentaires non-validés (rien de moins que 50 000), c’est peut être l’occasion de relancer ce blog

A bienôt.

Résumé des tweets de la semaine

Article pas très original mais qui me permet de faire le point sur les diverses infos que j’ai relayé cette semaine.

Sauget Marc ‏@marcSauget
Pub inside : Save 50% on all ebooks and videos, 40% on all print books http://oreil.ly/RvYxcT

4 Sept Sauget Marc ‏@marcSauget
@jugedadouche @Maitre_Eolas Shit ou situation sociales ? Il suffit de croiser des Djeuns (sans shit) pour avoir déjà très peur …

3 Sept Sauget Marc ‏@marcSauget
Encore quelques mois à ce rythme et je me transforme en un Hudson à moi à tout seul 🙁

Le conducteur était ivre, avait fumé du cannabis et n’avait plus le permis. http://franche-comte.france3.fr/2012/08/29/accident-de-pomoy-le-conducteur-etait-ivre-et-avait-consomme-du-cannabis-64491.html …” : sélection naturelle ???

28 Août Sauget Marc ‏@marcSauget
Test Astah Community sur un projet perso … c’est con que la génération de code soit absente de cette version #fail #UML #test

Post Bookmaks, de tous et de rien, mais surtout de rien

Histoire de mettre un peu de vie sur ce site … désolant mort, voici quelques liens divers et variés :

Dans la rubrique moto :
le contrôle technique semble est remis à plus tard … en espérant que le plus tard soit jamais car le défaut technique n’intervient que rarement comme cause dans les accidents motos (de l’ordre du pourcent) par contre il pourrait revenir par l’aspect écologie … Je ne suis pas contre l’écologie, mais bon, des contrôles sur route par les forces de l’ordre, c’est aussi possible, moins systématique (mais moins source de revenu aussi … )

D’un point de vue sécurité routière, la chasuble est oublié .. mais revient sous la forme d’un timbre poste (150 cm2) à avoir entre le coup et les hanches … encore un truc inutile ..servant juste à ne pas perdre la face … politique de m …

Niveau nouveauté sympa, un casque branché sur un accéléromètre

http://www.moto-net.com/breve.php?RefBreve=4577

[ad#Google Adsense]

Niveau informatique, que du vieux en ce qui me concerne, les évaluations de technologie prennent leur temps, et niveau recherche je n’en parle pas, pour le moment, même lecture d’article me semble loin ….

Cariatides est DMP Compatible

Cariatides est maintenant DMP Compatible pour sa version 6.8 pour les 3 profils du DMP (Dossier Médical Patient) :  Profil création, Profil alimentation et Profil consultation.

Au bout de 3 mois, on voit une sortie positive pour ce projet 😀
Maintenant, il ne reste plus qu’à faire qu’il soit utilisable par des utilisateurs lambdas … Ce n’est pas rien mais le plus important est fait.

Pour info : Cariatides est logiciel de suivit de patient pour les hôpitaux psychiatriques, concu et développé par le GIP Symaris (Rouffach) basé sur le WebObjects associé à une base Oracle.

[ad#Google Adsense]

Manque de souffle

Ce blog n’a jamais été très régulier, mais là,j’avoue qu’il manque cruellement de mise à jour. Un nouveau job, une nouvelle thématique … tout en n’essayant de poursuivre en à coté des activités de recherche, cela prend du temps et cela n’en laisse plus beaucoup au reste …

Comme on dit, cela commence à se poser et je vais bientôt pouvoir reprendre une petite activité de publication ici même.

[ad#Google Adsense]

Dans les tuyaux, beaucoup de découverte en ce qui me concerne, que se soit :
– d’un point vue OS, puisque je travailles sous Mac depuis début septembre.
– d’un point de vue technologie car mon nouvel emploi dans le développement d’application WEB me permet d’approfondir un pan complet de l’informatique, que je n’utilisais que peu jusqu’à peu de temps.
– d’un point de vue recherche, avec l’accomplissement d’une nouvelle étude sur la décomposition de domaine pour l’apprentissage de réseau de neurones, mais aussi, avec surement dans peu de temps, une nouvelle version d’EgsToolkit afin publier les dernières modifications de ce logiciel.

A bientôt