vendredi 31 juillet 2009

LAMP (Suite)

Salamou Alaykoum,
Ouf! j'ai enfin réussis à éxprimer le determinant de la métrique à 4 dimensions de l'espace-temps en fonction de celui d'une métrique d'une surface tridimensionnelle immergée dans ce dernier...
Ok ok ... où en etions nous???
Ah oui! restait à tester mysql (serveur et module php).
Voila, créez un fichier nommé msqltest.php dans le dossier www et mettez-y le code suivant:
<?php
$link = mysql_connect("localhost","root","");
mysql_select_db("information_schema", $link);
$query = "SELECT * FROM `USER_PRIVILEGES`";
$result = mysql_query($query, $link);
if(mysql_errno() != 0)
{
echo mysql_error();
mysql_close();
exit();
}
while($num_rows = mysql_fetch_array($result)) {print_r($num_rows);}
mysql_close();
?>
Puis dans votre navigateur allez à l'adresse localhost/msqltest.php vous devriez voir normalement quelque chose qui ressemble à ça:

Array ( [0] => 'root'@'localhost' [GRANTEE] => 'root'@'localhost' [1] => [TABLE_CATALOG] => [2] => SELECT [PRIVILEGE_TYPE] => SELECT [3] => YES [IS_GRANTABLE] => YES ) Array ( [0] => 'root'@'localhost' [GRANTEE] => 'root'@'localhost' [1] => [TABLE_CATALOG] => [2] => INSERT [PRIVILEGE_TYPE] => INSERT [3] => YES [IS_GRANTABLE] => YES )
Qu'est-ce-que ça veut dire? ça veut dire que le serveur mysql marche de même que le module mysql de php.

Maintenant je vais vite fait vous présenter le fameux géstionnaire de bases de données phpmyadmin, pour l'avoir c'est simple, choisissez ici la dernière version (all languages), c'est un fichier compréssé, allez (en tant que root avec sudo nautilus) dans le repertoire www et décompressez le. Regardez le chemin du dossier ....

PUB/ Tous ce qui vien après /var/www c-à-d /var/www/PATH/mapage.php est accessible en url par localhost/PATH/mapage.php par exemple, pour acceder à la page située à /var/www/mesprojets/projet1/test1/test.php il faudra taper http://localhost/mesprojets/projet1/test1/test.php
Vous verrez alors la page d'acceuil de pma qui demande un login et un password, si vous êtes bon observateur vous savez déja que:
Login = root
Password = /(rien)
Voila voilou, tout est prêt, il ne vous reste qu'à trouver un bon tuto (je recommande le sdz) et commencer à coder ;-)

Rendre le dossier www "writable" par "whoami" (vous)

Dans une console faire :
ubugnu@ubugnu-laptop:~$ sudo gedit /etc/apache2/apache2.conf
Puis cherchez les deux lignes:

user www-data
group www-data
Remplacez www-data par votre pseudo (pour le connaitre faire un whoami "qui-suis-je" dans un terminal) puis enregistrez.
Puis tapez la commade suivante, mettez votre pseudo là ou inquiqué:
ubugnu@ubugnu-laptop:~$ sudo chown -R pseudo:pseudo /var/www
Redemarrez le serveur Apache avec:
ubugnu@ubugnu-laptop:~$ sudo /etc/init.d/apache2 restart
Et le tour est joué ;-)

Changer le mot de passe mysql

Il est indispensable de le changer car si par malheur quelqu'un accède à votre machine via le port sql et trouve qu'il n'y a pas de mot de passe, il pourra exécuter des commandes arbitraires sur votre machine, comme par exemple créer une fichier php (un shell) via la commane SELECT '... code php ...' INTO OUTFILE '/var/www/phpmyadmin/tests/' puis y acceder via votre serveur Apache, il aura ainsi accés à un grand nombre de fichiers de votre machine, ou alors il pourra lire directement un fichier avec la commande LOAD_FILE ... Bref, le risque est bien là, donc mieux vaut prevenir que guérir (j'ai déja éxpérimenté ça).
L'opération se résume en une ligne:
ubugnu@ubugnu-laptop:~$ sudo mysqladmin -u root password XXXXXXXXXXX -p
Où XXXXXXXXXXX est le nouveau mot de passe.

jeudi 30 juillet 2009

LAMP

Salut à toutes et à tous,
Cela fait bien longtemps que je n'ai pas émis de billet et pour cause: j'étais (et je suis encore) très occupé à étudier la formulation Hamiltonienne de la Relativité Générale, plus précisement le formalisme ADM (Arnowitt-Deser-Misner) qui donne une méthode pour isoler le temps de l'espace et ainsi pouvoir faire un traitement canonique .... [je dis n'importe quoi hein !!? LOL]

Anyway, je voulais au moins emettre deux billets pour ce mois de Juillet, des fois qu'on disent que je suis devenu fénéant LOL.
Revenons à nos équations ... euh pardon: à nos moutons, Aujourd'hui je vais vous parler de LAMP (Linux Apache MySQL PHP) qui est en quelquesorte l'équivalent du WAMP de Windowns, la seule différence est que sous Windowns ça s'installe comme une application qui regroupe le tout tandis que sous Linux il faut installer chacune des "pieces" séparément, certains y verraient un bon point pour Win, moi je vous dis que ça en est un pour Nunux car de la sorte on sait ce qu'on manipule et ce qu'on fait.

