kumquats labs Veille technique et R&D sur les technologies HTML5 et Symfony - page 2

EasyAdminBundle : des admins « easy »

EasyAdminBundle : des admins « easy »

Pour ceux qui développaient avec Symfony 1.4, vous connaissez sûrement l’Admin Generator : ce composant permettait de générer automatiquement une interface d’administration en fonction du modèle de données (entités), ce qui faisait gagner énormément de temps lors de la création de backend.

Ce composant n’est plus présent dans Symfony 2, à notre grand regret, et comme la plupart du temps nos applications web et mobiles ont besoin d’interfaces d’administrations, on est contraints de tout créer « from scratch ».
Heureusement des bundles existent pour créer ces admin, le plus connu Sonata permet de générer le code de ces interfaces qu’on peut ensuite personnaliser. Cela accélère le développement mais créé aussi beaucoup de code ce qui peut être parfois difficile à maintenir.

Aujourd’hui, un développeur de SensioLabs, Javier Eguiluz, apporte sa pierre à l’édifice avec la sortie de son bundle EasyAdminBundle.

Ce bundle est prometteur puisqu’il permet de créer des interfaces d’administrations basées sur des fichiers de configuration yaml, rappelant ainsi un fonctionnement similaire à feu l’Admin Generator. Il est également possible d’étendre les fonctionnalités des admins générées de manière plus simple qu’avec Sonata (à priori le nombre de templates est plus limité).

Côté utilisateur, l’admin générée permet de lister, créer, éditer, supprimer les entités, mais il est possible pour le développeur d’étendre les fonctionnalités de l’admin avec ses propres templates / controlleurs.

Autre avantage, son thème graphique simple (certains diront simpliste) est responsive et basé sur Bootstrap. Même s’il est indiqué dans la doc, qu’aucun système de theming n’est prévu, le code étant basé sur Bootstrap il doit être possible de skinner le tout assez facilement.

Les pré-requis sont Symony 2.3+, Dotrine ORM et que les entités aient comme clé primaire une propriété « id » (rien de très exotique). Pour le moment les relations many-to-many ne sont pas supportées, mais avec la souplesse de développement qu’offre Symfony on peut être certains que ce sera rapidement le cas.

Ce bundle est disponible à partir d’aujourd’hui, alors on va s’empresser de le tester pour voir ce qu’il a dans le ventre !

Cmder : la ligne de commande windows sort de l’age de pierre

Cmder : la ligne de commande windows sort de l’age de pierre

Pour les développeurs web et mobile les outils s’utilisant en ligne de commande se sont multipliés ces dernières années, que ce soit pour la compilation des fichiers sass, pour lancer son environnement de travail sous Vagrant, pour lancer ses tests unitaires ou encore pour compiler son application PhoneGap/Cordova par exemple.

Sur Mac OSX et Linux, le terminal, très puissant, est bien adapté à ces nouveaux usages. En revanche, sur Windows, les lignes de commande s’exécutent via le programme CMD. Son apparence peu accueillante (c’est peu de le dire) et ses fonctionnalités très limitées en font un très mauvais concurrent par rapport au Terminal Unix. Son problème majeur est son fonctionnement basé sur Powershell, un langage bien en dessous des lignes de commandes utilisées habituellement sous Unix. Si l’on ajoute à cela une ergonomie catastrophique (impossible de redimensionner la fenêtre simplement sans masquer une partie du contenu, aucune coloration syntaxique, copier/coller cauchemardesques, etc.) on comprend que les développeurs sous environnement Windows se sentaient à la traine (et la guerre au troll ici, à Kumquats, faisait rage).

C’est la qu’intervient Cmder !

Cette console portable se présente comme une véritable alternative à CMD.

Tout d’abord, ce qui saute aux yeux, c’est le thème graphique Monokai présent par défaut qui permet d’avoir une véritable coloration syntaxique, ce qui en soi est déjà un point non négligeable en cas d’utilisation intensive du terminal. Toute une palette de thèmes sont disponibles comme les classiques Zenburn, Solarized, etc.
Ensuite, Cmdr donne la possibilité de travailler avec plusieurs consoles grâce aux onglets. Vraiment pratique.
Enfin, l’intégration de Msysgit permet de combler les lacunes de Powershell en rendant disponibles des commandes UNIX comme « ls », « mkdir » ou bien « cat » par exemple. Utile lorsqu’on bascule régulièrement d’un environnement Unix (vagrant, serveur distant) à son poste local.
A noter que Cmder est une fusion d’autres projets comme Msysgit donc mais aussi Conemu et Clink.

