Advent of Code 2020 - 10 enseignements et bonnes pratiques en PHP

Un excellent article, très simple d'accès. Résumé pour mémoire mais je vous conseille d'aller lire le tout tant c'est clair et bien documenté:

1.Tout typer

... pour pouvoir compter sur le type des données

  • Les paramètres des fonctions function moncul(string $str) pour éviter de vérifier les paramètres puisqu'un type erroné provoquera une erreur
  • Les valeurs de retour des fonctions function moncul(string $str): int car en cas de retour d'un autre type, il y aura erreur. (pour les fonctions ne retournant rien, :void )
  • Les propriétés de classe : private int $mon_cul; pour qu'une erreur se déclenche en cas d'initialisation d'un type erroné.

2.Protéger ses classes par défaut

  • ajouter «final» à la déclaration de classe final class monCul(){ pour éviter tout héritage, même fortuit.
  • laisser ses propriétés en private par défaut
  • laisser ses méthodes en private par défaut jusqu'à ce qu'on ait besoin de les appeler de l'extérieur

3.Utiliser les comparaisons strictes

... pour éviter les confusions false/0 etc

4.Se passer des «if»

En utilisant l'opérateur ternaire condition ? valeur retournée si true : valeur retournée si false;

Pourquoi ? Parce que c'est plus court mais aussi parce qu'on peut placer la condition directement dans une assignation ou à la place d'un paramètre: $count += ($value === CONTROL_VALUE) ? 1 : 0;

Par contre, je trouve qu'on y perd BEAUCOUP en lisibilité et en organisation.

5.La fonction « sscanf »

Pour analyser une chaîne selon un format (et à la place d'un explode plus lourd). C'est l'inverse de printf(). ( https://www.php.net/manual/fr/function.sscanf.php )

6.L'inversion de valeurs en une ligne

et avec autant de valeurs qu'on veut

[$var1, $var2, $var3, $var4] = [$var4, $var3, $var2, $var1];

7. L’opérateur de décomposition « … »

$intersection = array_intersect(...$bigArray); au lieu de $intersection = array_intersect($bigArray[0], $bigArray[1], $bigArray[2]); // Etc.

8. Toujours ajouter un compteur de boucle pour sortir des while

Ça m'a rappelé un épisode de BigBang Theory dans lequel Sheldon est prisonnier d'une boucle dans son algorithme HowToMakeANewFriend... (c'est Howard qui l'en sort en implémentant un compteur comme condition de sortie).

$block++;
    if ($block > 1000) {
        break;
    }

9.Utiliser les fonctions liées aux tableaux

Je plussoie vigoureusement ce point particulier

Avant de se lancer dans un traitement de tableau en créant une fonction ou une méthode exprès, relisez la doc de toutes les fonctions commençant par Array_ ... histoire de ne pas réinventer la roue.

joebarteam6p43.jpg

10.Manipuler les tableaux avec les callbacks et les Collections

Pour manipuler un tableau, penser à utiliser array_map plutôt que foreach si c'est possible:

  • utilisation simple array_map('trim',$tableau)
  • fonction anonyme ```array_map(function($k){ code de traitement },$tableau);
  • avec une méthode array_map(array($instance, 'methode'), $tableau)

L’homme qui hululait à l’oreille des formulaires – 24 jours de web

En résumé

  • Contrôler la validité des champs avec trop d’enthousiasme : difficile de prendre en compte les spécificités de tout le monde...
  • Abuser de la validation côté client : éviter les situations bloquantes.
  • Imposer des contraintes fantaisistes sur les mots de passe : privilégier la longueur des mots de passe plutôt que leur complexité.
  • Obliger l’internaute à nettoyer lui-même ses données : privilégier le nettoyage côté serveur avant stockage.
  • Confondre les attributs labels et placeholder : label = nom du champ, placeholder = exemple de saisie
  • Recueillir des informations non-conformes : Moins on recueille d’informations sur l’utilisateur, mieux tout le monde se porte.
  • Obliger à utiliser la souris pour saisir des mots de passe
  • Ré-inventer des composants de formulaire : accessibilité ? compatibilité ? javascript bloqué ?
  • Reporter la complexité du processus sur l’utilisateur·ice : ex, les mini formulaires enchainés. Solution: proposer une alternative

Commandes GNU/Linux pour détecter une intrusion - Net-Security

En ultra résumé

  • w & who pour savoir qui est connecté,
  • last & lastb pour savoir qui a été connecté,
  • history (lancé depuis l'utilisateur à vérifier : su username) pour voir les traces laissées,
  • less /etc/passwd et cat /etc/passwd pour vérifier si on n'a pas créé un utilisateur à l'arrache,
  • ps et top pour vérifier s'il n'y a pas un processus malveillant,
  • ss & netstat pour vérifier les faiblesses réseau,
  • ip
  • crontab pour vérifier si une tâche cron n'est pas lancée régulièrement
  • find / -mtime -5 -ctime -5 pour vérifier les fichiers modifiés récemment,
  • cat /var/log/syslog, cat /var/log/syslog | less, tail -f -n 5 /var/log/syslog, cat /var/log/syslog | grep fail, tail -f /var/log/syslog pour les logs
    Via https://shaarli.sebw.info/?aU81yg
Fil RSS des articles