Au quotidien

25 janvier 2010

PATH application web et changement d’environnement

Classé dans : Informatique — Mots-clefs :, , , — admin @ 15 h 09 min

Je me suis retrouvé plusieurs fois embêté par les changements d’environnement lors de mise en production de site web.
En effet, les PATH fichiers des url et des répertoires bougeaient.

Voici une déclaration qui permets de ne rien changer entre plusieurs environnement :

define ( 'ROOT_DIR', dirname ( __FILE__ ) );
define ( 'ROOT_URL', substr ( $_SERVER['PHP_SELF'], 0, - ( strlen ( $_SERVER['SCRIPT_FILENAME'] ) - strlen ( ROOT_DIR ) ) ) );

Ceci étant valable si vous mettez cela dans un fichier setting à la racine du site, si votre fichier setting est dans un répertoire il faudra faire cela :

define ( 'ROOT_DIR', str_replace ( 'NOM_DU_REPERTOIRE', '', dirname ( __FILE__ ) ) );
define ( 'ROOT_URL', substr ( $_SERVER['PHP_SELF'], 0, - ( strlen ( $_SERVER['SCRIPT_FILENAME'] ) - strlen ( ROOT_DIR ) ) ) );

6 janvier 2010

Configuration de SVN sur un hébergement PRO OVH

Classé dans : Informatique — Mots-clefs :, , — admin @ 20 h 56 min

SVN est un gestionnaire de version gratuit populaire, notamment utilisé pour PHP.

j’ai récemment pris un hebergément mutualisé « pro » chez OVH avec SVN d’installé.

Tout cela est paramétrable via un accès SSH au serveur.
J’ai utilisé le tutoriel donné par OVH ( http://guides.ovh.com/SVNMutu ), mais il manque certaines informations.

Débutons notre configuration de SVN !
J’utilise Putty (comme un bon nombre d’entre vous), une fois connecté il faut créer au même niveau que le répertoire www un répertoire pour svn, appelez le svn par exemple : mkdir svn
Ensuite il faut créer le projet sous SVN :
svnadmin create svn/votre_projet
Si aucun message ne s’est affiché après cette commande c’est que tout va bien :)

