Selector Example Example description
.class .intro Selects all elements with class=”intro”
#id #firstname Selects the element with id=”firstname”
* * Selects all elements
element p Selects all <p> elements
element,element div, p Selects all <div> elements and all <p> elements
element element div p Selects all <p> elements inside <div> elements
element>element div > p Selects all <p> elements where the parent is a <div> element
element+element div + p Selects all <p> elements that are placed immediately after <div> elements
element1~element2 p ~ ul Selects every <ul> element that are preceded by a <p> element
[attribute] [target] Selects all elements with a target attribute
[attribute=value] [target=_blank] Selects all elements with target=”_blank”
[attribute~=value] [title~=flower] Selects all elements with a title attribute containing the word “flower”
[attribute|=value] [lang|=en] Selects all elements with a lang attribute value starting with “en”
[attribute^=value] a[href^=”https”] Selects every <a> element whose href attribute value begins with “https”
[attribute$=value] a[href$=”.pdf”] Selects every <a> element whose href attribute value ends with “.pdf”
[attribute*=value] a[href*=”w3schools”] Selects every <a> element whose href attribute value contains the substring
“w3schools”
:active a:active Selects the active link
::after p::after Insert content after every <p> element
::before p::before Insert content before the content of every <p> element
:checked input:checked Selects every checked <input> element
:disabled input:disabled Selects every disabled <input> element
:empty p:empty Selects every <p> element that has no children (including text nodes)
:enabled input:enabled Selects every enabled <input> element
:first-child p:first-child Selects every <p> element that is the first child of its parent
::first-letter p::first-letter Selects the first letter of every <p> element
::first-line p::first-line Selects the first line of every <p> element
:first-of-type p:first-of-type Selects every <p> element that is the first <p> element of its parent
:focus input:focus Selects the input element which has focus
:hover a:hover Selects links on mouse over
:in-range input:in-range Selects input elements with a value within a specified range
:invalid input:invalid Selects all input elements with an invalid value
:lang(language) p:lang(it) Selects every <p> element with a lang attribute equal to “it”
(Italian)
:last-child p:last-child Selects every <p> element that is the last child of its parent
:last-of-type p:last-of-type Selects every <p> element that is the last <p> element of its parent
:link a:link Selects all unvisited links
:not(selector) :not(p) Selects every element that is not a <p> element
:nth-child(n) p:nth-child(2) Selects every <p> element that is the second child of its parent
:nth-last-child(n) p:nth-last-child(2) Selects every <p> element that is the second child of its parent, counting
from the last child
:nth-last-of-type(n) p:nth-last-of-type(2) Selects every <p> element that is the second <p> element of its parent, counting
from the last child
:nth-of-type(n) p:nth-of-type(2) Selects every <p> element that is the second <p> element of its parent
:only-of-type p:only-of-type Selects every <p> element that is the only <p> element of its
parent
:only-child p:only-child Selects every <p> element that is the only child of its parent
:optional input:optional Selects input elements with no “required” attribute
:out-of-range input:out-of-range Selects input elements with a value outside a specified range
:read-only input:read-only Selects input elements with the “readonly” attribute specified
:read-write input:read-write Selects input elements with the “readonly” attribute NOT specified
:required input:required Selects input elements with the “required” attribute specified
:root :root Selects the document’s root element
::selection ::selection Selects the portion of an element that is selected by a user
:target #news:target Selects the current active #news element (clicked on a URL containing that anchor name)
:valid input:valid Selects all input elements with a valid value
:visited a:visited Selects all visited links

Désactiver les mises à jour automatiques :
Ajouter dans le fichier wp-config.php
define( 'AUTOMATIC_UPDATER_DISABLED', true );

Désactiver l’éditeur interne de fichiers de WordPress :
Ajouter dans le fichier wp-config.php
define( 'DISALLOW_FILE_EDIT', true );

Désactiver le versionning auto des articles (revisions) :
Ajouter dans le fichier wp-config.php
define('WP_POST_REVISIONS', false);

