Mots-clé : php

Pour la nouvelle année… j'ai installé oxyl-box

Voici comment installer quelque chose qui transforme votre Pinnacle Showcenter en un outil pratique, sympa, rapide à utiliser et qui ne surcharge pas votre ordinateur avec plein de choses complètement inutiles.

Le site où j’ai trouvé mon bonheur est ici : oxyl.de

Notez la première chose d’importance : tout est gratuit.

Avant d’aller plus loin, voici la petite histoire de mon Pinnacle Showcenter 200, pour que vous compreniez ma démarche, qui sera peut-être la vôtre aussi.

Un jour, j’ai lu sur Internet, le test d’un lecteur vidéo qui m’a semblé vraiment super sympa. J’ai finalement craqué : j’ai acheté le Pinnacle Showcenter 200.

Lorsque je l’ai reçu, j’ai fait ce que toute personne normale aurait fait, à savoir, insérer le CD et installer le logiciel pour utiliser mon joujou.

Qu’est-ce que je n’avais pas fait ! Il m’a demandé d’installer tout un tas de choses, ça a pris un temps fou, il a récupéré le Framework .Net de Microsoft, il a installé sans me demander mon avis l’intégralité du serveur de base de données Microsoft SQLServer version personnelle, qui prend un maximum de mémoire et de ressources, et, cerise sur le gâteau, a rajouté plus de dix secondes au démarrage de mon ordinateur !

Je me suis dit : il faut trouver une autre solution. J’ai alors cherché sur Internet, et je suis tombé sur ce petit bijoux dont j’ai donné l’adresse déjà plus haut : oxyl.de

Voilà comment faire pour l’installer, parce que ce n’est pas en deux secondes que tout fonctionne, mais au moins, une fois que ça fonctionne, votre PC ne rame pas inutilement, et c’est déjà quelque chose d’énorme.

  1. Récuperer la version complète d’installation ici
  2. L’installer en cliquant « oui », avec toutes les options, y compris si certaines ne sont pas cochées (je crois que « stoWeb » n’est pas coché, il faut le cocher en mode « installation complète sur le disque »)
  3. Après que tout ait été installé, téléchargez cette archive : oxylbox-www.rar
  4. Ensuite, décompressez là directement par dessus le répertoire www d’installation d’oxyd, normalement c’est « C:\Program Files\oxylbox »
  5. Enfin, il faut éditer le fichier « php.ini » qui est dans le répertoire de Windows (normalement, C:\Windows) et cherchez le mot extension_dir. Assurez-vous que vous avez bien ceci :
    extension_dir = "C:\Program Files\oxylbox\php5\ext"
    Sachant que le répertoire est celui où vous avez installé oxyd.

Voilà, tout tourne ! Pour vérifier, ouvrez votre navigateur Internet et tapez cette adresse : http://127.0.0.1:8000/

Normalement tout fonctionne.

Maintenant la note pour les informaticiens :

En réalité, programme est très vieux et le type qui a fait ça est un jeune qui a découvert au fur et à mesure pas mal de fonctionnalités, et les a ajoutées, ce qui donne lieu à un bazar monstre. De plus, en php, il utilise les register_globals=On c’est à dire que dans un POST, si une variable $_POST['P']='zoubida', alors il y accède directement via if (isset($P))… Mais ceci mis à part, il a programmé un mini serveur dédié pour envoyer du flux audio/vidéo etc vers le ShowCenter. Donc ça c’est le côté super sympa. En fait ce qu’il faudrait refaire c’est toute la présentation, de manière à avoir quelque chose de clair, orienté objet, que n’importe qui pourrait facilement réutiliser. C’est vraiment dommage, parce qu’il y avait un bon potentiel derrière tout ça, mais il n’est pas exploitable tant que toute l’interface ne sera pas réécrite. Tous les commentaires sont en Allemand, ils ne sont pas fait selon le standard JavaDoc, donc il est impossible de générer une documentation correcte, les pages générées ne sont pas du tout propres, heureusement que le navigateur du ShowCenter est « souple » et les affiche correctement etc. Ceci dit il y a des idées sympas, par exemple, lorsqu’on lui demande de changer de « skin », il vérifie tous les répertoires existants dans le répertoire « skins » et passe au suivant. Autrement dit en pratique, vous faite simplement un copier coller d’un répertoire, et vous le renommez, changez quelques images pour tester et tout fonctionne sans toucher une ligne de code. Ca c’est super pratique. Si un jour j’ai un peu de temps, je referai tout ça en php. Mais ce n’est pas à l’ordre du jour pour 2008 !

Php : optimisation vs lisibilité

Attention, ce qui suit ne s’applique pas systématiquement partout, mais il faut avoir cela en tête dans certaines occasions.

Ci-suivent deux possibilités de codes qui font exactement la même chose : vous allez certainement me dire : le code 2 est très nettement moins bien que le code 1, à savoir que si on veut rajouter quelque chose dans le 1 c’est une ligne alors que dans le 2 c’est quatre lignes. Eh bien c’est vrai, mais il faut garder le code 2 qui est plus long et qui semble se répéter de manière inutile. Pourquoi, me demanderez-vous ? Je vais vous dire pourquoi :

