php-experts.org - développement php et internet » Développement Web https://www.php-experts.org Ressources sur le développement internet, PHP/MySQL, Ajax, marketing online, référencement... Sat, 19 Jun 2010 14:23:03 +0000 http://wordpress.org/?v=2.9.2 en hourly 1 Wordpress et les child themes https://www.php-experts.org/developpement-web/wordpress/wordpress-child-themes-418 https://www.php-experts.org/developpement-web/wordpress/wordpress-child-themes-418#comments Sat, 19 Jun 2010 14:23:03 +0000 Didier https://www.php-experts.org/?p=418 A l’occasion de la sortie de Wordpress3, je me suis penché sur le code et sur les dernières fonctionnalités qui ont été ajoutées au moteur de blog. Surprise, j’ai “raté” pas mal de nouvelles choses et il va falloir que je me remette à niveau. Première plongée dans les nouveaux moyens que propose Wordpress pour arriver à personnaliser son blog sans altérer le code principal (le core), je me suis penché sur les child themes.

Un thème Wordpress est un template complet, qui permet de personnaliser l’affichage de l’ensemble des parties du blog. Maintenu par un auteur tiers, on n’est pas à l’abri d’une évolution (via l’installateur automatique de mises à jour), qui pourrait écraser d’éventuelles modifications apportées pour customiser le thème.

Pour éviter ça, a été mis en place le système de child themes : il est possible de créer un thème “enfant” pour n’importe quel thème installé. Concrètement, les child themes utilisent un procédé d’override : si aucun fichier spécifique n’est trouvé dans le thème enfant, c’est le fichier correspondant pour le thème parent qui est utilisé.

Pour déclarer un child theme, il suffit de créer un dossier dans votre répertoire /wp-content/themes/. Il faudra y placer une feuille de style, nommée style.css, qui reprendra les informations suivantes :

  1. /*
  2. Theme Name:     TwentyTenChildTheme
  3. Theme URI:      http: //www.php-experts.org/
  4. Description:    Child theme for TwentyTen
  5. Author:         Didier Sampaolo
  6. Author URI:     http: //www.php-experts.org/
  7. Template:       twentyten
  8. Version:        0.1.0
  9. */
  10. @import url("../twentyten/style.css");

Une fois le fichier créé, vous pourrez aller activer votre thème dans l’onglet Apparence de l’administration de votre blog, comme un thème classique. Une mention du thème parent apparaitra pour vous confirmer que vous êtes en train d’activer le bon thème.

Les deux lignes les plus importantes sont Template: qui indique à Wordpress quel est le thème parent (il faut indiquer le nom de son répertoire à partir de /themes/ ) et @import, qui permet d’importer la feuille de style du parent. Sans cette ligne, la feuille de style n’est pas chargée pour vous permettre de repartir sur des bases propres.

Ensuite, tous les fichiers du thème parent sont chargés, à moins qu’un fichier équivalent soit trouvé pour le child theme. En pratique, pour modifier le footer, il vous suffit de créer un fichier footer.php dans le dossier de votre thème-enfant, et d’y placer votre code. Celui-ci peut être une légère variation du code du footer du thème parent, ou un code tout à fait nouveau et original.

Du coup, quand le thème parent est mis à jour, vous pouvez appliquer ces changements et théoriquement, dans la majorité des situations, votre thème enfant restera inchangé.

]]>
https://www.php-experts.org/developpement-web/wordpress/wordpress-child-themes-418/feed 0
Pseudo-code et calcul du PGCD https://www.php-experts.org/developpement-web/algoritmes/pseudo-code-et-calcul-du-pgcd-391 https://www.php-experts.org/developpement-web/algoritmes/pseudo-code-et-calcul-du-pgcd-391#comments Fri, 30 Oct 2009 11:23:43 +0000 Didier https://www.php-experts.org/?p=391 Dans cet article, qui fait partie d’une série sur les algorithmes usuels en PHP, nous verrons comment rédiger du pseudo-code pour modéliser nos fonctions PHP. L’algorithme présenté n’est pas là en raison de sa surpuissance ou de son utilité (pas flagrante dans la vie courante… ou du moins pas dans la mienne), mais simplement parce qu’il est facile à comprendre. Merci :)

Le “Plus Grand Commun Diviseur” est le nombre entier maximal qui divise deux autres entiers (deux, ou plus!). Par exemple, le PGCD de 30 et 12 est 6: il n’y a aucun nombre entier (integer) supérieur à 6 qui puisse diviser à la fois 12 et 30. Pour calculer le PGCD, théoriquement, on décompose chaque entier en produit de nombres premiers. Ca donne, pour 30 : 2×3x5 et pour 12 : 2×2x3. Quand on prend les facteurs en commun dans les deux expressions, on a bien 3×2 = 6.

Mais décomposer un nombre en produits de nombres premiers n’est pas à proprement parler simple en termes de calculs. Surtout pour un ordinateur, où les divisions coûtent toujours plus cher au niveau du processeur, et à plus forte raison quand, comme ici, il faudra en faire en grand nombre. Assez difficile donc d’en tirer un algorithme facile à réutiliser et à comprendre.