Faire un fichier .po qui contient les traductions.
Le fichier doit avoir le nom du plugin auquel on rajoute -fr_FR

Le fichier contient :

# Translation of plugin amr-users in French (France)
# This file is distributed under the license wtfpl http://www.wtfpl.net

msgid ""
msgstr ""
"Project-Id-Version: Version 1"
"Report-Msgid-Bugs-To: Personne"
"POT-Creation-Date: 05/08/2014"
"MIME-Version: 1.0"
"Content-Type: text/plain; charset=UTF-8"
"Content-Transfer-Encoding: 8bit"
"Plural-Forms: nplurals=2; plural=n>1;"
"Language: fr_FR"
"X-Generator: Vim est ton ami"

#: amr-users/includes/ausers-pluggable.php:1117
msgid "Displaying %s–%s of %s"
msgstr "Affichage de %s à %s sur %s"

 

Compiler en .mo :
# msgfmt -o nom_du_plugin-fr_FR.mo nom_du_plugin-fr_FR.po

Déposer le fichier .mo dans :
../wp-content/languages/plugins/nom_du_plugin-fr_FR.mo

Installer le paquet :
# apt-get install google-sitemapgen

Se placer dans le répertoire du site :
# cd /var/www/site/

Récupérer le fichier de config :
# cp /usr/share/doc/google-sitemapgen/examples/example_config.xml.gz .

Dézipper :
# gunzip -d example_config.xml.gz

Renommer :
# mv example_config.xml sitemap_config.xml

Paramétrer le fichier de conf :
# vi sitemap_config.xml

1) Définir les paramètres généraux :

<site base_url="http://www.site.com/"
store_into="/var/www/site/sitemap.xml"
verbose="1"
sitemap_type="web">

 
2) Ajouter manuellement des urls qui ne bougeront jamais.

3) Définir une liste d’urls depuis un document externe.

4) Rajouter un répertoire entier à rajouter au sitemap.

5) Parcourir les logs pour récupérer des urls :

<accesslog path="/var/log/apache2/access.log" encoding="UTF-8" />
<accesslog path="/var/log/apache2/access.log.1" encoding="UTF-8" />
<accesslog path="/var/log/apache2/access.log.2.gz" encoding="UTF-8" />

 
6) Filtrer pour ne pas avoir dans le sitemap des urls interdites au public.
Exemples pour WordPress :

<filter action="drop"  type="wildcard" pattern="*admin*" />
<filter action="drop"  type="wildcard" pattern="*theme*" />
<filter action="drop"  type="wildcard" pattern="*wp-includes*" />
<filter action="drop"  type="wildcard" pattern="*wp-login*" />

 
Pour lancer le script manuellement :
# cd /var/www/site && google-sitemapgen --config="sitemap_config.xml"

Faire en sorte que, automatiquement à chaque nouvelle page créée sur le site, soit renseigné le fichier externe qui contient toutes les urls, et soit lancé le script pour mettre à jour le sitemap.xml

Regarder les spécificités de la carte graphique :
# lspci

Lister les résolutions disponibles :
# xrandr

Si on obtient :
xrandr: Failed to get size of gamma for output default
Ca veut dire que les drivers de la carte graphique ne sont probablement pas installés.

Installer les drivers :

Si on est dans une virtualbox, installer :
# apt-get install virtualbox-guest-x11 [DEPRECATED]

Insérer le disque virtuel des Guest-addon
# apt-get install build-essential
# apt-get install linux-headers-$(uname -r)
# mount /dev/cdrom /media/cdrom
# cd /media/cdrom
# ./VBoxLinuxAdditions.run
Reboot

Exécuter la nouvelle résolution :
$ xrandr --output VGA-1 --mode 1920x1200

!TEST ONLY (Http non sécurisé + données de tests)

Installer éventuellement le module curl :
# apt-get install php5-curl

Et le module mcrypt :
# apt-get install php5-mcrypt