Il faut toujours adapter le code en fonction de votre supérieur hiérarchique.

Si, si, je ne plaisante pas. Si vous avec un patron qui vous dit, une bonne fois pour toutes : « Voilà les champs qu’on utilisera cela ne changera pas », et, surtout, que c’est vrai, alors vous pouvez vous faire plaisir et factoriser au maximum. A l’inverse, un patron qui arrive et qui vous dit « Voilà les champs qu’on utilisera cela ne changera pas », et, le connaissant vous savez que c’est faux, alors utilisez le code 2. Cela m’arrive tout le temps : « Au fait Olivier j’ai oublié de te dire : il y a un nouveau champ garantie qui est, en réalité un pourcentage d’une autre garantie et il faut s’assurer que l’autre existe vraiment ». Si vous avez adopté le code 1 avec ce genre de patron, vous êtes fichu : Ce code n’est pas prévu pour gérer des exceptions.

Dernier argument pour le code 2 : il est beaucoup plus compréhensible que le code 1. Beaucoup, beaucoup, beaucoup. Et si quelqu’un doit prendre le relai après vous, votre objectif en tant que professionnel, c’est de lui faciliter la tâche au maximum. Donc… vive le code 2 !

Code 1

private function CreerTableauValeursGarantie($gar,$tab)
{
 foreach ($tab as $fc_aff=>$tab_get) {
  if ($gar->$fc_aff()) {
   foreach ($tab_get as $idx=>$fc_get) {
    $ret[$idx]=$gar->$fc_get();
   }
  }
 }
}


$tab_gar[$id_g][$idp_idf] =
 $this->CreerTableauValeursGarantie($gar, array(
  'getAffSurmortalite' => array(
   VAL_SURMORTALITE => 'getTauxSurprime2'),
  'getAffSurprime1' => array(
   VAL_SURPRIME_ADDITIONNELLE_DUREE_1 => 'getSurprimeAddDuree1',
   VAL_SURPRIME_ADDITIONNELLE_TAUX_1 => 'getSurprimeAddTaux1'),
  'getAffSurprime2' => array(
   VAL_SURPRIME_ADDITIONNELLE_DUREE_2 => 'getSurprimeAddDuree2',
   VAL_SURPRIME_ADDITIONNELLE_TAUX_2 => 'getSurprimeAddTaux2'),
  'getAffSurprime3' => array(
   VAL_SURPRIME_ADDITIONNELLE_DUREE_3 => 'getSurprimeAddDuree3',
   VAL_SURPRIME_ADDITIONNELLE_TAUX_3 => 'getSurprimeAddTaux3'),
  'getAffSurprime4' => array(
   VAL_SURPRIME_ADDITIONNELLE_DUREE_4 => 'getSurprimeAddDuree4',
   VAL_SURPRIME_ADDITIONNELLE_TAUX_4 => 'getSurprimeAddTaux4'),
  'getAffSurprime5' => array(
   VAL_SURPRIME_ADDITIONNELLE_DUREE_5 => 'getSurprimeAddDuree5',
   VAL_SURPRIME_ADDITIONNELLE_TAUX_5 => 'getSurprimeAddTaux5'),
  'getAffExclusionsPathos' => array(
   VAL_GAR_EXCLUSIONSPATHOS => 'getExclusionsPathologies' ),
  'getAffExclusionsSports' => array(
   VAL_GAR_EXCLUSIONSSPORTS => 'getExclusionsSports' ),
  'getAffExclusionsProfs' => array(
   VAL_GAR_EXCLUSIONSPROFS => 'getExclusionsProfessions' ),
  'getAffMensualite' => array(
   VAL_GAR_MENSUALITE => 'getMensualite' ),
  'getAffFranchise' => array(
   VAL_GAR_FRANCHISE => 'getAffFranchise' )));

Code 2


