Archives pour la catégorie ‘ Trucs et astuces’

Commandes console git utiles

Dans le développement git est un outil très puissant et très pratique que j’utilise au quotidien.
Majoritairement via son intégration dans PhpStorm ( très intuitive )

Mais dans certains cas il est  nécessaire d’utiliser la ligne de commande
Voici donc une petite liste de commandes git utiles en fonction des situations

Configuration générale

Définir/modifier l’user et l’email du dépôt courant

git config user.name "Your username"
git config user.email "[email protected]"

 

Création d’un projet

Initialisation d’un projet local (dans le dossier courant )

git init .

Initialisation d’un projet distant ( dans le dossier courant )

git clone https://yourrepositoryurl.com/repo.git .

 

Gestion des fichiers

Ajout de modification

git add path

Annuler les modifications sur un fichier ou un dossier

git checkout -- path

 

Suivre l’état de mon dépôt local

Visualisation du statut global du dépôt

git status

Visualisation des fichiers modifiés

git ls-files -m

Visualisation des fichiers supprimés

git ls-files -d

Valider mes modifications

git commit -m "message de commit"

Voir la liste des modifications apportées

git log

Voir la liste des modifications apportées (version simplifiée)

git log --oneline

 

Mettre à jour mon dépôt local

Lister les dépots distants

git remote -v

Associer la branche locale à une branche distante

git branch --set-upstream-to=orignin/branchName

Récupération des informations distantes

git pull origin branchName

Réinitialisation de la branche locale comme la branche distante ( attention efface tout l’historique local )

git reset --hard origin/branchName

 

Gestion des branches

Création d’une branche

git checkout -b branchName

Changement de branche

git checkout branchName

Fusioner une branche dans la branche courante

git merge branchName

Lister les branches du dépot

git branch -a

Supprimer une branche du dépôt local ( si déjà mergée ou poussée )

git branch -d branchName

Supprimer une branche du dépôt local (peu importe son statut )

git branch -D branchName

Supprimer une branche du dépôt distant

git push origin --delete branchName
Pas de commentaires

Publier des releases github via un script

Pour une fois un article qui n’est pas lié directement à une technologie en particulier , mais à la plateforme de sources github.
J’ai plusieurs modules qui sont disponibles sur cette plateforme et pour lequel un clone du dépôt ne permets pas d’obtenir un module fonctionnel.