Calcul du PGCD par l’Algorithme d’Euclide

Sauf avec l’Algorithme d’Euclide, qui part du principe que :

si un nombre entier divise deux autres nombres entiers, alors il divise leur différence (et leur somme). Il divisera donc les différences successives du plus petit ôté du plus grand.

Source: Wikipedia, PGCD (Mathématiques élémentaires)

Il devient alors très simple de trouver le PGCD de deux entiers, sans effectuer la moindre division. On soustrait le plus grand entier au plus petit, jusqu’à obtenir le plus petit reste non nul. Reprenons l’exemple de 30 et 12 :

30 – 12 = 18
18 – 12 = 6

Et voila !

Le code de l’Algorithme d’Euclide de calcul du PGCD

Pour pouvoir écrire le code de notre fonction à partir de l’énoncé de l’Algorithme, il faut qu’on traduise les étapes de la résolution du problème en “pseudo-code”. Le pseudo-code est une simple syntaxe qui utilise des mots classiques et ressemble fort à du code, mais sans référence à un langage de programmation en particulier. C’est une étape intermédiaire entre le langage naturel et les langages de programmation. Son but est de modéliser le cheminement “de pensée” de l’Algorithme.
Ici, on dirait :

Soient $a et $b deux entiers. (On devra les passer comme paramètres de notre fonction)
Tant que (reste de la soustraction des deux entiers) > entier le plus petit et 0, on continue.

On passe ensuite au vrai code PHP, qui traduit simplement ce pseudo-code :

  1. function pgcd($a,$b) {
  2.     $reste = $b;
  3.     while($reste > $a && $reste > 0) {
  4.         $reste -= $a;
  5.     }
  6.     return $reste;
  7. }
  8. echo pgcd(12,30);

Remarques sur le code : Le code présenté n’est pas du tout optimal. Il faudrait, notamment, vérifier que l’entier le plus petit est bien le premier paramètre de la fonction. Bref, c’est un exemple.

Comme on le voit, l’Algorithme d’Euclide permet de trouver très simplement le PGCD de deux entiers (ou plus en modifiant un peu la fonction) sans effectuer de division, avec une seule boucle.

Et en passant par l’étape du pseudo-code, on sait déjà clairement où on va avant même d’écrire la première ligne de code. Ici, cela semble trivial, voire même superflu, mais ma vie a déjà été sauvée par quelques lignes de pseudo-code laissées en commentaires dans une fonction particulièrement ardue. Essayez, vous verrez !

]]>
https://www.php-experts.org/developpement-web/algoritmes/pseudo-code-et-calcul-du-pgcd-391/feed 0
Le tri bulle, ou tri par propagation https://www.php-experts.org/developpement-web/algoritmes/le-tri-bulle-ou-tri-par-propagation-382 https://www.php-experts.org/developpement-web/algoritmes/le-tri-bulle-ou-tri-par-propagation-382#comments Thu, 29 Oct 2009 13:09:14 +0000 Didier https://www.php-experts.org/?p=382 (en anglais: bubble sort)

Le tri bulle est un très bon algo au point de vue didactique mais mauvais en termes mathématiques (complexité trop grande). Son but est de trier une liste de valeurs pour la renvoyer en ordre croissant. Pour cela, l’algo parcours les éléments de la liste deux par deux, et les classe en ordre croissant (il les permute si le 2e élément est le plus petit). Une fois la liste finie, le tri-bulle recommence. Lorsqu’un parcours a été fait entièrement sans avoir besoin de faire une permutation, le tri est fini.

Attention, le tri-bulle n’est que très rarement utilisé lorsqu’on a besoin d’opérations de tri, car il n’est pas très performant.
Cet article est le premier d’une série consacrée aux algorithmes connus et utiles, et est à prendre comme une “introduction” à l’algorithmique.

Le code du tri-bulle en PHP

  1. function bubblesort(&$liste) {
  2.     $nbItems = count($liste);
  3.     $permutation = true;
  4.     $nbPermutations = 0;
  5. // on continue tant qu’on a eu à faire des permutations…
  6.     while($permutation == true) {
  7.         $permutation = false;
  8.         for($i=0;$i<$nbItems-1;$i++) {
  9.             // si l’élément de gauche est le plus grand,
  10.             if ($liste[$i] > $liste[$i+1]) {
  11.                 // on échange la place des éléments
  12.                 $temp = $liste[$i+1];
  13.                 $liste[$i+1] = $liste[$i];
  14.                 $liste[$i] = $temp;
  15.                 $permutation = true;
  16.                 $nbPermutations++;
  17.             }
  18.         }
  19.         print_r($liste);
  20.     }
  21.     return array(‘nbpermutations’=>$nbPermutations);
  22. }
  23.  
  24. $liste = array(4,9,13,5,17,2,-6);
  25. $bubble = bubblesort($liste);
  26.  
  27. echo ‘Liste triée en ‘.$bubble[‘nbpermutations’].‘ permutations.’;

