Rechercher dans ce blog

samedi 30 janvier 2010

Attention aux jeux

Ce jeune allemand devient fou à force de jouer... est-ce possible ?

Vidéo à voir ici:
http://www.dailymotion.com/video/x479pd_allemand-enerve-devant-son-pc-vosf_fun

... puis lire l'explication ici =>
http://fr.wikipedia.org/wiki/The_angry_German_kid

et enfin les parodies ici =>
http://www.dailymotion.com/video/x6xjya_le-francais-fou-devant-son-ordinate_fun
http://www.youtube.com/watch?v=x-YcKSdmr0M&feature=rec-LGOUT-exp_fresh+div-1r-1-HM

jeudi 28 janvier 2010

Affichage de logs http en continu

Parfois, pour suivre ce qui se passe en production, j'ai besoin d'afficher un log qui se raffraichit en temps réel, ou presque, sur l'écran.
Le problème est que je n'ai aucun accès ssh sur la machine de production, mais uniquement un accès http sur le fichier de log.
Le petit script ci-dessous résoud le problème; il va chercher tous les 10 secondes le log sur le serveur, et en affiche les 10 dernières lignes...

_________________________
tail --lines=10 -f srv.log &

while :
do
    wget --quiet --continue --no-proxy http://logsrv/app/pr/srv.log
    sleep 10
done
_________________________

Libre à l'utilisateur de faire un grep dessus... ;-)

mardi 19 janvier 2010

Survol Google Earth

Si vous êtes comme moi et aimez faire des DVD de vacances avec plein de photos, vous vous dites certainement que rajouter un survol Google Earth du lieu de vos vacances serait du plus bel effet... non ?

Il existe plusieurs méthodes: bien sûr, on peut acheter Google Earth Pro, mais je crois que la version est 400$, et pour un privé c'est un peu cher ! La première version de Google Earth était autour de 80$, donc plus abordable...

On peut aussi faire un zoom à la main ou cliquer sur des waypoints sauvés, et capturer le tout avec un outil de capture vidéo comme Fraps (Windows) ou xvidcap (linux). Pour cette solution, une astuce consiste à partir du point le plus zoomé et ouvrir le point le plus éloigné, à vitesse lente, puis d'inverser le sens de lecture de la vidéo.

Une troisième solution est celle que je vais décrire ici; elle consiste à enregistrer une "visite" dans Google Earth, puis de la rejouer en enregistrant l'écran avec Fraps ou xvidcap.

Pour ce faire, on effectuer un click-droit dans la zone "Lieux" et choisir "ajouter"-"visite". Une boîte d'outil s'ajout en bas à gauche de la vue Google Earth. On clique sur "enregistrer", et on commence la visite, soit à la main soit par des "repères", et on valide en recliquant dans la boîte d'outil. On peut alors rejouer la visite autant de fois que nécessaire.

Pour que la vidéo soit fluide, il convient de définir la taille du cache au maximum (dans les préférences), puis de jouer plusieurs fois la vidéo (pour remplir le cache).

Pour enregistrer la vidéo, on ouvre Fraps ou xvidcap, puis on débute l'enregistrement. Dans Google Earth, on rejoue la "visite", et enfin, on sauve la vidéo générée.

Notons qu'on peut encore couper la vidéo avec un outil d'édition vidéo comme VirtualDub.

Pour une visite plus fluide, on peut exporter le kml de la "visite", supprimer les délais (wait), et le ré-importer dans Google Earth.

Voilà; faites-nous part de vos vidéos !

vendredi 8 janvier 2010

Datasources: Pertes de connection

Un problème récurant que je vois dans les applications WEB est la perte de connexion à la base de données. Une solution pour détecter les fuites, utilisée dans mes projets, est de fournir un contrôleur WEB qui, en fonction de paramètres, indique l'état des datasources. C'est utile en dev, mais surtout en prod, lorsqu'on a une fuite qui ne se produit qu'en prod, et que l'on souhaite voir l'état des datasources, mais que l'on n'a pas d'accès JMX ou wlst.