cmder-vs-cmd-2014-12-10

Avis donc aux utilisateurs Windows, voici une chance de ne plus être la risée des devs Mac OS : l’installation se télécharge là : https://bliker.github.io/cmder/. Petit détail : contrairement à ce qui est indiqué sur la page du logiciel, Cmder se lance via Cmder.exe et non Cmder.bat ;)

Android 5.0 Lollipop

Android 5.0 Lollipop

Vous le savez sûrement déjà : Android 5.0 aka Lollipop est enfin sorti.Pour les heureux possesseurs de Nexus 5, 7 et 10, l’image système permettant la mise à jour sans attendre l’OTA est finalement sortie en fin de semaine dernière ! Les images peuvent se télécharger sur le site développeur Android : https://developers.google.com/android/nexus/images

Pour les autres il faudra attendre les mises à jour (ou images) des constructeurs même s’il est tout de même possible de tester Android 5.0 à l’aide des Android Virtual Devices.

Au chapitre des nouveautés le premier point qui saute aux yeux, c’est le travail effectué sur l’interface de l’OS. Le Material Design que Google a créé pour Android 5.0 apporte de nouveaux effets de transition, une gestion de la 3D améliorée, des nouvelles icones et fonts ainsi que d’autres principes d’interface qu’il est possible de consulter sur la charte graphique d’Android 5.0.

Android Lollipop propose également de meilleures performances, et les développeurs d’applications auront accès à des outils permettant de mieux prendre en compte la consommation de la batterie.
Toujours concernant l’amélioration des performances on peut noter que la nouvelle version de la WebView basée sur Chronium apporte le support de WebRTC, WebAudio, et surtout WebGL.

Autre point important, cette WebView sera désormais mise à jour via les Google Play Services donc de manière indépendante de l’OS et surtout automatique et transparente. On peut supposer que les mises à jour de la webview suivront le rythme imposé par celles de Chrome.

Cette nouveauté va avoir un impact important sur le développement d’applications hybrides (donc basées sur la Webview) car il ne sera plus nécessaire d’attendre une mise à jour d’android pour utiliser les dernières avancées technologiques ou profiter des corrections de bug de rendu. Idem pour les corrections de failles de sécurité. C’est donc une très bonne nouvelle pour les développeurs d’applications PhoneGap / Cordova.

Il sera ainsi possible de détecter si les fonctionnalités nécessaires au bon fonctionnement de notre application sont présentes dans la version de la WebView du téléphone, et si ce n’est pas le cas inviter l’utilisateur à mettre à jour son système. Cela devrait satisfaire aussi bien les utilisateurs que les développeurs.

Pour en savoir plus sur Android 5.0, on vous invite à consulter la présentation officielle de Lollipop et pour ceux qui veulent aller plus loin il est même possible de consulter la documentation des APIs Android 5.0.

 

Optimisation mémoire en JavaScript

Optimisation mémoire en JavaScript

Addy Osmani (qu’on ne présente plus) a partagé cet été une présentation concernant la gestion de la mémoire en Javascript qui vaut le détour et que vous pouvez trouver ici : https://speakerdeck.com/addyosmani/javascript-memory-management-masterclass

Il présente tout d’abord les différents outils de chaque navigateur permettant de surveiller la consommation mémoire de nos applications.
Il explique ensuite les cas les plus courants qui peuvent provoquer les fuites de mémoires ou le ralentissement de l’application.

On apprend par exemple que l’usage du « delete » sur la propriété d’une classe peut la rendre plus lente d’utilisation.
Autre point, les fonctions anonymes peuvent engendrer une grosse consommation de la mémoire étant donné qu’elles maintiennent des références sur toutes les variable du scope dans lequel elles ont été créées et, qu’ainsi, elles les empêchent d’être collectées par le garbage collector (ou « ramasse miettes » pour les puristes).
Pour le reste des exemples c’est ici: https://speakerdeck.com/addyosmani/javascript-memory-management-masterclass

Dans tous les cas l’auteur nuance et rappelle que l’optimisation n’est pas une fin en soi, et qu’au delà des bonnes pratiques élémentaires, mieux vaut privilégier une bonne conception et travailler à l’optimisation une fois le code réalisé et profilé. Il cite notamment Donald Knuth qui nous prévenait déjà en 1974 (pour ceux qui étaient nés ;) :