Remarques sur le code: j’ai volontairement passé la liste de valeurs par référence. Dans ce cas, la variable de départ est utilisée directement au lieu d’être copiée dans la fonction puis modifiée. On n’a donc pas besoin d’utiliser return pour récupérer la liste triée.

]]>
https://www.php-experts.org/developpement-web/algoritmes/le-tri-bulle-ou-tri-par-propagation-382/feed 1
L’EBG cherche un développeur web junior https://www.php-experts.org/developpement-web/offre-demploi-lebg-cherche-un-developpeur-web-junior-373 https://www.php-experts.org/developpement-web/offre-demploi-lebg-cherche-un-developpeur-web-junior-373#comments Wed, 26 Aug 2009 15:49:42 +0000 Didier https://www.php-experts.org/?p=373 Cherche développeur web junior ayant des connaissances en XHTML / CSS / Javascript / Ajax, PHP et MySql pour le développement d’un réseau social !

ELENBI, vous connaissez ?

Cette structure rassemble 2 entités :
- L’EBG (Electronic Business Group) présidé par Jean-Bernard Lévy (PDG de Vivendi), qui fédère plus de 550 grandes entreprises actives dans différents secteurs (http://www.ebg.net/subscribers.php pour voir la liste des adhérents)…
Ce club d’affaires propose le partage d’expériences autour de tables rondes sur des thèmes précis des nouvelles technologies dans le cadre de 7 cycles de conférences (nouveaux médias, mobilité, marketing & la communication, technologies, achats & B2B, télécommunications et systèmes d’information, droit et ressources humaines) et d’ouvrage comme Internet Marketing 2009.

- AGRION qui rassemble les professionnels de l’énergie, des matières premières et du développement durable.
Au même titre que l’EBG, les membres se retrouvent à l’occasion de conférences organisées sous le format de tables rondes concrètes et techniques, au rythme d’une par semaine. Le véhicule du futur, les bonnes pratiques du développement durable, les stratégies d’achats de matières premières, d’hydrocarbures… sont des sujets traités par ce club d’affaires.
2 ans après son lancement, Agrion a déjà une envergure internationale : 15 000 contacts, un bureau à Francfort, et une récente antenne à San Francisco.
Plus d’infos sur http://www.agrion.org

Mais EBG & AGRION, c’est également bientôt 2 sites web communautaires orientés web 2.0 !
Dans ce cadre, nous recherchons un développeur web junior, ayant des connaissances en XHTML / CSS / Javascript / Ajax, PHP et MySQL…

Statut : CDD
Début: dès que possible !
Lieu : Paris dans le 10ième
Durée : 3 à 6 mois et peut être plus (ouvert à vos contraintes !)
Rémunération : 1140 euros sur une base de 35 heures ou 7,52€ net de l’heure si profil de type alternance au ¾ temps.

Interessé ?
Merci d’envoyer votre CV à [email protected] (de la part de Didier Sampaolo via PHP-Experts) ou à [email protected] et je transmettrais.

Mon avis :
L’EBG est une structure très sérieuse avec une réputation impeccable. Pour un jeune développeur, cette mission est un peu la cerise sur le gâteau qu’est un CV ;)

Important: en réponse aux nombreux commentaires qu’à reçu cet article, je précise que le développeur junior recruté ici rejoindra une équipe technique. Il n’a jamais été question de faire développer un réseau social complet par une seule personne, qui plus est avec peu ou pas d’expérience.

Quand je parle de “cerise sur le gâteau”, je veux dire qu’avoir une mission pour l’EBG sur un jeune CV est une bonne chose.

La durée de la mission étant ouverte à discussion, on peut imaginer que la rémunération l’est aussi.

]]>
https://www.php-experts.org/developpement-web/offre-demploi-lebg-cherche-un-developpeur-web-junior-373/feed 2
Concours de code https://www.php-experts.org/developpement-web/concours-php/concours-de-code-364 https://www.php-experts.org/developpement-web/concours-php/concours-de-code-364#comments Sat, 08 Aug 2009 13:28:11 +0000 Didier https://www.php-experts.org/?p=364 Au mois de juin, php-experts a eu un an. Le blog commence a entrer dans son âge adulte et remporte des succès dont je suis assez fier : flux repris par Planete PHP (fr) et par le Planete MySQL (fr), commentaires de pointures du domaine (notamment Eric Daspet et Mère Théresa, pour ne citer qu’eux), et un auditoire en augmentation constante (+150% mensuels selon Google Analytics).

Pour fêter cet anniversaire, j’ai décidé d’organiser un concours de code PHP, évidemment gratuit et ouvert à tous. Les participants (et leurs sites) seront tous présentés sur PHP-Experts. Vu que je sais que les développeurs sont des gens occupés (;)), le concours proposera un petit exercice de PHP assez simple (réalisable en quelques heures au maximum) qu’il faudra optimiser. Les performances obtenues seront benchmarkées et le ou les gagnants remporteront des lots.

Si le concours est un succès, d’autres suivront. Les exercices porteront sur des actions simples qu’il faut souvent réaliser en PHP, afin de faire découvrir à tous les bonnes pratiques de chacun. Par exemple, je pense que le premier exercice sera de lire un fichier texte, effectuer quelques traitements simples et afficher le résultat. Ca semble simple, mais ça va demander des accès disques, des boucles… Autant de choses qu’on croise tous les jours et qu’on néglige souvent de regarder de près.

