Mot de passe

CakePHP 2: Truc rapide pour générer un mot de passe

Vous développez le nouveau réseau social qui sera en vogue la semaine prochaine ? Vous avez besoin de générer un mot de passe pour tester le formulaire d’identification dans CakePHP 2 ? L’astuce se retrouve dans le composant Auth lui-même. Voici ce que vous devez faire:

  1. Avoir un CakePHP 2 configuré et fonctionnel sous la main. Ce qui implique d’avoir changé le paramètre Security.salt dans le fichier de configuration core.php.
  2. Choisissez n’importe lequel des vos contrôleurs et ajoutez-lui le composant Auth.
  3. Ensuite, il vous suffit d’utiliser la fonction password de ce composant en lui passant le mot de passe à hacher.
  4. Il suffit de visiter votre action (users/login) pour obtenir le mot de passe haché.
class UsersController extends AppController {
    public $name = 'Users';
    public $components = array( 'Auth' );
 
    public function login() {
        var_dump( AuthComponent::password( '1234' ) );
        die();
    }

Résultat du hachage similaire à:

string 'd6680747338986b484c8a167fc12113ba9c28751' (length=40)

Copiez le mot de passe haché et utilisez le pour vos tests.
Happy coding !

LibreOffice Calc: Intersection en deux plages de date en jours

LibreOffice Calc: Nombre de jours commun entre deux plages de dates

Aujourd’hui, je cherchais le moyen d’obtenir le nombre de jours commun entre deux plages de dates dans un chiffrier LibreOffice. Je voulais utiliser seulement des fonctions natives. Malheureusement, il n’y a pas de façon simple d’y arriver. Après un moment, j’ai décidé de lancer ma question à 2$ via Twitter, car à plusieurs on a plus de chance de trouver la solution, n’est-ce pas ? Et bien non !

Par déformation professionnelle, je me suis donc mis à programmer une fonction personnalisée. Il y avait bien longtemps que je n’avais pas fait de script dans un chiffrier. Cette façon de faire m’a permit rapidement d’obtenir un résultat plus que satisfaisant. Je vous partage donc le fruit de mon travail. La fonction est ultra simple, facile à utiliser dans les cellules du chiffrier et réutilisable à souhait. Auriez-vous une façon plus élégante d’obtenir le même résultat ?

Voici le code de la fonction à ajouter aux macros de votre chiffrier.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Function periodOverlap( a1, a2, b1, b2 )
	dim nbDays as Integer
 
	IF a1 > b2 OR a2 < b1 THEN
		nbDays = 0
	ELSE
		IF a1 > b1 AND a1 < b2 THEN
			nbDays = b2 - a1
		ELSE
			nbDays = a2 - b1
		END IF
	END IF
 
	periodOverlap = nbDays
End function

Avec en plus un exemple en image au haut de l’article !

Logo de Subversion

Retrait des sous-répertoires .svn

Avez-vous remarqué, dans la version 1.7 de Subversion, qu’il n’y avait plus de sous-répertoires .svn ? Vous savez ces répertoires qui stockaient les méta-données concernant l’état de votre copie locale. Il en reste un seulement à la racine de votre projet. De plus, l’information sur les méta-données sont désormais entreposées dans une base de données SQLite.

Terminé les problèmes de copie de répertoire d’un dépôt à l’autre avec des répertoires .svn problématiques! Terminé les suppressions récursives! Yeah !

Petite mise en garde par contre. Il semblerait que sous Windows, même si vous avez une version plus récente de subversion que sur mon Ubuntu 12.10, ce ne soit pas le cas. Merci à mon collègue de travail pour la vérification !

Et bien voilà ! C’était ma découverte du jour !

Gandalf Artwork par Andy Smith

Transformer un tableau associatif en attributs HTML en une ligne

Personnellement, j’ai pas de meilleure façon! et vous ?

$attributes = array(
    'href' => 'http://www.gezere.com/',
    'title' => 'Gezere Solutions Web',
    'class' => 'the-super-strategy-development-and-marketing-company'
);
 
echo '<a ' . str_replace( array( '{"', '"}', '":"', '","', '\/' ), array( '', '"', '="', '" ', '/' ), json_encode( $attributes ) ) . '>The best compagny !</a>';

Merci pour vos trucs !

Elvin Jones

Sortie de WordPress 3.5 « Elvin »

Yeah ! Sortie de WordPress 3.5 « Elvin ». D’ailleurs, le blogue roule déjà sur cette nouvelle mouture avec un retour au thème par défaut « Twenty Twelve« , afin de pourvoir tester les nouvelles fonctionnalités. Le blogue restera ainsi jusqu’à sa refonte visuelle ! En tant qu’adepte de la simplicité, j’aime bien le thème par défaut. De plus, la font est belle et lisible.

Parmi les changements:

