2024

28

juil.

Intégrer fontawesome sur un site via sass

0

Pour intégrer fontawesome sur votre site internet, vous pouvez vous y prendre de différentes manières.

Appeler les bibliothèques d'icônes de fontawesome dans le header par des liens link href :

 < link href="/your-path-to-fontawesome/css/fontawesome.css" rel="stylesheet" >
< link href="/your-path-to-fontawesome/css/brand.css" rel="stylesheet" >
< link href="/your-path-to-fontawesome/css/solid.css" rel="stylesheet" >

Ce n'est pas l'option que je trouve la plus élégante, d'autant que si l'on travaille avec sass, il y a une manière d'encapsuler fontawesome directement dans app.scss.

 Intégrer les bibliothèques d'icônes dans app.scss

 La méthode que je préfère est d'utiliser sass pour intégrer les packs d'icônes directement dans les css au moment du build des feuilles de styles. Cela permet d'une part de ne pas surcharger inutilement les déclarations dans la balise head et d'autre part de tout gérer dans le app.scss.

La méthode est simple.

Dans un premier temps, il faut télécharger le zip de fontawesome pour scss, il contient deux répertoires, un qui s'appelle scss sur lequel nous allons faire les déclarations voulues et l'autre webfonts contenant les polices proprement dites en svg.

 Déclarer les chemins des bibliothèques de polices.

Ensuite nous allons nous placer dans notre fichier de configuration app.scss, ou nous allons déclarer dans l'import les fichiers scss dont nous aurons besoin.

Enfin, dans le fichier variables.scss, nous allons déclarer la variable $fa-font-path avec la valeur du chemin du répertoire webfonts.

Ce qui se résume si l'on mets toutes ces déclarations dans le fichier app.scss à cela.

 

  @import "./fontawesome/scss/fontawesome";
@import "./fontawesome/scss/solid";
Puis dans le fichier _variables.scss.
 $fa-font-path: '../webfonts';

Il ne vous reste plus qu'à lancer un watch ou un build sur votre sass préféré.

 

Article rédigé par GuruGeek le dimanche 28 juillet 2024

2024

28

jan.

Première utilisation de postgresql

0

Après l'installation du paquet PostgreSQL, il va nous falloir modifier les utilisateurs de postgre. En effet, l'utilisateur postgre est l'équivalent de root sous mysql et a tout les pouvoir sur l'ensemble des tables de la base.

Dans un premier temps on change d'utilisateur système.


> sudo -s -u postgres

Ensuite on lance le client postgres


> psql

On crée le nouvel utilisateur


> CREATE USER

On définit les rôles de ce nouvel utilisateur avec


CREATE ROLE WITH

ALTER ROLE WITH

Les options disponibles sont :

SUPERUSER | NOSUPERUSER

CREATEDB | NOCREATEDB

CREATEROLE|NOCREATEROLE

CREATEUSER|NOCREATEUSER

Enfin il nous reste à associer un mot de passe à l'utilisateur.


> ALTER USER WITH ENCRYPTED PASSWORD

Les commandes postgre utiles:


\q quitter postgre

\d liste les bases de données

\dt liste les tables, il est aussi possible d'utiliser les requêtes systèmes.

 

Article rédigé par GuruGeek le dimanche 28 janvier 2024

2024

28

jan.

Nouveau projet Angular

0

 Dans ce petit mémo nous allons voir comment créer un nouveau projet angular.

1ère étape : créer le projet

On créé un projet avec un module partagé ( c'est pourquoi il n'est pas standalone )


ng new routingApp --skip-tests --no-standalone

Article rédigé par GuruGeek le dimanche 28 janvier 2024

2024

27

jan.

Espaces de noms en php

0

Depuis PHP 5.4 il est possible afin d'éviter les colisions de noms d'organiser son code PHP à l'aide d'espaces de noms.

