A 3P's world

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

jeudi 3 juin 2010

Liste des plugin Maven Indispensable pour le Reporting

<reporting>

   <plugins>
     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-pmd-plugin</artifactId>
       <configuration>
         <targetJdk>1.5</targetJdk>
       </configuration>
     </plugin>
     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-checkstyle-plugin</artifactId>
     </plugin>
     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-plugin-plugin</artifactId>
     </plugin>
     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-jxr-plugin</artifactId>
     </plugin>
     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-javadoc-plugin</artifactId>
     </plugin>
     <plugin>
       <groupId>org.codehaus.mojo</groupId>
       <artifactId>taglist-maven-plugin</artifactId>
     </plugin>
     <plugin>
       <groupId>org.codehaus.mojo</groupId>
       <artifactId>changelog-maven-plugin</artifactId>
     </plugin>
     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-project-info-reports-plugin</artifactId>
       <version>2.1.2</version>
       <reportSets>
         <reportSet>
           <reports>
             <report>summary</report>
             <report>project-team</report>
             <report>mailing-list</report>
             <report>cim</report>
             <report>issue-tracking</report>
             <report>license</report>
             <report>scm</report>
           </reports>
         </reportSet>
       </reportSets>
     </plugin>
   </plugins>
 </reporting>

mercredi 24 février 2010

Maven Site hudson et SCP

memento

Pour ce faire modifier le user hudson pour lui rajouter un home directory et un fichier .ssh/know_hosts avec la bonné clé SSH

/var/lib/hudson/tools/Maven_2.2.1/bin/mvn site-deploy -s /var/lib/hudson/.m2/settings.xml

INFO site:deploy {execution: default-dep... The authenticity of host 'development.openairlines.local' can't be established. RSA key fingerprint is 65:ad:86:8a:a0:7a:6c:46:20:df:7e:ff:fa:17:3f:5f. Are you sure you want to continue connecting? (yes/no):

cf

http://debalex.wordpress.com/2008/10/07/maven-site-deployment-inside-hudson/

mercredi 10 février 2010

Gestion des Map en EMF dans un ecore

Voici le contenu du code source d'un fichier exemple ou une Map est déclaré :

Voici une petite capture de l'éditeur ecore d'Eclipse pour plus de clarté :

Visualisation du fichier ecore avec gestion de mpa deans l'éditeur d'Eclipse

Et le code du fichier ecore pour plus d'exhaustivité...

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <ecore:EPackage xmi:version="2.0"
  3. xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="fr">
  5. <eSubpackages name="webeo">
  6. <eSubpackages name="blog">
  7. <eClassifiers xsi:type="ecore:EClass" name="CarOwner">
  8. <eStructuralFeatures xsi:type="ecore:EReference" name="carMap" upperBound="-1"
  9. eType="#//webeo/blog/CarMapEntry" containment="true"/>
  10. </eClassifiers>
  11. <eClassifiers xsi:type="ecore:EClass" name="Car"/>
  12. <eClassifiers xsi:type="ecore:EClass" name="CarMapEntry" instanceClassName="java.util.Map$Entry">
  13. <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
  14. <eStructuralFeatures xsi:type="ecore:EReference" name="value" lowerBound="1"
  15. eType="#//webeo/blog/Car" containment="true"/>
  16. </eClassifiers>
  17. </eSubpackages>
  18. </eSubpackages>
  19. </ecore:EPackage>

Et pour terminer le fichier ecore :D[Fichier Ecore avec Gestion de Map

Fichier Ecore avec Gestion de Map

vendredi 8 janvier 2010

Dns

Memento pour les dns par défaut d'ubuntu (config réseau)

Nice find.

nsswitch.conf specifies which name service to use for a particular machine: NIS, NIS+, DNS, or local files etc

The list you see specifies in which order it should use the various resources.

Code:

hosts: files mdns4_minimal NOTFOUND=return dns mdns4

files: Network Database Local Files hosts /etc/inet/hosts netmasks /etc/inet/netmasks ethers /etc/ethers bootparams /etc/bootparams protocols /etc/inet/protocols services /etc/inet/services networks /etc/inet/networks

mdns4: multicast DNS service discovery. It allows programs to publish and discover services and hosts running on a local network with no specific configuration. For example you can plug into a network and instantly find printers to print to, files to look at and people to talk to. mdns4_minimal is obviously a minimal subset of mdns4

dns: your normal DNS service

NOTFOUND=return: means that the search for an entry should stop if the search in the previous entry turned up nothing. Note that if the search failed due to some other reason (like no NIS server responding) then the search continues with the next entry.

From the bit of reading I've done it is suggested that mdns only be called after dns if dns fails. I dont see how mdns is going to benefit you if you only have one pc on the LAN. Then again i'm not clued up on mdns at all so i might be sprouting nonsense.

Ive changed mine to reflect as: hosts: files dns mdns4_minimal NOTFOUND=return mdns4

I'll see if this improves anything.

mardi 10 novembre 2009

Nexus : Out of Memory

Après seulement quelques heures d'utilisation e la dernière version du logiciel Nexus De Sonatype, j'ai été confronté à une erreur courante et pénible, le fameux :

Java heap space
Nexus returned an error: ERROR 500: Internal Server Error

 
Après avoir cherché un petit peu j'ai enfin trouvé le fichier de configuration à modifier pour augmenter la taille de la HEAP.

Tout se passe dans le fichier wrapper.conf

///[text]
# Initial Java Heap Size (in MB)
wrapper.java.initmemory=64

# Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=256

///


Petite commande pour vérifier que c'est bien pris en compte.

/etc/init.d/nexus restart
# (pour ma part je suis obligé de tuer le processus et de le lancer avec un start....)

ps aux | grep nexus

nexus    24599  0.0  0.0  16916   724 ?        Sl   12:32   0:00 /usr/local/nexus-webapp-1.4.0/bin/jsw/linux-x86-64/./wrapper /usr/local/nexus-webapp-1.4.0/bin/jsw/linux-x86-64/../../../conf/wrapper.conf wrapper.syslog.ident=nexus-webapp wrapper.pidfile=/usr/local/nexus-webapp-1.4.0/bin/jsw/linux-x86-64/./nexus-webapp.pid wrapper.daemonize=TRUE


nexus    24601  8.1 15.2 449320 235436 ?       Sl   12:32   0:22 java -Dbasedir=../../.. -Djava.io.tmpdir=../../../runtime/tmp -Dsun.net.inetaddr.ttl=3600 -Xms64m -Xmx256m -Djava.library.path=./lib -classpath ../../../lib/wrapper-3.2.3.jar:../../../lib/plexus-classworlds-1.4.jar:../../../conf/ -Dwrapper.key=WPDAeAC8dDyWWk38 -Dwrapper.port=32000 -Dwrapper.jvm.port.min=31000 -Dwrapper.jvm.port.max=31999 -Dwrapper.pid=24599 -Dwrapper.version=3.2.3 -Dwrapper.native_library=wrapper -Dwrapper.service=TRUE -Dwrapper.cpu.timeout=10 -Dwrapper.jvmid=1 org.codehaus.plexus.classworlds.launcher.Launcher


Maintenant plus de problèmes de mémoire, je peux lancer des recherches comme un malade sur tous les repositories :D

jeudi 1 octobre 2009

Astuce AS3 - CheckBox non éditable

Je me suis longtemps posé une question toute bête...

Commet écrire un renderer avec une case à cocher (checkbox) non éditable !!!

En effet la proprété toggle est inaccessible depuyis la clmasse mx.controls.Checkbox.

Et bien il suffit tout simplement de surcharge les gestionnaire de click et de luis dire de ne plus rien faire

Et voila!!! On a une checkbox totalement passive, je vous rassure on peut tout de même modifier sa valeur programmatiquement. (c'est automatique via le renderer)

  1. public class BooleanRenderer extends CheckBox
  2. {
  3. public function BooleanRenderer()
  4. {
  5. super();
  6. this.setStyle("textAlign", TextFormatAlign.CENTER);
  7. }
  8.  
  9. override protected function clickHandler(event:MouseEvent):void
  10. {
  11. event.stopImmediatePropagation();
  12. return;
  13. }
  14. }
  15.  
  16. //Utilisation en tant que renderer.
  17.  
  18. <mx:Component id="booleanRenderer">
  19. <renderer:BooleanRenderer />
  20. </mx:Component>

jeudi 3 septembre 2009

Une histoire de Trans

Le saviez-vous ?

Il existe deux manières de faire du transtypage (Cast) avec Action Script 3

  1. monInstance as Voiture
  2. Voiture(monInstance)

Mais quelle est donc la différence ??

Si votre objet monInstance n'est pas une instance de la classe Voiture:

  1. l'instance monInstance sera initialisé avec null
  2. une erreur sera lancé (similaire au ClassCastException du monde Java), voici la version française sortant tout chaude de la console => TypeError: Error #1034: Echec de la contrainte de type :

Cette petite subtilité peut avoir une très grande importance dans une application Flex (ouFlash) alros pensez-y !!

mercredi 1 avril 2009

Association One-To-One

Voici comment se traduit les différentes associations de type One-To-One : OneToOne Associations

Voici le code PHP produit :

  1. <?php
  2.  
  3. namespace org\rapidoo\demo\onetoone;
  4.  
  5. //-------------------------------------------
  6. // One-to-one mono navigable with 1 key
  7. //-------------------------------------------
  8.  
  9. class A {
  10.  
  11. /**
  12.   * The id property.
  13.   * @var int
  14.   */
  15. private $id;
  16.  
  17. /**
  18.   * The name property.
  19.   * @var B
  20.   */
  21. private $b;
  22.  
  23. }
  24.  
  25. class B {
  26.  
  27. /**
  28.   * The id property.
  29.   * @var int
  30.   */
  31. private $id;
  32.  
  33. }
  34.  
  35. //-------------------------------------------
  36. // One-to-one binavigable with 2 keys
  37. //-------------------------------------------
  38.  
  39. class C {
  40.  
  41. /**
  42.   * The id property.
  43.   * @var int
  44.   */
  45. private $id;
  46.  
  47. /**
  48.   * The name property.
  49.   * @var D
  50.   */
  51. private $d;
  52.  
  53. }
  54.  
  55. class D {
  56.  
  57. /**
  58.   * The id property.
  59.   * @var int
  60.   */
  61. private $id;
  62.  
  63. /**
  64.   * The name property.
  65.   * @var C
  66.   */
  67. private $c;
  68. }
  69.  
  70. //-------------------------------------------
  71. // One-to-one binavigable with 1 key
  72. //-------------------------------------------
  73.  
  74. class E {
  75.  
  76. /**
  77.   * The id property.
  78.   * @var int
  79.   */
  80. private $id;
  81.  
  82. /**
  83.   * The name property.
  84.   * @var F
  85.   */
  86. private $f;
  87.  
  88. }
  89.  
  90. class F {
  91.  
  92. /**
  93.   * The id property.
  94.   * @var int
  95.   */
  96. private $id;
  97.  
  98. /**
  99.   * The name property.
  100.   * @var E
  101.   */
  102. private $e;
  103. }
  104.  
  105. ?>

Le code de mapping relationnel

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <mapping xmlns="http://schema.emukina.fr/Mapping"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://schema.emukina.fr/Mapping http://schema.emukina.fr/Mapping.xsd"
  5. package="org.rapidoo.demo.onetoone">
  6.  
  7. <!-- One-to-one mono navigable with 1 key -->
  8. <class name="A" table="a">
  9. <id>
  10. <property name="id" column="id_a"/>
  11. </id>
  12. <one-to-one name="b" column="id_b" type="B" not-null="true"/>
  13. </class>
  14. <class name="B" table="b">
  15. <id>
  16. <property name="id" column="id_b"/>
  17. </id>
  18. </class>
  19.  
  20. <!-- One-to-one bi navigable with 2 keys -->
  21. <class name="C" table="c">
  22. <id>
  23. <property name="id" column="id_c"/>
  24. </id>
  25. <one-to-one name="d" column="id_d" type="D" not-null="true"/>
  26. </class>
  27. <class name="D" table="d">
  28. <id>
  29. <property name="id" column="id_d"/>
  30. </id>
  31. <one-to-one name="c" column="id_c" type="C" />
  32. </class>
  33.  
  34. <!-- One-to-one bi navigable with 1 key -->
  35. <class name="E" table="e">
  36. <id>
  37. <property name="id" column="id_e"/>
  38. </id>
  39. <one-to-one name="f" column="id_f_fk" type="F" not-null="true"/>
  40. </class>
  41. <class name="F" table="f">
  42. <id>
  43. <property name="id" column="id_f"/>
  44. </id>
  45. <one-to-one name="e" column="id_f" reverse-column="id_f_fk" type="E" not-null="true"/>
  46. </class>
  47.  
  48. </mapping>

Et enfin le code Sql

  1. ---------------------------------------------
  2. -- One-to-one mono navigable with 1 key
  3. ---------------------------------------------
  4.  
  5. CREATE TABLE `a` (
  6. `id_a` INT UNSIGNED AUTO_INCREMENT,
  7. `id_b` INT UNSIGNED NOT NULL,
  8. PRIMARY KEY(`id_a`),
  9. INDEX `IDX_a_b`(`id_b`) ,
  10. CONSTRAINT `FK_a_b` FOREIGN KEY (`id_b`) REFERENCES `b`(`id_b`)
  11. );
  12.  
  13. CREATE TABLE `b` (
  14. `id_b` INT UNSIGNED AUTO_INCREMENT,
  15. PRIMARY KEY(`id_b`)
  16. );
  17.  
  18. ---------------------------------------------
  19. -- One-to-one binavigable with 2 keys
  20. ---------------------------------------------
  21.  
  22. CREATE TABLE `c` (
  23. `id_c` INT UNSIGNED AUTO_INCREMENT,
  24. `id_d` INT UNSIGNED NOT NULL,
  25. PRIMARY KEY(`id_c`),
  26. INDEX `IDX_c_d`(`id_d`) ,
  27. CONSTRAINT `FK_c_d` FOREIGN KEY (`id_d`) REFERENCES `d`(`id_d`)
  28. );
  29.  
  30. CREATE TABLE `d` (
  31. `id_d` INT UNSIGNED AUTO_INCREMENT,
  32. `id_c` INT UNSIGNED NULL,
  33. PRIMARY KEY(`id_d`),
  34. INDEX `IDX_d_c`(`id_c`) ,
  35. CONSTRAINT `FK_d_c` FOREIGN KEY (`id_c`) REFERENCES `c`(`id_c`)
  36. );
  37.  
  38. ---------------------------------------------
  39. -- One-to-one binavigable with 1 key
  40. ---------------------------------------------
  41.  
  42. CREATE TABLE `e` (
  43. `id_e` INT UNSIGNED AUTO_INCREMENT,
  44. `id_f_fk` INT UNSIGNED ,
  45. PRIMARY KEY(`id_e`),
  46. INDEX `IDX_e_f`(`id_f_fk`) ,
  47. CONSTRAINT `FK_e_f` FOREIGN KEY (`id_f_fk`) REFERENCES `f`(`id_f`)
  48. );
  49.  
  50. CREATE TABLE `f` (
  51. `id_f` INT UNSIGNED AUTO_INCREMENT,
  52. PRIMARY KEY(`id_f`)
  53. );

mercredi 25 mars 2009

PPP is not dead

On ne va quand même pas rester sur un coup de gueule, l'informatique c'est parfois beau comme ... ... ben comme Flampy pardi !!

Même si ça ne se voit pas sachez que Flampy avance, et va même changer de petit nom, peut être vais-je m'offrir un nouveau nom de domaine ... à voir

En attendant une future release officielle, je vais vous prépare une petite vidéo qui montrea comment utiliser Eclipse MDT pour concevoir une application (qui sera peut être l'application exemple de la documentation de Flampy).

Pour commencer voici la liste des notations UML qui seront compatible avec Flampy. (MDA et ORM inclus) Notations UML supportées

Affaire à suivre !!

mercredi 4 février 2009

La guerre de l'informatique

Inauguration de la catégorie : Coup de gueule :|

Ce soir j'étais d'humeur surfeuse ...

J'ai longtemps erré sur le fameux site viadeo afin de mettre à jour mon profil, depuis le temps que je devais le faire.

Après avoir consulté quelques profils je me suis fait la réflexion suivante : "Quel métier de peigne-culs et de pipoteurs !! "

Le jeu est de savoir qui a la plus longue ........ liste d'expérience,et qui a le plus de responsabilités, de vrais CV de mythomanes, d'accord il faut savoir se vendre mais parfois ça en devient pathétique.

Plus ça va plus je me dit qu'il faut je travaille en autarcie :D, peut-être qu'un jour ça sera le cas même s'il est difficile de faire de grandes choses en informatique tout seul ...

Version minimale requise

Voici les versions minimales requises pour pouvoir utiliser Flampy

  • PHP 5.3
  • Action Script 3 / FlashPlayer 9

Non je ne voue pas une adoration pour le chiffre 3, c'est un pur hasard. De même la version 5.3 de PHP n'est qu'une version pre-release mais qui supporte les namespace (=package) qui est une évolution tant attendue !!! De toute manière Flampy est fonctionnel mais pas terminé donc on verra qui est prêt en premier. Perso je mise sur le bébé de Zend :D

Edit: La migration de Flampy en PHP 5.3 est achevée, il reste quelques bricoles à débugger mais le principal est fait :D

mercredi 14 janvier 2009

Flampy Is Not Dead !!! - Avancement Janvier 2009

Et non Flampy n'est pas mort, même s'il est vrai que je n'y ai pas touché depuis cet été !!!

Voici le bilan :

  • Génération du code des opérations pour chaque chaque classe.
  • Nettoyage du code du générateur (c'est un peu le bronx).
  • Explication des 2 types de layout et activation du bouton radio...
  • Packaging de Flampy v0.2
  • Coder la génération des schémas XML (*.xsd)
  • Coder la génération des fichiers de description des services web (*.wsdl)
  • Coder la génération du fichier de mapping
  • Coder les association many-to-one et la génération via MDA
  • Coder la gestion des tests lien
  • Coder la création du script d'initialisation Sql
  • Achever l'ORM de Flampy en gérant les différents types d'association
  • Intégration de amfphp pour la gestion des Remote Object ou la version packagé avec Zend ou d'une version hybride

Le framework va encore évoluer mais je peux déjà l'utiliser pour des petits projets.

dimanche 7 décembre 2008

Preloader ActionScript 3.0

Je suis en train de réécrire le code ActionScript 3.0 d'un petit player MP3 en flash (swf).

Vous pouvez voir le player sur mon site de musique (en travaux)

Aujourd'hui je vais vous donner le code du preloader en ActionScript 3.0 :

Sur la première frame de votre scénario, créez un calque que vous nommerez Actions et ne mettez rien dessus. Puis ouvrez le panneau Action (touche F9), et copiez-collez le code ci dessous....

  1. //Play the wait animated icon
  2. wait_mc.play();
  3.  
  4. //Listen the progress Event
  5. this.loaderInfo.addEventListener(ProgressEvent.PROGRESS , onLoadProgress);
  6.  
  7. //Listen the end of progress
  8. this.loaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
  9.  
  10. /**
  11.  * Update the progress bar.
  12.  */
  13. function onLoadProgress(event:ProgressEvent):void
  14. {
  15. var bl:int = event.bytesLoaded;
  16. var bt:int = event.bytesTotal;
  17. var amountLoaded:int = Math.floor((bl / bt)*100);
  18.  
  19. trace(amountLoaded * 2);
  20. progressWaitBar_mc.width = amountLoaded * 2;
  21. trace(amountLoaded);
  22. chargement.text = Math.round(amountLoaded ) + "%";
  23.  
  24. }
  25.  
  26. /**
  27.  * Download achieved, display the MixTape MP3 Player
  28.  */
  29. function onLoadComplete(event:Event):void
  30. {
  31. trace("Download Complete ! ");
  32. gotoAndStop(2);
  33. }
  34.  
  35. //Manage cache-control for new web browser
  36.  
  37. //Listen the EnterFrame event, if we enter into the first frame and the swf is totally downloaded
  38. stage.addEventListener(Event.ENTER_FRAME, checkComplete);
  39.  
  40. /**
  41.  * Display the MixTape MP3 Player if the swf file was retrieved from cache.
  42.  */
  43. function checkComplete(event:Event):void {
  44. //File was entirely downloaded
  45. if ( LoaderInfo(this.root.loaderInfo).bytesLoaded == LoaderInfo(this.root.loaderInfo).bytesTotal ) {
  46. //Stop to listen
  47. stage.removeEventListener(Event.ENTER_FRAME, checkComplete);
  48.  
  49. trace("Cache Complete ! ");
  50. gotoAndStop(2);
  51. }
  52. }
  53.  
  54. //Don't go to the next frame until I decide !
  55. stop();

Si vous faites Ctrl+Entrée pour tester l'animation cela plantera car :

  • vous n'avez pas le movie clip wait_mc (c'est une animation d'attente)
  • vous n'avez le movie clip progressWaitBar_mc (c'est juste un rectangle avec un masque pour simulez une barre de progression)
  • vous n'avez pas le textfield chargement (ou on fait avancer le pourcentage)
  • vous n'avez pas de frame 2 (c'est là que vous mettrez votre animation)

En espérant vous avoir aidé, n'hésitez pas à demander de l'aide !!!

vendredi 15 août 2008

Avancement de Flampy Mi-Août

Voici le point d'avancement de Mi-Août :

  • Génération du code des opérations pour chaque chaque classe.
  • Nettoyage du code du générateur (c'est un peu le bronx).
  • Explication des 2 types de layout et activation du bouton radio...
  • Packaging de Flampy v0.2
  • Coder la génération des schémas XML (*.xsd)
  • Coder la génération des fichiers de description des services web (*.wsdl)
  • Coder la génération du fichier de mapping
  • Achever l'ORM de Flampy en gérant les différents types d'association
  • Intégration de amfphp pour la gestion des Remote Object

vendredi 8 août 2008

Demo Flampy Installer en vidéo

Voici une courte vidéo montrant l'utilisation de l'installeur de Flampy :

Enjoy it !

- page 1 de 3