Bienvenue sur le blog jlcyr.com. Ce blog est un petit site personnel. Il regroupe des liens, notes et essais sur différents sujets. Au plaisir d'avoir quelques lecteurs...

REST, RESTFull, RESTLess the saga octobre 20th, 2008

Un bon vieux principe élémentaire du web.. un URL c’est supposé être un document.

Du Full REST (et même du rest less) implique donc qu’un URL correspond à 1 document et soit “cachable”.

La nomenclature d’une URL du type

http://”HOST_NAME”/usedcar/fullloadbygeocoordinates?lat=43.345&long=-79.801&dist=250

serait donc fautive.. il faudrait utiliser un format

GET http://…./fullloadbygeocoordinates/43.345,-79.801

pour être plus conforme.

Cependant l’utilisation avec des paramètres pourrait être faite en utilisant préalablement un POST pour créer un document

POST http://”HOST_NAME”/usedcar/fullloadbygeocoordinates?lat=43.345&long=-79.801&dist=250

qui retournerai l’URL d’un nouveau document créé en utilisant les coordonnées en paramètre et par la suite appellé en GET

GET http://….url retourné… ?page=1&encoding=json
Ce nouveau document peut être référé par plusieurs requêtes POST avec plus ou moins de précisions sur les coordonnées, permet de faire varier l’ordre des paramètres, etc.  Ce nouveau document est également référençable et “cachable”.

L’utilisation de l’URL fautive (avec les lon/lat en paramêtre dans la requête GET) devrait au moins retourner une redirection (302) sur un URL correctement forgé avec les coordonnées dans l’URL comme référence au nom du document et non pas en paramètre.

Télémarketing octobre 2nd, 2008

Vous en avez assez de recevoir des appels de télémarketing?  Vous pouvez maintenant inscrire votre numéro de téléphone sur la liste canadienne d’exclusion.  Cela réduira le nombre d’appel que vous recevrez.  Il ne tombera cependant pas à zéro puisque comme toute bonne chose il y a une tonne d’exception (les vendeurs de journaux, les partis politiques, …) mais c’est un début pour avoir la tranquilité et sauver des frais de cellulaires inutiles.

Pour plus d’information ou pour inscrire votre numéro de téléphone consulter le site web du CRTC.

Activitées professionnelles septembre 24th, 2008

J’ai reçu dernièrement une invitation pour le salon génie carrière.  C’est une activité qui me semble intéressante.  Par contre, ajouté à toutes les autres invitations professionnelles que j’ai reçu dans les derniers mois, je commence à me questionner..

Je me pose effectivement une question. Je comprends pourquoi les activités se déroulent à Montréal, on peut y répondre que le bassin d’ingénieur y est plus grand que dans le reste du Québec.  Par contre, j’ai de la misère à comprendre pourquoi les activités se déroulent durant la semaine de travail et non durant la fin de semaine.  Est-ce que les ingénieurs montréalais peuvent s’absenter du travail à leur guise n’importe quand?  J’aimerais bien participer à ce genre d’activité, mais déjà de défrayer le transport, l’hébergement et la restauration sont des coûts, en plus s’il faut se prendre des journées “sans solde” ça commence à faire couteux pour participer à une activité de ce genre.

Si vous avez une théorie la dessus laisser moi le savoir car moi je suis perplexe.

Mac Os X - Barre d’application septembre 21st, 2008

Saviez-vous qu’on peut retirer facilement des icones de la barre d’application au haut (par défaut) dans Os X?  Il suffit de cliquer dessus en maintenant la touche commande (la pomme) enfoncée et de “dragger” les icones hors de la basse.  C’est de cette manière dont je me suis débarassé de l’icone de “mobile me” que je n’ai jamais demandé de voir apparaître!.L’on peut également de cette manière, réorganiser les icones présentes dans la barre en les déplaçant sur la barre. 

Building PNG Images septembre 18th, 2008

Did you ever try to build a png image (with a programming language, not an image editor)?  A lot of code sample are available on the internet.  But most if not all are using libpng or some high level libraries like gd.

But what happend if you can’t install libraries on the system where you’re working?  Ever thing about building an image from scratch?  Here is what I do in PHP.