Pour ce faire nous avons besoin de plusieurs éléments.

  • Un répertoire qui contiendra les sources des fichiers php que nous souhaiterons utiliser.
  • Un autoloader que nous placerons dans le fichier index du site ou le fichier main du programme.
  • Les mots clés namespace sur les fichiers sources et use sur les fichiers qui utiliseront les bibliothéques.

Dans l'exemple suivant, nous allons créer une classe test qui sera accessible dans un fichier main. les différentes bibliothèques susceptibles d'être utilisées, le seront dans un répertoire intitulé src qu'ira parcourir l'autoloader.

  1.Créer une bibiothèque source

 repertoires sources

Dans le répertoire principal contenant le programme php, on va créer un répertoire src contenant tous les répertoires contenant les bibliothéques ainsi on aura test, Views et controllers.

Dans controllers on aura notre fichier requeteController.php contenant la classe requeteController.

Pour des raisons de facilité de lecture, il est conseillé d'appeler la classe du même nom que le fichier, mais il est possible de l'appeler différemment. Lors de l'appel il faudra néanmoins spécifier la différence. Il est également possible de créer des modules contenant des objets autres que des classes, comme des tableaux, des interfaces, etc.

 2.Code du fichier requeteController.php

<$php

namespace test\Controllers;

class requeteController{

    private int $mapropriete;
    private string $tapropriete;

    function __construct(int $param1,string $param2){

        $this->mapropriete=$param1;
        $this->tapropriete=$param2;
    }

    public function getMaPropriete(){
        return $this->mapropriete;
    }
}
?>


On voit que l'espace de noms est matérialisé par la première ligne. l'appel dans le fichier principal se fera sur cet espace de noms.

3.Code du fichier main.php

 

<$php

  use test\MyApp;
  use test\Controllers\requeteController;

  require('autoloader.php');

  $instance1=new MyApp(1,2);
  $requete=new requeteController(3,"chaine");

  print_r("la somme est ".$instance1->somme());
  print_r("requetecontroller=".$requete->getMaPropriete());

?>

L'appel à l'espace de nom s'effectue grâce au mot clé use. Toutefois l'appel ne peut aboutir si les fichiers de bibliothèques ne sont pas préalablement chargés par l'application. Contrairement à python ou la directive import charge le module et permet l'appel des classes. Dans PHP les deux traitements sont dissociés. C'est au fichier autoloader de charger les bibliothéques et de faire le lien entre l'espace de noms de la classe et l'arborescence de fichier. Quand l'autoloader trouve la correspondance, il effectue un require sur le fichier correspondant.

4.Code de autoloader.php


 
define('SRC_DIR','src\\');

$src_path=dirname(__FILE__).'\\'.SRC_DIR;

set_include_path($src_path);

function my_psr4_autoloader($class) {
    // replace namespace separators with directory separators in the relative
    // class name, append with .php
    $file_path =  dirname(__FILE__).'\\'.SRC_DIR . $class . '.php';
    $file = str_replace('\\', '/', $file_path);
   
    // if the file exists, require it
    if (file_exists($file_path)) {
        require $file_path;
    }
}
spl_autoload_register('my_psr4_autoloader');
?>
Dans le code de l'autoloader, on remarque qu'il faut spécifier un répertoire de départ à partir duquel rechercher les bibliothèques. Faire une substitution de chaine pour permettre la correspondance entre les espaces de noms et l'arborescence des fichiers.
Si le fichier existe, alors il est chargé à l'aide d'un require.
C'est la fonction spl_autoload_reqister qui a ce rôle via une fonction passée en callback. Ici my_psr4_autoloader.
Article rédigé par GuruGeek le samedi 27 janvier 2024

2020

02

déc.

Installation de sendmail

0

Sendmail est comme son nom l'indique un logiciel permettant d'envoyer des mails (pour des notificaitons par exemple) Dans cet exemple, je l'utillise en tant que relais smtp vers gmail.

La première chose est de l'installer

 

sudo apt update && apt upgrade && apt install sendmail libsasl2-dev libsasl2-2 libsasl2-modules

