Pages

Wednesday, June 30, 2021

How to add quickly Fontawesome with cakephp

I wanted to use Fontawesome with Bootstrap in my application.I thought it was simple but not really. I needed to search a little to acchieve this tasks.Here is a little reminder.


First, you have to download Bootsrap and Fontawesome files. Here is the link for fontawesome: https://fontawesome.com/v5.15/how-to-use/on-the-web/setup/hosting-font-awesome-yourself 

Then, you need to copy files in your webroot directory.This steps was confusing to me.So, here is some pictures of my cakephp directories.

Note : I created the webfonts directory



I pasted css and js files :

  • For Bootstrap, I added bootstrap.min.css and bootstrap.min.js
  • For Fontawesome, you need to add at least all.css and fontawesome.min.css (brand.css, solid.css are optional)



Then I added Fontawesome webfonts :



Once you added the files, you need to include them in your ctp file (In my case, it's the header.ctp file).

Here is an excerpt of header.ctp :

<?= $this->Html->charset() ?>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
    <?= $this->fetch('title') ?>
</title>
<?= $this->Html->meta('icon') ?>
<?= $this->Html->css('bootstrap_4.2.1.min.css') ?>
<?= $this->Html->css('bootstrap-select_1.13.9.min.css') ?>
<?= $this->Html->css('bootstrap-datepicker3_1.9.0.min.css') ?>
<?= $this->Html->css('all.css') ?>
<?= $this->Html->css('fontawesome.min.css') ?>
<?= $this->Html->css('brand.min.css') ?>
<?= $this->Html->css('solid.min.css') ?>
<?= $this->Html->script('jquery-3.4.1.slim.min.js') ?>


<!-- select date -->
<?= $this->Html->script('bootstrap-datepicker.1.9.0.min.js') ?>
<?= $this->Html->script('selectDate.js') ?>
<?= $this->Html->script('popper.1.14.6.min.js') ?>
<?= $this->Html->script('bootstrap.4.2.1.min.js') ?>
<?= $this->Html->script('bootstrap-select.1.13.9.min.js') ?>

To finish, you can use it. Here is an example of use :

        <i class="fas fa-user"></i> <!-- uses solid style -->
        <i class="far fa-user"></i> <!-- uses regular style -->
        <!--brand icon-->
        <i class="fab fa-github-square"></i>


Note : if you search the icon name, see the following link : https://fontawesome.com/v5.15/icons

Version :

  • bootstrap 4.2.1
  • fontawesome-free-5.15.1-web
  • cakephp-3.8



LinkedIn : exfiltration des données personnelles de 92% des utilisateurs

 

Attention, le site Linkedln vient d'être piraté. Ce piratage a conduit à l'exfiltration des données personnelles de 92% des utilisateurs.

https://www.midilibre.fr/2021/06/29/linkedin-un-pirate-met-en-vente-les-donnees-de-92-des-usagers-du-reseau-professionnel-9639414.php

Saturday, June 26, 2021

Code inspection warning : Optional parameter is provided before required

I am used to inspect my source code and tried to solve warning. I've had the warning : Optional parameter is provided before required

This warning occured on this line  : 

function generateMenu($level=1, $label, $code, $labos) {

}

The explanation of this warning is quite simple.Optional parameters (with default values) always should be at the end, otherwise they are not optional !

So you have to write your function like this : 

function generateMenu($label, $code, $labos, $level=1) {

}

PHP Storm 2021.1.3
PHP 7.1

Tuesday, June 22, 2021

A quand des institutions 2.0 pour en finir avec l’abstention?

 

Le constat

Taux abstention record 2021 !

Ce week-end nous avons assisté à une élection avec une abstention record, près de ⅔ des français ne se sont pas déplacés pour aller voter. C’est malheureusement une situation que nous revivons d’année en année.



Nous devons identifier tout d’abord l’origine du problème.

Premièrement, il faut bien le dire, nous n’avons pas eu énormément d'informations sur le sujet alors même que nous avons vu un flot de publicité sur le COVID.

De plus, même si nous connaissons les grandes lignes de ses élections, elles ne suscitent pas chez nous plus d’intérêts. Pris par le quotidien, nous avons du mal à cerner l’enjeu de ces élections et avons vite fait d’oublier.

Ensuite, le sentiment d’inutilité et de ne pas être entendu domine. Ainsi naît la résignation et on s’éloigne progressivement des urnes : “A quoi bon ?...”

Alors que faire ?




Des institutions qui nécessitent d’être modernisées


Nous devons le reconnaître, les institutions actuelles ont fait leurs preuves, elles sont stables avec des règlements et des lois qui permettent de garantir un bon fonctionnement. Par contre, on constate un éloignement des citoyens de la vie politique avec un sentiment d'abandon et d'inutilité. Cela se traduit par une abstention conséquente lors des élections et par conséquent cela menace notre démocratie.

Comment faire pour que les citoyens s'impliquent plus dans la vie institutionnelle de notre pays ?


Etre informé

La première étape pour réveiller notre démocratie consiste à être informé. Nous recevons actuellement des papiers avec le programme des candidats. Des papiers !!! A l’heure du numérique, c’est une aberration !

Il faudrait être notifié sur nos portables avec un résumé des enjeux et la possibilité de s’informer plus en détail. Le programme des candidats devrait être également consultable sur Internet. Il semble également évident que l’on devrait pouvoir disposer d’un bilan clair des actions réalisées ! Par exemple dans nos régions… Cela semble utopique mais avoir une synthèse de cela, nous permettrait de nous forger une opinion plus précise et également d’être informé.

D’ailleurs, comment être informé de ce qui se passe et qui va se passer ? Je vais dire un gros mot mais pourquoi nous n’utiliserions pas les réseaux sociaux ? Un compte Twitter !?!!





Vous allez me dire qu’il existe déjà des comptes Twitter pour le conseil départemental et pour d’autres institutions. Oui, mais ce n’est pas suffisant. Il faut que l’on puisse suivre réellement ce qui se passe, ce qui est voté ! Il faut que l’outil démocratique soit intégré à nos institutions.



Participer en temps réels à la vie démocratique

Actuellement, on peut “Consulter un rapport word sur le site de sa mairie au sujet du dernier conseil”. C’est souvent ce que l’on trouve dans les petites communes. C’est bien mais cela correspond à une époque qui à mon avis est révolue.

Une première idée serait d’assister en live aux différentes réunions. Par exemple, on pourrait voir en temps réels les textes et les votes aussi bien pour sa mairie, que pour le département ou sa région au travers d’un outil disponible pour chaque structure de nos institutions. C’est ambitieux mais c’est faisable ! 

On pourrait imaginer aussi connaître la position de son député sur un texte de loi.

Bien évidemment, le risque de ce genre d’outil serait certainement la surinformation mais des solutions techniques sont possibles.


Interagir avec les institutions

Un député devrait pouvoir connaître la position de ses concitoyens. On peut imaginer que cela apparaissent simplement dans l’interface d'un outil avec la possibilité d'interpeller le député sur un sujet. Il faut pouvoir interagir avec les citoyens et surtout il faut des débats ! 

On pourrait même imaginer que les votes des citoyens comptent dans une certaine mesure.


Une plateforme institutionnelle pour les débats

Le gouvernement souhaite avoir un avis. Plutôt qu’un référendum, procédé long à mettre en place, on pourrait imaginer une plateforme pour débattre et entendre les opinions de chacun. Certes, il faudra penser ces outils pour qu'ils soient lisibles et utilisables car si 20 millions de personnes donnent leurs avis, cela risque d’être compliqué. Mais enfin ! On arrive bien à le faire avec les réseaux sociaux, alors osons !

L'outil RIC avait été proposé, il faudrait peut être l'évaluer de manière objective.




Le vote numérique

Pourquoi ne pourrions-nous pas voter à partir de nos téléphones ? Certes il y a des questions de sécurité mais nous arrivons bien à protéger l’accès à nos comptes bancaires alors pourquoi ne pourrait-on pas sécuriser aussi notre bulletin de votes ? Il faut se lancer, innover.


Un député de l’internet


Nous avons des députés mais il en manque un ! Un député pour Internet car il s'agit d'un lieu à part entière. Un exemple récent ; une personnalité politique souhaitait enlever l’anonymat sur les réseaux sociaux. On lui a rétorqué que cela mettait en danger les personnes harcelées car les assaillants connaissaient alors l’identité de celles-ci. Seul une personne qui utilise et pratique les réseaux sociaux peut effectivement se rendre compte de ce genre de problématique. Il faudrait pour cela, un ou plusieurs représentants des internautes !



Conclusion


Nos institutions ont à mon avis besoin d’un coup de jeune, c’est faisable. Cependant, la mise en place de tels outils ne sera pas simple et mettra un certain temps avant d’être opérationnel. Le fait d’impliquer tous les citoyens dans nos institutions fera émerger des nouvelles idées et réduira considérablement l’abstention ainsi que le vote blanc. On cessera alors les débats “stupides” qui reviennent encore et encore à chaque élection. On aura enfin une démarche plus constructive. 



Monday, June 21, 2021

Gustave Flaubert (citation) Le temps qui passe


Une très belle citation  de Gustave Flaubert que l'on retrouve à maintes reprises sur Internet à propos du temps qui passe dans une lettre à Louise Collet :

L'avenir nous tourmente, le passé nous retient, c'est pour ça que le présent nous échappe. 

Change the color and size of bootstrap datepicker


To select a date, I use a datepicker. I've met a problem when I tried to cutomize it, my goal was to change the color and the size of my datepicker.
This reminder summarize the main step to do this. I test this feature with the cakephp framework but it is also possible to use without this framework.

I used the following form and jquery method to initialize my component :

<form method='post' action='home' id='form_date' >

<input type="text"  name="chooseReportDate"  class='form_datetime' onchange= "document . getElementById('form_date') . submit(); return false;" value=""/>

</form>


<script type="text/javascript">
    $(".form_datetime").datepicker({
        format: "yyyy-mm",
        language: "fr",
        weekStart: 1,
        minViewMode: 1,
    });
</script>

To change the color and add a round corner, I set the following css :

input.form_datetime {
    background-color: red;
    border-radius:5px;

To change the background of my datepicker, I need to do the following :

.datepicker.dropdown-menu table  {
    background-color: pink;
}


Version :
bootstrap-datepicker.1.9.0.min.js
bootstrap 4.2.1
cakephp-3.8

Note :
I made the following import in the header.ctp file :

<?= $this->Html->charset() ?>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
    <?= $this->fetch('title') ?>
</title>
<?= $this->Html->meta('icon') ?>
<?= $this->Html->css('bootstrap_4.2.1.min.css') ?>
<?= $this->Html->css('bootstrap-select_1.13.9.min.css') ?>
<?= $this->Html->css('bootstrap-datepicker3_1.9.0.min.css') ?>
<?= $this->Html->css('all.css') ?>
<?= $this->Html->css('fontawesome.min.css') ?>
<?= $this->Html->css('brand.min.css') ?>
<?= $this->Html->css('solid.min.css') ?>
<?= $this->Html->script('jquery-3.4.1.slim.min.js') ?>
<!-- select date -->
<?= $this->Html->script('bootstrap-datepicker.1.9.0.min.js') ?>
<?= $this->Html->script('selectDate.js') ?>
<?= $this->Html->script('popper.1.14.6.min.js') ?>
<?= $this->Html->script('bootstrap.4.2.1.min.js') ?>
<?= $this->Html->script('bootstrap-select.1.13.9.min.js') ?>
<?= $this->Html->css('yuzu.css') ?>




Saturday, June 19, 2021

Feedback : Upgrade composer 1 to composer 2 successful in my cake-php project


I upgrade composer because I had some warning :

Warning from https://repo.packagist.org: Support for Composer 1 is deprecated and some packages will not be available. You should upgrade to Composer 2. See https://blog.packagist.com/deprecating-composer-1-support/

To upgrade composer, you have to execute the following command :

composer self-update --2
composer update

The upgrade was successful.
However, I noticed the following warning in my cake-php project:

Package zendframework/zend-diactoros is abandoned, you should avoid using it. Use laminas/laminas-diactoros instead.
Package asm89/twig-cache-extension is abandoned, you should avoid using it. Use twig/cache-extension instead.
Package phpunit/php-token-stream is abandoned, you should avoid using it. No replacement was suggested.
Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested.

These warnings are only warnings caused by the cake-php version. I think I need to upgrade to 3.9.x version.


version : cake-php 3.8.X

Wednesday, June 16, 2021

cake-php : create and use a configuration file

 

This is a reminder to use variables from a configuration file with cake-php 3.8 framework.

Configuration file

First, create yuzu_config.php in config directory :

Then add your configuration like the following :

vi yuzu_config.php
<?php
return [
'organisation' => [
    'LABO' => [
        'code' => '3',
        'label' => 'label1',
        'level' => '1'
        ]
]];

In bootstrap.php, you have to load your configuration file :

Configure::load('yuzu_config', 'default');



The last step is to use it :

use Cake\Log\Log;
use Cake\Core\Configure;

$arr = Configure::read('organisation.LABO');
$code = $arr['code'];
Log::debug($code);


Version : cake-php 3.8.x





Tuesday, June 15, 2021

Monday, June 14, 2021

Digitale pourpre (Digitalis purpurea)

En ce moment, nous pouvons observer dans nos prés et forêts (aux alentours de Limoges), une plante magnifique d'une assez grande taille allant jusqu'à 2 m ! 

D'après ce que j'ai lu, cette plante est très toxique mais l'industrie pharmaceutique parvient à en extraire des substances utilisées pour le traitement de l'arythmie cardiaque.  

Cette plante fait des grappes de fleurs avec des petites tâches dans la lèvre inférieure pour guider les insectes jusqu'au nectar.


J'utilise l'application plantNet sur Android pour identifier les plantes. C'est une application que j'ai trouvé intuitive qui me permet de progresser en botanique, elle est à la portée de tous. J'ai ainsi pu identifier facilement un grand nombre de fleurs. 


Mon observation :https://identify.plantnet.org/fr/weurope/observations/1010996521

Saturday, June 12, 2021

Git : How to unversionned files ?

Sometimes, I commit files I don't want.This reminder explain how to remove theses files from GIT.

First, you can list files managed by your GIT repositories :

git ls-files => list des fichiers versionnés
git rm --cached .idea

Then, you have to delete unwanted files.In my case, I commited the .idea directory :

git rm -r --cached .idea
rm '.idea/$CACHE_FILE$'
rm '.idea/.gitignore'
rm '.idea/misc.xml'
rm '.idea/modules.xml'
rm '.idea/php.xml'
rm '.idea/vcs.xml'
rm '.idea/yuzu.iml'

If you check the status, you are going to see delete files :

git status
On branch master
Your branch is up to date with 'origin/master'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
        deleted:    .idea/$CACHE_FILE$
        deleted:    .idea/.gitignore
        deleted:    .idea/misc.xml
        deleted:    .idea/modules.xml
        deleted:    .idea/php.xml
        deleted:    .idea/vcs.xml
        deleted:    .idea/yuzu.iml

You only have to execute the commit command : git commit -m "Delete unwanted files"

The last step is to add the unwanted files or directory in the .gitignore file (.idea in my case) :

vi .gitignore 
.idea


GIT : version 2.17.0.windows.1

Thursday, June 10, 2021

Debian 10 : enable unattended upgrade

 This article is a simple reminder to enable unattended upgrade feature quickly under Debian 10.

Configuration

apt install unattended-upgrades
vi /etc/apt/apt.conf.d/50unattended-upgrades

You have to activate update automatically. In that case, we made package update 
and security update :

"origin=Debian,codename=${distro_codename},label=Debian";
"origin=Debian,codename=${distro_codename},label=Debian-Security";
Unattended-Upgrade::Mail mail@toto.fr;
dpkg-reconfigure --priority=low unattended-upgrades

systemctl status unattended-upgrades.service

Note : A mail is sent every week if update occurs.

More details : https://linuxhint.com/managing_debian_unattended_upgrades/

Frequency

cat /etc/apt/apt.conf.d/20auto-upgrades

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

You can check which packages are updated :

tail /var/log/dpkg.log


Set frequency

I didn't configure this feature but you could find more information :

https://unix.stackexchange.com/questions/342663/how-is-unattended-upgrades-started-and-how-can-i-modify-its-schedule

Tuesday, June 8, 2021

Git : How to recover your files after an improper handling ?

This small reminder permits to recover your project files very quickly without making an git clone.
For example, I use it if I delete files.

First stash your modifications :

git stash save "Bad manip"

git stash list

stash@{0}: On master: Bad manip
stash@{1}: On master: Menu publication

Then, you can delete your bad stash :

git stash drop stash@{0}

Dropped stash@{0} (838f86a5ea1ebb875f34adb1dd6fda9f1b6c89c3)

git stash list

stash@{0}: On master: Menu publication

That's all !

Feel free to comment.


GIT : version 2.17.0.windows.1

Friday, June 4, 2021

How to add CAS authentication to a PHP website ?

The main purpose of this article is to explain what you have to do in order to activate the CAS authentication. 

We will cover all steps needed to begin quickly with CAS !

My configuration :

  • Debian 9 Stretch
  • PHP 7.0
  • jasig/phpcas 1.4

Installation

You need the following Debian package :

apt-get install wget php-cli php-zip unzip

apt-get install php7.0-curl

Then, you have to install composer :

cd /root

wget -O composer-setup.php https://getcomposer.org/installer

php composer-setup.php --install-dir=/usr/local/bin --filename=composer

The next step is to add  the file composer.json with the referencies of phpcas:

{

    "require": {

        "jasig/phpcas": "^1.4"

    }

}

The composer update command retreives the phpcas library in your project (in vendor directory).So you need to execute the following :

cd /var/www/html/myproject

composer update

If you use git, don't fortget to add these lines in your .gitignore file :

vendor

composer.lock


How to use it in your PHP file ?

Here is a sample :

require __DIR__ . '/vendor/autoload.php';


// Enable debugging
phpCAS::setLogger();
// Enable verbose error messages. Disable in production!
phpCAS::setVerbose(true);
//phpCAS::setDebug("./err.log");

// initialize phpCAS
phpCAS::client(CAS_VERSION_2_0,'monserveur_cas.toto.fr',443,'/cas',FALSE);

// force CAS authentication
//phpCAS::setCasServerCACert($cas_server_ca_cert_path);
phpCAS::setNoCasServerValidation();
phpCAS::forceAuthentication();

// at this step, the user has been authenticated by the CAS server
// and the user's login name can be read with phpCAS::getUser().

if (!phpCAS::checkAuthentication()) {
die("Echec !");
}
$login = phpCAS::getUser();
print_r(phpCAS::getAttributes());
echo "===> LOGIN : $login";

Débutez en crypto-monnaie de manière ludique avec les projets "Move to earn"

Les projets "Move to earn" sont des projets très en vogue en ce moment dans le monde de la crypto-monnaie. Le principe est simple ...