This isn’t the most performant code, but at least it generate a valid PNG image without any non standard libraries.   (Some one could say that zlib or crc are php external libs.. but I haven’t see any php distribution whitout them in a while!)

<?php
/*
* Title: PNG Image Generation
* Author: Jean-Luc Cyr
* Date: 2008-09-17
* License: GNU GPL2
* Description: Generate a simple PNG image
* directly in PHP without using external libs
* like GD.
*/
 
header("content-type: image/png");
 
function long2string($long)
{
$string = chr(($long&0xFF000000)>>24).
chr(($long&0xFF0000)>>16).
chr(($long&0xFF00)>>8).
chr(($long&0xFF)>>0);
return $string;
} // long2string()
function build_png($matrix, $w, $h)
{
////////////////////////////////////////////////////////////////
//PNG Header
$image = chr(0x89).chr(0x50).chr(0x4E).chr(0x47);
$image .= chr(0x0D).chr(0x0A).chr(0x1A).chr(0x0A);
 
////////////////////////////////////////////////////////////////
//Header Chunk
 
//Chunk type
$chunk = "IHDR";
//Chunk data
//Width
$data = long2string($w);
//Height
$data .= long2string($h);
//Depth
$data .= chr(8); //Bits per sample
//Color Type
$data .= chr(2); //RGB
//Compression method
$data .= chr(0);
//Filter method
$data .= chr(0);
//Interlaced method
$data .= chr(0);
 
$crc = crc32($chunk.$data);
//Add length at start
$chunk = long2string(strlen($data)).$chunk.$data;
//Add CRC at the end
//Dump chunk
$chunk = $chunk.long2string($crc);
$image .= $chunk;
 
////////////////////////////////////////////////////////////////
//Data Chunk
 
//Chunk type
$chunk = "IDAT";
//Data (2x2 rgb 8bits)
$s = 3; //samples per pixels
#$matrix  ="\0\0\0\0\0\0\0\0\0";
#$matrix .="\0\0\0\0\0\0\0\0\0";
#$matrix .="\0\0\0\0\0\0\0\0\0";
// No filter so add 0 to beginning of each scan line
$datas = '';
for($c=0; $c<$h; $c++)
$datas .= "\0". substr($matrix,$c*($w*$s),($w*$s));
// Compress Data
#$zdata = gzencode($data,9,FORCE_DEFLATE);
#$zdata = gzdeflate($data,0);
$zdata = gzcompress($datas,0);
// Calculate CRC
$crc = crc32($chunk.$zdata);
// Add length at start
$l = strlen($zdata);
$chunk = long2string($l).$chunk.$zdata;
// Add CRC at the end
$chunk = $chunk.long2string($crc);
$image .= $chunk;
 
////////////////////////////////////////////////////////////////
//End Chunk
 
// Chunk type
$chunk = "IEND";
// Data
$data = "";
// Calculate CRC
$crc = crc32($chunk);
// Add length at start
$chunk = long2string(strlen($data)).$chunk.$data;
// Add CRC at the end
$chunk = $chunk.long2string($crc);
$image .= $chunk;
 
// Send out the image
echo $image;die();
} // build_png()
////////////////////////////////////////////////////////////////
// Demo code
 
// Build a simple image matrix
// 256 x 256 x 8rgb
 
$w=256; // width
$h=256; // height
$s=3;   // 3 x 8 bits samples per pixel (8bits rgb)
for($x=0; $x<$h; $x++)
for($y=0; $y<$w; $y++)
//    for($z=0; $z<$s; $z++) //Ordered R G B
$matrix .=
chr( ( (($y/64)<1) && (($y/64)>0) )?$x:0 ). // R
chr( ( (($y/64)<2) && (($y/64)>1) )?$x:0 ). // G
chr( ( (($y/64)<3) && (($y/64)>2) )?$x:0 ); // B
 
build_png($matrix,$w,$h);
die();
 
////////////////////////////////////////////////////////////////
// Hex dump image for debugging
 
for ($x=0; $x<strlen($image); $x++) {
printf("%02X ",ord($image[$x]));
if ((($x+1)%16)==0)
printf("<br/>");
}
Une autre fin de semaine août 26th, 2008