Le fichier de configuration est un fichier compilable /etc/mail/sendmail.mc Il faut également modifier le fichier /etc/hosts, on va y rajouter un nom de domaine pleinement qualifié. Votre fichier hosts ressemblera à ça :

127.0.0.1 localhost
127.0.1.1 localhost.localdomain localhost agprog

Ensuite on édite le fichier de configuration de sendmail après avoir fait une copie du fichier original

nano /etc/mail/sendmail.mc
j'ai commenté les lignes qui ne m'interessait pas, pour commenter une ligne on utilise l'expression dnl #
dnl # FEATURE(`delay_checks', `friend', `n')dnl
dnl # FEATURE(`conncontrol', `nodelay', `terminate')dnl
dnl # FEATURE(`ratecontrol', `nodelay', `terminate')dnl
Puis je rajoute les lignes correspondant au relais host et à l'authentification demandée par gmail. Le serveur demande un chiffrement TLS sur le port 587.
define(`SMART_HOST',`smtp.gmail.com')dnl
define(`confAUTH_MECHANISMS',`EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
Il me reste à créer dans la base de données de sendmail, l'utilisateur que je vais utiliser pour m'authentifier sur le smtp, je vais créer un fichier que j'appelerai authinfo.
#Dans authinfo
AuthInfo:smtp.gmail.com "U:session_user" "I: identifiant@gmail.com" "P: password" "M:PLAIN"
Je compile le fichier authinfo pour l'injecter dans la base de données.
sudo makemap hash authinfo < authinfo
Je rajoute les infos d'identification dans la configuration de sendmail /etc/mail/sendmail.mc
FEATURE(`authinfo',`hash /etc/mail/authinfo')dnl
Il me reste à compiler le fichier de configuration
sudo sendmail.config
On démarre le service saslauth s'il n'est pas démarré.
sudo service saslauthd start
Il ne reste plus qu'à tester en envoyer un message.
echo "message de test" | sendmail adresse_destinataire@fai.fai

 

Quelques options intéressantes

dnl # demander au serveur de relayer le local
GENERICS_DOMAIN(localhost.localdomain localhost)dnl
dnl # masquer son adresse par l'adresse de free.fr
MASQUERADE_AS(`fournisseur.fr')dnl
dnl # masquer le header mais aussi l'enveloppe
FEATURE(masquerade_envelope)dnl
Article rédigé par GuruGeek le mercredi 02 décembre 2020

2016

09

fév.

Installation de gitolite

0

Gitolite est le remplaçant officiel de gitosis dans les dépôts debian, il s'agit d' une refactorisation de gitosis réalisée par Sitaram Chamarty.

L'intérêt de ce nouvel interface réside d'une part dans le fait qu'un utilisateur de git ne peut pas se connecter au shell de l'utilisateur gérant les dépôts (git ou gitolite) et d'autre part, on peut gérer des permissions spécifiques aux branches.

1.Quelques bases

Pour comprendre le fonctionnement de gitolite, il faut bien appréhender le fait que l'on va utiliser un utilisateur systeme git pour faire fonctionner gitolite et gérer les dépôts.

C'est dans le répértoire de cet utilisateur que l'on installera le logiciel gitolite, c'est aussi à travers lui que s'effectuera l'authentification par clés ssh, enfin c'est lui qui gérera les permissions accordées sur les dépôts.

L'administrateur du serveur ou un utilisateur dédié à l'administration de gitolite sera utilisé pour la gestion de l'administration de gitolite, c'est sur son répertoire home que sera cloné le dépôt correspondant à gitolite-admin. C'est par son intermédiaire que nous créerons les dépôts, et les permissions via les clés publiques des utilisateurs de git. La mise à jour de la configuration s'effectuera en commitant les changements effectués sur le fichier de configuration de gitolite présent dans gitolite-admin/conf.

2.Installation de gitolite

1Si ce n'est pas déjà fait, on installe git (pour le moins) et openssh !

 > sudo apt-get install git-core openssh-server openssh-client 

2On ajoute au système l'utilisateur git

 > sudo useradd git -m -g git -d /home/git -s /bin/bash 

3 On ajoute un mot de passe au nouvel utilisateur git

 > sudo passwd git 

4A partir du compte de l'administrateur serveur standart sur lequel nous nous trouvons normalement,

on crée la clef ssh que nous appelerons admin

 ssh-keygen -t dsa 

on doit alors avoir une paire de clef dans le répertoire .ssh du compte administrateur admin et admin.pub, la clef ayant l'extension .pub étant la clef publique.

5Cette clé on va la copier via la commande ssh-copy vers le repertoire de l'utilisateur git qui à partir de là saura que les requêtes provenant du propriétaire de

cette clé seront autorisées. les clés autorisées seront copiées dans un fichier appelé .authorized-keys

 ssh-copy-id -i ~/.ssh/admin.pub <$git-user>@<$serveur> (serveur est normalement localhost,git-user est git) 

6 Maintenant nous devons changer d'utilisateur pour l'utilisateur git afin d'installer gitolite.

 > su git > git clone git://github.com/sitaramc/gitolite.git 

7On crée un répertoire bin dans lequel viendrons les executables de gitolite.

 > mkdir bin > gitolite/install -ln 

8 On se place dans le répertoire bin pour lier la clé admin.pub à gitolite.

 > cd bin > ./gitolite setup -pk ../.ssh/admin.pub 

9Lorsque c'est terminé on revient en tant qu'utilisateur "administrateur" et on clone le dépôt gitolite-admin.

 > su admin > git clone git@serveur:gitolite-admin 

10Si tout a fonctionné correctement, il doit se trouver dans votre répertoire utilisateur un répertoire nommé gitolite-admin.

Le fichier de configuration se trouve dans le sous répertoire conf et s'appelle gitolite.conf, les clés publiques des utilisateurs sont à placer dans le sous-répertoire keydir.

Pour la configuration des dépôts, je vous renvoie à la doc officielle qui est très bien faite.doc de gitolite

3.Troubleshooting !!!

Si lors de la connexion ssh le serveur demande un mot de passe alors c'est que comme pour moi, votre serveur n'a pas pu identifier la clé qu'il lui faut utiliser pour se connecter à git. Pas de panique, pour que votre serveur ssh retrouve ses petits, on créé dans le répertoire .ssh de votre dossier utilisateur un fichier de configuration spécifique. Dans ce dernier, on va créer des alias que l'on va utiliser pour se connecter avec la clé à utiliser. . Ne pas oublier de définir forward agent à yes dans le fichier.

Exemple pour un hôte gitolite :

 host gitolite user git hostname localhost identityfile ~/.ssh/admin.pub port 22  ForwardAgent yes 

Pour récupérer les dépôts, on utilisera alors l'alias créé qui se chargera pour nous de récupérer le bon fichier de clé publique.

 > git clone gitolite:gitolite-admin 

Gitolite est maintenant installé sur votre serveur. Attention à l'ordre des opérations... Et bon code à tous.

Article rédigé par GuruGeek le mardi 09 février 2016

2016

09

fév.

Utilisation de git

0

1. Objectifs de git

         Git permet de versionner le travail effectué dans le cadre de modifications, création et suppressions de fichiers. Contrairement aux autres systèmes de versionning comme subversion ou CVS, il ne se sert pas d'un serveur centralisé, les collaborateurs peuvent donc directement mettre à jour leurs dépôts, de l'un à l'autre avec ou sans serveur central.

2. Fonctionnement

Git fonctionne sur une base de données locale présente sous la forme d'un répertoire .git à l'intérieur du répertoire du travail à versionner. Lors de mis à jour du dépôt, il sera donc nécessaire de mettre à jour cette base de données locale avant toute migration du dépôt vers le serveur git.

3. Opérations de bases réalisées sur la copie locale

3.a Commande add

La commande add permet comme son nom l'indique d'ajouter un ou des fichiers au dépôle;t local.
Elle peut être utilisée comme suit :

 > add <$fichier1>,<$fichier2>,etc...  > add . ajoute tous les fichiers modifiés du répertoire pour enregistrement (commit) > add * ajoute tous les fichiers avec accés récursifs, sous répertoires inclus pour l'enregistrement 

3.b Commande commit

La commande commit enregistre les changements indiqué par la commande add
Sa syntaxe est la suivante :

 > commit (tout seul, il ouvre l'éditeur de texte nano pour documenter le commit). > commit -m '<$contenu du message>' version raccourcie sans utilisation de l'éditeur. > commit -a ou $commit -am '<$contenu du message="">' fait un contrôle préalable des mises à jour à enregistrer, remplace la commande add <$fichier> 

4. Création d'un nouveau dépôt qui contiendra les données locales du dossier de travail à versionner

Il y a deux possibilité lorsque l'on travaille avec git :

  1. Le répertoire de travail n'a pas encore de dépôt

Dans ce cas on execute la commande git init, qui initialise le dépôt en créant le sous répertoire caché .git dans le répertoire de travail.

 > git init 

 

  1. Un dépôt distant existe déjà :

On se place alors dans le répertoire parent du répertoire de travail et on clone le dépôt distant avec la commande git clone.

 

> git clone <$git-user>@<$git-server>:<$repo-name>

 

5. configuration du dépôt local 

On configure alors le dépôt local en renseignant le nom d'utilisateur du dépôt et son adresse emal par les commandes.

 git config --global user.name <$user-name> git config --global user.email <$user-email> 

6.  commandes liées à la mise à jour du dépôt local 

1.git add

 

git add permet de suivre les modifications des fichiers du répertoire de travail par rapport à ceux du dépôt courant et les marquer avant enregistrement.

 git add   <$fichier1>,<$fichier2> git add . (Récupére les fichiers et répertoires situés à la racine du dépôt sans exploration des répertoires et sous répertoires) git add * (Récupére l'ensemble des fichiers, avec accès récursif aux répertoires et sous répertoires) 

2.git status

La commande status permet de comparer les fichiers du répertoire de travail et ceux du dépôt courant (dernier commit)

 git status -s liste des fichiers modifiés avec type de modification format abrégé pour le format complet utiliser git status seul 

3.git diff

Git diff permet de visualiser les changements opérés dans les fichiers.

 > git diff --cached cette option permet de visualiser les contenus actifs pour mise à jour du dépôt, c'est à dire ceux qui seront modifiés lors du prochain commit > git diff –HEAD cette option liste les lignes modifiées ou non depuis le dernier commit 

4.git commit

Git commit permet l'enregistrement des modifications dans le dépôt local. Attention, si l'on utilise la commande git commit seule, un message des modifs effectuées est demandée au moyen de l'éditeur de texte.

 > git commit -a Cette option permet de suivre automatiquement les fichiers avant le commit. > git commit -m '<$message' permet d'éviter l'apparition de l'éditeur de texte pour la rédaction du message de commit > git commit -am '<$contenu>' permet d'effectuer les deux opérations ci dessus 

5.git reset

 git reset HEAD --file <$fichier> permet d'inverser le marquage d'un fichier équivalent de git unstage <$fichier> 
 git reset –mode  <$commit> permet de revenir à un ancien commit. Le mode permet de choisir si on veut modifier le répertoire de travail, l’index ou le dépôt Les modes disponibles sont : --soft, pour modifier uniquement le dépôt --mixed, pour modifier dépôt et index --hard, pour modifier dépôt, index et répertoire de travail 

6.git revert

La commande git revert permet d'inverser un ou plusieurs commits,

 > git revert <$commit> -e '<$message>' cette commande permet de modifier le contenu du message du dernier commit > git revert <$commit> -n permet de ne pas créer un commit pour l'inversion 

7.git rm

La commande rm permet d'enlever des fichiers du suivi, (des fichiers de configuration par exemple) et les efface du répertoire de travail.

 > git rm --cached <$fichier> permet de garder les fichiers sur le répertoire de travail en enlevant leur suivi par le logiciel de versionnement 

8.gitignore

Le fichier .gitignore contient l'ensemble des fichiers et repertoires sur lesquels n'effectuer aucun suivi. Il s'agit simplement d'une suite de fichiers ou reps. Le caractère joker * remplace toutes les occurences. *.pyc correspond à tous les fichiers de pseudo-codes python.

Il est possible de mettre le .gitignore à la racine ou en mettre plusieurs dans les diffèrents répertoires du projets.

Il est également possible d'utiliser le fichier .git/info/exclude dans le dépôt local.

Exemple :

rep/config/ "ignore tout le repertoire config"

*.pyc         "ignore tous les fichiers terminant en *.pyc"

test.txt       "ignore le fichier test.txt



7.Travail collaboratif avec git

Un dépôt à distance dipose d'une adresse de dépôt de la forme <$git-user>@<$git-server>:<$repo-name>.git par exemple git@github:myproject.git

1.Les remotes

Comme nous l'avons dit en préambule, pour partager un même travail, git n'a pas besoin de serveur centralisé et on peut utiliser plusieurs serveurs pour la mise à jour de nos dépôts. Par exemple un serveur d'entreprise et un github. Voire plusieurs collaborateurs qui possèdent leur serveur particuliers.

Chaque raccourci vers un dépôt distant s'appelle un remote, on peut créer autant de remotes que de dépôts distants à mettre à jour. Le remote par défaut est nommé origin.

 > git remote la commande seule permet de lister les remotes enregistrés. Si aucun remote supplémentaire n'a été ajouté il affichera origin. > git remote -v commande verbeuse retourne les noms de remote et les urls des dépôts distants correspondants. > git remote add <$remote> <$url-depot> cette commande ajoute l'url spécifié à l'alias correspondant au nom du remote. > git remote rm <$remote> supprime le remote nommé 

2.Les branches

Une branche permet de créer un dépôt local en « parrallèle » au dépôt principal pour pouvoir par exemple effectuer des modifications et les tester avant fusion avec le dépôt principal.

Les branches sont donc des entrées dans la base de données locale. La branche principale est nommée master.

 > git branch la commande seule permet de lister les branches du dépôt. > git branch <$nouvelle-branche> permet de créer une nouvelle branche. > git branch -d <$branche> permet d'effacer une branche existante > git checkout <$branche> permet de basculer dans le contexte de la branche, lors du git commit, les modifications seront dirigées vers la branche spécifiée. > git checkout -b <$nouvelle-branche> permet de créer la branche et de basculer automatiquement dans son contexte 

8.Mises à jour à partir du dépôt distant

Maintenant que nous avons vu l'utilité des branches et des remotes nous allons voir comment les mettre à jour, fusionner les branches et récupérer les mises à jour des dépôts distants.

 > git fetch télécharge les nouvelles branches et les données d'un dépôt sans fusionner avec la version actuelle. > git merge <$branche> précédé de git checkout master pour revenir à la branche principale avant la fusion . La commande permet la fusion de la branche concernée avec la branche principale. > git pull seule, cette commande met à jour le dépôt local à partir du distant définit par défaut et tente une fusion avec la branche principale. > git push seule, cette commande met à jour le dépôt distant à partir des données enregistrées localement lors du commit. > git (fetch, pull ou push) <$remote> optionnel <$branche> optionnel Les commandes push pull et fetch peuvent avoir des effets réduits si on spécifie la branche que l'on veut mettre à jour. > git push <$remote> <$branche> -u spécifie le nom du remote et celui de la branche par dé à utiliser lors des prochains pushs. 

9.Autres commandes

 > git rebase origin précédé de git checkout $lt;$nom branche> applique la fusion d'une branche sous forme de patch et permet de garder un historique de la branche fusionnée sous la forme d'une serie de commits. > git rebase --continue permet de contourner les conflits qu'il faudra résoudre manuellement > git rebase --abort permet d'annuler une opération de rebase en cours 
Article rédigé par GuruGeek le mardi 09 février 2016