Valentin Jacquemin

3 applics utiles

Les stations mac sont réellement splendides à mes yeux. L’expérience utilisateur est sans égale grâce aux différends effets de transparence et d’animation. Une toute autre manière de penser que Windows. Il est vrai que Vista comporte également de sympathiques nouveautés mais bon je ne veux pas faire de comparaisons ou de débats mais plutôt parler de quelques applications que je trouve sympathiques sur mac.

Delicious Library

La première d’entre elle se nomme Delicious Library. Cette application permet de gérer votre médiathèque entièrement. Vous pouvez y ajouter vos livres, cd, jeux vidéos et films et ceux-ci prendront place dans votre étagère virtuelle. L’ajout se fait très facilement grâce à la recherche intégrée qui se couple à Amazon (uniquement Canada et France dans la version démo). Mais la première astuce (assez bluffante je dois dire), c’est la lecture de code ISBN grâce à l’iSight! Vous défilez simplement votre livre devant la webcam et hop votre média s’ajoute sur l’étagère! Si vous possédez un lecteur de code barre vous pouvez bien sûr l’utiliser et remplir votre médiathèque en moins de deux de tout ce que vous possédez. L’ajout effectué, la fiche est remplie avec l’avis général des internautes sur cette objet, différentes infos avec en prime une liste d’objets similaires (fort sympathique lorsque l’on a apprécié un bon bouquin par exemple.Delicious vous permet également de gérer une liste d’amis à qui vous auriez prêté des objets de votre collection et qui vous renseigne sur la date de retour prévu.

Parallels Desktop

Parallels Desktop est une machine virtuelle permettant de faire tourner des systèmes opératifs au sein même du votre. Ceci me permet donc de lancer par exemple Windows Xp sur mon Mac. Fort utile pour lancer des démos jouables des jeux qui m’intéressent et qui bien souvent ne tournent pas sur Mac. De plus certaines applics ne sont pas portées sur Mac et donc une licence Microsoft est souvent bien utile. Il existe plusieurs concurrents offrant ce genre de service. J’en ai essayé 2 jusqu’à présent. Pour l’instant je reste sur celui- ci; l’interaction entre la machine virtuelle et mon système hôte (ici mon mac) est à mes yeux plus performante qu’avec le concurrent que j’ai pu essayer (Innotek). Un partage commun est directement accessible, les périphériques sont mieux gérés, DirectX sur la machine virtuelle (indispensable pour les applications graphiques comme les jeux)… Vraiment une application très utile et qui s’intègre très bien à Mac OS. Et encore davantage avec l’application qui suit.

VirtueDesktop

Cette application est simplement un gestionnaire de bureau. Très facile d’accès pour tout utilisateur. Vous aurez donc la possibilité de créer plusieurs bureaux ce qui permet de gérer ingénieusement ces applications. Dans mon cas sur un bureau j’ai mon Mac OS et sur un autre bureau Windows XP. En appuyant les touches _Shift + Ctrl + droite _ou gauche du pavé directionnel vous pouvez passer d’un bureau à l’autre avec une jolie animation (configurable - perso j’ai laissé l’anim cubique) en prime. Ce qui est génial c’est que Parallels peut passer votre machine virtuelle en plein écran, vous pouvez passer donc d’un mac à un pc en une combinaison de touches!

Les deux dernières applics n’ont une interface à proprement parler extraordinaire. VirtueDesktop n’a quasiment pas d’interface mais ces applications et les applications mac en général s’intègrent vraiment bien à l’os. C’est un réel plaisir que de travailler sur un mac. Je deviens vraiment accro à tous ces effets…. Et ne plus voir d’écran bleu, ou de bulle de notification toutes les 2 sec pour me faire savoir que des mises à jours sont prêtes ou que je suis connecté au réseau local…. Ca fait du bien! (P.S : je ne suis point du tout anti-microsoft)** **

Les objets de conditions

La JDK 5 a apporté de nombreuses fonctionnalités au niveau du développement multi-threading. Aujourd’hui j’aimerais discuter un peu des objets de conditions.

Un objet de condition permet de définir une condition (non pas vrai?) à remplir avant de continuer le processus définit par votre programme. Imaginons que vous développiez une application de gestion de stock pour le garage Marielo du centre du patelin. Angelo, le gérant, veut pouvoir gérer son stock depuis la maison mais également que ses employés puissent le mettre à jour directement avec les clients lors d’un devis ou d’une commande spécifique. Maintenant passons par-dessus toute l’analyse, que vous avez d’ailleurs parfaitement effectuée avec Angelo lui-même, pour arriver au coeur de votre application: la méthode removePieceFromStock(Piece p, int quantity). Dans cette méthode l’utilisation d’objets de conditions devient évidente. En effet dans le cas ou plusieurs clients (de votre application donc) appellent cette méthode il vous faudra vérifier que votre stock contient bien le nombre de pièces à commander. S’il s’avère que le nombre de pièces est suffisant vous pouvez alors les retirer. Avant de vérifier le nombre de pièces en stock vous aurez obtenu un verrou sur l’objet courant du fait que cette méthode modifie l’état de votre stock. Maintenant si vous obtenez le verrou pour l’objet et que votre condition échoue… Vous devez libérer le verrou de l’objet afin que le stock puisse à nouveau être fourni en pièce(s) qu’il vous faut.

Avant la JDK 5 la seule possibilité d’utiliser un objet de condition était d’en créer soi-même et de gérer les accès depuis plusieurs threads. Autant dire que sans être un expert du genre les erreurs de conception ou du moins les performances pouvaient s’en ressentir très facilement.

Le package java.util.concurrent.lock fournit 2 classes particulièrement utiles dans notre situation. Je veux parler de Lock et de Condition. L’interface Lock définit un objet de verrou (plusieurs implémentations existent au sein du JDK). La classe Condition quant à elle représente un objet de condition. Un objet Lock comporte de nombreux avantages par rapport à une conception mettant en oeuvre uniquement des méthodes ou des blocs synchronized mais la définition de ces avantages n’est pas le but de ce post. Je vous laisse vous référer à la javadoc pour obtenir une description complète sur ces éléments de la librairie. Sommairement, il faut savoir qu’un objet Lock peut avoir plusieurs Conditions et que ces Conditions permettent de stopper le déroulement de votre programme lorsqu’une condition n’est pas remplie et de reprendre à cet endroit lorsqu’un autre thread signale que la condition peut avoir changé. Le principe est le même que celui des méthodes wait/notify de la classe Thread. Le premier avantage est pour ma part une meilleure lisibilité du code de l’application puisque l’on connaît directement l’objet de la condition à remplir.

Pour finir, voici une solution possible au développement pour Angelo:

public void removePieceFromStock(Piece p, int quantity) { 
    try { 
            lock.lock(); //acquiert le verrou 
            while(getQuantity(p) < quantity)
                insuffisantCondition.await(); //libère le verrou 
                                              //retire le nombre de 
                                              //pièces du stock 
        } finally { lock.unlock(); //libère le verrou } }
    /**
    une autre méthode permettra de rajouter des pièces au stock; 
    dans cette méthode il faudra signaler que la condition change 
    en appelant la méthode insuffisantCondition.signalAll() ou 
    insuffisantCondition.signal() ce qui permettra de relancer un
    thread en attente sur cette condition - à noter qu'il est 
    impératif d'obtenir le verrou qui possède la condition afin 
    de signaler un changement d'état 
    **/
}

Macbook arrivé!

Quel bonheur!

J’ai donc reçu mon macbook pro jeudi dernier dans l’après-midi. Je l’avais commandé fin août suite à mon embauche chez Logica. J’ai longtemps hésité entre un macbook et un macbook pro mais la taille de l’écran ainsi que la carte graphique a forcé mon choix. J’avais en effet peur qu’un écran de 13" soit un peu short pour du dev et la carte graphique (une GeForce 8600M GT de 256mo) va me permettre de faire de la virtualisation sans problème. La livraison a donc pris du temps, mais l’attente est justifiée lorsque l’on constate la qualité du package. Un emballage splendide et l’intérieur également. Dans ce domaine Apple est vraiment remarquable; c’est beau et ca fait d’autant plus plaisir! Voilà maintenant je n’ai plus qu’à configurer ma station de bureau en mode serveur pour avoir accès à tout mon travail effectué sans tout transférer…. J’adoooorrrrreeeee ca….

Au boulot!

[posted with ecto]

Embauche - Logica

Nous sommes le 23 août 2007 et cela fait maintenant 23 jours que je suis sans emploi. Durant tout ce temps j’ai pu constater combien le métier d’informaticien est recherché! Je me rappelle encore la réunion d’information concernant l’école que j’ai fréquentée…. “Il faudrait couper les nouveaux diplômés en 2 pour combler la demande!”… Eh bien visiblement la demande est toujours forte! En tout cas au niveau développement c’est flagrant.J’ai ainsi pu passer plusieurs entretiens et avoir plusieurs propositions (mandats, contrats temporaires). Content du résultat je n’ai pas fait l’erreur de me jeter tête baissée sur la 1ère offre venue mais j’ai plutôt attendu quelque peu… Bien m’en a fait! J’ai en effet reçu plusieurs coups de fil après avoir posté mon cv sur Monster (vous êtes dans l’info et vous cherchez du boulot? –> monster.ch!) et à ma grande surprise l’entreprise LogicaCMG s’est grandement intéressé à mon profil. Après un contact téléphonique et email j’ai pu passer un entretien détendu et fort sympathique avec eux et à présent mon embauche est en court de finalisation! Conclusion: ne pas se jeter sur la première offre d’emploi venue et rester patient jusqu’à ce qu’une offre vous plaise! Attention à ne pas idéaliser trop non plus (bien que pour moi, je n’aurais jamais imaginé entrer à mon âge dans une boîte du genre de Logica)