Programmation

15 articles

MariaDB / MySQL: générer un numéro de ligne

Il n'existe actuellement pas de fonction intégrée pour compter les lignes retournées par une requête. La solution est d'utiliser une variable qui est incrémentée dans chaque ligne de résultat, comme ceci:

@ligneActuelle := @ligneActuelle + 1 AS numeroLigne

Nous pouvons utiliser une commande JOIN pour initialiser notre variable sans avoir besoin de SET:

JOIN (SELECT @ligneActuelle := 0) ligne

Une autre notation est de remplacer JOIN par une virgule:

, (SELECT @ligneActuelle := 0) ligne

Voici un exemple de requête complète:

SELECT
    titre,
    texte,
    @ligneActuelle := @ligneActuelle + 1 AS numeroLigne
FROM articles
JOIN (SELECT @ligneActuelle := 0) ligne

Source [EN]

Exécuter un script bash local par SSH

Avant ce jour béni, je perdais mon temps à copier mes scripts bash sur les machines distantes sur lesquelles je voulais les exécuter via la commande SSH. Jusqu'à aujourd'hui, quand j'ai découvert que ce n'est pas nécessaire, grâce à l'option -s de bash.

$ ssh utilisateur@machine_distante 'bash -s'

Source

Git: push/pull une nouvelle branche vers/d'un dépôt distant

Pour "pousser" (push) la branche nouvelle_branche vers le dépôt distant origin:

$ git push -u origin nouvelle_branche

L'option -u, équivalente à --set-upstream, indique à Git de suivre cette branche, nous permettant ainsi de récupérer automatiquement les futurs commits effectués en amont via un simple git pull.

Pour récupérer (pull) la branche nouvelle_branche_distante à partir du dépôt distant origin, nous mettons d'abord à jour notre dépôt local:

$ git fetch origin

Nous créons ensuite une branche locale appelée nouvelle_branche_distante et lui faisons suivre (track) celle en amont:

$ git checkout --track origin/nouvelle_branche_distante

PHP: rediriger la sortie de var_dump vers un fichier de log

Je viens juste de rencontrer un bug en production que je ne parviens pas à reproduire en développement. Afin de tenter de le tracer sans gêner les utilisateurs, j'ai utilisé le bout de code suivant pour écrire la sortie de var_dump directement dans un fichier de log.

ob_start();
var_dump($nomDeVariable);
$contenu = ob_get_contents();
ob_end_clean();
fonctionDeLog($contenu);

Préférez var_dump à print_r car le second convertit les valeurs NULL et les booléens (par exemple, il affiche une chaine vide au lieu de FALSE).

Source [EN]

Git: cesser de suivre des fichiers sans les supprimer

$ git rm --cached motif

"motif" peut être remplacé par un nom de fichier ou un sélecteur comme nomDuDossier/* pour sélectionner tous les fichiers présents dans le dossier appelé "nomDuDossier".