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 :
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
Créer un répertoire pour les syntaxes de Vim :
$ mkdir -p .vim/syntax
Dans le répertoire .vim/syntax, mettre ce fichier : i3.vim
Ouvrir le fichier de configuration de i3 :
$ vi .i3/config
Rajouter, à la fin, cette ligne :
# vim:filetype=i3
Lien officiel du projet : https://github.com/PotatoesMaster/i3-vim-syntax
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