var Phenix = function () {

Troll du Web depuis 1996

Corriger le problème d’acces root sous mysql 5.7

Lorsque l’on installe mysql 5.7, l’utilisateur root ne peux pas ce connecter à la machine. C’est normal bien entendu.

Ne faite jamais cela sur une machine de production !

On peux cependant corriger cela :

Pour ce connecter à Mysql :
sudo mysql -u root

Ensuite, on utilise autorise root a ce connecter :

  1. USE mysql;
  2. UPDATE USER SET plugin='mysql_native_password' WHERE USER='root';
  3. SET PASSWORD FOR root@localhost=PASSWORD('root');
  4. GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'root' WITH GRANT OPTION;
  5. FLUSH privileges;
Voir en ligne : https://superuser.com/a/1129234

Les macros avec evil-mode

J’ai enfin compris comment utiliser les macros d’Emacs avec Evil-mode.

Dans un premier temps, il faut définir une macro avec q + une lettre qui servira pour rappeler la macro. A priori, n’importe quelle lettre peu être utilisé. J’ai pas tout testé cependant.

Ensuite, définissez normalement votre macro et arrêté l’enregistrement quand vous voulez avec q.

Il suffit alors d’utiliser @ - la lettre pour appeler la macro !
Du coup, il est possible d’enregistrer plusieurs macros sur différentes lettre, cela peut être bien pratique :).

En résumé :

  • q a pour démarrer la macro sur la lettre de votre choix (ici a).
  • q pour arrêter l’enregistrement
  • @ - a pour lancer la macro
Voir en ligne : How can I save evil-mode (vim style) macros to my init.el ?

Spacemacs et Typescript sous Windows

Si vous utilisez Spacemacs pour faire du TypeScript sous Windows, vous avez certainement remarqué que l’auto-complétion est a peine utilisable tellement c’est lent. Souvent, taper une méthode complètement va plus vite que d’attendre que l’auto-complétion ne vous la propose.

La faute à Windows bien entendu ! De manière générale, Emacs tourne bien plus lentement sous Windows.

Bref, c’est chiant et pour les gens comme moi qui trouve que VScode c’est pas terrible comparer a Emacs/Spacemacs, j’ai trouvé une solution sur le Github de flycheck. Il faut ajouter ce bout de code dans votre dotspacemacs/user-config

  1. (eval-after-load 'flycheck
  2.    '(setcar (memq 'source-inplace (flycheck-checker-get 'typescript-tslint 'command)) 'source-original))

Normalement cela devrait aller beaucoup mieux. En tout cas chez moi cela donne un gros gain de performance.


Laravel : utiliser un trait php pour purifier le HTML d’un champ

Lorsque l’ont stock du HTML dans le champ d’une base de donnée, il ne faut jamais le stocker sans le filtrer. C’est une mauvaise pratique bien connue, cela attire les failles XSS et personne n’aime en avoir.

Bref, voici une méthode sympa pour protéger un champ.

Dans un premier temps il faut installer HTMLPurifier :

  1. composer require ezyang/htmlpurifier

Cette librairie permet de filtrer le html correctement. N’utilisez pas strip_tags, cette fonction n’est pas faite pour la sécurité.

Ma base de donnée contient assez bien de champs « description », ils risquent tous de contenir du HTML, car ils sont remplis par un CKeditor.

Cela affecte tous ces champs, j’ai envie de les protéger facilement.
J’ai donc créé un fichier ./app/traits/purify.php

On va mixer le pouvoir des mutators de Laravel et

  1. <?php
  2.  
  3. namespace App;
  4.  
  5. use HTMLPurifier_Config;
  6. use HTMLPurifier;
  7.  
  8. trait Purify
  9. {
  10.     /**
  11.      * @property $allowed allowed html inside description field
  12.      */
  13.     private $allowed = 'p, strong, h2, h3, a[href], ul, ol, li, i';
  14.  
  15.     /**
  16.      * Laravel mutator.
  17.      * Filter all unauthorized HTML from the description field
  18.      * @param $value
  19.      */
  20.     public function setDescriptionAttribute($value)
  21.     {
  22.         $config = HTMLPurifier_Config::createDefault();
  23.         $config->set('HTML.Allowed', $this->allowed);
  24.         $purifier = new HTMLPurifier($config);
  25.         $this->attributes['description'] = $purifier->purify($value);
  26.     }
  27. }

Il suffit alors d’utiliser ce trait dans un modèle Laravel pour que les champs description soit automatiquement filtrés avant d’être insérés dans la base de donnée !

  1. <?php
  2.  
  3. namespace App;
  4.  
  5. use Illuminate\Database\Eloquent\Model;
  6.  
  7. class MyModel extends Model
  8. {
  9.     use Purify;
  10. }

Laravel et PHP sont des outils vraiment formidables quand on comprend ce genre d’astuce !