  • Nouveau thème (Twenty Twelve) adaptatif (responsive)
  • Création et gestion de galeries de photos
  • Gestion des médias hautement amélioré

Que pensez-vous de cette version ?

Saviez-vous que WordPress est le moteur de 54% des sites utilisant un gestionnaire de contenu ?

Fonctionnalités de GIMP 2.8.2

Screenshot de GIMP 2.8.2

J’ai récemment migré mon portable vers Ubuntu 12.10 (Quantal Quetzal). De belles surprises avec l’arrivé de GIMP 2.8.2. Je vous avait annoncé la sortie de la version 2.8 dans un précédent billet. Par contre, je n’avait pas vraiment parlé des nouvelles fonctionnalités.

Voici donc les fonctionnalités que j’attendais avec une grande impatience depuis longtemps.

  1. Groupement de calques
  2. Fenêtres ancrables multi-colonne
  3. Édition de texte directement dans l’image
  4. Verrouillage des calques

Yeah ! Ça fait mon bonheur ! Merci à l’équipe de développement !

Pour la liste complète, consultez les notes de version.
Pour en apprendre d’avantage sur l’avenir de GIMP

Ajouter de la swap à la volée

Comment ajouter 10 go de swap à la volée sans refaire ses partitions ni même redémarrer ? Et bien voilà !

sudo fallocate -l 10g /mnt/10GB.swap
sudo chmod 600 /mnt/10GB.swap
sudo mkswap /mnt/10GB.swap
sudo swapon /mnt/10GB.swap

Évidemment ce changement n’est pas permanent et il vous faut de la place sur votre disque dur afin de pouvoir héberger le 10 go en question. Comment le rendre permanent ?

Ajouter cette ligne à la toute fin de votre fichier /etc/fstab et redémarrez.

/mnt/10GB.swap  none  swap  sw  0 0

Merci AskUbuntu !

P.S. Peut-être que ça marche sur OS X aussi qui sait.

Rotation matricielle en PHP

Voici une classe qui permet la rotation matricielle simple en PHP.

class Matrix {
    function rotateClockwise90( $matrix ) {
        $newMatrix = array();
 
        foreach( $matrix as $line ) {
            foreach( $line as $k => $v ) {
                if( !isset( $newMatrix[ $k ] ) ) {
                    $newMatrix[ $k ] = array();
                }
                array_unshift( $newMatrix[ $k ], $v );
            }
 
        }
        return $newMatrix;
    }
 
    function rotateClockwise180( $matrix ) {
        return $this->rotateClockwise90( $this->rotateClockwise90( $matrix ) );
    }
 
    function rotateClockwise270( $matrix ) {
        return $this->rotateClockwise180( $this->rotateClockwise90( $matrix ) );
    }
}

Un exemple d’utilisation:

function displayMatrix( $matrix ) {
    foreach( $matrix as $line ) {
        echo implode( ',', $line ) . PHP_EOL;
    }
}
 
$matrice = array(
    array( 'A','B','C' ),
    array( 'D','E','F' ),
    array( 'G','H','I' ),
    array( 'J','K','L' )
);
 
displayMatrix( $matrice );
echo PHP_EOL;
 
$matrix = new Matrix();
$matrice = $matrix->rotateClockwise90( $matrice );
 
displayMatrix( $matrice );

Résultat avant la rotation:

A,B,C
D,E,F
G,H,I
J,K,L

Résultat après la rotation:

J,G,D,A
K,H,E,B
L,I,F,C

Maintenant, vous me direz: « Qu’est-ce que je peux bien faire avec ça ? »… à suivre.