Lots

Au niveau des lots, j’ai pensé à quelques bricoles: Tests d’entraînement en ligne pour la certification PHP Zend, bons d’achat pour des librairies en ligne proposant des livres intéressants sur le développement, espaces publicitaires gratuits sur mes sites (emplacements à déterminer en fonction de la cible), etc.
Et c’est là que j’ai besoin de vous, et que j’entame une carrière que j’espère prometteuse dans la mendicité électronique, sous forme d’appel aux dons. Chaque donateur d’un lot aura sa présentation sur PHP-Experts et ma reconnaissance éternelle. N’hésitez pas à me signaler en commantaire le geste que vous êtes prêts à faire, tous les cadeaux sont bons à prendre !

Je compte sur vous !

]]>
https://www.php-experts.org/developpement-web/concours-php/concours-de-code-364/feed 9
A la découverte d’Ubuntu: la première heure https://www.php-experts.org/developpement-web/admin-serveur/a-la-decouverte-dubuntu-la-premiere-heure-343 https://www.php-experts.org/developpement-web/admin-serveur/a-la-decouverte-dubuntu-la-premiere-heure-343#comments Sat, 25 Jul 2009 03:49:17 +0000 Didier https://www.php-experts.org/?p=343 Disclaimer

Je demande à mon lectorat de m’excuser pour ce post, qui ne concerne pas directement le développement, mais qui est un retour d’expérience de ma récente installation d’Ubuntu sur mon poste client principal. Je vulgarise volontairement beaucoup de choses, et j’essaye de m’éloigner -une fois n’est pas coutume- de ma vision habituelle de professionnel pour ne parler que des aspects “client”. Je travaille habituellement sous Windows. Je ne cherche pas à dire lequel système est le meilleur, je ne bomberai pas le torse en disant fièrement que je suis sous Ubuntu. Je livre seulement mes premières impressions après la bascule.

D’abord, pourquoi Ubuntu ?

Hébergeant depuis très longtemps l’ensemble de mes sites sous Linux Debian, j’ai appris il y a peu qu’il existait une Ubuntu en version serveur. Me demandant si la migration de ma Debian habituelle à Ubuntu Server pouvait m’apporter quelque chose, j’ai posé la question sur les forums officiels français Ubuntu. Et là, bon accueil, réponse rapide et en bon français, ça commençait bien. Et loin du prosélytisme Apple (si, si.), on m’a clairement dit que si je m’en sortais bien sous Debian, je ne gagnerais pas grand-chose, Ubuntu étant surtout pensée pour être utilisée en poste client (s’en est suivi une bonne vieille polémique, mais le ton est resté cordial et le thread est bourré d’infos intéressantes et d’avis personnels).
Pour quelqu’un qui est sous Windows depuis “toujours”, avec un long passage par RedHat à l’époque de la 7.2, quand les disques durs étaient en os et les souris en silex, et un bref et douloureux essai de quelques mois sous FreeBSD (où j’ai à peu près autant été dépaysé que si j’avais passé un week-end vers Alpha du Centaure), entendre parler d’un Linux “Client-Friendly” en 2009, ça m’a fait craquer et j’ai eu envie d’essayer. Surtout quelques jours après avoir installé Windows Seven par curiosité – et avec dans l’idée de publier mes impressions (ec que je n’ai pas fait puisque le retour d’expérience de Windows Seven sera fait en deux mots : “comme Vista”).

Détection du hardware

Lacie USB: détecté!

Lacie USB: détecté!

Je n’utilise pas un PC dernier cri, mais j’ai été agréablement surpris par la fiabilité de la détection du hardware sous Ubuntu. Aucun périphérique n’a posé de problème, de la carte réseau à la souris (molette y compris!). Même chose pour le disque dur externe en USB, qui est miraculeusement apparu lorsque je l’ai branché. Même les touches de raccourci présentes sur mon clavier (contrôle du volume) fonctionnent, ce qui n’était pas le cas sous Windows 7 RC1.
Ca m’a agréablement changé de l’époque, pas si lointaine que ça, où on devait éditer à la main, en console, le fichier de configuration du serveur X avant de pouvoir démarrer celui-ci, et où il fallait monter ses périphériques de stockage (en précisant à la main le type de système de fichier…).

Connexion à Internet

Là, pas grand-chose à dire. En Ethernet, je suis déjà connecté. Mon réseau Wifi domestique est aussi détecté et prêt à l’emploi. Pour la petite histoire, sous Debian, j’avais lutté plusieurs jours (ok, j’ai deux mains gauches, mais quand même…) avant de faire reconnaître ma carte Wifi, qui est semble-t-il un peu exotique (une vieille Hercules).

Socialiser sous Ubuntu : la messagerie instantanée

