ubuntu

Aller au contenu | Aller au menu | Aller à la recherche

dimanche, mars 20 2016

aide mémoire bash

opération en bash :

echo $((7+4))

condition :

if [ test ] then

fi

comparaisons :

chaînes de caractères :

s1 = s2        s1 matches s2

s1 != s2       s1 does not match s2

s1 < s2

s1 > s2

-n s1             s1 is not null (contains one or more characters)

-z s1             s1 is null

nombres :

-lt (<)

-gt (>)

-le (<=)

-ge (>=)

-eq (==)

-ne (!=)

echo sans saut de ligne :

echo -n

mercredi, février 17 2016

bloquer ip amazonaws

Télécharger la liste des ip ici : https://ip-ranges.amazonaws.com/ip-ranges.json

cat ip-ranges.json | cut -d[ -f2 | awk -F '"' '{print "deny from", $4 ";" }' | grep "/" > ban_ip_amazon_ws

Le contenu du fichier ban_ip_amazon_ws est à ajouter au fichier .htaccess à la suite de :

order allow,deny
allow from all

jeudi, octobre 1 2015

adapter la hauteur d'un élément html à la résolution de l'écran

<script>

/**
 * @author Marie-Lyse Briffaud
 * @date 28/09/2015
 * ajuste la hauteur de la page pour que le footer soit en bas de page si la hauteur du contenu est insuffisante
 */

/*on recalcule au chargement de la page et au redimensionnement de la fenêtre*/
window.onresize=AdapterDivAResolution;
window.onload=AdapterDivAResolution;


function AdapterDivAResolution() {
    /*dimensions de la fenêtre*/
    var x_res = window.innerWidth;
    var y_res = window.innerHeight;

    /*en dessous de 768px de large, l'affichage ne se fait plus sur 3 colonnes
    inutile donc d'ajuster la hauteur*/
    if(x_res>768){   
        var header = getHeight(document.getElementById('header'));
        var footer = getHeight(document.getElementById('footer'));

        var hauteurContenu = getHeight(document.getElementById('contenu'));
        var hauteurCalcule = y_res - header - footer;
        /*on ajuste la hauteur uniquement si le contenu est plus petit que la place disponible*/
        if(hauteurContenu < hauteurCalcule) {
            document.getElementById('contenu').style.height = hauteurCalcule + 'px';
        }
    }
}

function getHeight(obj){
    if(obj.offsetHeight)          
        {return obj.offsetHeight;}
    else if(obj.style.pixelHeight)
        {return obj.style.pixelHeight;}
}

</script>

vendredi, mars 6 2015

MySQLi et php


define('MYSQL_SERVEUR', 'localhost');

define('MYSQL_UTILISATEUR', 'root');

define('MYSQL_MOTDEPASSE', '');

define('MYSQL_BASE', 'test');


//connexion à la base MySQL
$mysql = new MySQLi(MYSQL_SERVEUR, MYSQL_UTILISATEUR, MYSQL_MOTDEPASSE, MYSQL_BASE);

/* Vérification de la connexion */
if ($mysqli->connect_errno) {
    die("Echec de la connexion : %s\n", $mysqli->connect_error);
}
//configuration du charset
$mysqli->set_charset("utf8");

//Requête SQL ne retournant pas de résultat (ex: CREATE TABLE, INSERT, UPDATE, etc.)
$sql = 'CREATE TABLE IF NOT EXISTS blog (login VARCHAR(64) ,message TEXT ,dateheure DATETIME)';
$mysql->query($sql);

$sql = 'INSERT INTO blog (login, message, dateheure) VALUES(\'phpfacile\', \'Tuto MySQL\', NOW())';
$mysql->query($sql);

//Requête SQL retournant des résultats (ex: SELECT)
$sql = 'SELECT * FROM blog';
$res = $mysql->query($sql);
while ($row = $res->fetch_array()) {
    echo $row['login'].':'.$row['dateheure'].':'.$row['message'].'<br />'."\n"; }

//nombre de lignes
$res->num_rows;

// Se protéger des injections SQL
$city = $mysqli->real_escape_string($city);
$mysqli->query("INSERT into myCity (Name) VALUES ('$city')");

//Requête préparée
$stmt = $mysqli->prepare("INSERT INTO test(id) VALUES (?)");
$stmt->bind_param("i", $id);
$stmt->execute();
$stmt->close();

//libération des résultats
$res->free();

//déconnexion de la base MySQL
$mysql->close();

/*fetch_array() : Le second argument optionnel est une constante
indiquant quel type de tableau doit être renvoyé à partir de la
ligne de données courante. Les valeurs possibles pour ce paramètre
sont les constantes MYSQLI_ASSOC, MYSQLI_NUM, et MYSQLI_BOTH. En
utilisant la constante MYSQLI_ASSOC, cette fonction se comportera
comme la fonction mysqli_fetch_assoc(), tandis que MYSQLI_NUM la
fera agir comme la fonction mysqli_fetch_row().
La constante MYSQLI_BOTH, créera elle un tableau qui sera à la fois
associatif et indexé numériquement.*/

mardi, février 17 2015

plowshare4

installer plowshare :

git clone https://code.google.com/p/plowshare/ plowshare4
cd plowshare4
sudo make install

mettre à jour :

cd plowshare4
git pull
sudo make install

lundi, décembre 15 2014

concaténer plusieurs fichier mov en mp4 h264 acc

mencoder -oac pcm -ovc copy -of avi -o output.avi input1.mov input2.mov

avconv -i 'output.avi' -vcodec libx264 -preset ultrafast -profile:v baseline -acodec aac -strict experimental -r 24 -b 3000k -ar 44100 -ab 59k -s 640x362 'output.mp4'

mardi, septembre 24 2013

installer une imprimante DCP-340CW sur ubuntu

extrait de la doc ubuntu

installer les fichiers suivants pour l'impression

pilote scanner 64bits

sudo brsaneconfig2 -a name=SCANNER_BROTHER model=DCP-340CW ip=192.168.0.102

Pour les versions 64bits, il faut taper la commande suivante :

cp -R /usr/lib64/* /usr/lib

si le scanner n'est pas détecté :

éditer le fichier /lib/udev/rules.d/40-libsane.rules

ajouter les deux lignes suivantes à la fin du fichier, avant
«LABEL= "libsane_rules_end"».

# Brother scanners
ATTRS{idVendor}=="04f9", ENV{libsane_matched}="yes"

samedi, mai 19 2012

Changer l’emplacement des boutons de fenêtres

boutons à DROITE :
gconftool-2 --set /apps/metacity/general/button_layout --type string "menu:minimize,maximize,close"

boutons à GAUCHE :
gconftool-2 --set /apps/metacity/general/button_layout --type string "close,minimize,maximize:"

lundi, juillet 18 2011

aide mémoire : manipuler des bases de données en php

<?php
$db_server = 'localhost';
$db_user = '';
$db_pwd = '';
$db_name = '';
$db_link = mysql_connect($db_server, $db_user, $db_pwd) or exit('Could not connect: ' . mysql_error());
$db = mysql_select_db($db_name, $db_link) or exit('Could not select database: ' . mysql_error());

//sélectionner une table
$res=mysql_query("SELECT * FROM table");

//parcourir les résultats
while ($s=mysql_fetch_object($res))
{echo $s->champs;}

//insérer des données
$res=mysql_query("INSERT INTO table (champs1, champs2 …) VALUES ("value1", "value2" …);

//modifier des données
$res=mysql_query("UPDATE table SET champs = "value");
?>

mercredi, décembre 1 2010

"UPS mgeups@localhost is unavailable"

Ce message indique un problème de droit pour l'utilisateur NUT. Pour y remédier :

sudo adduser nut nut
sudo adduser nut dialout
upsdrvctl start

Trouvé sur la doc d'ubuntu

lundi, novembre 29 2010

aide mémoire

ln -s nom-du-fichier-reel nom-du-lien-symbolique (attention : chemin absolu pour le fichier réel)

export sql : mysqldump -h host -u user -ppass -rfichier base_de_donnees

import sql : mysql -h host -u user -ppass base_de_donnees < fichier_dump

samedi, août 28 2010

Suppression de la gestion des clés étrangères

$req = "SET FOREIGN_KEY_CHECKS = 0";
$result = mysql_query($req) or die('Erreur SQL !'.$sql.''.mysql_error());

lundi, juillet 12 2010

azerty vs bépo

devinez lequel est où !

lundi, juin 28 2010

Recette du Schokoladenkuchen

Le gâteau

Ingrédients :

  • 4 œufs
  • 4 tasses de sucre
  • 250 gr de beurre mou
  • 4 tasses de farine
  • 1 paquet de levure
  • 1 tasse de lait
  • 4 cuillères à soupe de cacao
  • 100 gr de noix râpée

Mélangez les ingrédients dans l’ordre

Faites cuire le gâteau 50-60 minutes à 175°C.

Le nappage

Faites chauffer au bain marie 100 gr de chocolat avec 75 gr de beurre. Quand le chocolat et beurre sont fondus, mélangez les avec 3 cuillères à soupe de lait et 200 gr de sucre glace.

Laissez le gâteau refroidir et versez le nappage dessus.

Bon appétit !

mardi, mai 25 2010

Mettre à jour dynhost (ovh) en php

Ovh propose de lier une ip dynamique et un nom de domaine avec dynhost.

Problème, leur logiciel de mise à jour est en python, et moi je veux faire la mise à jour à partir d'un hébergeur sans python …

Après pas mal de recherches, voici mon code en php :

$credentials = "identifiantdynhost:motdepasseovh";
$url = "http://www.ovh.com/nic/update?system=dyndns&hostname=nomdedomaine&myip=ip";
$headers = array( "User-Agent: ipcheck/0.67", "Authorization: Basic " . base64_encode($credentials));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$data = curl_exec($ch);
  if (curl_errno($ch)) print "Error: " . curl_error($ch);

echo $data;

Attention l'identifiant est celui créé pour dynhost, alors que le mot de passe est celui du compte ovh.

lundi, mars 1 2010

sshfs

sudo sshfs -o idmap=user -o uid=1000 -o gid=1000 -o allow_other lily-framboise@marie-alex.fr:/home/lily-framboise/public_html /home/llwynrt/public_html/

lundi, février 22 2010

éteindre l'écran en console

vbetool dpms off

mercredi, janvier 20 2010

Support technique

support_technique.png

Vu sur xkcd, traduction trouvée ici

vendredi, janvier 15 2010

Ligne de commande

Les expressions régulières

  • ^ début de ligne
  • . un caractère quelconque
  • $ fin de ligne
  • x* zéro ou plus d'occurrences du caractère x
  • x+ une ou plus occurrences du caractère x
  • x? une occurrence unique du caractère x
  • [...] plage de caractères permis
  • [^...] plage de caractères interdits
  •  \ {n\} pour définir le nombre de répétition n du caractère placé devant
Exemple
l'expression [a-z][a-z] * cherche les lignes contenant au minimum un caractère en minuscule. [a-z] caractère permis, [a-z]* recherche d'occurrence des lettres permises.
L'expression ^[0-9]\ {4\}$ a pour signification, du début à la fin du fichier $, recherche les nombres[0-9] de 4 chiffres \ {4\}.

grep

  • -v affiche les lignes ne contenant pas la chaîne
  • -c compte le nombre de lignes contenant la chaîne
  • -n chaque ligne contenant la chaîne est numérotée
  • -x ligne correspondant exactement à la chaîne
  • -l affiche le nom des fichiers qui contiennent la chaîne

Sed

pour GNU sed : sed -i modifie directement le fichier sans affichage sur la sortie standard.

substitution :

sed '{/motif/|/regexp/|n }/s/foo/bar/m' <fichier>

sed 's/day/night/' <old >new
sed 's/day/night/' old >new
echo day | sed 's/day/night/'

sed 's/day/night/g' 
sed 's/day/night/4' 
sed '/baz/s/foo/bar/g'
sed '/baz/!s/foo/bar/g'
sed '18 s/sed/SED/'

ajouter une ligne :

sed '{/motif/|/regexp/|n}{i|a|c}\<Texte à insérer>' <fichier>
  • l'insertion avant (avec le paramètre "i" comme insertion)
  • l'ajout après (avec le paramètre "a" comme après)
  • le remplacement (avec le paramètre "c" comme changement)

effacer une ligne :

sed '{[/]<n>|<chaîne>|<regex>[/]}d' <fichier>
sed '3d' efface la 3 ligne
sed '$d' efface la dernière ligne
sed '1,10d' efface les 10 premières lignes
sed '/^$/d' efface les lignes vides
http://www.commentcamarche.net/faq/478-sed

awk

awk [-Fs] [-v variable] [-f fichier de commandes] 'program' fichier
-F Spécifie les séparateurs de champs.
-v Définie une variable utilisée à l'intérieur du programme.
-f Les commandes sont lu à partir d'un fichier.

awk -F ":" '{ $2 = "" ; print $0 }' /etc/passwd imprime chaque ligne du fichier /etc/passwd après avoir effacé le deuxième champs
awk 'END {print NR}' fichier imprime le nombre total de lignes du fichiers
awk '{print $NF}' fichier imprime le dernier champs de chaque ligne
who | awk '{print $1,$5}' imprime le login et le temps de connexion.
awk 'length($0)>75 {print}' fichier imprime les lignes de plus de 75 caractères. (print équivaut à print $0)


mercredi, novembre 4 2009

ajouter une vidéo (méthode facile)

Insérez de préférence la vidéo une fois le billet écrit en entier pour éviter les mauvaises surprises.

Lire la suite...

- page 1 de 5