Phase suivante : la création d’une clef publique, elle permettra d’éviter à chaque fois que vous vous connecter en SSH pour SVN que vous l’on demande votre login/mot de passe.
Pour cela j’ai utilisé Putty Key Generator ( http://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe ), il suffit lancer l’exe, de choisir la clef en SSH2-DSA (radio bouton en bas dans l’encadré « parameters » puis cliquer sur le bouton « generate », c’est rigolo pour générer votre clef il faut bouger la souris dans l’encadré gris, et hop une clef est générée !

Maintenant il faut la mettre sur votre hébergement pour cela il faut créer un répertoire .ssh au même niveau que svn et www puis créer un fichier authorized_keys2 pour y mettre la clef et quelques informations concernant votre hébergement :

mkdir .ssh
chmod 700 .ssh
vi .ssh/authorized_keys2

Dans ce fichier mettez les informations suivantes :

command="/usr/bin/svnserve --root=LE_CHEMIN_VU_ENSEMBLE_APRES --tunnel --tunnel-user=VOTRE_NOM_POUR_SVN",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty
Il y a deux valeurs à adapter à votre situation : LE_CHEMIN_VU_ENSEMBLE_APRES et VOTRE_NOM_POUR_SVN.

Pour la valeur LE_CHEMIN_VU_ENSEMBLE_APRES placez-vous dans le répertoire svn (cd svn) puis tapez pwd cela va vous donner votre positionnement absolu, vous devriez avoir un truc du genre /homez.134/votre_login/svn (votre_login étant encore une valeur adapter à votre situation)

Pour la valeur VOTRE_NOM_POUR_SVN C’est le nom qui sera utilisé pour l’historique SVN.

Donc à la suite de
command="/usr/bin/svnserve --root=/homez.134/votre_login/svn --tunnel --tunnel-user=votre_login",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty
ajouter un espace et mettez la clef publique complète.

Au final vous aurez un truc qui ressemble à ça :

command="/usr/bin/svnserve --root=/homez.134/votre_login/svn --tunnel --tunnel-user=votre_login",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-dss AAAAB3NzaC1kc3MAAACBAIyzLIwTjIhLwobrnVqu4QiBAEfb5jZMZSTtVDuc0TwqzUiLvkPMdapjIqNDeQnLA/EOxrf8ozTx/8G4JtJ0Z1dFCHZhKonXd0Hq4PBwnNeabSn9xq6xNRORf9nk81GTvuFDoYbwg0o3b4Th+q5cnlOChvXJljAx2CbEiUXc09HrAAAAFQDIrg+UpWLME5WPvgQayCPAoQCHbwAAAIAhYJConDqXn5az7s4bzXDvwAzCQc3loTsgLGF0Ww8+kaUO0+ugwA1DmN2ZlvGznwX+DnJv+TgjBY39Yc0DlMFIY+EGmkEgvHdE5xdLtzWWBUjYyjhvG7F5Btrr9o9DdL7v47y/rignyr1JG3pcdsoU5xrMIHkrvJgqEJRCtrSJxAAAAIA5J5hgrHncq8RGVf2LA5ZsFtDjWyaEaa7CAZiK8DI1WMoVRxdPHc+qYw2pi5/rFbgKWnwD/TFpBxo8PoHaTSAsn00FgNEi9nSyM6iVNOuRlTEiIklXvRAsFF4DV4ljhBJYBWx6dOHqt7Y/4G241RWZgl88btWSCpSir6uw5u+QXQ== dsa-key-20100106

Votre clef est fin prête, vous pouvez sauvegarder le fichier (échappement puis :wq!).

Par contre laissez ouvert votre fenêtre putty key generator pour la suite.

NOTE : je reviendrais sur ce passage car je bloque sur un truc, je ne comprends pas l’utilité de la clef si j’ai toujours la fenêtre qui me demande mes accès… la clef devrait justement faire en sorte que vous n’ayez plus la fenêtre.

Maintenant télécharger un bon client SVN, tortoise étant le mieux, je ne peux que vous le recommander ( http://tortoisesvn.net/download ).

Une fois installer créer un répertoire puis faites un clique droit dessus, puis choisissez « SVN checkout », dans URL of repository j’ai :

svn+ssh://LOGINSSH@ftp.votredomaine.fr/PWD_ABSOLU/votre_projet/

LOGINSSH est à remplacer par le login que vous utiliser pour l’accès à SSH (ou ftp)
PWD_ABSOLU est à remplacer par le résultat que vous aviez eu plus haut, un truc qui ressemble à /homez.134/votre_login/svn

et voilà, c’est prêt !

Dans mon prochain article j’expliquerais les commandes HOOK, bien pratique pour pousser automatiquement les fichiers vers www/ dès que vous faite un commit par exemple.

Et au fait, bonne année 2010 !

3 octobre 2009

PHP Simple HTML DOM l’ami des crawlers ?

Classé dans : Informatique — admin @ 22 h 54 min

On m’a fait découvrir cette fabuleuse classe qu’est PHP Simple HTML DOM Parse

Pourquoi fabuleuse ? Lors d’un travail d’analyse de page Web que je faisais à coup de Regex, j’ai discuté avec un collègue qui m’a parlé de cette classe.
Ni une, ni deux, la classe est prête à chauffer.

La manipulation des pages HTML est d’une facilité déconcertantes… tellement déconcertantes que crawler un site est un jeu d’enfant

Je vous proposerais un article avec pleins d’exemples.

En attendant, vous pouvez toujours tester la classe et la doc en ligne est vraiment bien faite.

5 septembre 2009

Exif_image ne marche pas sur Wamp !

Classé dans : Informatique — Mots-clefs :, , — admin @ 10 h 29 min

Si vous avez un message du genre « Fatal error: Call to undefined function exif_imagetype() » et que votre librairie exif_image est parfaitement chargée, attention a bien déclarée la DLL du php.ini après celle de mb_string…

Donc avoir :

extension=php_mbstring.dll
extension=php_exif.dll

Avec ça tout devrait rentrer dans l’ordre !

27 août 2009

Configurer Xdebug avec Netbeans et Wamp

Classé dans : Informatique — Mots-clefs :, , , — admin @ 17 h 31 min

J’ai installé Netbeans, pour voir, et c’est bien sympathique !

Le plus sympathique, c’est de pouvoir débugger en local grâce à Wamp et Xdebug.

Les versions que j’utilise sont :

– Netbeans 6.7.1
– Wamp 2.0 (Php 5.3.0, Apache 2.2.11)
– Xdebug 5.3 VC6 (32 bit)

Et de plus (enfin quand on s’est pris la tête avant…), c’est relativement rapide à configurer !

On considère que vous avez installé Wamp dans le répertoire par défaut, c’est à dire c:\wamp.
Tout d’abord on mets la Dll xdebug (ici : php_xdebug-2.0.5-5.3-vc6.dll) dans le repértoire C:\wamp\bin\php\php5.3.0
Ensuite on configure le php.ini de Wamp : clique gauche sur le tray icon wamp, PHP et php.ini, ou alors on édite C:\wamp\bin\php\php5.3.0\php.ini, et on ajoute les lignes suivantes :

zend_extension =C:/wamp/bin/php/php5.3.0/php_xdebug-2.0.5-5.3-vc6.dll
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000

Notez bien le zend_extenstion et non zend_extension_ts souvent utilisé pour les autres versions de php (< 5.3).

Vous relancez votre serveur Wamp : clique gauche sur le tray icon wamp et restart all services.

Voilà, si vous avez bien suivi ce petit tuto vous n’avez plus qu’à poser des points d’arrêts là où vous voulez et à lancer le débuggage.

Bien pratique, non ?

23 août 2009

Récupérer un tableau via post en Ajax

Classé dans : Informatique — Mots-clefs :, , — admin @ 20 h 23 min

Bonjour,

Voilà une méthode plutôt propre pour récupérer un tableau en callback via un appel Ajax en post, et puis comme je suis passé à Jquery vous aurez l’exemple en Jquery, nah !

J’avais besoin de récupérer un tableau car j’utilisais plusieurs valeurs de retour : un booléen pour savoir si mon script Php était bien passé et un message d’erreur dans le cas où il passait mal pour l’afficher du côté navigateur.

Mon appel côté client :

$.post("mon-script.php",
$("form").serialize(),
function(data){

var postResponse = new Array();
postResponse = eval (data);

if ( postResponse[0] =='false' ){
alert('script mal passé : ' + postResponse[1]);
}else{
alert('script bien passé');
}
}, "json"
);

Mon appel post comporte 4 arguments :

– le fichier (ne pas oublier le path s’il n’est pas au même endroit)
– les données envoyer, ici j’envoie tout le formulaire de ma page
– une fonction en callback, je test le retour pour afficher l’erreur
– enfin le format du fichier, j’utilise le Json, format « naturel » de Javascript

Du côté de Php mon retour est sous la forme suivante :
echo json_encode(array(0=>"true"));
ou
echo json_encode(array(0=>"false", 1=>"Erreur"));

NB : le booléen est pas vraiment un booléen puisque entouré de guillemets, j’ai pas encore tester avec un vrai booléen…

21 août 2009

Comment économiser 40? de péage entre Paris et Clermont-ferrand ?

Classé dans : Non classé — Mots-clefs :, — admin @ 10 h 08 min

Une petite astuce qui n’a rien avoir avec l’informatique cette fois-ci…

C’est l’oncle de ma chérie qui m’a donné cette astuce, et on ne perd que 30mn !

Par contre, je ne l’ai fais que de Clermont-Ferrand vers Paris, pour le moment…
Prenez l’autoroute qui va à Paris à partir de Clermont-Ferrand, prenez la sortie n°13 (Direction Saint-pourçain sur Sioule), puis suivez constamment Moulin – Never puis Paris, vous passerez respectivement par la N7 puis l’A77.

En fait vous utiliserez l’ancien réseau autoroutier qui servait aux vacanciers d’antan, ça coute environs 12? au total contre 32? par l’A71… (Soit une économie de 40? aller-retour)

Voilà de quoi bien commencer les vacances !

Jquery, Ajax et POST sont sur un bateau…

Classé dans : Informatique — Mots-clefs :, , — admin @ 9 h 59 min

Hier soir je me suis pris un peu la tête à balancer dans mon appel Ajax toutes les variables de mon formulaires.

Et en cherchant un peu je suis tombé sur un truc ô combien révolutionnaire : on peut envoyer la totalité d’un formulaire avec la commande suivante :
$.post("test.php", $("#testform").serialize()); test.php étant votre script php qui va traiter les variables du formulaire, et testform l’id du formulaire, on peut aussi utiliser $(’form’) pour traiter le formulaire s’il n’a pas de nom.

Ceci va permettre de traiter exactement comme un method= »post » un formulaire sans avoir à recharger la page, le tableau global $_POST sera instancié exactement de la même façon.

Ok je vous l’accorde … c’est écrit noir sur blanc dans la doc Jquery : http://docs.jquery.com/Ajax/jQuery.post, mais en cherchant sur le net une méthode propre, j’ai découvert des choses un peu tordues, des gens qui passaient par des boucles dynamiques sur tous les éléments du formulaire pour tout envoyer par exemple.

J’espère aider une paire d’âmes égarées…

19 juillet 2009

Requête préparée avec PDO : déjouez le 0 sur les nombres

Classé dans : Informatique — Mots-clefs :, , — admin @ 20 h 38 min

J’ai rencontré un problème très chiant : lorsque je prépare une requête préparée pour un update, les valeurs vides deviennent des valeurs à 0 pour les nombres sur MySQL.

Pour éviter cela il faut mettre les attributs suivants sur votre connection :

$dbh->setAttribute(PDO::ATTR_ORACLE_NULLS, PDO::NULL_TO_STRING);

$dhb étant l’objet PDO instancié.

Attention au faux ami ! ATTR_ORACLE_NULLS fonctionne parfaitement avec les autres base de données.

Pour les curieux, plus d’explication ici

29 juin 2009

Centrer une div

Classé dans : Informatique — admin @ 21 h 19 min

Je me suis lancé depuis quelques temps dans la mise en page de sites. Pas vraiment mon truc, l’intégration c’est pas des algo qui me tordent l’esprit :)
Mais si je veux rester autonome pas le choix !

J’ai eu plusieurs fois à centrer une div sur une page HTML. Elle comportait tout le contenu de mon site.
Il existe plusieurs manières de centrer une div, celle que j’utilise est pour moi la plus simple et je n’ai jamais rencontré de problème de compatibilité.

Voici un exemple simple :

Mon texte au centre

Extrait des css :


#divcentre {
margin: 0 auto;
}

Quelques explications :

Les marges seront automatiquement fixées par l’interpréteur HTML : par défaut elles sont égales de chaque côté.

le 0 signifie qu’il n’y a pas de marge à ajouter aux marges automatiques.
Pour ma part j’utilise une largeur fixe sur la div, si l’on veut qu’elle s’adapte à la largeur de l’explorer définissez la taille des marges ou encore utiliser une largeur en % (exemple: width: 80%)

Enfin un exemple ici

Articles plus anciens »

Propulsé par WordPress