Programmation

javascript

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

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

php

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

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