if ($gar->getAffSurmortalite()) {
 $tab_gar[$id_g][$idp_idf][VAL_SURMORTALITE ] =
  $gar->getTauxSurprime2();
}
if ($gar->getAffSurprime1()) {
 $tab_gar[$id_g][$idp_idf][VAL_SURPRIME_ADDITIONNELLE_DUREE_1 ] =
  $gar->getSurprimeAddDuree1();
 $tab_gar[$id_g][$idp_idf][VAL_SURPRIME_ADDITIONNELLE_TAUX_1 ] =
  $gar->getSurprimeAddTaux1();
}
if ($gar->getAffSurprime2()) {
 $tab_gar[$id_g][$idp_idf][VAL_SURPRIME_ADDITIONNELLE_DUREE_2 ] =
  $gar->getSurprimeAddDuree2();
 $tab_gar[$id_g][$idp_idf][VAL_SURPRIME_ADDITIONNELLE_TAUX_2 ] =
  $gar->getSurprimeAddTaux2();
}
if ($gar->getAffSurprime3()) {
 $tab_gar[$id_g][$idp_idf][VAL_SURPRIME_ADDITIONNELLE_DUREE_3 ] =
  $gar->getSurprimeAddDuree3();
 $tab_gar[$id_g][$idp_idf][VAL_SURPRIME_ADDITIONNELLE_TAUX_3 ] =
  $gar->getSurprimeAddTaux3();
}
if ($gar->getAffSurprime4()) {
 $tab_gar[$id_g][$idp_idf][VAL_SURPRIME_ADDITIONNELLE_DUREE_4 ] =
  $gar->getSurprimeAddDuree4();
 $tab_gar[$id_g][$idp_idf][VAL_SURPRIME_ADDITIONNELLE_TAUX_4 ] =
  $gar->getSurprimeAddTaux4();
}
if ($gar->getAffSurprime5()) {
 $tab_gar[$id_g][$idp_idf][VAL_SURPRIME_ADDITIONNELLE_DUREE_5 ] =
  $gar->getSurprimeAddDuree5();
 $tab_gar[$id_g][$idp_idf][VAL_SURPRIME_ADDITIONNELLE_TAUX_5 ] =
  $gar->getSurprimeAddTaux5();
}
if ($gar->getAffExclusionsPathos()) {
 $tab_gar[$id_g][$idp_idf][VAL_GAR_EXCLUSIONSPATHOS ] =
  $gar_cm->getExclusionsPathologies();
}
if ($gar->getAffExclusionsSports()) {
 $tab_gar[$id_g][$idp_idf][VAL_GAR_EXCLUSIONSSPORTS ] =
  $gar_cm->getExclusionsSports();
}
if ($gar->getAffExclusionsProfs()) {
 $tab_gar[$id_g][$idp_idf][VAL_GAR_EXCLUSIONSPROFS ] =
  $gar_cm->getExclusionsProfessions();
}
if ($gar->getAffMensualite()) {
 $tab_gar[$id_g][$idp_idf][VAL_GAR_MENSUALITE ] =
  $gar_cm->getMensualite();
}
if ($gar->getAffFranchise()) {
 $tab_gar[$id_g][$idp_idf][VAL_GAR_FRANCHISE ] =
  $gar_cm->getAffFranchise();
}

Tous mes blogs sont laids !

Si vous n’avez pas Firefox, et que vous utilisez l’immonde Internet Explorer, qui ne respecte toujours pas après 10 années (ou plus) de travaux, des règles basiques d’affichage, la dernière version (n°7) en date y compris, mes blogs ne s’affichent pas correctement !
Regardez-moi ces affichages : ça me déprime :
Copies d'écran

Php : Violation d'accès avec extension=php_exif.dll

Une astuce importante !

Si, dans le fichier php.ini, vous enlevez le commentaire pour php_exif.dll, afin d’activer cette extension, vous avez une chance sur deux d’avoir une violation d’accès… Pas très encourageant, hein ? La solution ? il faut impérativement activer, donc décommenter, php_mbstring.dll. Ce n’est pas tout !

Attention, php_exif.dll doit être chargé après php_mbstring.dll

extension=php_mbstring.dll extension=php_exif.dll

Linux php : ajout de json

Json est une extension pour JavaScript et php.
Ajout de l’extension Json : il faut aller la récupérer sur le site du créateur (http://aurore.net/), la compiler (make), l’installer (make install), et ensuite, ce qui n’est pas précisé (sauf ici), aller voir dans le fichier php.ini qui est très souvent dans /etc, où se situe le répertoire des extensions extension_dir, c’est sûrement, ici aussi, extension_dir = "/usr/lib".
Il suffit alors de copier le fichier json.so généré dans le répertoire des extensions, ici /usr/lib.
Rien de plus simple !
Résumé très rapide (il faut faire quelques manips en plus, mais le plus important est là) :

  1. wget http://aurore.net/projects/php-json/php-json-ext-1.2.1.tar.bz2
  2. tar -xvf php-json-ext-1.2.1.tar.bz2
  3. cd php-json-ext-1.2.1/
  4. ./configure ; make ; make install
  5. cp /usr/local/lib/php/extensions/no-debug-non-zts-20050922/json.so /usr/lib

Technique : moyen de paiement à la Société générale

Comment se passe le paiement fait via la Société Générale ?

On doit appeler un CGI qui s’appelle REQUEST auquel on passe en paramètre le n° de la transaction, le montant, etc.
Ce REQUEST va générer un code html qu’on va afficher (le code qui affiche les 3 cartes, etc, pour que le client puisse choisir).
Ensuite, le client clique sur une des cartes, et est redirigé.
Il arrive sur la banque.
Il paie, et une fois qu’il a payé, le serveur de la banque appelle autoresponse.php en passant en paramètres des infos précisant si le paiement a été effectué.
NB : le client ne voit absolument rien.
Ensuite, le client va cliquer sur le bouton Retour à la boutique.

  1. Si elle ne le fait pas heureusement on a déjà tout sauvé ;
  2. Si elle le fait, une page identique à autoresponse.php est appelée (c’est-à-dire qu’on a les mêmes paramètres envoyés par la banque) et à ce moment là on peut faire ce qu’on veut (afficher ‘Merci pour votre paiement’ ou afficher ‘le paiement a été refusé’, etc).