En pratique, j'ai un contrôleur Spring dans lequel j'injecte mes datasources.
L'étape suivante est de récupérer le vrai objet Datasource:

   public static BasicDataSource getBasicDataSource(DataSource dataSource) {
        Object obj = dataSource;

        // Try to get proxied instance
        Method method = ReflectionUtils.findMethod(dataSource.getClass(),
                "getTargetSource");
        if (method != null) {
            obj = ReflectionUtils.invokeMethod(method, dataSource);
        }

        // Try to get proxied instance
        if (obj instanceof JndiObjectTargetSource) {
            JndiObjectTargetSource source = (JndiObjectTargetSource) obj;
            obj = source.getTarget();
        }

        if (obj instanceof BasicDataSource) {
            BasicDataSource bds = (BasicDataSource) obj;
            return bds;
        }
        return null;
    }

   
Ensuite, j'écrit les paramètres dans la réponse HTTP, au format JSON:


Cette solution permet d'afficher le nombre de connexions actives, et le format JSON permet de le parser par un script, par exemple pour l'integrer dans Nagios ou autre système d'alerte.

Pour chercher des connection leaks, je recommande l'utilisation de l'excellent FindBugs.

jeudi 7 janvier 2010

Book pre-review: Career 2.0: Take Control Of Your Life

Suite à la lecture de "Ship it" (voir précédant blog), je me suis penché sur le travail de Jared Richardson et j'ai découvert son nouveau livre: "Career 2.0: Take Control of Your Life". Ce livre est destiné à un public de développeurs, mais également applicables à tout le monde.
D'après les reviews, ce livre propose des recettes afin de se définir des objectifs, de s'y tenir, et finalement de progresser dans nos choix de carrière comme dans la vie. Il prend la métaphore d'un conducteur qui rentre dans sa voiture; s'il ne sais pas où il va, même si il a une bonne voiture, il n'arrivera jamais à son but.
Dans son livre, il parle d'outils comme le wiki ou les mindmaps, propose des échanges d'informations comme le lunch-n-learn, conférences, reviews, et suggère d'apprendre chaque jour, par exemple en suivant un tutorial par jour.
Son livre a d'excellents feedbacks dans les forums, et sera à coup sûr dans la liste de mes prochaines lectures...

"Career 2.0: Take Control Of Your Life"
Jared Richardson

Book review: "Ship it !", A practical guide to successful software projects

"Ship it!" est un livre destiné aux développeurs qui souhaitent améliorer ce qui se passe dans leur projet. Ce livre très bien réalisé explique par des situations simples comment y remédier, par exemple il parle de best-practices que tout bon développeur devrait appliquer: utiliser un système de build, l'intégrer dans un système d'integration continue, utiliser un système de contrôle de version comme SVN...
Les situations de ce livre sont variées: que faire quand un développeur prétend que "ça marche chez lui", ou s'il ne veut pas développer de tests unitaires, ou que faire si vous avez reçu de votre supérieur un projet non testé et qui ne marche pas...
Le livre parle également de ce qui peut se passer dans l'équipe du projet pour améliorer la communication, la vue d'ensemble: daily meeting, publication d'informations, deadlines claires et affichées pour tous, désigner un lead technique...
Ce livre est définitivement un "Must read" pour tous les développeurs.

Références:
"Ship it!" A practical guide to successful software projects,
Jared Richardson, William Gwaltney Jr.
Collection "The Pragmatic Programmers",
ISBN 0-9745140-4-7

Hello, blogger world

Bienvenue dans mon nouveau blog. Celui-ci sera consacré à partager mon expérience, mes découvertes, mes reflexions dans les domaines usuelles qui me cotoyent: informatique, balades, musique... Un blog c'est l'occasion de partager mais également de recevoir des informations sur les entrées du blog, donc n'hésitez pas à commenter les entrées pour réagir ou simplement dire si vous avez aimé ou pas....