Pour  cette raison il est nécessaire de créer des « releases » qui sont disponibles sur une page spécifique du dépot ( ex:  https://github.com/nenes25/eicaptcha/releases ) et sur lequel on peut mettre à disposition une archive ( ou tout autre fichier ) associé à la release à télécharger :

Ei captcha releases

Il est possible de faire cela manuellement directement depuis l’interface github, mais par principe manuellement c’est plus lent et plus souvent source d’erreurs qu’un script automatique.
Nous allons donc voir comment scripter tout ça en utilisant l’api v3 de github et curl.

Sachant que dans mon cas j’ai les prérequis suivants :

Je pense qu’il est possible de faire l’ensemble de la procédure ci-dessous via un script bash, mais pour moi c’était plus facile de le faire en php.…

Pas de commentaires

Prestashop : Récupérer une configuration directement depuis un template

J’ai récemment rencontré la problématique de devoir utiliser des variables de configuration dans plusieurs templates non liés d’un site prestashop.
Plutôt que de surcharger l’ensemble des controllers impacté , je suis passé par la solution d’ajouter une nouvelle fonctionnalité directement dans Smarty.
Tout ça sans surcharge et via un module qui fonctionne sur PS 1.6 et 1.7

Le code est relativement simple :

class HhConfigTemplate extends Module
{
    public function __construct()
    {
        $this->author    = 'hhennes';
        $this->name      = 'hhconfigtemplate';
        $this->tab       = 'front_office_features';
        $this->version   = '0.1.0';
        $this->bootstrap = true;
        parent::__construct();
 
        $this->displayName = $this->l('HH Config Template');
        $this->description = $this->l('HH Config Template');
    }
 
    public function install()
    {
        if (!parent::install()
            || ! $this->registerHook('displayHeader')
           ) {
            return false;
        }
 
        return true;
    }
 
    public function uninstall()
    {
        return parent::uninstall();
    }
 
    /**
     * Hook Header Ajout d'une fonction dans smarty
     * @param $params
     */
    public function hookDisplayHeader($params)
    {
        //Enregistrement de la fonction "Configuration" dans Smarty qui appelle la fonction "getConfiguration" de cette classe
        smartyRegisterFunction($this->context->smarty, 'function', 'Configuration', array($this, 'getConfiguration'));
    }
 
    /**
     * Récupération d'une configuration
     * @param array $params
     * @return string
     */
    public static function getConfiguration($params)
    {
        if ( isset($params['key'])) {
            return Configuration::get($params['key'],
                isset($params['id_lang']) ?
5 commentaires

Magento : Configurer plusieurs boutiques sur une seule instance

Nativement la plateforme Magento permets de créer plusieurs sites webs totalement différents tout en utilisant le même code et le même dossier sur votre serveur et cela avec des urls différentes !

Il est cependant ensuite nécessaire de réaliser un mapping pour que Magento trouve quelle boutique charger avec quelle url

En partant des pré-requis suivants :

  • votre configuration apache ou nginx est déjà en place et que l’ensemble des noms de domaines pointent bien vers le même dossier
  • Nous allons tester 3 sites
    • www.shop.fr ( Site FR / Code du magasin magento : fr )
    • www.shop.de ( Site DE / Code du magasin magento : de )
    • www.shop.com ( Site EN / Code du magasin magento : en )
  • Les configurations des magasins sont en place dans magento

Nous allons voir ensemble les différentes possibilités qui existent pour réaliser cela.

Serveur Apache : fichier .htacess
Editer le fichier .htacess situé à la racine de magento et rajouter les lignes suivantes

SetEnv MAGE_RUN_TYPE store
SetEnvIf Host www\.shop\.fr MAGE_RUN_CODE=fr
SetEnvIf Host www\.shop\.de MAGE_RUN_CODE=de
SetEnvIf Host www\.shop\.com MAGE_RUN_CODE=en

Serveur nginx : fichier conf
Dans le fichier de configuration de votre vhost avant le noeud « server » rajouter la map suivante :

map $http_host $magecode {
       www.shop.fr fr;
       www.shop.de de;
       www.shop.com en;
    }

Puis dans la configuration des fichiers php , rajouter les éléments suivants :

location ~ \.php$ { ## Execute PHP scripts
        ...
Pas de commentaires

Détecter vos contenus mixtes avec les CSP

Je continue ma série d’articles sur le https avec une problématique assez chronophage qui est la détection des contenus mixtes sur une page https.
Avec les nouvelles sécurité des navigateurs si une image , une feuille de style ou un fichier javascript n’est pas appellé en https il ne sera pas interprété.

Et donc votre site ne sera pas affiché correctement.
La tâche d’identification de ces contenus est relativement longue et implique de passer sur toutes les pages de votre site si vous souhaitez le faire manuellement.
La bonne nouvelle est que ce n’est pas nécessaire 🙂

Avec les headers Content Security Policy ( CSP ) il est possible de détecter automatiquement les éléments bloquants.
Mon exemple est relativement basique, pour des informations complètes sur les CSP vous pouvez consulter le site suivant : https://content-security-policy.com/

Comme le nom ( header ) le défini, nous allons ajouter l’entête spécifique à notre document.

Content-Security-Policy-Report-Only "default-src https://your-site.com https: 'unsafe-inline';report-uri https://your-site.com/csp-https-report.php"

Celle-ci signifie que nous souhaitons avoir un rapport d’erreur sur l’url https://your-site.com/csp-https-report.php, dès qu’un média ( js/image/font/css ) n’est pas appelé en https

Cette entête peut être rajoutée de différente manière

Apache : dans le fichier htaccess

 Header set Content-Security-Policy-Report-Only "default-src https://your-site.com https: 'unsafe-inline';report-uri https://your-site.com/csp-https-report.php"

Nginx : dans votre fichier de conf

 add_header Content-Security-Policy-Report-Only "default-src https://your-site.com https: 'unsafe-inline';report-uri https://your-site.com/csp-https-report.php";

Directement dans votre document php

 header('Content-Security-Policy-Report-Only "default-src https://your-site.com https: 'unsafe-inline';report-uri https://your-site.com/csp-https-report.php";');

Voici à présent le contenu du fichier php qui va traiter ces retours.…

Pas de commentaires

Passage du blog en https

Après tous les articles récents publiés sur le https, il était temps de mettre la recommandation du passage en full https sur ce blog en application.
Pour le coup c’est plutôt facile à faire avec wordpress, et c’était en place en moins de 30 minutes 🙂

Voici les différentes étapes effectuées pour passer wordpress en https.

A savoir que le https est déjà géré et disponible sans configuration via les dns cloudflare que j’utilise ( c’est pareil pour tous les hébergements mutualisés via les dns ovh également )

Configuration de wordpress

Pour commencer , il suffit de changer les urls du site dans la configuration de wordpress en allant dans « Réglages / Généraux »

Correction du contenu mixte

Le site est à présent disponible en https, cependant si vous avez des images vous allez rapidement constater des avertissements de contenus mixtes.
C’est à dire que votre navigateur vous alerte que votre page charge des éléments non sécurisés ( protocole http ), sur une page sécurisée ( https )

Pour corriger cela il va être nécessaire de mettre à jour votre base de données pour remplacer les urls http par du https
(Attention à bien sauvegarder votre base avant )

Dans mon cas cela est passé par l’éxécution de la requête suivante

UPDATE wp_posts SET `post_content` = REPLACE (`post_content`, 'http://www.h-hennes.fr', 'https://www.h-hennes.fr')

Une fois cette requête exécutés tout vos liens vers des médias ou entre les différents articles sont mis à jours.…

Pas de commentaires

Optimisation des exports de bases de données pour mise à jour d’environnement de développement

En tant que développeur il est souvent nécessaire de faire des dumps de base de données pour mettre à jour les environnements de développements ( qu’ils soient locaux ou sur le serveur ).
Cependant les tables de productions sont souvent très lourdes et comportent des données qui ne sont pas forcément nécessaire pour développer.

Voici un petit script qui va vous faire gagner du temps dans l’export / import de ces bases de données.
La logique est relativement simple .

Pour les tables dont les données ne sont pas importantes, on va exporter uniquement la structure.
Puis nous excluons ces tables de l’export global.

 #!/bin/bash
 
#Variables de la base de données
host="localhost"
user="root"
pass="root"
dbname="dbname"
 
#Stockage de ces tables à ignorer dans une variables ( separer les noms par un espace)
ignoreTables="table1 table2 "
 
#Dump de la structure de ces tables
echo "Export de la structure des tables ignorées"
mysqldump -d -h $host -u $user -p$pass $dbname $ignoreTables > backup-structure.sql
 
#Construction de la chaine d'exclusion
ignoreTablesString=""
for table in $ignoreTables
do
ignoreTablesString="$ignoreTablesString --ignore-table $dbname.
Pas de commentaires

Tester la qualité des emails envoyés par votre serveur

Voici un outil pratique pour tester la qualité des emails qui sont envoyés par votre serveur : https://www.mail-tester.com/

Mail tester

Cet outil teste les différents paramètres dont :

  • SPF
  • Sender ID
  • DKIM
  • Blacklists les + connues

Et il donne également les solutions pour corriger les différents problèmes de manière rapide.
Pour ma part je suis passé de 2.1 à 9 🙂…

Pas de commentaires

Alternative à wampserver : windows bash

La sortie de la mise à jour Anniversary pour windows 10 au début du mois d’aout, apporte une nouveauté majeure pour les développeur webs ( sous windows bien sur ^^), à savoir l’apparition d’un sous-système linux directement intégré dans windows.

Je ne vais pas vous détailler comment l’activer vous pouvez trouver comment faire cela sur google.

La distribution proposée est Ubuntu 14.04.

Pour pouvoir développer en local il est donc nécessaire d’installer le stack lamp (Apache/Mysql,Php) , les instructions sont donc exactement les mêmes que sur un ubuntu classique, je vous renvoie donc
vers mon article sur le sujet : Ubuntu Server 14.04 « Trusty Tahr » : Installation d’apache, php et mysql ( lamp)

L’unique point à retenir est que les partitions windows sont montées dans /mnt/x/votre-dossier ( ou x correspond à la lettre de votre disque dur)
Il faut donc faire pointer vos vhosts apache vers ces dossiers.

A noter également que j’ai voulu installer nginx sans succès, pour l’instant cela ne fonctionne pas.…

Pas de commentaires

Nginx et Apache : redirection sans www vers www

Pour uniformiser les urls de votre site web et éviter les duplications de contenu  dans le référencement de votre site.
Voici des extrait de code pour ceux qui souhaitent rediriger le nom de domaine sans les www, vers les www avec les serveurs nginx et Apache.

Par exemple si nous souhaitons rediriger le domaine mysite.com vers www.mysite.com

Nginx :
Dans le fichier de configuration du nom de domaine

#Noeud serveur pour le domaine sans www
server {
    listen       80;
    server_name  mysite.com;
    return       301 $scheme://www.mysite.com$request_uri; #redirection 301 vers le domaine avec les www ( http et https gérés )
}
#Noeud serveur pour le domaine avec www
server {
    listen       80;
    server_name  www.mysite.com;
    ...
}
Pas de commentaires


Compte Github