Créer un répertoire de travail :
# mkdir -p MAGENTO && cd MAGENTO

Télécharger Magento :
# wget http://www.magentocommerce.com/downloads/assets/1.9.0.0/magento-1.9.0.0.tar.gz
# wget http://www.magentocommerce.com/downloads/assets/1.9.0.0/magento-sample-data-1.9.0.0.tar.gz

Aménager :
# tar -zxvf magento-1.9.0.0.tar.gz
# tar -zxvf magento-sample-data-1.9.0.0.tar.gz
# mv magento-sample-data-1.9.0.0/media/* magento/media/
# mv magento-sample-data-1.9.0.0/magento_sample_data_for_1.9.0.0.sql magento/data.sql
# mv magento/* magento/.htaccess* .

Créer la base et l’impacter avec les données de test :
# mysql -uroot -p
mysql> create database BASE;
mysql> grant all privileges on BASE.* to USER@localhost identified by 'PASS';
mysql> flush privileges;
mysql> quit;
# mysql -hlocalhost -uUSER -pPASS BASE < data.sql

Nettoyer et déplacer :
# rm -rf magento/ magento-sample-data-1.9.0.0/ magento-1.9.0.0.tar.gz magento-sample-data-1.9.0.0.tar.gz data.sql
# cd..
# mv MAGENTO/ /var/www/magento

Attribuer les droits sur les fichiers :
# chown -R www-data:www-data /var/www/magento
# find /var/www/magento -type f -exec chmod 644 {} \;
# find /var/www/magento -type d -exec chmod 755 {} \;

Créer le virtualhost :
# vi /etc/apache2/sites-available/magento.conf

<VirtualHost *:80>

ServerAdmin webmaster@localhost
ServerName magento.lan
DocumentRoot /var/www/magento
DirectoryIndex index.php

<Directory /var/www/magento/>
  Options FollowSymLinks
  AllowOverride All
</Directory>

LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/magento.error.log
CustomLog ${APACHE_LOG_DIR}/magento.access.log combined

</VirtualHost>

 
Activer le virtualhost :
# a2ensite magento.conf
# /etc/init.d/apache2 restart

Renseigner le DNS
Have fun \o/

Les infos de la batterie sont là :
/sys/class/power_supply/BAT0/...

Script qui affiche une image lorsque la batterie est faible :
$ vi ~/Scripts/test_batterie.sh

#!/bin/sh

energy=$(cat /sys/class/power_supply/BAT0/energy_now)

if [ $energy -lt 11000000 ]; then
    i3-msg -s $(find /run/user/1000/i3 -name "ipc-socket.*") 'exec feh /usr/local/share/images/batterie_faible.jpeg'
fi

 
A noter :
Le socket i3 sur mon système n’est pas à l’endroit par défaut.
Commande pour le trouver :
# find /run/user/1000/i3 -name "ipc-socket.*"
(1000 est le numéro de l’utilisateur qui a ouvert la session X)

Lancer le script via la crontab :
# vi /etc/crontab

0-59/5 * * * * fred    sh /home/fred/Scripts/test_batterie.sh > /dev/null 2>&1

 
Image à mettre dans /usr/local/share/images/batterie_faible.jpeg :
batterie_faible

Créer une image ISO d’un cdrom :

Vérifier que le cdrom n’est pas monté :
# mount
ou :
# ls -al /media/cdrom0

Créer l’image iso :
# dd if=/dev/sr0 of=mon_image.iso bs=2048 conv=sync,notrunc

Voir le contenu d’une image ISO :

Créer un répertoire :
# mkdir -p /media/iso

Monter l’image :
# mount mon_image.iso /media/iso

Voir le contenu :
# ls -al /media/iso

Installer le détecteur de température :
# apt-get install lm-sensors

Visualiser les températures :
# sensors

Paramétrer le système :
# sensors-detect
(Répondre “yes” à la dernière question)

Charger les modules sans redémarrer :
# /etc/init.d/kmod start

Valider les nouvelles limites :
# sensors -s