Pages

24 sept. 2009

Debian Lenny

Ouf !

je viens de finir mon installation de Debian Lenny. C'était pas de tout repos car j'avais un soucis avec mon controleur SATA en PCI.

Franchement je me demande pourquoi je n'avais pas franchi le pas plus tôt. On configure plus librement ce qu'on veut sans avoir à se soucier des automatismes d'Ubuntu. Depuis que j'ai l'habitude de me passer d'interface graphique pour coder certaines applications, je me suis fait a Emacs. Evidement lorsque je dois fournir un GUI en Scheme ou Java, je lance X et fluxbox.

J'ai choisi Fluxbox parce qu'il est très leger, on dirait qu'on n'as lancé qu'X en fait ! pas d'icones, pas de menu en trop, juste l'affichage graphique nécessaire, et une barre des taches, point. Ca me fait un systeme un peu plus réactif enfin.

Evidement je suis conscient que ni mon noyau, ni mes applications sont les versions les plus récentes mais je contrôle un peu mieux ce que j'installe, et puis dans le pire des cas je dl le code source et je le compile voilà tout.

D'ailleurs j'ai trouvé que Grub était vraiment un bootmanager suuuuuper et qu'il permettait de faire beaucoup de choses , mais ca ca serra pour un prochain article !

17 sept. 2009

Jde

JDE pour Emacs est un addon qui ferra d'Emacs un IDE Java, franchement il est très pratique quand on ose pas installer d'IDE plus balaise comme Eclipse. Il permet entre autre de browser vos classes, permet de compiler, de debugger, et vous propose une fonction d'autocompletion (ahhh Delphi.... *souvenir*)

Sous Ubuntu il est dans le dépot Multiverse et s'apelle... jde.
Par contre sous mac vous allez un peut galerer pour l'installer, mais je vous rassure c'est pas impossible, pour ma part j'ai suivi ce lien, et ce fil.

10 sept. 2009

Motion Tracking avec Processing

Cette semaine je me suis essayé au motion tracking avec Processing.
En fait il est assez facile d'utiliser sur un macbook la webcam intégrée, notament les I/O gérées par Quicktime. (d'ou coup le code est aussi portable sous Windows :) ).
Pour ma part, en implémentant une classe Cible, j'ai pu "traquer" un pixel de couleur donné et raffraichir la position de ma cible s'affichant a l'écran. Le résultat est assez bluffant même s'il peut être facilement amélioré. En fait mon code est plus un proof of concept, n'étant même pas sur que mon code et ma manière de procéder fonctionnerait.
Je ne sais pas si le tracking se fait habituellement comme cela, mais j'ai intuitivement essayé de "balayer" chaque pixel de mon canvas, si je tombe sur un pixel de couleur voulu, par un habil calcul mathématique je trouve les coordonnées de ce point (loooooooool) et le donne ces coordonnées à ma cible, qui se repositionnera en temps voulu ^^. La capture vidéo est assez facile à comprendre, puisqu'en fait on instancie un objet de classe Capture qui va recevoir a chaque "tic" d'horloge une image raffraichie en provenance de la webcam, le tracking s'effectue sur le canvas, et non sur l'objet myCapture.
Dans mon onglet principal, je code le corps de l'application.

D'abord quelques déclarations et import:
import processing.video.*;
PFont maFont;
Capture myCapture;
Cible maCible;
Ceci est la fonction qui serra lue une fois par Processing, elle sert à initialiser nos variables:

void setup()
{
  size(640, 480);
  Point p = new Point(width / 2, height / 2);
  int[] t = new int[3];
  t[0] = 255;
  t[1] = 0;
  t[2] = 0;
  maCible = new Cible(p, t);
  myCapture = new Capture(this, width, height, 30);
}

Cette fonction sert à raffraichir notre objet de capture vidéo:

void captureEvent(Capture myCapture) {
  myCapture.read();
}

La fonction de tracking, qui pour chaque pixel du canvas, va comparer sa couleur, ici si le pixel sur lequel on itère est blanc, alors sa position est envoyé à la cible:

void tracking() {
  int[] t = maCible.getColor();
 
  // dans un premier temps je traque le point que je veux
  loadPixels();
  for(int i = 0; i < width * height; i++) {
    if(pixels[i] == color(255, 255, 255)) {            // <-- couleur du pt a tracker
      Point p = new Point(i % width, i / width);
      maCible.setPos(p);
    }
  }
  updatePixels();
 
  // et je dessine la cible
  maFont = loadFont("SynchroLET-12.vlw");
  textFont(maFont);
  Point pos = maCible.getPos();
  stroke(t[0], t[1], t[2]);
  strokeWeight(1);
  line(pos.x - 30, pos.y - 30, pos.x - 20, pos.y - 30);
  line(pos.x - 30, pos.y - 30, pos.x - 30, pos.y - 20);
  line(pos.x + 30, pos.y - 30, pos.x + 20, pos.y - 30);
  line(pos.x + 30, pos.y - 30, pos.x + 30, pos.y - 20);
  line(pos.x - 30, pos.y + 30, pos.x - 30, pos.y + 20);
  line(pos.x - 30, pos.y + 30, pos.x - 20, pos.y + 30);
  line(pos.x + 30, pos.y + 30, pos.x + 20, pos.y + 30);
  line(pos.x + 30, pos.y + 30, pos.x + 30, pos.y + 20);
  fill(t[0], t[1], t[2]);
  text(pos.x + " - " + pos.y, pos.x + 35, pos.y + 40);
}

La fonction principale, appelée à chaque "tic" d'horloge, et qui permet de contrôler le déroulement de notre application:

void draw() {
  image(myCapture, 0, 0);
  tracking();
  println(get(width / 2, height / 2));
}



Et ma bete classe Cible qui servira à iconer le point que je tracke:


import java.awt.Point;

public class Cible {
    private Point pos;
    private int[] couleur;

    public Cible() {
    pos = new Point();
    couleur = new int[3];
        for(int i = 0; i < 3; i++) {
          couleur[i] = 0;
        }
    }

    public Cible(Point pos, int[] couleur) {
    this.pos = pos;
        this.couleur = new int[3];
        for(int i = 0; i < 3; i++) {
          this.couleur[i] = couleur[i];
        }
    }
   
    public void setPos(Point pos) {
    this.pos = pos;
    }

    public Point getPos() {
    return pos;
    }

    public void setColor(int[] couleur) {
    this.couleur = couleur;
    }

    public int[] getColor() {
    return couleur;
    }

// marche pas, la classe est presque pur java
//    public void afficheToi() {
//    stroke(couleur[0], couleur[1], couleur[2]);
//    line(pos.x - 30, pos.y - 30, pos.x - 20, pos.y - 30);
//    line(pos.x - 30, pos.y - 30, pos.x - 30, pos.y - 20);
//    line(pos.x + 30, pos.y - 30, pos.x + 20, pos.y - 30);
//    line(pos.x + 30, pos.y - 30, pos.x + 30, pos.y - 20);
//    line(pos.x - 30, pos.y + 30, pos.x - 30, pos.y + 20);
//    line(pos.x - 30, pos.y + 30, pos.x - 20, pos.y + 30);
//    line(pos.x + 30, pos.y + 30, pos.x + 20, pos.y + 30);
//    line(pos.x + 30, pos.y + 30, pos.x + 30, pos.y + 20);
//    }

    public String toString() {
    return "Cible:[pos=" + pos.x + ", " + pos.y + ", couleur=(" + couleur[0] + ", " + couleur[1] + ", " + couleur[2] + ")";
    }

}



9 sept. 2009

Macworld Event 2009



La macworld event 2009 "it's only rock and roll" vient juste de se terminer et je vous livre mes impressions !

Alors pour commencer Steve Jobs était là ! (enfin !)

On annonce la mise en ligne dès aujourd'hui de la mise a jour de l'OS 3.0 en 3.1, bizarrement rien n'est developpé sur les fonctionnalités de cette mise à jour excepté qu'elle améliore l'interaction avec Genius (dans l'appstore), et avec iTunes surtout.
Voici les specs du nouvel OS 3.1:
  • recommandations Genius pour les applications
  • Prise en charge de iTunes 9
  • Mélanges Genius
  • Gestion des applications iPhone/iTouch directement dans iTunes
  • Amélioration de la synchronisation avec votre ordinateur
  • meilleure organisation de l'iTunes U
  • Utilisation de cartes prépayés sur l'iTunes Store directement à partir de votre iPhone/iTouch
  • Verrouillage à distance de l'iTouch par code secret via MobileMe
  • avertissements lors de l'acces à des sites porno, oups, frauduleux dans Safari Mobile
  • Amélioration de la synchro via Exchange
  • corrections diverses (de bugs)


