• J'en chie au boulot en ce moment, donc ce poste va dans la categorie boulot (categorie dont tout le monde se fout), mais vraiment, ca me defoule...
    Je posterai sur des trucs plus concrets juste apres.
    Si vous vous appelez Xav, ne lisez pas la suite (Non Xav, la fonction de la derniere fois ne m'excite pas, elle me degoute plutot - si j'ai bien compris tu as eu la meme reaction- et je voulais juste faire partager mon malheur).

    *** mode java ***
    Juste quelques points que j'aimerais bien gueuler a la face des mes chefs (enfin ceux qui sont responsables du code source du programme principal, cad les criminels), si possible en les frappant avec un objet contandant de bonne taille (marteau, clavier, imprimante...)


    - declarer les variables "protected" :
    C'est un moyen d'acceder/modifier facilement des donnees chez une classe du meme package. On deroge un peu a la regle d'or de l'encapsulation totale dans le cas de classes fortement liees (meme package), car on estime qu'il est acceptable de laisser ces classes fortement correlees ET cette forte correlation permet de tabler sur le fait qu'on ne risque pas de rendre l'etat d'un objet incoherent en court-circuitant les chemins etablis.
    Ca n'est PAS (EN AUCUN CAS) un moyen de se foutre de l'encapsulation en foutant tout ce qu'on veut dans un package (GUI Swing, Classes gerant l'impression, Classes parsant du XML...), et en appelant tout ca quand on veut directos.
    Resultat : ca fait trois jours que je veux JUSTE imprimer un diagramme avec mon programme, ce devrait etre tres simple, MAIS comme dans ce bordel infame, les classes d'impression sont fortement correlees a l'affichage, je me gratte encore la tete pour les decoupler


    - les commentaires, c'est bien, mais en japonais c'est con... la doc aussi c'est bien, dommage que personne n'ait eu le courage de faire une javadoc.... Quand on a environ 150 classes pour un systeme de prod, des tests de regression aussi c'est bien (junit pour le riche client, cactus pour le code serveur J2EE)


    - la separation des contraintes : si tu as 10 EJBS qui vont acceder a la meme base, ce serait bien d'avoir une classe qui appelle une connection, plutot que d'avoir une fonction dans CHAQUE putain d'EJB pour ca...


    - le concept d'EJB :
    session : interface avec le client (avec ou sans session) - Note directement via RMI, ou appele par une servlet - , appelle les entity beans et contient le code "entreprise"
    entity : represente un objet (=tuple) de la base de donnees, c'est a dire une donnee persistante, resistante a la deconnexion.

    ET NON
    session : un genre de gros java bean qui attaque la base de donnees direct avec du gros SQL qui tache, et bourre les resultats directement a une servlet
    entity : tiens c'est quoi ca ???

    Resultat : code acrobatique et tres amateur (confondre EJB et java beans) avec en plus un cote serveur qui melange allegrement code "entreprise" et representation des donnees (essaye de changer tes tables que je me marre...)


    - le finally
    finally permet, par exemple, de fermer des streams dans le cas d'une fonction presente dans un try et qui declenche une erreur catch. C'est cool de ne pas avoir des streams encore ouverts en cas d'exception non critique
    Merde, pensez try-catch-finally plutot que try-catch des que vous risquez de devoir faire du menage pour chaque cas de figure (stream, connection bd, ...)


    Je pense qu'a part Pob, personne ne lira ca, mais ca fait du bien :)








    3 commentaires
  • **
    Je viens de creer un theme "Geek et travail" ou je vais un peu parler boulot, parfois ca n'aura pas beaucoup de sens pour les gens sains d'esprit, mais pour les autres, ce devrait etre assez comique
    **

    Je viens de tomber sur une des plus belles fonctions que j'ai jamais vues !!!
    Attention, la fonction drawPolyline() en provenance directe du Japon...

        private void drawPolyline (ImsObject obj)
        {
            double prev_x = 0.0,prev_y = 0.0;
            boolean first = true;
            Vector property = obj.getAssociation ("has_property_of");
           
            if ( property != null && property.size () > 0 )
            {
                for ( Enumeration e = property.elements (); e.hasMoreElements (); )
                {
                    AssociationInstance a = (AssociationInstance) e.nextElement ();
                    TypePair obj2 = (TypePair) a.elementAt (3);  //roleObject[2]
                    TypePair obj3 = (TypePair) a.elementAt (4);  //roleObject[3]

                    //for( int i = 2; i < a.size(); i++ )
                    {
                        if (obj2.item.equals ("width"))
                        {
                            pointwidth = obj3.toDouble ();
                        }
                        else if (obj2.item.equals ("colour"))
                        {
                            double refdir[] = new double[3];
                            refdir[0] = refdirx;
                            refdir[1] = refdiry;
                            refdir[2] = 0.0;
                            ImsSet v = (ImsSet) obj3.item;
                            Red = ( (TypePair)v.elementAt (0)).toDouble ();
                            Green = ( (TypePair)v.elementAt (1)).toDouble ();
                            Blue = ( (TypePair)v.elementAt (2)).toDouble ();
                            //this.addLine(x1,y1,x2,y2,width,new Color((int)R,(int)G,(int)B));
                            setColor (Red,Green,Blue);
                        }  // end else
                    } //end block
                }  //end for (Enumer...
            }
            //read points
            {
                Vector assembly = obj.getAssociation ("is_assembled_from");
               
                if ( assembly != null && assembly.size () > 0 )
                {
                    for ( Enumeration e = assembly.elements (); e.hasMoreElements (); )
                    {
                        AssociationInstance a = (AssociationInstance) e.nextElement ();
                        for ( int i = 2; i < a.size (); i++ )
                        {
                            TypePair tp = (TypePair) a.elementAt (i);
                            if ( tp.type == ImsObject.SET )
                            {
                                ImsSet v = (ImsSet) tp.item;
                                for ( int j = 0; j < v.size (); j++ )
                                {
                                    TypePair tp1 = (TypePair) v.elementAt (j);
                                    ImsObject setObject = getObjectByName ( (String) (tp1.item));
                                    {
                                        //drawing points
                                        Vector property1 = setObject.getAssociation (
                                        "has_property_of");
                                        if ( property1 != null && property1.size () > 0 )
                                        {
                                            for ( Enumeration e1 = property1.elements (); e1.hasMoreElements (); )
                                            {
                                               
                                                AssociationInstance a1 = (AssociationInstance) e1.nextElement ();
                                                TypePair obj2 = (TypePair) a1.elementAt (3);  //roleObject[2]
                                                TypePair obj3 = (TypePair) a1.elementAt (4);  //roleObject[3]
                                                //for( int i = 1; i < a1.size(); i++ )
                                                {
                                                    if (obj2.item.equals ("location"))
                                                    {
                                                        ImsSet v1 = (ImsSet) obj3.item;
                                                        x1 = ( (TypePair)v1.elementAt (0)).toDouble ();
                                                        y1 = ( (TypePair)v1.elementAt (1)).toDouble ();
                                                        CalculateMinMax (x1,y1);
                                                        if (first)
                                                        {
                                                            first = false;
                                                            prev_x = x1;
                                                            prev_y =y1;
                                                        }
                                                        else
                                                        {
                                                            addLine (obj.getName (), x1, y1, prev_x,
                                                             prev_y,pointwidth,new Color ( (float)Red,
                                                             (float)Green, (float)Blue));
                                                            prev_x = x1;
                                                            prev_y =y1;
                                                        }
                                                    }
                                                }
                                            }
                                        }

                                        //drawing points

                                    }
                                }
                            }
                            else

                            {
                                ImsObject roleObj = getObjectByName ( (String) (tp.item));

                                {
                                    //drawing points
                                    Vector property1 = roleObj.getAssociation (
                                    "has_property_of");

                                    if ( property1 != null && property1.size () > 0 )

                                    {
                                       
                                        for ( Enumeration e1 = property1.elements
                                         (); e1.hasMoreElements (); )

                                        {
                                            AssociationInstance a1 =
                                             (AssociationInstance) e1.nextElement ();
                                            TypePair obj2 = (TypePair) a1.elementAt (3);  //roleObject[2]
                                            TypePair obj3 = (TypePair) a1.elementAt (4);  //roleObject[3]

                                            //for( int i = 1; i < a1.size(); i++ )


                                            {
                                                if (obj2.item.equals ("location"))


                                                {
                                                    ImsSet v = (ImsSet) obj3.item;
                                                    x1 = ( (TypePair)v.elementAt (0)).toDouble ();
                                                    y1 = ( (TypePair)v.elementAt (1)).toDouble ();
                                                    CalculateMinMax (x1,y1);
                                                    if (first)
                                                    first = false;
                                                    else


                                                    {
                                                        addLine (obj.getName (), x1, y1, prev_x,
                                                         prev_y,pointwidth,new Color ( (float)Red,
                                                         (float)Green, (float)Blue));
                                                        prev_x = x1;
                                                        prev_y =y1;
                                                    }
                                                }
                                            }
                                        }
                                    }

                                    //drawing points
                                }
                            }
                        }
                    } //for (Enumeration...
                }
            }
        }

    La bonne nouvelle c'est que ce code ne m'interesse pas pour ce que j'ai a faire, mais je l'ai trouve en cherchant d'autres fonctions souterraines du programme. Ah au fait pour les petits malins (il y en a surement) qui vont me dire "OK, c'est moche, mais si la fonction eset bien documentee, ca passe", je vous rassure tout de suite, il n'y a meme pas une javadoc...
    Tiens, je donne toute mon estime a celui qui a le courage de lire ca et de me dire ce que ca fait (a part tracer une (poly?)ligne). Quand je vois un bout de code entoure par 4 boucle for et 2 if, je me dis que le monde est malade...




    1 commentaire

  • Je lis un peu le code de mon chef depuis 2 jours, ca revient a :

    - 10 minutes de lecture de code
    - 1 heure pour se remettre de son degout
    - 5 minutes pour a peu pres nettoyer le code
    - 2 heures pour se remettre d'aplomb avant d'ouvrir un nouveau fichier d'horreurs

    Si je montrais des bouts a des profs de mon ecole, aucun ne trouverait la moindre excuse
    pour ne pas me pendre haut et court...

    La touche finale, c'est quand les commentaires sont en japonais (que je ne peux meme pas lire, car mon editeur suppose -avec raison- que tu ne dois trouver que du ASCII dans du code source) et que tu trouves une variable "taishogaiColor" qui traine quelque part...
    Le but de demain : comprendre ce que cette variable veut dire... si je trouve meme ce qu'elle fait, j'aurai eu une journee tres productive.

    Pendant mes periodes de repos force (pour cause medicale), voila a quoi je m'amuse... les geeks sont les bienvenus pour ce test...

    Mise a jour : voir le commentaire

    I'm A 1970s Geek
    You've decided for the world that it's time for a change. JOIN THE GEEK REVOLUTION!
    find your geek decade at spacefem.com
    31% Of The Internet Loves Me!
    I am loved by 31% of the population, including:
    19707 people who love people who drink lots and lots of coffee
    20479 people who love students
    22550 people who love geeks
    In return, I love 13% of the population, including:
    21273 happy people
    35171 women
    8189 naked people
    show the love at spacefem.com

    5 commentaires

  • Lundi aprem, au boulot.

    J'ai besoin de l'avis de mon chef pour savoir comment continuer a implementer un truc sur mon programme (en fait, comme c'est lie a des parties de son GROS programme, la il faudra bien qu'on parle). Et hop, je viens de voir sur le tableau qu'il est en deplacement jusqu'a ce soir 19h (et de toute facon, on en parlera pas a 19 heures, car je suis pour la paix des menages moi :).
    Vu la situation, ce serait le moment ideal pour commencer (aie...) mon rapport de stage...

    Mouais, je vais plutot blogger :)


    La classe :
    Je viens de voir que maintenant, non seulement mon blogg est dans le "Blog Selector", mais aussi que je suis passe 8e du "Blog Traffic". Cool ca, ca fait 567 hits ce mois-ci a l'heure ou je vous parle. Je suis sur que je ne rattraperai jamais les 981 de Ange ou demon (oui Ange, le cul ca fait vendre), mais je pense qu'avec un petit effort, on pourrait "peter la gueule" aux 582 hits de Asthenia (je sais meme pas de quoi ca parle, mais j'aime bien la bagarre :)


    Le week end :
    Souvent on dit que le week end passe trop lentement, et que la semaine de boulot semble durer des annees... Visiblement, au Japon c'est l'inverse, la journee de travail passe trop vite, alors que j'ai l'impression de passer toute ma vie en week end.

    Vendredi soir a ete etonnament calme (pas de judo, pas de golf, pas de bar), je suis rentre tot a la maison et j'ai ete sage.

    Samedi a en revanche ete violent. Lever 3h30 pour le match de foot (ok, je me suis reendormi, mais j'ai vu la seconde mi-temps...). La tete dans le pate, ecouter les commentateurs japonais et leur prononciation rigolote des noms des joueurs francais. Puis, voir la France se faire mettre un but d'ecole... Recouche a 5h30 avec le reveil a 7h30.
    C'est assez incroyable, mais a 7h30, j'etais encore moins frais que devant France-Grece. Douche, petit dej, depart en velo pour la gare. J'y retrouve les potes du groupe de discussion, on monte dans le "Fresh Hitachi" (il y a 3 types de trains sur cette ligne : le normal -omnibus-, et 2 rapides : "Super Hitachi" et "Fresh Hitachi"). Oh joie, trajet en 1h30 avec une place assise reservee... c'est plus cher, mais face a 2h30 serre -assis ou debout- dans le regulier, je ne regrette pas l'investissement. Arrivee a Tokyo, direction Roppongi, le quartier ou se trouve l'ambassade americaine. La, je decouvre que devant une ambassade americaine, il y a plein de barrages de policiers qui te demandent tout les 2 metres ou tu vas. Le genre de choses qui te fait penser que finalement, etre francais c'est pas mal.
    La fete de l'independance dans l'ambassade americaine du Japon, ca pourrait se resumer comme suit :
    - Biere et coca gratuits a volonte
    - Hot dogs et hamburgers en vente
    - Tellement de drapeaux americains partout que tu sens la peur te monter au ventre (bonjour, Arnaud, je suis canadien francophone ;)
    - Des americains enveloppes
    - Des Harley Davidson
    - Des tattoos(?) effacables a l'entree (on en a tous pris un, je vais essayer de trouver une photo :)
    - Des GI au pectoraux surdeveloppes (avec aussi un cerveau atrophie)
    - Des japonaises completement nymphos qui se baladent dans le tas pour se "faire" un blanc (ou un noir cela dit, j'ai pas tres bien suivi)
    - Des GI qui tchatchent les nymphos japonaises (vas-y touche mes muscles... je parle japonais -3 mots-... promets-moi que tu viendras nous voir ce soir)
    - Moi qui tente aussi de draguer les japonaises nymphos et me prend autant de vent que les GIs :) (j'ai pas pu resister, special dedicace au groupe des 2 filles : celle avec la jupe noire mini de chez mini, et celle a la robe rouge fendue -plus fendue que ca, tu voyais son sein gauche- et au string noir)
    - Un canadien et un francais qui ont failli se faire arreter pour avoir ete pisse dans les fourres derriere l'ambassade. Tout ca parce que ca les faisait chier d'attendre 5 minutes en plein soleil devant les toilettes demontables... Desole, mais quand mon pote canadien m'a dit "Let's piss on the *Bush*", j'ai pas pu resister. Meme en faisant le guet a tour de role, on a failli se faire choper par un flic japonais (aie, attentat a la pudeur sur le territoire americain, ca aurait fait mal)

    Finalement, tous creves, on est rentres tot a la maison...

    Dimanche :
    Concert de la collegue a Hitachishi, un ensemble classique de 40 musiciens qui jouent du Lord of the Rings, ou des musiques contemporaines japonaises arrangees (Kawa no nagare no you ni). Bon moment... Surtout quand ils jouent "l'Arlesienne", qui se traduit en japonais par "La femme d'Arles", soit "aruru no onna". Evidemment, vu le potentiel de blagueur du groupe avec Taka et moi, ca a vite vire en "aruno no onna", "La femme d'Arnaud". Ca nous a fait deconne pendant une bonne demi heure ce truc...

    J'ai enchaine le soir avec un tonkatsu avec la prof de piano ; le tonkatsu, c'est super bon... mais alors pour le bide...
    Grand moment de solitude a la gare au moment de repartir quand mon bide me dit "Je vais lacher un truc !!!" et que je vois que les toilettes sont "traditional-style". Pour le style japonais, imaginez le turc et vous tombez pas loin.
    J'ai donc inaugure ma premier utilisation des toilettes *typiques* japonaises, et c'est pas un souvenir super agreable. Je passe les details mais je reste fan du style occidental (si quelqu'un maitrise, vous pouvez mettre des *tuyaux* en commentaires).

    Comme j'etais encore fun a 22h en rentrant a la maison, j'ai ENFIN ete voir la librairie erotique/porno juste en face de chez. Impression a chaud : je pensais vraiment qu'on etait gravement atteints en Occident, mais en fait, les japonais sont encore pires que nous (je reste encore un peu choque par le rayon "DVD scato et golden shower" en face du rayon "DVD viol" et "DVD filles de 14 ans")


    Boulot :
    Tsss...........................


    Messages persos :
    - Xav : je crois qu'ils ont avance la date de la fete par peur d'attentat mais c'est juste une rumeur que j'ai entendue...
    - La femme a gros seins (t shirt vert) de la fete de l'ambassade : Si seulement tu savais combien de mecs t'ont mate...


    Mot du jour :
    わかんね- wakanne- j'pige pas (argot total)


    A exporter :
    Les japonaises nymphos de l'ambassade

    A oublier :
    Les toilettes "japanese style"




    1 commentaire
  • Je pensais que pas mal de gens alllaient se demander ce qu'il en etait de mon depart demain pour les USA. Finalement, un seul commentaire et un email de ma Mooman :)
    L'explication toute conne, c'est que samedi soir, je vais a une soiree open bar pour feter la fete de l'independance americaine... a l'ambassade des USA a Tokyo. Donc effectivement, je serai techniquement aux USA (o_o).

    Je vais avoir un week end charge, avec samedi depart le matin pour tokyo, fete open bar le soir, puis retour le dimanche matin probablement, concert a la ville d'Hitachi (une collegue y joue, donc j'y vais avec Taka), puis resto le soir avec Monique (si vous trouvez ces noms ridicules, rassurez-vous moi aussi, a chaque fois je dois reverifier les noms sur mon blog d'il y a une semaine).

    Comme j'ai la peche, je vais decrire deux trucs sympa de la culture japonaise.

    Le premier, les smileys !!
    En fait, la ou les smileys occidentaux sont identiques (AMerique du nord et Europe meme combat), les japonais ont leur propres smileys. Ce qui fait toujours un peu con quand tu ecris un email a une japonaise, et qu'elle te demande ce que veulent dire les trucs bizarres en fin de phrase (=les smileys europeens). Donc petit comparatif rapide :

    Les notres :
    :-)
    ;-)
    :-P
    :-\
    >:-(

    Les japonais :
    (o_o)
    (^_^)
    (o_o;)
    (i_i)

    Bon, je simplifie pas mal, mais vous voyez l'idee, les smileys japonais sont plus compliques, mais beaucoup plus beaux (et tu te chopes pas un torticolis en essayant de les dechiffrer :)


    Aussi, en allant m'acheter des chocolats a la pause de 5 heures aujourd'hui (vive les amandes enrobees "Meiji", les "Lotte" sont degueus), je me suis dit que ce serait marrant d'expliquer ce que dit une caissiere de superette a TOUS les acheteurs.

    Vendeuse : Bienvenue
    (Gars pose l'article, elle le passe au lecteur)
    Vendeuse : Voila, ca fait 230 yen
    (Gars met un billet de 1000)
    Vendeuse : 1000 yen n'est-ce pas ? (caisse enregistreuse) Voila 770 yen de monnaie, merci beaucoup.

    Notez que la femme doit vouloir se pendre a la fin de la journee, mais que l'acheteur n'en a rien a foutre :)
    Donc, moi, comme je suis un mec sympa, je me disais que j'allais etre poli avec la dame (ben oui, ma Mooman elle m'a appris a etre poli avec les dames :). Ce qui s'est avere etre une TRES grosse erreur

    Vendeuse : Bienvenue
    Moi : Bonsoir
    Vendeuse : Bonsoir
    (Moi pose l'article, elle le passe au lecteur)

    Vendeuse : Voila, ca fait 230 yen

    (Moi met un billet de 1000)

    Vendeuse : 1000 yen n'est-ce pas ?
    Moi : Oui
    Vendeuse : (caisse enregistreuse) Voila 770 yen de monnaie, merci beaucoup.
    Moi : Merci
    Vendeuse : Merci beaucoup, au revoir
    Moi : au revoir
    Vendeuse : au revoir

    Je peux jurer que ca se passe exactement comme ca. Je n'ai rien rajoute !! Donc la question est "Est-ce que lui parler poliment la fait encore plus chier ou pas ?" je m'interroge.


    Niveau boulot, je viens de me rendre compte que ca fait 7 semaines que je fais un truc que j'a dit pouvoir finir en 3. Ahem... Enfin, j'ai pas l'impression de chomer pourtant, mais je passe 80% a bosser sur l'architecture, donc j'avance lentement sur les fonctionnalites.


    Sur une note un peu bizarre, tous les gens de l'INSA sont en vacances, et moi je bosse ici encore un mois. C'est un peu triste, mais je prefere dix fois bosser vraiment ici que participer a certains concours de masturbation intellectuelle (je ne donnerais pas les noms des UVs). Je pense que Pob sera d'accord avec moi.


    Messages perso :
    - Pob, alors ca valait le coup de ranger ton appart ?
    - Romain, j'attends de lire tes stats, en tout cas, bon sejour a Ciron



    A part ca, aujourd'hui, j'ai decouvert le blog de Tschok. J'ai bien aime la partie ou il parle a ses boules dorees dans la douche.


    Le mot du jour :
    金玉 きんたま  kintama :  les couilles (litteralement, boules dorees :)




    3 commentaires