Par défaut est installé Pidgin, un client basé sur libpurple et écrit en Gtk+. Il est compatible avec la plupart des réseaux modernes : MSN, Yahoo!, XMPP (donc Google Talk), ICQ, IRC, plus tout un tas d’autres, dont je n’ai jamais entendu parler, comme Lotus Sametime, Zephyr, MySpaceIm, Gadu-Gadu et QQ.
Il est possible de se connecter sur plusieurs réseaux (et avec plusieurs comptes) simultanément. Pidgin semble pouvoir accepter des plugins et des smileys personnalisés (bah si, moi ça m’a réjoui de voir ça).

Client IRC : Xchat. Pas fan de l’interface (trop hatibué à mIRC dans ma folle jeunesse). Détail sympa: quand on installe Xchat via apt-get, le raccourci se met tout seul dans Applications/Internet/Xchat

En console

Avec un processeur 64bits, l’installation graphique du plugin Flash pour Firefox a échoué (mauvaise architecture). Il a donc fallu passer en console pour essayer de l’installer à la main. Après un petit essai infructueux, mon shell me répond “Essayez avec sudo apt-get install flashplugin-installer“. Et ça a marché.
Dans le même esprit, si je tape “mysql” alors que je n’ai pas de client installé, on me répond que cet exécutable est dans le paquet “mysql-client”. Je sens que les apt-cache search à la recherche de paquets dont j’ai oublié le nom vont se faire assez rares.

Audio / Vidéo

Notification RythmBox (lecteur audio)

Notification RythmBox (lecteur audio)

Fait amusant, le support du mp3 n’est pas installé par défaut (licence oblige…). Quand j’ai lancé RythmBox, le player audio Gnome préinstallé, on m’a proposé d’installer le “greffon” (plugin) nécessaire. Même chose pour le AAC (Il m’a semblé voir que les plugins en question s’appelaient “bad” et “ugly”).
RythmBox ressemble à s’y méprendre à iTunes, mis à part qu’il intègre quelques fonctions sympa en rapport avec le net, dont le support de Webradios et de Last.fm. Petit plus appréciable: on peut préciser avec quels morceaux on souhaite continuer la lecture (Queue). Une fois la file d’attente vidée, la lecture aléatoire reprend son cours.
Côté vidéo, le lecteur fourni, Totem (qui utilise GStreamer) lit les fichiers courants, DivX aussi bien que MKV (y compris en HD). J’ai testé avec un fichier contenant plusieurs pistes : les changements de langue, de sous-titres, de chapitre: tout à fonctionné comme prévu. Rien à redire, donc.

LE gros point noir: merci Apple

Evidemment, il fallait que quelque chose cloche. Mais ce n’est pas de la faute d’Ubuntu. Mon gros point noir est causé par Apple, puisque je ne peux pas synchroniser mon iPhone non-jailbreaké avec mon système Ubuntu. Qui plus est, le Jailbreak était considéré comme légal tant qu’il était réalisé à des fins d’interopérabilité (ce qui est le cas ici) mais cela à changé depuis le firmware 3. C’est maintenant interdit. Sans commentaires.

Conclusion

Très agréablement surpris par ma première heure sous Ubuntu, j’envisage déjà une migration définitive vu que je n’ai à déplorer aucune perte de fonctionnalité (à part pour l’iPhone, encore un grand merci à Apple). Le système répond bien, même avec de nombreuses applications lancées en simultané (on perd vite l’habitude du VRAI multithread…). Il va falloir que je me penche sérieusement sur la compatibilité entre quelques programmes et leurs penchants opensource (je pense notamment à OpenOffice et Microsoft Office) et si tout se passe bien, c’est fini!

Merci aux utilisateurs des forums Ubuntu-fr.org pour leur accueil sympathique :)

]]>
https://www.php-experts.org/developpement-web/admin-serveur/a-la-decouverte-dubuntu-la-premiere-heure-343/feed 4
Symfony Live, par Sensio Labs https://www.php-experts.org/developpement-web/php-developpement-web/actualites-php/symfony-live-par-sensio-labs-290 https://www.php-experts.org/developpement-web/php-developpement-web/actualites-php/symfony-live-par-sensio-labs-290#comments Mon, 08 Jun 2009 23:18:25 +0000 Didier https://www.php-experts.org/?p=290 Sensio Labs organise la 1ère édition du Symfony Live, conférence francophone dédiée au framework PHP open source Symfony. ( Rendez-vous les 11 & 12 juin, Cité Universitaire Internationale Paris 14° ).

Au programme de ces deux journées :
- Conférences inédites sur les thèmes : réseaux sociaux, stratégies de migration, gestion de médias, Symfony 2…
- Retours d’expériences : Dailymotion, Yahoo!, L’Express…
- Experts : Fabien Potencier, Créateur et Lead developer de Symfony et PDG de Sensio Labs, Dustin Whittle, évangéliste Yahoo!, Jonathan Wage, Lead developer de Doctrine ORM…

Programme complet ici : http://www.symfony-live.com/schedule

