FontAwesome 5 Pro and Free Json CheatSheet

The FontAwesome 5 cheatsheet is not up to date, I created a gist to reference the icons for the Free and Pro versions.

FontAwesome 5 Pro Json CheatSheet

FontAwesome 5 Free Json CheatSheet

If you want to generate a different file, here is also a much more complete json that you can parse yourself:

FontAwesome 5 Full Json Data

Used Version : 5.0.12

,

PHP Script To Copy Files Recursively With Options

This script will help you copy files and folders from one location to another, recursively.
For each file or folder you can have copy options.

Here is an example conf file :

:: GitHub File ::
[/etc/php/cacert.pem] keep_existing = 1 [/etc/nginx/nginx.conf] keep_existing = 0 backup = 1 [/etc/nginx/sites-available/default] keep_existing = 0 backup = 1 [/etc/nginx] keep_existing = 1 [/home/default] keep_existing = 1

In this example, the file data/etc/nginx/sites-available/default will be copied to /etc/nginx/sites-available/default, and if the file already exists it will be backuped and overwritten.
In the same way, all the files inside data/etc/nginx will be copied to /etc/nginx, but existing file will be ignored.

How To

Place folders and files that you want to copy in data/
Edit filecopier-config.ini to configure which files and folders you want to copy, backup and overwrite

Command Lines :

php filecopier.php process_all [options]

This command will execute every entries in the filecopier-config.ini file

Config file options :

option values default description
keep_existing 1/0 0 keep file if already exists, do not overwrite it
backup 1/0 0 create a backup of the file if exists, then copy the new file
debug 1/0 0 write the copy in a test/ folder
php confeditor.php process filepath [options]

This command will copy the file located in data/filepath to filepath

Cmd options :

option equivalent values default
-ke keep_existing 1/0 0
-b backup 1/0 0
-d debug 1/0 0

PHP Script

