Publié le 30 Octobre 2012

Dans lyx les pages sont par défaut numérotées (en fait ça dépend surement du type de document). Il se peut que sur une page on ne veuille pas afficher de numéro.

Par exemple dans mon cas je ne vois pas numéroter la page où apparaît le résumé de mon rapport.

Sur cette page j'utilise la commande Latex suivante :

\thispagestyle{empty}

et voilà une belle page sans fioriture ;-)

Voir les commentaires

Rédigé par Bliz

Publié dans #Lyx - Latex

Repost 0

Publié le 28 Octobre 2012

Apache2 et PHP5 sont installés par défaut sur Ubuntu. MySQL aussi mais la connection à une base MySQL depuis PHP n'est pas possible directement.

Il faut installer 2 modules supplémentaires pour activer l'extension mysql de PHP:

sudo apt-get install php5-mysql libapache2-mod-auth-mysql

puis redémarrer apache pour prendre en compte la nouvelle configuration :

sudo /etc/init.d/apache2 restart

Voir les commentaires

Rédigé par Bliz

Publié dans #Linux

Repost 0

Publié le 25 Octobre 2012

Il me faut identifier un pattern disons PATATOS dans des chaines de caractères à l'aide d'une expression régulière. 

Le problème c'est que je voudrais bien que mon expression régulière ne prenne pas en compte la casse:

Par exemple elle doit matcher PATATOS ou patatos ou PaTaToS.

Et bien il y a le flag ?i qui permet d'ignorer la casse dans le reste de l'expression. Dans mon case j'utilise donc l'expression suivante:

.*(?i)PATATOS.*

Voir les commentaires

Rédigé par Bliz

Publié dans #Linux

Repost 0

Publié le 24 Octobre 2012

Dans lyx par défaut les entêtes sont vides. Pour y placer la chapitre / section courant il faut se rendre dans 

Document > Settings > Page Layout

Et placer le "headings style" à "headings" justement.

Par contre il y a toujours le même problème que pour la table de matière: les chapitres non numérotés n'apparaissent pas dans les entêtes.

Dans ce cas aussi il y a une commande latex qui permet de définir ce qu'on veut placer dans les entêtes:

\markboth {Introduction générale} {Introduction générale}

les parenthèses correpondent aux entêtes de gauche et de droite respectivement.

Il y a aussi les commanes \markleft et \markright qui permettent de ne spécifier l'entête pour un côté seulement.

Voir les commentaires

Rédigé par Bliz

Publié dans #Lyx - Latex

Repost 0

Publié le 23 Octobre 2012

Lyx fournit les environnements chapter, section, subsection, etc qui sont des éléments numérotés ainsi que leur équivalent sans numéro: chapter*, section*, subsection*, etc.

Le problème c'est que ces éléments non numérotés n'apparaissent pas dans la table des matières. Pour les y inclure il faut utiliser la commande latex suivante:

\addcontentsline{toc}{chapter}{\protect\numberline{}Introduction générale}

Il suffit d'insérer du code latex avec le petit bouton TEX (ou Insert > TEX Code, ou CTRL+L) juste après le chapitre et de taper la commande ci-dessus.

Dans ce cas la commande rajoutera le chapitre non numéroté "Introduction générale" dans la table des matières.

Voir les commentaires

Rédigé par Bliz

Publié dans #Lyx - Latex

Repost 0

Publié le 19 Octobre 2012

J'ai une table avec des utilisateurs et j'ai besoin d'en sélectionner un certain nombre de manière aléatoire pour ensuite comparer avec le reste de la table. Une sorte d'échantillon témoin, quoi.

Et bien encore une fois c'est chose aisé avec MySQL:

SELECT * FROM utilisateurs ORDER BY rand() LIMIT 100;

ET voilà 100 utilisateurs sélectionnés aléatoirement. Il y a quand même un petit bémol, il faut faire attention aux perfs avec la fonction rand() lorsqu'on travaille sur des tables conséquentes.