©Donald Knuth : We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil

#symfony_live : Symfony3, best practices & déploiement

#symfony_live : Symfony3, best practices & déploiement

Les 9 et 10 octobre se tenait le Symfony Live à New-York, l’occasion de faire le point sur ce qui nous attend dans les mois qui viennent.

Il y a été question bien sûr de Symfony3 et Twig 2.0. D’ailleurs un guide de migration vers Symfony3 a été mis à disposition. On peut y voir les nombreux changements opérés sur les classes et méthodes du core, et (heureusement) à priori rien d’insurmontable ! Pour le guide c’est par ici : https://github.com/symfony/symfony/blob/master/UPGRADE-3.0.md

De même pour Twig 2.0, il est d’ors et déjà possible d’avoir un aperçu de la version DEV ici : https://github.com/fabpot/Twig/compare/master…2.0-experimental
Hormis le grand nettoyage dans les classes de Twig et les améliorations de perfs, on peut noter la fin du support de PHP 5.2.

Lors de cet évènement, Sensio a également présenté un document qui recense les principales best pratices du développement avec Symfony, une piqûre de rappel ne faisant jamais de mal vous pouvez télécharger gratuitement le pdf ici : http://symfony.com/doc/download-best-practices-book/

Enfin une des conférences de ce Symfony Live a particulièrement attiré notre attention, il s’agit de « Rock Solid Deployment of Symfony Applications ». Pablo Godel (Expert PHP, Symfony, AngularJS, DevOps sur PabloGodel.com) y propose un tour d’horizon des solutions de déploiements : Heroku, Rsync, utilisation de Git ou SVN, outils de build, de packaging, outils spécialisés tels que Capifony, Deployer et enfin les outils d’automatisation.

A découvrir de toute urgence ici : http://fr.slideshare.net/pgodel/symfony-live-nyc-2014-rock-solid-deployment-of-symfony-apps

Keypress : Gérer les entrées clavier facilement en JavaScript.

Keypress : Gérer les entrées clavier facilement en JavaScript.

Petit article aujourd’hui pour parler de « Keypress », une librairie JavaScript pour gérer facilement les entrées clavier.
Premier avantage de cette libraire, elle permet nous abstraire de ces « keyCode » censés représenter les touches du clavier mais qui sont une horreur en terme de lisibilité. Si l’on veut détecter l’appui sur la touche ‘a’ on écrit ‘a’, si l’on veut détecter l’appui sur la touche ‘shift’, on écrit ‘shift’, etc.

Ensuite, Keypress permet de gérer trois types d’entrée clavier :

  • Les « Simple combo » : il s’agit là d’une simple combinaison de touche. Lorsque les touches renseignées sont appuyées au même moment, l’événement est déclenché. Pratique pour gérer des raccourcis clavier dans ses applications.
  • Les « Counting combo » : Il fonctionne comme le précédent, à la différence qu’il est possible de connaitre le nombre de fois que la combinaison a été effectuée.
  • Les « Sequence combo » : Il s’agit ici de détecter une séquence de touche. Lorsque les touches renseignées ont été rentrées les unes à la suite des autres alors l’événement est déclenché. Utile pour créer un easter egg à base Konami code sur son site !

Bref, c’est par là :  http://dmauro.github.io/Keypress/

Podcast web

Podcast web

Les technologies du web évoluent constamment. Chaque jour, des nouveaux outils, des nouveaux frameworks, des nouvelles tendances font leur apparition si bien que, chez Kumquats, on fait de la veille tous les jours pour se tenir informé.Et quand on n’a pas le temps de lire ce qu’écrivent les blogueurs sur le développement web, on peut aussi les écouter. Voici une petite sélection de podcast francophone à écouter en faisant la vaisselle (quoi, vous avez un lave-vaisselle ?). 

La première émission se nomme la DebugRoom et nous parle de développement Web et mobile. Ce jeune podcast (4 épisodes pour l’instant) aborde des sujets aussi diversifiés que la sécurité sur WordPress, Phonegap ou le cloud pour les développeurs. Il se divise en 4 parties :
La section Veille avec les dernières infos du web
Le dossier où ils abordent le sujet principal avec régulièrement des invités experts.
La Zone 404pour la détente avec des liens rigolos
La Toolbox qui présente des outils à tester dans nos développements
Un lundi sur deux / DebugRoom