Assez de bavardages, commencons par les définitions:
  • Linux : Boite magique qui vous permet de faire tout ce que tonton Billou ne vous laisse pas faire :-p
  • Apache : C'est un serveur http, tout comme le serveur d'un réstaurant, vous lui dites quelle page vous voulez (via l'url) et il vous "sert" le code html de cette page (qui sera interprété par votre navigateur pour faire une page internet toute belle), la cuisine (là où il va cherhcer ce qu'il va servir) est un dossier bien particulier (sous Ubuntu ça sera /var/www) tout ce que vous y metterais pourra être accéssible par n'importe qui qui tapera votre adresse IP dans son navigateur (ou par vous si vous taper "localhost" ou "127.0.0.1" dans le votre).
  • MySQL : C'est un language de programmation de gestion des Bases de Données (BDD), pour ceux qui ne connaissent pas, ce sont des structures qui permettent de classifier l'information, grosso modo, une base de données est constituée de tables (des tableaux), ces tables comportent des champs, ces champs permettent de localiser une information (une variable) très facilement. Par exemple on dit à MySQL: "vas me charcher le mot de passe de l'utilisateur Arnowitt dans la table Utilisateurs qui se situe dans la BDD forum"via la requete SQL:
    SELECT motdepasse FROM `forum`.`Utilisateurs` WHERE utilisateur = 'Arnowitt'
    Ce petit exemple est juste pour vous montrer l'utilité d'une BDD.
  • PHP : Language de programmation pour générer des pages web dynamiques :-) la grande différence avec le HTML (qui génère des pages web statiques) est que le script php s'éxécute d'abord sur le serveur (Apache) et envoie le contenu HTML ainsi généré à l'utilisateur qui à émis la requete (http :-p) l'avantage est que le résultat renvoyé pour une même page peut être différent en fonction d'une multitude de paramètre (ce que le client à envoyé, son IP, son O.S, l'heure, une variable dans un fichir local, une variable dans la BDD,...) les possibilités sont immenses.

Maintenant qu'on a fait le tour de la question, sachez que tout installer n'est en rien obligatoir, si vous voulez faire que du HTML en local (sur votre machine) vous n'avez besoin de rien, votre navigateur fera l'affaire, si vous voulez rendre votre machine un serveur (vos pages sont accéssibles via votre IP) Apache fera l'affaire, maintenant si vous voulez que vos pages soient dynamiques il faudra PHP, MySQL n'est en rien obligatoire, mais vous vous rendrez très vite compte de la puissance d'un système de BDD donc je vous invite à tout installer :-).Mais contrairement aux autres sites qui proposent des solutions en ligne de commande, on va utiliser votre gestionnaire de paquets préféré (Synaptic, Adept, ...) faites simplement les recherches suivantes : Apache2, MySQL-server, PHP5, PHP5-MySQL (prévoir aussi le module php5-mcrypt qui nous sera utile pour phpmyadmin qui est une interface graphique de gestion des BDD) cochez tous les paquets qui corréspondent à ceux que j'ai énnuméré (en gras), confirmez d'éventuelles dépendances, et lancer le téléchargement/installation.
Quand tout sera fini, testons tout ça:
  1. Apache : Allez dans votre navigateur préféré et tapez localhost dans l'url, si vous voyez "it works" alors cela voudra dire que .... it works :p
  2. PHP : grrr !!! faudra une ptite combine pour pouvoir créer un fichier php pour le tester car, comme je vous l'ai déja dis, la où le serveur va chercher les pages (la cuisine) c'est dans /var/www (les pages html seront les plats froids, directement servis, php seront par contre cuisinés avant d'être servis, selon les gouts du client et ceux du chef cuisinier) mais voila, on n'a pas la permission d'écrire dans /var/www :-( seul le root (le supeutilisateur) peut le faire, pas de panique c'est simple de remédier à cela, je vous le dirais une autre fois inchallah, pour le moment nous allons nous métamorphoser en root hhhhhh, c'est simple, allez dans un Terminal, taper :
    ubugnu@ubugnu-laptop:~$ sudo nautilus
    Nautilus est le géstionnaire de fichier sous Gnome (pour KDE ça sera sudo konqueror) maintenant vous pourrez créer et supprimer (bref tout faire) en root.

    Allez maintenant dans le dossier /var/www, vous trouverez déja le fichier html index.html (en faite celui qui contient le fameux "it works"), clique droit, créez un nouveau document, nommez le test.php par exemple, ouvrez le et recopier ce petit script php:
    ubugnu@ubugnu-laptop:~$ 
    enregistrez puis allez vérifier si l'url: localhost/test.php montre bien un "Hello Algeria!", si ça marche, ça voudra dire que le code php echo "Hello Algeria!"; s'est bien éxécuté.[...]

    Désolé là il est presque minuit je suis fatigué je lis quelques passages du Coran et je m'endores, la prochaine fois inchallah on testera le module MySQL de php et par la même occasion MySQL lui même, enfin je vous présenterais phpmyadmin le gestionnaire graphique de BDD.

jeudi 2 juillet 2009

LyX ou comment créer sa publication ...

Bonjour,
Cela fait bien longtemps que je n'ai pas émis de billet, aujourd'hui je vais vous parler de quelque chose lié à ça, je vais vous parler de LyX Document Processor, ce qu'on pourrait qualifier de clone (amélioré) du fameux ScientificWord de Windows, pour ceux qui ne connaissent pas, il permet d'écrire facilement des documents (en vue d'une publication) avec prise en charge du tas de choses comme le code TeX et j'en passe...
L'un des points forts de cette application est qu'on n'a pas besoin de connaitre les le DVI ni le TeX pour pouvoir organiser son document, on peut l'organiser en parts, sections, sous-sections et sous-sous-sections numérotés ou pas, y mettre des liens internes, soit de références soit d'accés rapide à une une section ou une équation par exemple...
Voila des captures:
D'abord l'organisation du document:



Après on éxporte vers PDF ou DVI: