Tag: PHP

Développement web: Les bons plans de la semaine #7

applications-other Après un retour à Symfony cette semaine, on continue sur notre bonne lancée avec les bons plans du développement web de la semaine. Les vrais nouveautés deviennent de plus en plus en rare en cette période de vacances, donc ne soyez pas surpris que je mette quelques liens plus anciens.
Bon clics!

  • Comment utiliser Firephp
    Tout le monde connait firebug, l’extension Firefox qui a un peu révolutionné le debug web. Et parmi ces plugins les plus connus, on note yslow et firephp qui permet de débuguer du PHP! Voilà donc un tutorial très bien fait pour se lancer.
  • 10 conseils pour écrire en Anglais
    Même si en tant que français, on adore parler et écrire en français, on sait bien que pour se faire une place dans la communauté web des blogs, il devient obligatoire d’écrire son blog en anglais. Pas toujours très facile quand on voit la tête des cours qu’on a pu avoir du collège au lycée. Voici un article très intéressant qui conseille ceux qui voudraient se lancer. Il mériterait par contre une traduction pour le coup ;)
  • Construire un moteur de recherche en PHP
    Ah les moteurs de recherche. Un vaste sujet dans le monde du PHP et je n’avais jamais trouvé une base solide jusqu’à présent. Un très bon article qui va vous montrer les bases pour créer un moteur de recherche sans écrire 10000 lignes
  • QuickFlip
    Voici un nouveau plugin jquery qui permet à la manière d’un panneau publicitaire de permuter 2 images sur une même zone et avec le petit effet qui va bien. Fluide, customisable et léger, il confirme que jQuery a un réel potentiel pour remplacer le flash dans les petites animations.
  • Comment éviter que nos illustrations de code débordent
    Tout bon développeur qui se respecte à déjà eu l’occasion de copier/coller du code dans un de ces billets. Très souvent pour se faire, on utilise la balise <pre> qui à le mérite de ne pas casser une grande ligne (comme ça peut arriver dans du code). Mais du coup, c’est le design du blog qui en pâtit. Alors plutôt que de mettre un scoll, voici un petit snippet jquery qui permet d’élargir ces boites de code sur le survol seulement.
  • Multiselect amélioré en jquery
    Dans un formulaire, il n’est pas rare d’avoir des select à choix multiples. Le problème arrive quand on a beaucoup d’items à l’intérieur. Et bien voilà, un petit plugin qui reconstruit notre select en 2 colonnes (sélectionnés et disponibles) avec un petit filtrage sur la colonne disponible pour retrouver rapidement ces petits. Testé et approuvé par mes soins!
  • mPDF
    Peut-être que vous connaissez vu que c’est relativement ancien, mais personnellement j’ai découvert cette librairie PHP qui permet d’exporter une page html en pdf et en gardant le style! Une solution à beaucoup de casse tête pour mrt

Développement web: Les bons plans de la semaine #5

