rand(Ø)

> beautiful code & photos

about <

Insérez vos préférences de TextMate à votre code source

J'ai développé un petit bundle TextMate pour ajouter automatiquement les préférences d'édition de votre fichier, en y ajoutant quelques statistiques...
J'ai cherché un peu sur le Net pour savoir si ce genre de bundle existait déjà pour TextMate mais je n'ai rien trouvé ou peut-être ne sais-je tout simplement pas comment se nomme ce bloc d'informations qu'on ajoute à la fin d'un code source.

Désormais, j'ajouterai les informations sur l'édition de mes fichiers :

<?php
/**
 * Exception
 * 
 * @copyright Copyright (c) 2010, Joris Berthelot
 * @author Joris Berthelot <[email protected]>
 * @since 1.00
 * @version 1.00
 * @package Foo
 */
class Exception
> Continue Reading

PHP: Inner class

Oui oui, c'est largement possible mais c'est pas ce qu'il y a de plus beau. Préférez utiliser le pattern Factory qui lui sera beaucoup plus propre et testable que des inner classes.
Mais parfois, créer une inner class peut rendre service justement pour tester une methode typée sans forcément passer par des frameworks de test.

Dans cet article, je vais vous montrer comment on peut facilement créer une inner class en utilisant la structure de langage eval(). Certes je ne suis pas fan de cette structure de langage et l'utilise jamais car elle est source de pas mal de fails

> Continue Reading

PHP: Décrypter des fichiers encryptés par SourceCop

Ok, rien de bien nouveau puisque la nouvelle est déjà assez répandue. Je ne ferais que confirmer que cette technique fonctionne encore très bien puisque que pas mal d'applications (genre jqGrid) "protègent" encore leur source.

Je me suis inspiré de cet article pour écrire le miens sauf que je vais outre-passer les explications, je me contenterais seulement de vous montrer comment décrypter un fichier SourceCop rapidement.

Procédure

Bon alors très rapidement, si vos scripts sont protégés avec SourceCop, vous devriez avoir un dossier scopbin au milieux de vos fichiers PHP. Dedans le fichier 911006.php qui contient l'algorithme de décryptage.

> Continue Reading

Mettre en pause votre mur Facebook

Si vous en avez marre de voir les stupidités récurrentes de certains de vos contacts sur votre mur ou si vous en avez assez de cliquer sur Hide quand une application s'affiche sur votre mur, vous pouvez tout simplement choisir de masquer directement des contacts de votre mur. Analogiquement, on peut aussi choisir d'afficher d'avantage certaines personnes si l'activité de celles-ci vous intéresse plus que la/es centaine(s) de contacts que vous avez...
Comment ça, je ne vous apprends rien ?

Un petite option est assez intéressante si un jour vous en avez assez d'espionner vos amis : vous pouvez mettre

> Continue Reading

PHP: Temporiser précisément et aléatoirement un script

Dans le cadre d'un de mes projets de développement, je dois exécuter une tâche un certain nombre de fois par jour et par palier. Pour des raisons spécifiques, le temps d'exécution de chacune des tâches de ce script doit être modéré mais pas sans intervalle régulière.

J'ai donc décidé d'utiliser la fameuse fonction sleep() pour temporiser mes tâches mais j'ai rencontré un petit soucis : la fonction sleep() ne prend en argument qu'un type int ; or mon calcul de temporisation correspond à une valeur aléatoire issue de 2 pourcentages calculés sur des données de configuration.

Les pourcentages sont très généralement de

> Continue Reading

PHP: héritage multiple

PHP est un langage qui ne supporte pas l'héritage multiple depuis le début de sa pseudo-implémentation objet. L'héritage multiple apporte bien des soucis aux architectes logiciels car le point fort et le point faible de l'héritage multiple est le fait qu'il soit multiple.

Dans cet article, je vais vous montrer qu'il est possible de gérer plus ou moins dynamiquement l'héritage multiple grâce au concept d'agrégation, aux interfaces ainsi que les méthodes magiques de PHP.

Pour illustrer le plus simplement possible, je vous ai concocté un petit exemple concret qui permet de mettre en œuvre cet héritage multiple. Pour cela, il

> Continue Reading