:: GitHub File ::
<?php if(count($argv) >= 2 ) { if($argv[1] == 'process' && count($argv) >= 4 ) { process($argv[2], $argv[3]); } else if($argv[1] == 'process-all' ) { $config = parse_ini('confeditor-config.ini',false,false); //print_r($config); //exit(); foreach($config as $k=>$v) { $AddEdit = $k; $original = $v['original']; process($k, $original, $v); } } } function process( $editFileName, $originalFile, $config = null ) { global $argv; // gettings extra params $keepComments = getSetting( $config, $argv, 'keep_comments', '-kc', false, false); $keepEmptyLines = getSetting( $config, $argv, 'keep_empty_lines', '-kel', false, false); $sort = getSetting( $config, $argv, 'sort', '-sort', false, false); $debug = getSetting( $config, $argv, 'debug', '-d', false, false); $separator = getSetting( $config, $argv, 'separator', '-sep', true, '='); $commentRegex = getSetting( $config, $argv, 'comment_regex', '-cr', true, '-^(;|#)-'); $separator = str_replace('"', '', $separator); $commentRegex = str_replace('"', '',$commentRegex); //exit( '$keepComments '.$keepComments. ' $keepEmptyLines '.$keepEmptyLines. ' $sort '.$sort.' $separator '.$separator.' $commentRegex '.$commentRegex.' $debug '.$debug); $editFile = './data/'.$editFileName; if(!file_exists($editFile)) die( "editFile does not exist ".$editFile); if(!file_exists($originalFile)) die( "originalFile does not exist ".$originalFile); $to = $debug ? $originalFile.'-new.ini' : $originalFile; backup_file($originalFile); $ini = parse_ini($originalFile, $keepComments, $keepEmptyLines, $separator, $commentRegex ); $iniNewValues = parse_ini($editFile, false, false); $iniEdited = edit_ini($ini, $iniNewValues, $sort); save_ini($to, $iniEdited); //print_r($config); print_r($ini); print_r($iniNewValues); print_r($iniEdited); //$ini2 = parse_ini($file2, true); //print_r($ini2); } function getSetting( $config, $argv, $varName, $argName, $keepNextArg, $default) { if(!empty($config) && isset($config[$varName])) return $config[$varName]; if(!empty($argv) && !empty($argName) ) { if(in_array($argName, $argv) ) return $keepNextArg ? $argv[ array_search($argName, $argv) + 1 ] : true; } return $default; } function backup_file ($file) { //echo $file.'.bak'; if(!copy( $file, $file.'.bak')) //if(!file_put_contents( $file.'.bak', file_get_contents( $file))) exit("la création du backup a échoué"); } function edit_ini ( $ini, $iniNewValues, $sort = false ) { $ini = array_replace_recursive( $ini, $iniNewValues ); $globals = []; $sections = []; foreach( $ini as $k=>$v) { if(is_array($v)) //section $sections[$k] = $v; else $globals[$k] = $v; } if($sort) { ksort($globals); //print_r($globals); foreach($sections as $k => $v) { ksort($v); $sections[$k] = $v; //print_r($sections[$k]); } } return $globals + $sections; } function save_ini ( $filepath, $ini, $save = true ) { $str = ''; foreach( $ini as $k=>$v) { if(is_array($v)) //section { $str .= "[$k]".PHP_EOL; $str .= save_ini( '', $v, false); }else { if( preg_match('#^comment#', $k )) $str .= $v.PHP_EOL; else if( preg_match('#^empty#', $k )) $str .= PHP_EOL; else $str .= "$k = $v".PHP_EOL; } } if($save) file_put_contents($filepath, $str ); else return $str; } function parse_ini ( $filepath, $keepComments = true, $keepEmptyLines = true, $separator = '=', $commentRegex = '-^(;|#)-' ) { $ini = file( $filepath ); if ( count( $ini ) == 0 ) { return array(); } $sections = array(); $values = array(); $globals = array(); $result = array(); $i = 0; $j = 0; foreach( $ini as $line ){ $line = trim( $line ); // Sections if ( !empty($line) && $line{0} == '[' ) { $sections[] = substr( $line, 1, -1 ); $i++; continue; } // Key-value pair if ( $line == '' ) { if($keepEmptyLines) { $key = 'empty'.$j++; $value = $line; //echo $value; } else continue; }else if ( preg_match($commentRegex, $line) ) { if($keepComments ) { $key = 'comment'.$j++; $value = $line; //echo $value }else continue; }else if( preg_match( '#'.$separator.'#', $line)){ list( $key, $value ) = explode( $separator, $line, 2 ); } $key = trim( $key ); $value = trim( $value ); if ( $i == 0 ) { // Array values if ( substr( $line, -1, 2 ) == '[]' ) { $globals[ $key ][] = $value; } else { $globals[ $key ] = $value; } } else { // Array values if ( substr( $line, -1, 2 ) == '[]' ) { $values[ $i - 1 ][ $key ][] = $value; } else { $values[ $i - 1 ][ $key ] = $value; } } } for( $j=0; $j<$i; $j++ ) { $result[ $sections[ $j ] ] = $values[ $j ]; } return $globals + $result; } ?>

The full repository is here : https://github.com/anthonykozak/iniTools

How To Edit ini & conf Files With Shell Scripts

I wrote some scripts to help editing ini files and conf files while reinstalling my servers.

The script is able to process multiple files at once and will add or edit the parameters you want automatically.

the configuration file looks like this :

:: GitHub File ::
[_www.conf] original = /etc/php/5.6/fpm/pool.d/www.conf keep_comments = 0 keep_empty_lines = 0 sort = 1 [_sysctl.conf] original = /etc/sysctl.conf keep_comments = 1 keep_empty_lines = 1 [_php-fpm.conf] original = /etc/php/5.6/fpm/php-fpm.conf keep_comments = 0 keep_empty_lines = 0 [_php.ini] original = /etc/php/5.6/fpm/php.ini keep_comments = 1 keep_empty_lines = 1

As you can see for each file I want to edit, there is a small file containing only the lines I need to be edited or added. For exxample the _php-fpm.conf file looks like this :

:: GitHub File ::
[global] error_log = /var/log/php/php-fpm.log emergency_restart_threshold = 10 emergency_restart_interval = 1m process_control_timeout = 20s

 

Command Lines :

php confeditor.php process_all [options]

This command will execute every entries in the confeditor-config.ini file

file options :

option values default description
keep_comments 1/0 0 keep comment lines in the target file
keep_empty_lines 1/0 0 keep empty lines in target file
sort 1/0 0 sort ini keys in each section
debug 1/0 0 do not write in files but create a ‘-new’ file instead
separator string ‘=’ separator for key & values
comment_regex regex ‘-^(;|#)-‘ what defines a comment
php confeditor.php process sample-file target-file [options]

This command will merge the target-file with the lines inside the data/sample-file

Cmd options :

option equivalent values default
-kc keep_comments 1/0 0
-kel keep_empty_lines 1/0 0
-sort sort 1/0 0
-d debug 1/0 0
-sep separator string ‘=’
-cr comment_regex string ‘-^(;|#)-‘

The main repository is here : https://github.com/anthonykozak/iniTools

Upgrade EasyPHP’s php version without having to pay for warehouse

So you like Easyphp and you just want to upgrade you PHP version?

Easyphp now comes with a website called Warehouse, allowing you to download modules and components but the access is not free. Of course there is plenty of reasons you would pay for such service but if you like me just want to upgrade your PHP version follow those steps :

1. Download the windows PHP version you want on the official site : http://windows.php.net/download/, for example the VC11 x86 Thread Safe (2016-Jun-22 21:49:59) version. (I did not tested with the a x64 version).

2. Unzip the package to your EasyPHP “php” folder. (Create a folder with your version name) for example : C:\EasyPHP-DevServer-14.1VC9\binaries\php\php-5.6\

3. Copy the file “easyphp.php” from php_runningversion/easyphp.php to php-5.6/easyphp.php and edit it.

4. Just indicate a version number, a dir name and a new date greater that the previous one

<?php
$phpversion = array();
$phpversion = array(
"status"    => "0",
"dirname"    => "php5623x160719154425",
"name"         => "PHP",
"version"     => "5.6.23",
"date"         => "2016-07-20 15:44:24",
"notes"     => "",
);
?>

5. Go to you EasyPHP admin page and click on the link to change your php version (http://127.0.0.1/home/index.php?page=php-page&display=changephpversion). Your version should appear on the list, select it.

6. Restart EasyPhp your version should be upgraded. Now be sure to download the appropriate extensions for your version on the official site : http://windows.php.net/downloads/pecl/releases/