Startup Academy 2009, petit tour des participants

internet-group-chat Edit: Les résultats sont tombés.
Pour ceux qui reviendraient d’un exil au pôle nord, les candidatures à la 2 édition de la Startup Academy (nan nan ya pas de chateau là) sont clôturées depuis quelques jours.

Toujours attiré par la nouveauté et la création d’entreprise, j’ai donc parcouru (enfin survolé pour beaucoup) les 105 dossiers de candidatures pour voir un peu les bonnes idées qui ont pu germer dans tous ces cerveaux.

Lire la suite de Startup Academy 2009, petit tour des participants

Dailymotion confirme ses bonnes intentions

system-run C’est pas trop mon genre de blogué le soir mais l’info vallait bien ça. Dailymotion a encore grimpé dans mon estime (j’avoue ça doit leur faire une belle jambe). Le jour où je suis tombé sur ce site, j’ai de suite adhéré et j’ai vite laissé tombé youtube. Je sais pas question de feeling. Quand Fabien Potencier a annoncé qu’ils tournaient désormais sous symfony, je me suis dis que finalement, j’avais fait le bon choix.

Alors quand j’ai appris tout à l’heure via Nicolas Perriault sur twitter qu’ils lançaient un projet de visualisation de vidéo dans un format ouvert via le nouveau tag HTML5 <video> (optimisé pour Firefox 3.5 beta pour l’instant) je me suis dis que ça vallait bien un petit billet.

Certes ce n’est pas encore la fin du flash, qui aura eu le mérite de porter la vidéo sur le web à grande échelle mais c’est un premier pas surtout avec un site comme dailymotion aux commandes.

Affaire à suivre de très près!

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 de Symfony Admin generator: Transformer un filtre en multi filtre

Dans les coulisses de Twitter

tweeter Depuis quelques mois déjà, sur tous les blogs high tech, un mot reviens constamment, Twitter. Après la démocratisation de Facebook, il fallait bien trouver un nouveau moyen de communiquer en marge de la majorité et le choix s’est posé sur Tweeter et son micro blogging.

Mais voilà, je reste un peu geek quand même, et ca me fait mal de voir que je ne suis pas aussi enthousiaste que tout le monde vis à vis de ce service, il aura fallu un billet de blogmotion pour que finalement je dises au monde entier ce que j’en pense (j’espère que le monde entier lis blogmotion :p).

Ce phénomène était déjà apparu avec Facebook, où j’avais finalement attendu un reportage TV sur le service pour me lancer. Passé l’effet de nouveauté, j’ai très vite trouvé le service inutile et de m’apportant finalement rien (je parle pour moi, pas que le service ne sert à rien en règle général).

Je me devais donc de faire la même chose avec Twitter, au moins testé. Et je me suis dis que tant qu’à faire, j’allais faire une série de billets sur les coulisses, ce qu’on dit pas tout le temps, de l’inscription, à la publication de tweet (oui parce que l’orthographe change en fonction des mots) en essayant de voir quel intérêt je pourrais y trouver.
Voilà hésitez plus! Follow me comme on dit dans le jargon:
follom me

Chrome V2, Google confirme ses intentions

applications-internet La news a fait le tour du web déjà, Google vient de sortir la V2 de son navigateur, faisant suite à sa première vraie campagne marketing autour de son navigateur. On avait presque pas vu arriver la V1, mais la V2 a fait plus de bruit.
Et pourtant, quand on fait le tour du propriétaire, On pourrait presque l’appeler V1.5, rien d’innovant et surtout toujours de gros manques, mais comme je le disais sur spawnrider, à mon avis Google a clairement une idée derrière la tête.

Lire la suite de Chrome V2, Google confirme ses intentions

Mysql, Propel et l’UTF8 sont dans un bateau

edit-cut Un gros souci que j’ai toujours eu lors de mes projets symfony c’est la capacité de dire à Propel que je veux ma base en UTF8, j’ai beau mettre UTF8 un peu partout, database.yml, schema.yml, propel.ini rien n’y fait, mon build-all créé mes tables en ISO. D’ailleurs un peu déçu que Jobeet chapitre 3 n’aborde pas le sujet.

J’ai donc tenté de voir du côté de Mysql, pour mettre ce dernier par défaut en utf8, mais là aussi, on a beau remplir le my.cnf de utf8 dans toutes les options, rien de concret ne se produit.

J’en été donc resté à devoir rajouter à la main, dans mon .sql généré par symfony, le fameux « DEFAUT CHARSET=UTF8″. Mais devoir le rajouter à chaque modification de mon schema, cela peut devenir pénible dans des projets de tests.

Et puis par hasard au détour d’une conversation sur mysql dans une mailing-list (mea culpa j’ai pas noté l’adresse) je suis enfin tombé sur quelque chose qui fonctionne! A la création de la table, écrire:

CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_general_ci

Voilà, toutes les tables créés maintenant dans cette base seront en UTF8 par défaut.

Il y a sans doute mieux, mais pour l’instant je me contente de ça. Mais peut-être que quelqu’un a une meilleur solution? Comment gérez-vous vos tables en UTF8?

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 de How-to Symfony: Gestion d’un arbre en Propel via les NestedSet – Part 2

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 How-to Symfony: Gestion d’un arbre en Propel via les NestedSet – Part 1

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 de De l’art de bien configurer vos credentials dans Symfony

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?

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+