Sous Windows, pour savoir quel processus utilise un port, lancez la commande Get-Process
dans Powershell :
Exemple pour le port 5433
:
Get-Process -Id (Get-NetTCPConnection -LocalPort 5433).OwningProcess
Publié le :
Sous Windows, pour savoir quel processus utilise un port, lancez la commande Get-Process
dans Powershell :
Exemple pour le port 5433
:
Get-Process -Id (Get-NetTCPConnection -LocalPort 5433).OwningProcess
Publié le :
Sous Linux, l’utilitaire ncdu (pour NCurses Disk Usage) permet de trouver quel fichier ou répertoire vous bouffe tout votre espace disque.
Il est disponible sur les dépôts officiels Debian et Ubuntu et donc facile à installer.
sudo apt install ncdu
ncdu
Note : ncdu a été réécrit dans une v2 encore récente. Selon la version des dépôts, c’est peut-être la v1 qui sera installée.
Modifié le :
Publié le :
Pour supprimer tous les conteneurs docker :
docker rm $(docker ps -a -q)
Pour supprimer toutes les images docker :
docker rmi $(docker images -q)
Pour supprimer tous les volumes docker :
docker volume prune
Modifié le :
Publié le :
Sous Linux, vous pouvez utiliser la commande suivante pour savoir quel processus utilise un port :
# Pour le port 80
netstat -tlnp | grep 80
Cela retournera par exemple :
tcp6 0 0 :::80 :::* LISTEN 32198/apache2
L'ID du processus étant ici 32198
.
Remarque :
Pour voir tous les processus, il sera peut-être nécessaire de lancer la commande en tant que root
(ou avec sudo
).
Modifié le :
Publié le :
PHP 7 introduit 2 nouveaux opérateurs : ??
et <=>
, nommés respectivement Null coalescent et Spaceship.
Cet opérateur permet de simplifier l'affectation des valeurs par défaut via les opérateurs ternaires :
$value = (isset($x) && $x !== null) ? $x : $defaultValue;
peut maintenant s'écrire :
$value = $x ?? $defaultValue;
Comme l'indique la documentation, il permet de vérifier si une variable existe et est non nulle.
Remarque :
Il ne faut pas le confondre avec l'opérateur ternaire "abrégé" (depuis PHP 5.3), à savoir ?:
.
Celui-ci permet juste d'omettre la partie centrale, sans vérifier l'existence de la variable.
$value = $x ?: $valueIfXIsFalse;
$value
devient $x
si $x
est considéré comme "vrai" . $value
devient $valueIfXIsFalse
si $x
est considéré comme "faux".
Contrairement au null coalescent, il reverra un warning si $x
n'est pas défini.
Cet opérateur permet de simplifier la comparaison entre deux variables :
$comparison = ($a < $b) ? -1 : (($a > $b) ? 1 : 0);
peut maintenant s'écrire :
$comparison = $a <=> $b;
Comme l'indique la documentation,
cet opérateur retourne donc -1
, 1
ou 0
selon la différence entre $a
et $b
.
Publié le :
Pour connaître le poids total des fichiers (et sous-répertoires) que contient un répertoire,
vous pouvez utiliser la commande du
:
du -shL mon/repertoire
Explication :
Les options s
, h
et L
permettent respectivement de
faire la somme, afficher un poids lisible par un humain (en Ko, Mo, ...)
plutôt qu'en octets et suivre les liens symboliques (plutôt que de compter le poids du lien).
Pour connaître le nombre de fichiers il faut cette fois composer avec plusieurs commandes :
find -L mon/repertoire -type f | wc -l
Explications :
find
avec l'option -type f
permet de lister les fichiers-L
permet de suivre les liens symboliqueswc -l
compte le nombre de lignes (ici celles retournées par find
)Modifié le :
Publié le :
Si vous êtes sous une distribution avec apt d'installé, vous pouvez rechercher un paquet avec la commande suivante :
apt-cache search terme1 terme2
Remarques :
apt-cache search php.*memcach
.Si vous avez aptitude d'installé, une commande plus simple à mémoriser existe :
aptitude search terme1 terme2
Modifié le :
Publié le :
Pour créer un lien symbolique sou linux, il suffit d'utiliser la commande suivante :
ln -s chemin/vers/la/cible/du/lien chemin/vers/lien
Le premier paramètre contient le répertoire ou fichier à cibler, et le second le chemin/nom du lien à créer.
Les chemins peuvent-être relatifs ou absolus.
Modifié le :
Publié le :
Sous linux, vous pouvez rapidement connaître l'espace disque restant grâce à la commande :
df -h
Note : comme pour beaucoup d'autres commandes Linux, l'option -h
permet un affichage plus humain, notamment
pour le poids des fichiers (ie. 1.2mo au lieu de 1200000).
Modifié le :
Publié le :
Pour pouvoir exporter/importer une base de données PostgreSQL vous devrez sans doute vous connecter avec
l'utilisateur système postgres
.
Ex:
sudo su - postgres
Pour créer un dump de votre base de données utilisez la commande suivante :
pg_dump -U username -h localhost dbname > path/to/dump.sql
Par défaut :
localhost
5432
D'autres options sont possibles.
Remarque :
Même si c'est la valeur par défaut, il est parfois nécessaire de préciser l'hôte dans la commande, pour indiquer au client postgres que vous accédez à la base via une connexion TCP et non PEER.
La commande d'import est similaire à celle de dump :
psql -U username -h localhost dbname < path/to/dump.sql
Par défaut :
localhost
5432
Modifié le :
Publié le :
Pour connaitre votre distribution et sa version, utilisez la commande suivante :
lsb_release -a
Remarque :
Cette commande n'est pas forcément installée par défaut sur votre machine. Elle se trouve sûrement dans le dépôt officiel et peut être ajoutée grâce à yum ou apt.
Modifié le :
Publié le :
Pour créer un lien symbolique sous Windows, il faut utiliser la commande symlink
:
mklink [[/D] | [/H] | [/J]] <Lien> <Cible>
Pour cela, lancez une invite de commande :
cmd
et validezSi par exemple vous souhaitez pouvoir accéder au répertoire C:\Windows\System32\drivers\etc
directement via C:\etc
, tapez cette commande :
mklink /J C:\etc C:\Windows\System32\drivers\etc
Remarques :
/D
et non pas /J
. Cela créera un lien symbolique et non pas une jonction.Modifié le :
Publié le :
Si vous souhaitez formater un numéro de téléphone, un IBAN, ou n'importe quelle chaîne en y ajoutant régulièrement un séparateur, cette fonction peut vous être utile :
/**
* Formate une chaîne en ajoutant un séparateur tous les <code>length</code> caractères.
*
* @param string Chaîne à formater
* @param separator Séparateur à ajouter
* @param length Taille des groupes de caractères à séparer
* @return La chaîne formatée
*/
public static String addChar(String string, String separator, int length) {
if (string != null && string.length() > length) {
string = string.replaceAll("([^\\s]{" + length + "})", "$0" + separator);
}
return string;
}
Modifié le :
Publié le :
Voici une méthode pour tester si une chaîne est vide ou contient uniquement des espaces :
/**
* Retourne si la chaîne en argument est vide ou contient uniquement des espaces.
*
* @param string Chaîne
* @return <code>true</code> si la chaîne est nulle, vide, ou s'il ne contient que des caractères espaces (ex: \n \r \s, ...) y compris les espaces insécables.
*/
public static boolean isEmpty(String string) {
boolean isEmpty = true;
if (string != null) {
isEmpty = "".equals(string.replaceAll("[\\s|\\u00A0]+", ""));
}
return isEmpty;
}
Remarque :
\u00A0
représente les espaces insécables.
Si on utilise uniquement \s
dans le remplacement, ils ne seront pas considérés comme des espaces.
Modifié le :
Publié le :
Si vous avez besoin de chiffrer une chaîne de caractères en Java, vous pouvez utiliser ces deux méthodes :
/**
* Chiffre la chaîne en argument en utilisant la clé fournie.
* Ajoute le suffixe à la chaîne chiffrée puis convertit le tout en base64.
*
* @param string Chaîne à chiffrer
* @param keyString Clé de chiffrement
* @param suffix Suffixe à ajouter à la chaîne (ex: la date au format yyyyMMdd)
* @return la chaîne chiffrée + le suffixe, en base64
* @throws RESTTechnicalException
*/
public static String encrypt(String string, String keyString, String suffix) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException {
String encryptedB64String = null;
// Chiffrement de la chaîne
Key key = new SecretKeySpec(keyString.getBytes("UTF-8"), "Blowfish");
Cipher cipher = Cipher.getInstance("Blowfish");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encryptedString = cipher.doFinal(string.getBytes("UTF-8"));
// Ajout du suffixe
encryptedString = JavaUtil.mergeArray(encryptedString, suffix.getBytes());
// Encodage de la chaîne en base 64
encryptedB64String = Base64.encodeBase64String(encryptedString);
return encryptedB64String;
}
/**
* Déchiffre la chaîne en argument en utilisant la clé fournie.
*
* @param b64String Chaîne chiffrée + le suffixe, en base 64
* @param keyString Clé de déchiffrement
* @param suffix Suffixe à ajouter à la chaîne (ex: la date au format yyyyMMdd)
* @return la chaîne déchiffrée
* @throws RESTTechnicalException
*/
public static String decrypt(String b64String, String keyString, String suffix) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException {
String decryptedString = null;
// Décodage de la chaîne en base 64
byte[] string = Base64.decodeBase64(b64String);
// Suppression du suffixe
string = JavaUtil.truncateArray(string, suffix.length());
// Déchiffrement de la chaîne
Key key = new SecretKeySpec(keyString.getBytes("UTF-8"), "Blowfish");
Cipher cipher = Cipher.getInstance("Blowfish");
cipher.init(Cipher.DECRYPT_MODE, key);
decryptedString = new String(cipher.doFinal(string));
return decryptedString;
}
Explications :
Remarques :
Le code des méthodes JavaUtil.truncateArray()
et JavaUtil.mergeArray()
est disponible ci-dessous :
/**
* Tronque le tableau de byte en arguments.
*
* @param array Tableau à tronquer
* @param maxSize Taille maximale du tableau à conserver
* @return le tableau tronqué
*/
public static byte[] truncateArray(byte[] array, int maxSize) {
int newArraySize = Math.min(array.length, maxSize);
byte[] newArray = new byte[newArraySize];
System.arraycopy(array, 0, newArray, 0, maxSize);
return newArray;
}
/**
* Merge les deux tableaux en arguments.
*
* @param first Premier tableau
* @param second Second tableau
* @return
*/
public static byte[] mergeArray(byte[] first, byte[] second) {
byte[] result = Arrays.copyOf(first, first.length + second.length);
System.arraycopy(second, 0, result, first.length, second.length);
return result;
}
Modifié le :
Publié le :
Lorsque vous créez une nouvelle classe en Java, elle hérite de la méthode toString() de la classe Object. Par défaut, cette méthode n'affiche rien de bien compréhensible.
Vous pouvez la surcharger pour afficher lisiblement les valeurs de tous les champs de votre objet de cette manière :
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
}
Grâce à l'introspection et à la librairie org.apache.commons, ces quelques lignes de code fonctionneront pour toutes vos classes.
Modifié le :
Publié le :
Sous Linux, pour savoir les tâches planifiées pour l'utilisateur courant, utilisez la commande suivante :
crontab -l
Modifié le :
Publié le :
Pour ajouter une variable d'environnement ou en modifier la valeur, utilisez la commande :
export INSTALL4J_JAVA_HOME='/var/lib/jdk1.6.0_33'
en remplaçant INSTALL4J_JAVA_HOME
par le nom de la variable à définir et en modifiant la valeur entre 'quotes'.
Pour que cette variable soit définie automatiquement lorsque vous utilisez la console, il faut modifier le fichier
.bashrc
dans le dossier home de l'utilisateur pouvant utiliser cette variable.
Pour l'utilisateur root
par exemple, il s'agit du fichier /root/.bashrc
.
Dans ce fichier, ajoutez la même commande :
export INSTALL4J_JAVA_HOME='/var/lib/jdk1.6.0_33'
Modifié le :
Publié le :
Pour créer un dump de votre base de données, utilisez la commande suivante :
mysqldump --host=localhost --port=3306 --databases database1_name database2_name --user=my_user --password=my_password > path/to/dump.sql
Par défaut :
localhost
3306
Vous devez spécifier la ou les bases de données à sauvegarder, ainsi que les login et mot de passe d'un utilisateur ayant le droit de consultation de la base.
La commande d'import est similaire à celle de dump :
mysql --host=localhost --port=3606 --user=my_user --password=my_password --default_character_set utf8 database_name < path/to/dump.sql
Modifié le :
Publié le :
Pour créer une archive tar.gz
sans le dossier conteneur, utilisez la commande :
cd mon/repertoire/conteneur
tar -czf ../archive.tar.gz ./
Pour extraire une archive tar.gz
, utilisez la commande :
tar -xvzf archive.tar.gz
Modifié le :
Publié le :
Pour supprimer récursivement tous les répertoires vides d'une arborescence, utilisez la commande :
find -depth -type d -empty -exec rmdir {} \;