Voir les commentaires

Rédigé par Bliz

Publié dans #MySQL

Repost 0

Publié le 17 Octobre 2012

Si vous avez quelque notions Linux/Unix, vous connaissez probablement la commande nice qui permet d'ajouter la priorité d'un processus.

Le problème c'est que la commande nice est exécutée au moment où on lance le process:

$ nice 19 ma_commande

mais si j'ai déjà lancé le processus. Par exemple j'ai déjà lancé ma_commande et je m'aperçois qu'elle prend trop de resources. Je veux donc changer sa priorité (ou "niceness").

Et bien dans ce cas il ne faut pas utiliser nice mais renice:

$ renice +10 2431
2431 (process ID) old priority 0, new priority 10

2431 est le PID du process à modifier. Le PID s'obtient facilement soit avec top soit avec ps, par exemple.

Voir les commentaires

Rédigé par Bliz

Publié dans #Linux

Repost 0

Publié le 16 Octobre 2012

Voici comment dupliquer une colonne dans une table mysql. Cela s'effectue en trois étapes:

  1. Récupération de la définition de la colonne à copier:

    On affiche la définition de la table avec la commande "show create table":

    mysql> show create table ma_table;
    +----------+-----------------------------+
    | Table    | Create Table                |
    +----------+-----------------------------+
    | ma_table | CREATE TABLE `ma_table` (
       `id` int(10) unsigned NOT NULL,
       `nom` varchar(50) NOT NULL,
       `prenom` varchar(50) NOT NULL,
       `adresse` varchar(200) DEFAULT NULL,
       PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1   |
    +----------+-----------------------------+
     
  2. Création de la nouvelle colonne:

    Maintenant on veut dupliquer la colonne nom, il faut dont modifier la table pour lui ajouter une nouvelle colonne avec la commande alter table en reprenant la définition de la colonne nom ci-dessus:

    mysql> alter table ma_table add copie_nom  varchar(50) NOT NULL after nom;
     
  3. Remplissage avec les valeurs de la colonne source:

    mysql> update ma_table set copie_nom = nom; 

Voir les commentaires

Rédigé par Bliz

Publié dans #MySQL

Repost 0

Publié le 12 Octobre 2012

Le problème de jour consiste à devoir incrémenter un compteur global qui s'incrémente à chaque transaction.

Il y a bien sûr plusieurs thread qui peuvent générer des transactions simultanément, il faut donc prendre en compte tous les aspects de synchronisation.

ah oui et enfin le compteur doit boucler sur l'intervalle [0-9999].

On peut être tenter d'utiliser synchronized pour controler l'accès au compteur mais les classes Atomic permettent de s'en passer:

static final int MAX = 10000;
final AtomicInteger counter = new AtomicInteger(0);


int getAndIncrementCounter() {
    counter.compareAndSet(Integer.MAX_VALUE, Integer.MAX_VALUE % MAX)
    return counter.incrementAndGet() % MAX;

Voir les commentaires

Rédigé par Bliz

Publié dans #Java

Repost 0

Publié le 8 Octobre 2012

Aujourd'hui j'ai une requête assez complexe avec quelques sous-requêtes imbriquées qui me pourrissent pas mal les perfs.

J'ai donc décider de couper tout ça en petit morceaux et de créer des tables temporaires pour les sous requêtes.

Mais voilà je ne sais pas trop quels champs mettre dans ma table, et encore moins de quels types ils sont car la plupart sont sélectionnés à la volée en fonction des saisies de l'utilisateur.

Heureusement MySQL a tout prévu avec le CREATE SELECT. Avec cette requête MySQL utilise directement le résultat du SELECT pour créer une table. Super pratiquement également pour copier une table:

CREATE TABLE ma_copie SELECT * FROM ma_table;

Voilà qui va me simplifier la vie!!

Voir les commentaires

Rédigé par Bliz

Publié dans #MySQL

Repost 0