A noter, cette manifestation a aussi le soutien de la très sérieuse AFUP. Cette première conférence française entièrement consacrée au framework Symfony est très attendue dans la communauté et personnellement, si mon agenda l’avait permis, j’aurais beaucoup aimé pouvoir y montrer mon nez.
Vous pourrez suivre la conférence en direct sur Twitter (@sflive09fr)

]]>
https://www.php-experts.org/developpement-web/php-developpement-web/actualites-php/symfony-live-par-sensio-labs-290/feed 0
5 plugins indispensables pour coder en PHP avec l’IDE Eclipse https://www.php-experts.org/developpement-web/5-plugins-indispensables-pour-coder-en-php-avec-lide-eclipse-22 https://www.php-experts.org/developpement-web/5-plugins-indispensables-pour-coder-en-php-avec-lide-eclipse-22#comments Mon, 13 Apr 2009 11:55:21 +0000 Didier https://www.php-experts.org/?p=22 L’IDE Eclipse, conçu à l’origine pour développer en Java, s’est enrichi de fonctionnalités avancées, sous forme de plugins, qui lui permettent aujourd’hui de jouer dans la cours des grands des éditeurs de code PHP. Tour d’horizon de ceux que j’utilise.

1. Eclipse PDT

Vu ses parents, Zend et IBM, le projet Eclipse PDT est un “(Php) Development Tools framework” complet. Il étend les capacités natives de la plate-forme Eclipse pour permettre de développer calmement des applications solides en PHP. Pas vraiment besoin de le présenter, si ?
Eclipse PDT est téléchargeable en tant que plug-in ou en version “bundle” (PDT all-in-one), c’est à dire avec Eclipse et tous les composants de base. Ceci est très utile dans le cas d’une nouvelle installation.
Télécharger Eclipse PDT

Il existe d’autres plugins permettant d’ajouter à Eclipse le support du PHP, comme PHPEclipse ou Eclipse PHP IDE, développé par Zend.

2. RegEx Util

Editeur d’expressions régulières, toujours pratique de part le fait qu’il surligne les expressions qui matchent quand on sélectionne une partie du pattern. Il permet aussi de rationaliser ses expressions, notamment en utilisant les classes prédéfinies -comme [alphanum]

Site officiel : http://myregexp.com/eclipsePlugin.html
Update Site : http://regex-util.sourceforge.net/update/

RegexUtil pour Eclipse

RegexUtil pour Eclipse

3. SubClipse

SVN pour Eclipse avec Subclipse

SVN pour Eclipse avec Subclipse

Ajoute le support de SVN (SubVersion) à Eclipse. SVN est un système de gestion de versionning comme CVS intégrant quelques améliorations, comme la possibilité de déplacer et supprimer des fichiers, sans perdre leur historique.

Site officiel : http://subclipse.tigris.org/
Update Site (pour la branche 1.6) : http://subclipse.tigris.org/update_1.6.x

4. Remote System Explorer (RSE)

Permet notamment d’éditer ses fichiers directement via une connexion SSH. Je m’en sers pour les petites retouches de code PHP rapides qui ne peuvent “pas attendre”.

Site officiel : http://www.eclipse.org/dsdp/tm/tutorial/
Update Site : http://download.eclipse.org/dsdp/tm/updates

5. Azzuri Clay

azzurri clay

Azzurri Clay: bases de données sous Eclipse

Un peu difficile à prendre en mains, Azzuri Clay est un plugin commercial pour Eclipse qui permet d’ajouter un vrai support des bases de donnéees. Le système de licence adopté est un peu étrange: la version Pro ne peut être achetée qu’au Japon. Il n’en reste pas moins que l’édition classique, gratuite, est toujours intéressante.
La liste des SGBDR supportés est assez impressionnante vu qu’elle comprend, notamment, les classiques MySQL, PostGres, Oracle, MS SQL Server, DB2, Informix, mais aussi, beaucoup plus rare, SAP.

Pour se servir du Database Modeler d’Azzuri Clay, il faut créer un projet (ou utiliser un projet déjà existant) et faire File -> New -> Other -> Database Modeling -> Azzurri Clay Database Design Diagram.

Une fois cela fait, on peut créer ses premières tables, exporter les scripts SQL de création (selon le SGBDR choisi), et même faire du retro engineering sur des bases de données déjà crées.

Site officiel : http://www.azzurri.jp/en/clay/index.html
Update Site : http://www.azzurri.co.jp/eclipse/plugins

Références pour Eclipse

Installation minimale d’Eclipse, par Thierry Bothorel

]]>
https://www.php-experts.org/developpement-web/5-plugins-indispensables-pour-coder-en-php-avec-lide-eclipse-22/feed 3
Moteur de template : Smarty https://www.php-experts.org/developpement-web/php-developpement-web/moteur-de-template-smarty-80 https://www.php-experts.org/developpement-web/php-developpement-web/moteur-de-template-smarty-80#comments Sun, 08 Mar 2009 22:38:15 +0000 Didier https://www.php-experts.org/?p=80 Smarty est un moteur de template. Basiquement, l’utilité d’un moteur de templates est de séparer le code métier de l’affichage que génèrera votre application web. Smarty se présente sous la forme d’une classe qui gère un langage de balises permettant d’afficher dynamiquement du code. Ces templates sont compilés et mis en cache (les versions compilées étant en php, elles profitent d’éventuels accélérateurs comme APC). Le moteur de template Smarty est si riche de fonctionnalités que je lui consacrerai une série d’articles. Pour commencer, nous verrons l’utilisation basique de Smarty, l’utilisation du tag {literal} ainsi que la gestion des dates.

Principe de fonctionnement

Admettons que sur votre nouveau site social-2.0-multimedia (etc), vous avez une fiche utilisateur. Chaque fiche comportera, peu ou prou, les mêmes informations, notamment le login de l’utilisateur. Voici comment procéder. Créez d’abord un fichier user.tpl (Note sur les fichiers .tpl : l’extension est libre, mais l’usage du .tpl est une convention; la plupart des IDE possédent des plug-ins pour permettre l’analyse et la coloration syntaxique de ce language de balises. Pour les puristes -je ne parle pas pour moi-, on peut justifier l’emploi du “tpl” au lieu d’un “html” plus classique par le fait que les templates contiendront certes du HTML, mais aussi des instructions destinées au moteur de template… mais bref!) . Ce fichier contiendra :

  1. Login : <strong>{$login}</strong>

Le fichier php qui l’utilisera contiendra, lui :

  1. $smarty = new Smarty();
  2. $smarty->assign(‘login’,$user_login);
  3. $smarty->display(‘user.tpl’);

On instancie un objet de la classe Smarty (ligne 1) on déclare une variable de template appelée ‘login’ qui contiendra la valeur de la variable php $user_login (ligne 2). On demande ensuite à Smarty d’ “exécuter” et d’afficher le fichier user.tpl (ligne 3).
Vous l’aurez compris, le login de l’utilisateur apparaîtra en lieu et place du {$login} dans le fichier template. Les {} indiquent à Smarty que ce code doit être exécuté, et non directement reproduit en sortie (ce qui est le cas du HTML). Ces signes encadreront toutes les balises Smarty. Vous remarquerez que la variable se déclare en php sans le signe $, mais qu’il faut utiliser celui-ci lorsqu’on veut accéder à la valeur de la variable dans le fichier de template.

Gestion des tableaux sous Smarty

Si, en PHP, on assigne une tableau à une variable Smarty, on peut y accéder grâce au point, avec la syntaxe $tableau.index.

Fonctions prédéfinies

(lien vers la doc officielle)

Le tag {literal}

S’il vous arrive de devoir utiliser des accolades {} dans le code–source de votre template (par exemple pour y intégrer des fonctions JavaScript), il faut les entourer du tag Smarty {literal}{/literal}, afin d’indiquer au moteur de template de ne pas parser le contenu, ce qui provoquerait une erreur.

Gestion des dates avec Smarty

Smarty gère l’affichage des dates très efficacement grâce à un modificateur de variable (un filtre) nommé date_format. La syntaxe de date_format sous Smarty est la suivante :

  1. Date : {$date_user|date_format:"%A %d %B %Y à %Hh%M"}

Qui affiche :

  1. Date : Sunday 15 February 2009 à 13h59

Pour passer la date que Smarty va afficher en français, il suffit d’utiliser setlocale() en php, comme ceci:

  1. setlocale(LC_ALL, ‘fr_FR’)

(n’hésitez pas à me dire si vous voulez un post plus complet sur l’installation – au moins sous Debian – et l’utilisation des locales en php). La date affichée devient alors :

  1. Date : Dimanche 15 février 2009 à 13h59