Apple va se mettre à la vente de sonneries pour iPhone (est ce qu'on pourra écouter un extrait dans l'iTunes Store j'en sais rien xD).

iTunes passe à la version 9.0, au menu:
  • amélioration de Genius
  • nouvelle fonction: Genius DJ qui s'occupera de vous faire non plus des playlist à la volée comme il le faisait deja, mais de vous faire une sorte de webradio en fonction de ce que vous avez dans votre librairie
  • Home Sharing: dorénavant on pourra copier et partager nos librairies sur 5 ordinateurs en tout
  • gestion des applications de l'iPhone/iTouch directement à partir de votre ordinateur
  • refonte de l'iTunes Store (et propose entre autre des lyrics maintenant)
  • partage de vos morceaux directement sur Twitter ou Facebook
De plus Steve Jobs a présenté le nouvel ipod Nano. (oui je sais c'est dégueulasse pour nous, iTouch users... :( )



L'ipod Nano Video pourra entre autre, prendre des photos, de la vidéo (qu'on pourra uploader aisément sur Youtube), enregistrer l'audio qui va avec (a coté de la cam, y'a un mini microphone), ce qui permettra aussi d'utiliser la nouvelle application d'enregistreur vocal déjà présent sur l'OS 3.0. Enfin on pourra écouter la radio avec puisqu'il est équippé d'un Tuner FM !
Voici les specs vidéo du nouvel ipod nano:
  • H.264 VGA Video, 640x480 pixels, jusqu'a 30/ips avec de l'audio en AAC
  • 15 effets en temps réel: sépia, noir & blanc, rayon X, Grain de film, Vue thermale, Vue camera de sécurité, vue Cyborg (???), Bulge, Kaléidoscope, Flou, Mirroir, Tunnel lumineux, et autres déformations faciales.
Pour l'iPhone/iTouch, la gamme 8Go va baisser de prix, et un nouveau modèle à 64Go va apparaitre. De plus, les iPhone/iTouch aurront dorénavant l'OpenGl ES 2.0 (je ne me suis pas renseigné si c'était une mise à jour hardware ou software).

On a aussi parlé des nouveaux iPod Classic dont les prix vont baisser, d'ailleurs les ipod Shuffle aussi vont baisser de prix, et vont sortir dans un nouvel habillage en aluminium brossé (comme les Macbook Pro quoi !)

Et puis... bah voila c'est tout quoi... en fait cette Keynote n'as pas vraiment été extraordinaire, pour ma part, l'OS 3.1 et la refonte d'iTunes et de l'iTunes Store m'ont fait plaisir mais sans plus. Je vois bien que Apple essaye de gratter un peu de part de marché avec son nouvel ipod Nano, ce qui le rend très attractif d'un coup, mais je m'attendais à la fameuse iPad dont la rumeur courre depuis l'année dernière lol.

Serveur DNS défaillant chez Numericable ?


Depuis qu'on est rentrés de Tahiti,

j'ai remarqué quelques soucis au niveau de la résolution de noms (DNS) qui s'éternisait. J'ai changé dans mon routeur les serveurs DNS par défaut par ceux ci:
  • 208.67.222.222
  • 208.67.220.220
Ne vous inquietez pas, ces serveurs sont chez OpenDns aux States (voir whois ici)

Tout est reparti comme avant !

7 sept. 2009

Driver Ati Catalyst 8.10

Mais qu'est ce qui leur arrive chez Ati ?!!
Sans grand espoir j'installe le driver proprio (bouhhh !) et surprise ! il fonctionne du premier coup (hmm, ou peut etre parce que je n'utilise plus Ubuntu mais Debian ??). Du coup:
  • plus d'écran blanc
  • plus d'artefacts sur les cotés de l'écran
  • plus de flickering (joke joke, y'en a toujours en fait ^^)
et surtout un changelog qui colle pour une fois à la réalité !
plus d'info ici.

EDIT: bon en fait non y'a plus de flickering vidéo :)

3 sept. 2009

Big News !

dsl dsl dsl dsl dsl j'ai vraiment eu la fleme de mettre a jour l'hipoposite ces vacances, en plus depuis Tahiti laisse tomber quoi je suis plus habitué.

Mes vacances au fenua se sont bien deroulés et je reprend les cours des aujourd'hui. On a eu notre pré-rentrée today et j'ai deja hate d'être en amphi ^^.

Pour les news j'ai installé Snow Leopard (acheté le jour même de la sortie, how cool is that).

Mon pote Hennessy est papa !

Mon pote Heinui est papa !

Je twitterise sevère depuis que je suis revenu au pays de la peau.

Je suis passé a Lightroom pour le derawtisage de mes photos.

J'ai acheté 2 Pocket Wizards a mon pote Eric. (merci infiniment, j'espere pouvoir te choper les 2 autres l'année prochaine)

J'ai posté une chié de photos sur mon Flickr (à la demande d'Eric :/ )

J'en profite pour vous faire part du catalogue 2009 de Hennessy, qui propose des Tee Shirts carrement top, j'en ai pris un et franchement si j'avais eu plus de sous j'aurrais surement pris toute sa collec (et quand je pense que c'est des limited edition :/ ) alors jvais haputu les sous pour l'année prochaine !

voici son catalogue: