lundi 28 juillet 2008

Deezer... vraiment bien ! ! !

Cela fait maintenant plusieurs mois que j'utilise Deezer : c'est un site réalisé en flash qui permet de gérer en ligne diverses listes musicales.

Beaucoup de fonctionnalité sont disponibles :
  • Générer un lecteur exportable pour mettre sur un blog par exemple

    Découvrez U2!


  • Ecouter des radios en fonction de vos préférences (il y a une analyse des morceaux que vous écoutez souvent);
  • Gérer ses propres playlist;
  • Sans oublier toute la partie communautaire...

Je vous recommande donc fortement d'utiliser ce site si vous aimez écouter de la musique en ligne, créer vos playlists, etc...

Ah oui, dernière petite chose, toutes ces fonctionnalités sont gratuites ! ! !

mercredi 23 juillet 2008

Top Site (Juillet)

Allez comme certains de mes collègues (Notamment un certain Pierre Chauvin), je m'engage à vous lister une fois par mois (enfin si j'y arrive) les meilleurs sites que je trouve sur le web...

Voici la version du mois de Juillet :
Je vous laisse deviner tout seul les fonctionnalités de ces sites ;-)

mardi 22 juillet 2008

99 bottles of beer

Ca y est je suis enfin de retour sur mon blog pour un post de la plus haute importance...

Il y a quelques jours, un collègue (un certain Shaoken : http://weblog.shaoken.be) m'a parlé d'un site http://www.99-bottles-of-beer.net/ qui propose de réaliser un programme permettant d'afficher les paroles de la chanson "99 bottles of beer".

J'ai trouvé ça marrant..... et j'ai pris ça comme un défis :) Alors je me suis mis à le faire en PHP. Voici le résultat :

/**
* Class used to display 99 bottles of beer lyrics
*
*/
Class Song
{
/**
* Line break string
*
*/
const LINE_BREAK = '
';


/**
* Number of bottles on the wall
*
* @var integer
*/
private $bottlesCounter;

/**
* Constructor
*
* @param integer $nbBottles
*/
public function __construct($nbBottles = 99)
{
$this -> bottlesCounter = intval($nbBottles);
}

/**
* Return number of bottles on the wall
*
* @return integer
*/
public function getBottlesCounter()
{
return $this -> bottlesCounter;
}

/**
* Remove a bottle
*
*/
public function removeBottle()
{
$this -> bottlesCounter--;
}

/**
* Return '1 bottle' or 'xxx bottles' depending on bottlesCounter
*
* @return string
*/
public function getBottlesString()
{
if ($this -> bottlesCounter > 1)
return ($this -> bottlesCounter . ' bottles');
else
return '1 bottle';
}

/**
* Return a verse depending on number of bottles on the wall
*
* @return string
*/
public function getVerse()
{
$string = '';
switch ($this -> bottlesCounter)
{
case 1: $string .= $this -> getBottlesString() . ' of beer on the wall, ' .
$this -> getBottlesString() . ' of beer.' . self::LINE_BREAK;
$this -> removeBottle();
$string .= 'Take one down and pass it around, no more bottles of beer on the wall.'
. self::LINE_BREAK . self::LINE_BREAK;
break;

case 0: $string .= 'No more bottles of beer on the wall, no more bottles of beer.' . self::LINE_BREAK;
$this -> removeBottle();
$string .= 'Go to the store and buy some more, 99 bottles of beer on the wall.';
break;

default: $string .= $this -> getBottlesString() . ' of beer on the wall, ' .
$this -> getBottlesString() . ' of beer.' . self::LINE_BREAK;

$this -> removeBottle();

$string .= 'Take one down and pass it around, '
. $this -> getBottlesString() . ' of beer on the wall.'
. self::LINE_BREAK . self::LINE_BREAK;
break;
}

return $string;
}

/**
* Display song lyrics
*
*/
public function sing()
{
while ($this -> getBottlesCounter() >= 0)
{
echo $this -> getVerse();
}
}
}

//the song object
$song = new Song();

//Sing 99 Bottles of Beer
$song -> sing();

Et comme je sais que ce code va être très mal affiché, je vous le propose en téléchargement (et gratuit en plus ! ! ! :) => http://www.acolson.net/files/bottles.rar

Pour une petite démo, rendez-vous ici => http://www.acolson.net/files/bottles.php et non ce n'est pas du texte "hard codé" :-)

Si vous avez des remarques, n'hésitez pas...


lundi 3 mars 2008

Oracle : équivalent de la clause limit de MySQL

La clause LIMIT de MySQL est très pratique pour tout ce qui concerne la pagination... Seul petit problème, elle n'existe pas sous Oracle.

Voici donc un squelette d'une requête qui vous permettra d'avoir le même comportement :

SELECT *
FROM ( SELECT /*+ FIRST_ROWS(50) */
a.*, ROWNUM rnum
FROM (SELECT ROWNUM, user_id FROM user) a
WHERE ROWNUM <= 31050
)
WHERE
rnum >= 31000

Cette requête vous permet de sélectionner uniquement les "user_id" des enregistrements 31000 à 31050 de la table user...
Attention le commentaire est apparemment utile à Oracle pour améliorer le temps d'exécution...

lundi 25 février 2008

Disparition de l'icône raccourci bureau de la barre de tâches

Un petit truc pour vous éviter de perdre du temps (comme moi :-).
Je ne sais pas comment c'est arrivé, mais un jour j'ai perdu l'icône raccourci bureau de ma barre de tâches.
Il suffit de créer un fichier bureau.scf avec le contenu suivant :

[Shell]

Command=2
IconFile=explorer.exe,3
[Taskbar]
Command=ToggleDesktop

Et voilà... comme par miracle, ça marche ! ! !

lundi 4 février 2008

Zend framework 1.5






Ca y est, la version 1.5 beta du zend framework vient de faire sa sortie...
Je suis en train de tester les nouvelles fonctionnalités. Certaines semblent très intéressantes... je pense notamment à Zend_Form qui me fait un peu penser au générateur de formulaire de Symfony. En effet, on peut combiner Zend_Form avec Zend_Config afin de générer des formulaires directement dans des fichiers de config... Voici un excellent lien qui détail cette fonctionnalité http://devzone.zend.com/article/3030-Lifting-the-Skirt-on-Zend-Framework-1.5---Zend_Form

lundi 7 janvier 2008

Bonne année 2008

Bonne année à tous ! ! !
Allez hop un petit lien en cadeau pour la nouvelle année :
http://www.akinator.fr/