vendredi, novembre 23 2007
Par yannux le vendredi, novembre 23 2007, 13:10 - Tutorials
Voici un petit bout de code que j'ai réalisé dans le cadre d'un dévelopement
de plugin pour importer les vidéos d'un Flux RSS Dailymotion. Je ne pensais pas
avoir de difficultés, cependant l'utilisation de SimpleXml avec les namespaces
Xml, n'a pas été des plus évidentes. SimpleXml charge l'ensemble des noeuds
Xml, mais pas les noeuds avec un namespace ( exemple
<itunes:summary>description de ma vidéo</summary> ). Bon j'ai peut
être le cerveau au ralenti car j'ai compris comment m'en sortir au bout de ....
trop de temps à mon goût !
Voilà le code :
$entries= simplexml_load_file($this->_myDailymotionRss);
foreach($entries->channel->item as $item){ // Parcour chaque "block"
item
//Récupère les attributs de la balise
<media:content> situé à l'intérieur de <media:group>
$media_content= $item->children('media',
true)->group->children('media',true)->attributes();
$itunes= $item->children('itunes',
true);
$this->_medias[]= array(
'title'=> (string)$item->title,
'link'=> (string)$item->link,
'description'=> (string)$itunes->summary,
'content'=> array( 'url'=> (string)$media_content['url'],
'type'=> (string)$media_content['type'],
'width'=> (string)$media_content['width'],
'height'=> (string) $media_content['height']
),
);
}
aucun rétrolien
dimanche, avril 1 2007
Par yannux le dimanche, avril 1 2007, 12:10 - Tutorials
Artichow est une librairie PHP qui permet de réaliser des graphiques. C'est une
alternative à Jpgrah. Tout comme cette dernière il existe une version php4/5 et
php5. Artichow est un projet français. Ayant eu à l'utiliser et un peu de mal à
démarer avec je vais essayé de vous présentez ça en tenant compte des problèmes
que j'ai rencontré. Pour celà je vais simplement reprendre le code que j'ai
déjà réalisé.
Il s'agit d'un graphique représentant les créations de blogs, et les
inscriptions d'utilisateur sur une plateforme de blogs,. On visualise les
effectifs sur 1 mois donnée ou une année. Ce que j'ai eu le plus de mal à faire
c'est la graduation de 1 en 1. Par défaut elle se fait tous les demis 0 ; 0,5 ;
1,0 ; 1,5 ; etc.... Hors on ne peut avoir des demis visiteurs :). Il y'as donc
2 graphiques en 1.
Artichow tout comme Jpgrah est une librairie entièrement objet ( version php5
). Toutes les variables ( ou presque ) sont des instanciations d'autres objets.
Artichow est 100% GPL. Jpgraph a une licence llibre QPL ( restriction sur les
modifications possible à ce que j'ai compris.... ) et une Licence
commercial.
I - Création d'un nouveau graphique
$graph = new Graph(650, 300); // largeur,
hauteur
$graph->setAntiAliasing(TRUE);
$graph->shadow->setSize(3); // taille de l'ombre en bas à droite
$graph->title->set($title); // titre du graphique, apparaît en haut
/* A l'instanciation de la classe graphique, une variable $title est
crée.
* C'est variable $title est en faite l'instanciation de la classe awLabel d'
Artichow
* On peut donc utiliser toutes les méthodes d' awLabel pour configurer notre
titre.
*/
$graph->title->setFont(new Tuffy(15));
$graph->title->setColor(new Color(0x00, 0x00, 0x8B));
$graph->title->setPadding(0,0,-5,0); // marge intérieure entre le texte
du label est les bordures de celui-ci
// On cré 2 variable de couleurs qui nous seront utiles par la suite.
$blue = new Color(0, 0, 200);
$red = new Color(200, 0, 0);
II - 2 Grapiques en 1 => on créer un groupe
$group = new PlotGroup; // Permet de gérer
plusieurs objet Plot ( BarPlot, LinePlot, etc..)
$group->setPadding(40, 40); // Espacement interne de 40px
$group->setBackgroundColor(new Color(240, 240, 240)); // Met une couleur de
fond au groupe
III - 1 - Création de la première série de BarPlot
$plot = new BarPlot($y_blogs, 1, 2); // Nouvel
objet Barplot avec les données $y_blogs, Bare 1 de 2
$plot->barBorder->setColor($blue); // bordure de la barre de stat.
$plot->setBarGradient(new LinearGradient($blue,new Color(230, 230, 255,
30),0)); // Couleur dégradé du fond
$plot->setYAxis(Plot::LEFT); // On donne la poisition gauche pour l'axe des
Ordonnées de la première série
$group->add($plot); // On ajoute notre première série au group
// On configure notre axe des Ordoonnées n°1
$group->axis->left->setColor($blue); // Couleur de l'axe
$group->axis->left->title->set('Blogs'); // Légende de l'axe
$group->axis->left->hideTicks(); //Cache les petits tiret de
graduation
$group->axis->left->setLabelInterval(2); //!!! Permet de spécifier
l'interval de gradution !!!
$group->axis->left->setLabelPrecision(0); // Précision décimal de la
graduation ( ici pas de chiffres après la virgule )
On a donc désormé, un graphique presque finis, qui contient une série de
donnée. Il faut recréer une autre série qui viendra se mettre à côté. Pour celà
rien de plus simple, un petit copier coller du III en changant quelques
valeurs.
III - 2 - Création de la première série de BarPlot
$plot = new BarPlot($y_users, 2, 2); // Nouvel
objet Barplot avec les données $y_users, Bare 2 de 2
$plot->barBorder->setColor($red); // bordure de la barre de stat.
$plot->setBarGradient(new LinearGradient($red,new Color(230, 230, 255,
30),0)); // Couleur dégradé du fond
$plot->setYAxis(Plot::RIGHT); // On donne la poisition gauche pour l'axe des
Ordonnées de la première série
$group->add($plot); // On ajoute notre deuxième série au group
// On configure notre axe des Ordoonnées n°2
$group->axis->right->setColor($red); // Couleur de l'axe
$group->axis->right->title->set('Utilisateurs'); // Légende de
l'axe
$group->axis->right->hideTicks(); //Cache les petits tiret de
graduation
$group->axis->right->setLabelInterval(2); //!!! Permet de spécifier
l'interval de gradution !!!
$group->axis->right->setLabelPrecision(0); // Précision décimal de la
graduation ( ici pas de chiffres après la virgule )
Voila nos 2 séries sont créées. Dernière étape, afficher ou enregistrer notre
graphique !
IV - Voir le graphique
$graph->add($group); // Ajout du groupe à
l'objet Graph
$filename = 'mon_graphique.png'; // on créer un nom de fichier
/*
* Par défaut la méthode draw va afficher directement le graphique. Cependant,
si on a déjà affiché des données
* à l'écran, le résultat est inutile. On enregistre donc l'image dans un
fichier grâce à file_put_contents et le paramètre
* Graph::DRAW_RETURN
*/
file_put_contents($filename, $graph->draw(Graph::DRAW_RETURN));
echo 'Mon graphique'; // On affiche dans une balise
aucun rétrolien
lundi, février 26 2007
Par yannux le lundi, février 26 2007, 17:54 - Tutorials
Je configure actuellement un petit serveur de dev interne pour le boulot. Comme
le titre l'indique. Voilà la configuration que j'aimerais mettre en place.
Biensûr pas de prob pour Apache 2, Php5 et Suphp. Mais quand il s'agit de
mettre Fcgid.... Le tout sur une Debian Etch
J'ai essayé différente piste, mais rien à faire. Je continue mes recherches, si
quelqu'un a déjà réussi à faire ça...
La suite dans quelques heures...
Me revoilà avec fcgid et suphp qui tourne mais séparément :s.
Lorsque que j'essaye de marier les 2, suphp me répond qu'il ne peu pas exécuter
le script. Les droits sont bon, le user:group aussi. mais rien n'y fait. Suite
à différent infos glanés par ci par là voilà ma configuration :
/etc/apache2/mods-enabler/suphp.conf :
AddHandler x-httpd-php .php .php3 .php4 .php5
.phtml
suPHP_AddHandler x-httpd-php
AddHandler x-httpd-fcgi .phpf # commenter pour avoir fcgid qui tourne tout
seul
suPHP_AddHandler x-httpd-fcgi # commenter pour avoir fcgid qui tourne tout
seul
suPHP_Engine on
La config de mon vhost :
NameVirtualHost *
ServerAdmin webmaster@localhost
DocumentRoot /home/ynave/
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride None
Order allow,deny
allow from all
# AddHandler fcgid-script .php # décommenter pour avoir fcgid qui tourne
seul
FCGIWrapper /home/ynave/php-fcgi .phpf
ErrorLog /var/log/apache2/error.log
LogLevel debug
CustomLog /var/log/apache2/access.log combined
ServerSignature On
la config /etc/suphp/suphp.conf
[global]
logfile=/var/log/suphp/suphp.log
loglevel=info
webserver_user=www-data
docroot=/home/ynave
;chroot=/var/www
allow_file_group_writeable=true
allow_file_others_writeable=false
allow_directory_group_writeable=true
allow_directory_others_writeable=false
check_vhost_docroot=true
errors_to_browser=true
env_path=/bin:/usr/bin
umask=0002
min_uid=100
min_gid=100
[handlers]
;Handler for php-scripts
x-httpd-php=php:/usr/bin/php5-cgi
x-httpd-fcgi=execute:!self ;commenter pour avoir fcgid qui tourne tout
seul
;Handler for CGI-scripts
x-suphp-cgi=execute:!self
Donc si je commente / décommente les parties mentionnées j'ai un index.php qui
s'éxécute avec suphp et un index.phpf qui s'exécute avec fcgid.
Biensûr y'a pas photo, ave le fcgid 250 req/sec avec le suphp 20 req/sec.
Par contre là avec suphp censé utilisé fcgid pour les .phpf rien à faire j'ai
le message :
Internal Server Error
Could not execute script "/home/ynave/index.phpf"
suPHP 0.6.2
Et biensûr rien dans les logs...
aucun rétrolien
dimanche, septembre 24 2006
Par yannux le dimanche, septembre 24 2006, 21:08 - Tutorials
Voilà une petite directive sympas lorsque vous créer un vhost avec apache2 et
que votre php tourne en CGI + mod_suphp. Ce mode de fonctionnement empêche
d'utiliser des directives dans un .htacess pour modifier les valeurs par
défauts de la configuration php. Ce qui peut s'avérer parfois gênant, par
exemple si vous voulez modifié la taille maximal de fichier pour l'upload,
etc...
Il suffit donc de mettre cettr directive :
suPHP_ConfigPath
/repertoire/ou/se/situe/votre/php.ini/personalisé
Considérons la vhost suivant, mon php.ini sera dans /media/datas/WWW/zenphoto/
:
ServerAdmin yannuxx@gmail.com
ServerName photos.onbebop.net
ServerAlias photos.onbebop.net
DocumentRoot /media/datas/WWW/zenphoto/public/ suPHP_ConfigPath
/media/datas/WWW/zenphoto/
aucun rétrolien
jeudi, décembre 22 2005
Par yannux le jeudi, décembre 22 2005, 19:57 - News
Eheheh !!! ( s' ésclame t il bien fort )
Alors pour supporter cette article il vous faut :
Enfin bouclé ce projet
de brun de groniouniounioud'emailing
pour....*BIP*. Me voilà pris d'un soudaine crise de folie comme il en arrive
parfois. L'euphore d'un projet qui part en prod. :D !
J'allais vous raconter une petite histoire mais tant pis faisons simple !
J'étais parti au Furet Du Nord (hey oui pas de marque qui tienne) acheter le cd
de James Blunt ! Pour ce qui aime je vous salu(t), pour les autres tant pis :p.
Après un petit passage au rayons anims je m'en vais quérir ce bien précieux !
Et paf après avoir fait 3 fois le rayons j'apprend qu'il n'y en a plus en stock
! Misère au déséspoir on va se rabbattre sur Jean Louis Aubert mais bon je
n'avais entendu qu'un morceaux et le cd et protégé DRM etc.... tout le
toutim... CA PUEEE !:D
Après cette épisode foireux, je décide d'aller faire un petit tour au
rayons.....livre informatique biensûr ! Et là le Saint Graâl c'est illuminé
(oui j'ai trop regarder les templiers hier soir !).
PHP5 Best Practices ! , le livre que j'attendé, plein de bon conseils pour
monter un projet php, sutructuration, uml, svn... bon j'en parlerais plus quand
j'aurais bien entamer la bête !
Deuxième surprise : un libre sur
Ubuntu !! Et oui Ubuntu débarque et ça va faire
mal, bientôt windows aux archives ;). Bon allez sans troll, ça s'appel :
Ubuntu Linux. C'est beau, ça se mange sans fin, ça glisse tout seul. Alors
allez y

Oui bon moral de l'histoire quand même, faut bien trouver une raison au titre
hein !
Geek qui part acheter cd reviens avec livre php"
aucun rétrolien