Autre podcast orienté développement : NipDev. Une équipe de passionné se réunit toutes les 2 semaines pour nous parler de web à travers différents sujets comme par exemple les API REST, les « single page application », les tests unitaires ou encore le développement pour les mobiles.
Un mercredi sur deux / NipDev

Pour les férus de design, retrouvez chaque mois les zombies de the Walking Web pour suivre l’actualité du web design et de l’actualité numérique. Au programme : des objets connectés, de l’expérience utilisateur ou comment rendre son site plaisant et facile à utiliser, du design mobile, des conférences, de l’inspiration et pleins d’autres choses encore. Animés par 6 chroniqueurs travaillant tous dans le design, le podcast se déroule comme suit:
Previously on TWW : le résumé de l’épisode précédent
Je like / Je like pas : les avis de chacun sur les dernières nouveautés
Les lectures de Francis : la présentation d’un livre
Le GROS sujet : le sujet principal de l’émission
The Web Quizz : un quizz entre les membres de l’équipe posant des questions techniques, pratiques, artistiques…
Le WTF : pour finir l’émission sur une note d’humour
Chaque mois / The Walking Web 

Et pour terminer, je vous propose de suivre les soirées *di*/zaïn qui se déroulent à la Gaité Lyrique à Paris. Le concept : réunir 10 designers qui ont 10 minutes pour présenter leurs projets, le tout autour d’un thème global (le dernier était « Enchantements » avec des projets pleins de poésie). On aborde ici le design au sens large, aussi bien design interactif, design industriel ou encore l’architecture. On peut suivre les soirées en direct et réagir via twitter.
Chaque mois / les soirées *di*/zaïn

Ouvrez grand vos oreilles pour rester informé !

 

 

Uniformiser le rendu des typos web

Uniformiser le rendu des typos web

Vous êtes-vous déjà rendu compte que les typos web n’étaient pas affichées de la même manière suivant les navigateurs ?

 

Avec Type Rendering Mix, une librairie javascript, vous pouvez jouer avec les rendus des typos pour obtenir un affichage identique (ou pas loin) sur les différents navigateurs ou OS.

Cet outil est à réserver aux adeptes du pixel perfect car tout se gère manuellement !

 

 

Changer de visage grâce à JS et une webcam !

Changer de visage grâce à JS et une webcam !

Envie de rajeunir, de vous voir en Justin Bieber ou Walter White ? C’est maintenant possible en JavaScript et la démo est assez impressionnante, comme en atteste la photo de notre Terminator & développeur JS.

Face substitution utilise la librairie javascript clmtrackr, qui permet d’ajuster des modèles de visage à des vidéos et des images. Gardez votre visage immobile le temps que le modèle de visage s’ajuste à vous et essayez différents masques depuis la liste déroulante. Cela marche mieux avec un bon éclairage et le support de WebGL dans votre navigateur, à votre Google Chrome ou Firefox donc !

Un petit bout de code intéressant; dans leur exemple, ils utilisent l’API navigator.getUserMedia() pour capter le flux de la webcam :

navigator.getUserMedia( videoSelector, function( stream )
{
    if ( vid.mozCaptureStream )
    {
        vid.mozSrcObject = stream;
    }
    else
    {
        vid.src = ( window.URL && window.URL.createObjectURL( stream ) ) || stream;
    }
    vid.play();
});

Le lien vers la démo : http://auduno.github.io/clmtrackr/examples/facesubstitution.html

Un exemple par étapes : http://auduno.github.io/clmtrackr/example.html

Le GitHub du projet : https://github.com/auduno/clmtrackr

A vos expérimentations, merci JS !

Faites glisser vos listes avec Slip.js

Faites glisser vos listes avec Slip.js

Slip.js est une petite librairie pour la gestion du swipe et de l’ordre des éléments d’une liste sur écran tactile :

slipjs

Son nom peut faire sourire en français je vous l’accorde, mais un simple appel à new Slip(<element>) rend un objet swipeable.
A partir de là, on interagit avec la librairie via des évènements du DOM :
slip:swipe, slip:beforeswipe,slip:reorder, slip:beforereorder, slip:beforewait, slip:tap

 

Vous pouvez voir une démo ici et consulter le GitHub du développeur.

 

 

Page 2 of 6 1 2 3 4 5 ... Last →