edit-cut Nous voilà au terme d’une nouvelle semaine bien riche. Et comme j’ai pas pu poster un vrai billet technique cette semaine, je vais essayer de me rattraper avec une grosse liste de liens en ce Vendredi, jour des clics. A votre souris.

  • Interview Fabien Potencier (vidéo)
    Et oui on commence avec une interview qui reprend le parcours de Mr Symfony avant qu’il le devienne. Document très intéressant.
  • IE6 se fait doublé par IE8 (via @Tristan Nitot)
    Et voilà, ce fut long, mais IE6 est devenu la version de IE la moins utilisé derrière IE7 et IE8. Même si IE8 finalement n’a pas pris énormément de part à IE6, c’est toujours intéressant à noter
  • jQuery plugin pour permettre d’afficher son password
    Une petite feature qui m’a toujours plu dans ubuntu, c’est de pouvoir afficher en clair un password, histoire de vérifier qu’on l’a bien tapé. Et bien voilà un équivalent jQuery.

  • jQuery password iphone style
    Un autre plugin jQuery sur les mots de passe qui permet de simuler la saisie d’un mot de passe avec la petite feature iphone qui montre en clair le caractère en cours de saisie, un autre moyen de s’assurer qu’on tape pas n’importe quoi.
  • jTransfer, une double list new generation
    Amateur de Symfony, vous connaissez bien l’admin double list, ce widget qui sait se rendre indispensable. Voilà un équivalent jquery, un peu plus poussé. Il mériterait une adaptation en widget Symfony, des amateurs?
  • Améliorer votre expérience utilisateur
    Une liste de 10 outils qui permettent de tracker les clics en détails de ses internautes et ainsi de voir ce qu’il peut être améliorer dans l’expérience utilisateur de son site.
  • Twitter en France
    Quelques chiffres sur l’utilisation de Twitter en France. On voit que la mayonnaise n’a pas encore pris totalement par chez nous, excepté dans la capitale
  • Alerte sur des modifications de pagerank
    Les mises à jour de pagerank devenant de plus en plus fréquentes, il peut être intéressant d’être averti des modifications pour son site quand google se décide à lui modifier sa note
  • 10 possibilités sympa offertes par cURL (php)
    Avec la propagation des API pour tous les services web, cURL montre tout son potentiel quand il s’agit de piloter ces services depuis PHP

Développement Web: Les bons plans de la semaine #4

computer Au programme de cette semaine, un peu de tout, sans beaucoup de source. Et oui, beaucoup de travail + vacances en fin de semaine, on fait les choses à côté, un peu moins bien. Mais sachez pour ceux que ca interesse, que les sources sont principalement des blogs anglophones dont j’essaierai de faire une liste un de ces 4, tellement ils sont nombreux et intéressants.
Voilà, have fun comme ils disent là-bas:

  • CheckMyColours
    Un outil web qui permet de détecter si vos textes sont suffisamment contrastés pour les personnes ayant un problème avec les couleurs
  • jquery.maxlenght
    Le petit plugin jquery de la semaine qui permet d’ajouter un compteur de caractères à un textarea très simplement
  • Quand jQuery tente de copier Mac Os X
    Un résultat assez impressionnant, mais qui reste assez gadget quand même. A voir aussi, ce que ca donne dans une vrai page bien rempli
  • PhpWtf
    Je vous épargne la traduction de wtf, mais en gros un petit site qui vient de se lancer qui permet de répertorier les (nombreuses?) invraisemblances qu’on peut retrouver dans PHP (mais qui ne l’empêche pas d’être très bon, on est d’accord)
  • Pictaculous

    Un autre service web permettant de récupérer une palette de couleur à partir d’une image uploadée par vos soins. Intéressant pour avoir un point de départ lors de la création d’une charge graphique, surtout pour nous pauvres développeurs qui n’avons pas le don que nos amis graphistes ;)
  • 43 articles et ressources sur le PHP à lire
    Une liste plutôt sympa qui cache pas mal d’articles assez interessant même si certains s’entrecoupent. Il vaut mieux trop que pas assez, bien souvent
  • Les 5 points qui opposent les graphistes aux développeurs (en)
    Un billet très sympa qui retrace bien la vérité (stéréotypé dans le billet bien sûr) d’une collaboration graphiste/développeur (plutôt intégrateur pour le coup)

Symfony Admin generator: Transformer un filtre en multi filtre

applications-other Petit retour à un billet un peu plus technique le temps de préparer la suite sur twitter. Si il y a bien une chose dont on ne plus se passer une fois qu’on y a goûté dans symfony, c’est bien l’admin generator. Surtout que la doc couvre déjà pas mal de possibilités, mais avec un peu d’imagination on peut vraiment en faire ce qu’on veut.

Et ca tombe bien, parce que niveau idées tordues, nos chefs de projets ou clients sont rarement les derniers, vous serez d’accord avec moi ;)

Lors d’une présentation d’un back office récemment, on m’a demandé s’il était possible de choisir plusieurs valeurs lors du filtrage (en l’occurence des marques de produits). « Certainement » fut ma réponse, même si j’en avais aucune idée. J’ai donc jeté un coup d’oeil sur cette histoire et c’était finalement l’histoire de 2min.

Lire la suite

How-to Symfony: Gestion d’un arbre en Propel via les NestedSet – Part 2

system-run La dernière fois, on avait vu comment construire l’aspect graphique de notre gestion de catégorie via Symfony et Propel. On va voir maintenant comme lui associer les actions symfony qui vont bien.
Au programme donc dans l’ordre:

  • la remise en état des liens modifier/supprimer
  • l’ajout d’un lien pour ajouter un enfant à une catégorie
  • la sauvegarde de l’ordre de l’arbre

Ya du boulot, alors on se lance.

Lire la suite

How-to Symfony: Gestion d’un arbre en Propel via les NestedSet – Part 1

accessories-text-editor Les arbres en informatique c’est un peu le sujet qui fait rêver mais qui embête souvent, moi le premier. Car qui dit arbre, dit récursivité et là en général on commence à se prendre la tête dans les mains. Bah oui gérer quelque chose dont on ne connait pas la fin, ca fait toujours un peu peur.

Ici, le principe va être justement de gérer un arbre de catégories, un cas qui peut revenir assez régulièrement. A noter que le concept reprend la version doctrine de redotheoffice avec une modification quant au plugin jquery utilisé. En effet, on essaiera ici de gérer l’ordre des catégories également par drag and drop.

Lire la suite

De l’art de bien configurer vos credentials dans Symfony

system-run J’ai été confronté récemment à un problème tout bête dans ma gestion de droits sous Symfony. En effet, je voulais pouvoir configurer dans mes security.yml, une autorisation d’accès pour un certain niveau d’utilisateur ou en étant admin.

Tout naturellement j’ai opté pour l’écriture:

editArticle:
credentials: [ admin, editor ]

Mais l’accès devenait impossible pour les deux, alors que l’un ou l’autre fonctionnait. J’ai donc décidé d’appliquer tous les groupes au groupe admin pour régler le problème, manque de temps pour me documenter. Après coup, le problème m’étant revenu pendant que je naviguais sur le site du framework, j’ai tenté une recherche et la forcément la réponse devant mes yeux.

Lire la suite

Effectuer un pré et/ou post traitement dans vos actions Symfony

dialog-information Dans le genre, méthode symfony dont on ne parle pas qui peuvent être utiles, voici preExecute et son copain postExecute toutes les deux, méthodes de sfAction.

Comme leur nom le laisse à penser, ce sont des méthodes qui seront appeler en amont et en aval de l’exécution d’une action. Je n’ai pas vraiment d’idée d’utilisation à l’heure où j’écris mais dans un souci de factorisation, je trouve le concept intéressant et c’est bien avec ce genre de méthodes que je trouve Symfony si bien pensé.

Quelqu’un s’en est déjà servi? Une utilisation intéressante qui gagne à être connue?

Symfony: Automatiser la navigation dans votre admin-generator

accessories-text-editor Petite reprise d’activité du blog après quelques journée assez chargées. Et me voilà vous proposer une pré alpha d’un petit snippet pour symfony 1.2 qui vise à automatiser la génération d’un menu pour l’admin générator qui malheureusement ne propose rien de semblable à l’heure actuelle.
Et combien il devient vite barbant de rajouter les liens de vos nouveaux modules à la main dans votre layout.

Voici donc une solution possible et facile à mettre en place en se basant sur le fichier de routing.

Lire la suite

Prenez le contrôle de votre CSS

applications-system Votre projet est en plein sprint, les releases de corrections s’enchainent et vous devez soumettre le résultat à chaque fois à votre client. Et pourtant il y a un mécanisme des navigateurs qu’on adore en tant qu’utilisateur mais qui gène parfois en tant que développeur, la mise en cache des CSS.