Comme les vacances se déroulent de fin de semaine cette année… Et bien nous avons fait une autre activité en fin de semaine ;)  Nous sommes retournés à la plage.  Mais cette fois avec des amis au lieu de notre neveux/filleul.  Pour les sceptiques voici 2 photos…

DSC00688
DSC00692
Déversement accidentel ou expérimental? août 20th, 2008

Pour une seconde fois, Alcan (maintenant Rio-Tinto) viens accidentellement de créer un attraction touristique au Saguenay. Hé oui, nous assistons à une marée rouge de nouveau dans notre belle rivière. La première fois, il avait été statué que ce n’était pas dangereux pour l’environnement. Peut-être que ce n’était pas certain alors ils le font de nouveau pour s’en assurer? Et quoi encore, quand nous serons convaincu que ce soit normal, ils n’auront plus a faire de bassin de retenu, déverserons à l’année dans le Saguenay leur déchets et nous aurons une nouvelle attraction “tout risque tique” à l’année.. de l’eau rouge l’été et de la neige/glace rouge l’hivers.. nous pourrons y mettre un bel éclairage pour avoir également un spectacle nocturne. Le cirque du soleil nous préparera même un numéro sur ce thème et nous deviendrons des mutans célèbres.

HPIM0082
HPIM0084
HPIM0085

D’autres en parlent:

déversement 2007 :

Site web d’argent (canoe)

Site web d’alcan


déversement 2008 :

Site web d’argent (canoe) a noter la photo a pas rapport…
Site web de LCN

Géocaching août 17th, 2008

Comme à l’habitude faut que je fasse différemment!  L’an passé je cherchais l’été de soir à la presque noirceur et cette année il faut que j’attende une journée pluvieuse froide pour aller faire du géocaching!

Notre première cache en famille pour 2008 est faite.. Et en prime nous avons trouvé un Travel-Prayer Bug!

DSC00683b
Ingénieur en informatique juillet 30th, 2008

Suite à la lecture d’un ancien article, mais toujours pertinent concernant le titre d’ingénieur et l’informatique (disponible ICI) intitulé “L’OIQ aux prises avec Microsoft” je ne pouvais m’empêcher de réagir.

Voici mon commentaire:

l est vrai qu’il n’y a pas de champs de pratique de défini dans le domaine de l’informatique pour les ingénieurs. Cependant, il est loin d’être faux que la protection du public dans ce domaine n’est pas nécessaire. La définition de “l’informatique” est extrêmement large. Si l’on considère qu’aujourd’hui des systèmes embarqués contrôle des avions, que les instruments médicaux sont informatisés, sans oublier nos moyens de télécommunication, je crois que oui, il faut protéger le public. Pour ne donner qu’un exemple, qu’arriverait-il si n’importe qui concevait des stimulateurs cardiac ? Et bien les nouveaux modèles dont il est possible de prendre le contrôle à distance par un réseau informatique sans fil ne sont pas régis par aucune législation. Ne serait-il bien qu’il soit validés par des spécialistes dans le domaine ? Ce n’est qu’un exemple où d’avoir des professionnels (tel que des ingénieurs) spécialisés dans le domaine de l’informatique et régis par un ordre professionnel devraient intervenir.

Agile - Scrum juillet 10th, 2008
Mais qu’est-ce que c’est que ça Agile et Scrum?
Selon WikiPedia:
 

Scrum est une méthode agile pour la gestion de projets.
 

et

La notion de méthode agile se limite actuellement aux méthodes ciblant le développement d’une application informatique. Ces méthodes Agiles permettent de concevoir des logiciels en impliquant au maximum le demandeur (client), ce qui permet une grande réactivité à ses demandes. Les méthodes agiles se veulent plus pragmatiques que les méthodes traditionnelles. Elles visent la satisfaction réelle du besoin du client, et non d’un contrat établi préalablement. La notion de méthode agile est née à travers un Manifeste Agile signé par 17 personnalités.”

J’ai essayer de trouver quelques liens intéressants sur le sujet.

En premier, voici deux podcasts (en anglais) dont l’un avec un des ”inventeurs” du scrum.



Et voici les autres

Il y a également plusieurs volumes intéressants et d’autres liens pertinents.