Voici les options que vous pouvez passer à la fonction date_format de smarty :

  • %a – Abréviation du jour de la semaine, selon les paramètres locaux.
  • %A – Nom du jour de la semaine, selon les paramètres locaux.
  • %b – Abréviation du nom du jour, selon les paramètres locaux.
  • %B – Nom complet du mois, selon les paramètres locaux.%c – Préférences d’affichage selon les paramètres locaux.
  • %C – Siècle, (L’année divisée par 100 et tronquée comme un entier, de 00 à 99)
  • %d – Jour du mois, en tant que nombre décimal (de 01 à 31)
  • %D – même chose que %m/%d/%y
  • %e – Jour du mois en tant que nombre décimal. Un chiffre unique est précédé par un espace (de 1 à 31)
  • %g – Position de la semaine dans le siècle [00,99]
  • %G – Position de la semaine, incluant le siècle [0000,9999]
  • %h – identique à %b
  • %H – L’heure en tant que décimale, en utilisant une horloge sur 24 (de 00 à 23)
  • %I – L’heure en tant que décimale en utilisant une horloge sur 12 (de 01 to 12)
  • %j – jour de l’année (de 001 à 366)
  • %k – Heure (horloge sur 24). Les numéros à un chiffre sont précédés d’un espace. (de 0 à 23)
  • %l – Heure (horloge sur 12). Les numéros à un chiffre sont précédés d’un espace. (de 1 à 12)
  • %m – Mois en tant que nombre décimal (de 01 à 12)
  • %M – Minute en tant que nombre décimal
  • %n – Retour chariot (nouvelle ligne).
  • %p – soit am soit pm selon l’heure donnée, ou alors leurs correspondances locales.
  • %r – heure en notation a.m. et p.m.
  • %R – Heure au format 24 heures
  • %S – Secondes en tant que nombre décimal.
  • %t – Caractère tabulation.
  • %T – Heure courante, équivalent à %H:%M:%S
  • %u – Jour de la semaine en tant que nombre décimal [1,7], ou 1 représente le lundi.
  • %U – Le numéro de la semaine en nombre décimal, utilisant le premier dimanche en tant que premier jour de la première semaine.
  • %V – Le numéro de la semaine de l’année courante selon la norme ISO 8601:1988, de 01 à 53, ou la semaine 1 est la première semaine qui dispose au minimum de 4 jours dans l’année courante et ou Lundi est le premier jour de cette semaine.
  • %w – Jour de la semaine en tant que nombre décimal, dimanche étant 0
  • %W – Le numéro de la semaine de l’année courante en tant que nombre décimal, ou Lundi est le premier jour de la première semaine.
  • %x – Représentation préférée de la date selon les paramètres locaux.
  • %X – Représentation préférée de l’heure selon les paramètres locaux, sans la date.
  • %y – L’année en tant que nombre décimal, sans le siècle. (de 00 à 99)
  • %Y – L’année en tant que nombre décimal, avec le siècle.
  • %Z – Zone horraire, nom ou abréviation
  • %% – Un caractère litéral `%’

Lectures intéressantes sur Smarty:

Pour aider à la rédaction de ma série d’articles, n’hésitez pas à laisser un commentaire sur un sujet que vous voudriez voir abordé, ou à me signaler des docs intéressantes sur Smarty, je me ferais un plaisir de les rajouter dans les lectures intéressantes :)

]]>
https://www.php-experts.org/developpement-web/php-developpement-web/moteur-de-template-smarty-80/feed 5
La commande screen sous Linux https://www.php-experts.org/developpement-web/admin-serveur/la-commande-screen-sous-linux-104 https://www.php-experts.org/developpement-web/admin-serveur/la-commande-screen-sous-linux-104#comments Thu, 12 Feb 2009 01:33:52 +0000 Didier https://www.php-experts.org/?p=104 Si comme moi, vous bossez régulièrement en ligne de commande sous Linux (en SSH sur un serveur dédié, par exemple), il doit vous arriver de devoir jongler entre deux applications, deux répertoires, deux scripts… Bref, si vous passez beaucoup de temps à switcher entre deux tâches, screen est fait pour vous.

Le principe de Screen

Screen est un utilitaire en ligne de commande qui permet de créer plusieurs shells virtuels qui tournent en parallèle. En l’utilisant, vous aurez donc accès à plusieurs “sessions”, comme si vous aviez lancé plusieurs clients SSH.

Enorme avantage, screen ne s’arrête pas quand votre connexion au serveur est coupée. En rouvrant votre session Unix normale, vous pourrez faire screen -r (Recover) pour retrouver toutes vos fenêtres exactement dans l’état où vous les avez laissées (les actions en cours ont continué, les scripts ne sont pas interrompus, etc).

Après une rapide installation (le package apt se nomme “screen”), l’utilitaire est directement utilisable. Tapez “screen”, rien ne se passe. Et pourtant tout est ok, on y est. Bienvenue dans le monde de screen. Faites ce que vous avez à faire, éditez par exemple le fichier /etc/hosts de votre machine. Tapez ensuite control+A, puis C (pour Create). Une nouvelle fenêtre virtuelle est créée. Vous vous retrouvez devant une invite de commande, sur un shell vierge. Et c’est là que les réjouissances commencent. Faites un ls, par exemple. Ensuite, un Control+A puis N (Next) vous permet de passer à la fenêtre suivante gérée par Screen.
Toutes les commandes Screen sont composées de la combinaison Control+A puis une lettre (ou un chiffre).

Voici le menu :

  • Ctrl-a c Créer une nouvelle fenêtre (Create)
  • Ctrl-a k Fermer la fenêtre en cours (Kill)
  • Ctrl-a w Liste les fenêtres disponibles (Windows) – La fenêtre courante est repérée par une étoile.
  • Ctrl-a 0-9 Aller à la fenêtre N (Les chiffres sont dans la liste des fenêtres obtenue en faisant W)
  • Ctrl-a n Aller à la fenêtre suivante (Next)
  • Ctrl-a Ctrl-a Switche en mode “2 fenêtres” (ramène à la fenêtre précédemment affichée)
  • Ctrl-a [ Copier
  • Ctrl-a ] Coller
  • Ctrl-a ? Liste des commandes (Aide/Help)
  • Ctrl-a Ctrl-\ Quitter “screen”
  • Ctrl-a d Détacher le process, en laissant la fenêtre ouverte

Le mode Copie de Screen

Screen peut aussi vous permettre de copier/coller efficacement du texte entre deux fenêtres. Pour cela, ouvrez le mode copie en faisant Ctrl-A [ .
Une fois dans le mode copie, vous pouvez déplacer le curseur à l'aide des touches H,J,K et L. La barre d'espace commence/arrête la sélection du texte. Ctrl-A ] servira alors à coller le texte copié dans le “presse-papiers”.

]]>
https://www.php-experts.org/developpement-web/admin-serveur/la-commande-screen-sous-linux-104/feed 3