Quoi de plus frustrant d’avoir en premier retour de votre client Euh, pourquoi l’image est au milieu de l’écran? alors que vous venez de passer les dernières heures à la mettre au bon endroit en retouchant votre CSS. Bien sûr vous lancez rapidement le cri de guerre adéquat F5! et la magie opère enfin.

Mais ne serait-il pas plus plaisant que d’obtenir dès le premier clic, le bon résultat?
Il y a pour cela une astuce, que bon nombre connaisse, mais qui dans un contexte de développement professionnel, est souvent lourde à mettre en place: changer le nom de votre CSS pour forcer le navigateur à la recharger et ainsi laisser apparaitre vos modifications du premier coup.

Lire la suite

PHVsPjxsaT48c3Ryb25nPndvb19hZHNfcm90YXRlPC9zdHJvbmc+IC0gdHJ1ZTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX2ltYWdlXzE8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb20vYWRzL3dvb3RoZW1lcy0xMjV4MTI1LTEuZ2lmPC9saT48bGk+PHN0cm9uZz53b29fYWRfaW1hZ2VfMjwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbS9hZHMvd29vdGhlbWVzLTEyNXgxMjUtMi5naWY8L2xpPjxsaT48c3Ryb25nPndvb19hZF9pbWFnZV8zPC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy93b290aGVtZXMtMTI1eDEyNS0zLmdpZjwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX2ltYWdlXzQ8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb20vYWRzL3dvb3RoZW1lcy0xMjV4MTI1LTQuZ2lmPC9saT48bGk+PHN0cm9uZz53b29fYWRfdXJsXzE8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb208L2xpPjxsaT48c3Ryb25nPndvb19hZF91cmxfMjwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3VybF8zPC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tPC9saT48bGk+PHN0cm9uZz53b29fYWRfdXJsXzQ8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb208L2xpPjxsaT48c3Ryb25nPndvb19hbHRfc3R5bGVzaGVldDwvc3Ryb25nPiAtIGN1c3RvbS5jc3M8L2xpPjxsaT48c3Ryb25nPndvb19hdXRvX2ltZzwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fY29udGVudF9hcmNoaXZlczwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fY29udGVudF9ob21lPC9zdHJvbmc+IC0gZmFsc2U8L2xpPjxsaT48c3Ryb25nPndvb19jdXN0b21fZmF2aWNvbjwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2ZlZWRidXJuZXJfdXJsPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fZ29vZ2xlX2FuYWx5dGljczwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2xvZ288L3N0cm9uZz4gLSBodHRwOi8vd3d3LmFtaWNhbGVtZW50LXdlYi5uZXQvd3AtY29udGVudC93b29fdXBsb2Fkcy8zLWxvZ28ucG5nPC9saT48bGk+PHN0cm9uZz53b29fbWFudWFsPC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tLzwvbGk+PGxpPjxzdHJvbmc+d29vX25hdl9leGNsdWRlPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fcmVzaXplPC9zdHJvbmc+IC0gdHJ1ZTwvbGk+PGxpPjxzdHJvbmc+d29vX3Nob3J0bmFtZTwvc3Ryb25nPiAtIHdvbzwvbGk+PGxpPjxzdHJvbmc+d29vX3RoZW1lbmFtZTwvc3Ryb25nPiAtIFR5cGViYXNlZDwvbGk+PGxpPjxzdHJvbmc+d29vX3RodW1iX2hlaWdodDwvc3Ryb25nPiAtIDEwMDwvbGk+PGxpPjxzdHJvbmc+d29vX3RodW1iX3dpZHRoPC9zdHJvbmc+IC0gMTAwPC9saT48bGk+PHN0cm9uZz53b29fdXBsb2Fkczwvc3Ryb25nPiAtIGh0dHA6Ly93d3cuYW1pY2FsZW1lbnQtd2ViLm5ldC93cC1jb250ZW50L3dvb191cGxvYWRzLzMtbG9nby5wbmc8L2xpPjwvdWw+