Les dernières actualités d'Alsacreations.com
L'Optiday est un événement organisé par l'association strabourgeoise Alsaseo, dont la volonté est d’initier des échanges et débats entre les professionnels du webmarketing en Alsace.
Avec plus de 90 participants, des intervenants motivés et des sponsors impliqués, l'édition précédente parrainée par Olivier Andrieu a été un véritable succès.
L’Optiday 2015 vise à réitérer cette journée consacrée au web le 5 septembre prochain, avec le parrainage du célèbre consultant outre-Manche Lukasz Zelezny.
Cette année encore le webmarketing est à l'honneur avec huit interventions et une étude de cas sur des sujets variés du web. Dix intervenants chevronnés se succéderont pour présenter des méthodologies concrètes et apporter des astuces applicables par tous.
Le programme de la journée permettra de profiter des conférences suivantes :
UX & Typo : Les émotions au coeur du processus de conversion par Damien Senger
Booster votre site pour optimiser votre SEO par Jean-Pierre Vincent
Tactical SEO and Social Media – deal with it like a king par Lukasz Zelezny
Gestion de projet web et SEO par Chloé Temesvari & Philippe Roser
Pénalités : Comment en profiter, comment s’en prémunir, comment s’en sortir, comment relancer la croissance ? par Maxime Doki Thonon
Advanced Keyword Research – How to understand your consumers and their purchase motivations par Kirsty Hulse
Zoom sur le mobile : Ne pas y perdre ses utilisateurs par Stéphanie Walter
SEO : Du sel pour relever la saveur de votre site ! par Christian Méline
Samedi 5 septembre 2015, accueil à partir de 8h45.
Amphithéâtre de Maison Interuniversitaire des Sciences de l’Homme d’Alsace (MISHA)
5, allée du Général Rouvillois à Strasbourg
Tarif des entrées incluant l’accès aux conférences, le petit déjeuner et le repas du midi: 40€
Inscription sur le site (paiement sécurisé via Weezevent) : http://www.optiday.fr/inscription/
Possibilité d’achat groupé (dans la limite des places disponibles).
Site web : http://www.optiday.fr/
Twitter : https://twitter.com/optiday
Facebook : https://www.facebook.com/optiday
Avant toute chose je tiens à vous faire remarquer que ce guide est le fruit de ma réflexion et de mon expérience du développement frontend. Par conséquent, si vous voulez tirer le meilleur de ce qui va suivre je vous conseille de vous faire votre propre opinion des différents outils / conseils et de créer en conséquence votre propre workflow.
Pendant longtemps sur mes projets personnels j'ai pris l'habitude de toujours débuter en négligeant la phase de conception. Je pensais naïvement que le fait d'avoir rapidement un premier résultat me permetterai ensuite de développer plus vite et de trouver de nouvelles idées.
Astuce n°1 : Ne jamais mettre la charrue avant les boeufs
Astuce n°2 : Poser ses idées sur papier permet de mieux cerner son projet et d'en tirer ses forces/faiblesses
Astuce n°3 : Faire des prototypes permet de ce concentrer sur l'essentiel et de limiter les erreurs
Conseil n°4 : N'hésitez pas à cumuler les outils et à ne pas être trop perfectionniste avec les projets expérimentaux
Conseil n°5 : Choisissez judicieusement vos différents outils en fonction des différentes contraintes
Conseil n°6 : HTML5 Boilerplate est l'une des meilleures bases pour commencer un webdesign
Conseil n°7 : Ne pas hésiter à utiliser Jekyll sur des petits projets avec du contenu statique
Conseil n°8 : Bower est votre ami quand il s'agit de gérer des librairies externes
Conseil n°8 : Yeoman est la boîte à outil la plus complète et efficace du développeur frontend
/* En SASS */
nav {
ul {
margin: 0;
padding: 0;
list-style: none;
}
li { display: inline-block; }
a {
display: block;
padding: 6px 12px;
text-decoration: none;
}
}
/* Résultat compilé en CSS */
ul {
margin: 0;
padding: 0;
list-style: none;
}
nav li {
display: inline-block;
}
nav a {
display: block;
padding: 6px 12px;
text-decoration: none;
}
Conseil n°9 : Les pré-processeurs ajoutent des super-pouvoirs aux languages traditionnels
Conseil n°10 : Si vous optez pour le CSSOO assurez-vous que ça en vaut la peine, si la mise en place semble trop compliquée basez-vous sur un framework
p:first-letter {
display:block;
margin:5px 0 0 5px;
float:left;
color:#FF3366;
font-size:60px;
}
Conseil n°11 : N'hésitez pas à rendre l'interface de votre éditeur de texte plus plaisante
Conseil n°12 : Trouvez et utilisez les plugins qui répondent à vos besoins
Conseil n°13 : Installez vous confortablement, assurez-vous d'avoir assez de café et d'écrans
Conseil n°14 : Limitez tout source de distraction sans pour autant vous couper du monde
Conseil n°15 : Chaque raccourci clavier c'est deux secondes de gagnées !
Conseil n°16 : Git est votre extrêmement efficace lorsqu'il s'agit de travailler en équipe, mais il peut aussi être intéressant lorsque l'on travaille seul
Conseil n°17 : N'oubliez pas les classiques, la checklist avant de lancer un site reste diablement efficace
Mes chers lecteurs, je vous remercie les plus courageux de m'avoir lu jusque là surtout au vu de la longeur et de la densité de ce dernier :)
Retrouvez l'intégralité de ce tutoriel multi-pages en ligne
Cette année encore, et pour sa sixième édition, la KiwiParty a rassemblé à Strasbourg et durant une journée plusieurs centaines d’amoureux du Web de qualité. Nous remercions toutes les personnes impliquées dans l’événement, c’est à dire… tout le monde y compris les participants qui ont survécu aux conférences, au goûter et au quiz, tout ça dans la bonne humeur.
(photo : Geoffrey Crofte)
On ne change pas une équipe qui gagne : la KiwiParty est un événement qui se veut désinvolte et “à la bonne franquette”. C’est ce qui fait son charme et c’est ce qui nous plaît dans cette journée.
Ceci dit, nous avons misé sur quelques changements stratégiques par rapport aux années précédentes :
Parce que c’est ça qu’on aime dans ce genre d’événements, voilà ce qu’on a gardé et qu’on espère conserver chaque année :
Cette année, nous avons eu le plaisir d’accueillir les conférencier·e·s suivant·e·s :
Voici où vous pourrez trouver les contenus pour vous occuper pendant vos vacances :
Comme l’année précédente, pour agrémenter la journée et favoriser les échanges, un petit jeu fil-rouge a été organisé (sans trop d’organisation à vrai dire) : chaque participant disposait d’une enveloppe où était écrit un mot. Le but étant de construire des phrases originales, un peu à la façon des cadavres exquis.
(photo : Jean-Baptiste Audras)
Toujours fidèle au rendez-vous, le Quiz de fin de journée est la manière que nous avons choisie pour clore les conférences dans la bonne humeur et avec un peu de compétition.
La mouture 2015 de notre quiz change radicalement des années précédentes dans la mesure où tout le monde pouvait répondre à toutes les questions jusqu’au bout et ainsi en profiter plus longtemps. Chacun avait donc en main sa petite grille papier et son superbe stylo KiwiParty et devait cocher la bonne case de son QCM.
Malgré un niveau de questions souvent très relevé (et toujours extravagantes), certains s’en sont très bien sortis avec un quasi sans-faute. Divers lots symboliques et très geekesques ont récompensé une dizaine d’heureux élus.
(photo : Christine Viale)
Moults photos ont été prises tout au long de la journée et durant l’::after. Vous avez la possibilité de consulter l’ensemble des oeuvres publiées sur Flickr, ou de vous plonger dans cette sélection d’albums coup de coeur :
(photo : Jennifer Noesser)
Parce que c'est grâce à eux que cet événement a eu lieu :
Voici une sélection des articles qui parlent de la KiwiParty 2015.
Et enfin merci à Francis Chouquet pour le nouveau logo de la KiwiParty !
Préambule : cet article part du principe que vous n’êtes pas totalement étranger aux notions et outils tels que LESS, NodeJS, Gulp ni à la ligne de commande, il ne s'agit d'un tutoriel de découverte de ces outils mais d'usage en environnement professionnel.
Au sein de l’agence web Alsacreations.fr, nous avons instauré un processus de travail (un “workflow”) composé de langage LESS, compilé avec des tâches Gulp et saupoudré de conventions internes et de KNACSS.
Le site goetter.fr est mon site personnel, mon bac à sable et mon espace de test pour moults expériences web.
La version actuelle du site est très artisanale et manuelle. J’ai voulu tester la mise en place d’un workflow automatisé afin de profiter de toutes les tâches courantes (compilation LESS, minification, préfixes CSS automatiques, concaténation des fichiers JS, optimisation des images) tout en testant deux fonctionnalités intéressantes : les includes de fichiers en HTML ainsi que l’outil de perf web prôné par Google : “critical CSS”.
Cela m’a pris une journée de reprendre tout le workflow de mon site perso. Je vous la partage ici…
Dans la version précédente de mon site personnel, mon dossier de travail était le même que celui de production : je faisais simplement attention à ne pas mettre en prod les fichiers inutiles (CSS non minifié, images non optimisées) et j'employais le logiciel Prepros.io pour compiler mes fichiers.
Avec le choix de Gulp, mon processus de travail est aujourd'hui différent dans la mesure où je scinde deux environnements distincts :
_src/
_dist/
Gulp est un outil d'automatisation de tâches (un "task manager") basé sur nodeJS. Une fois NodeJS en place, Gulp s'installe en ligne de commande :
npm install gulp -g
Pour fonctionner, Gulp nécessite deux fichiers de travail :
package.json
(contient tous les plugins nécessaires aux tâches à éxécuter)gulpfile.js
(exécute les tâches)
Pour rappel, je ne prévois pas de rentrer dans les détails de ce que sont gulp, gulpfile.js
et package.json
car cet article n'est pas une introduction à ces outils. Si ces termes vous sont totalement étrangers, je vous invite à vous renseigner sur les très nombreux écrits sur ce sujet (on me souffle dans l'oreillette qu'il va prochainement y avoir un article à ce sujet sur Alsacréations).
J’utilise à présent Gulp pour réaliser toutes mes tâches courantes (pas bien complexes mais souvent répétitives), et voici quels sont les plugins prévus au sein de mon fichier package.json
:
Toutes les tâches suivantes sont inclues dans mon fichier gulpfile.js
et exécutées sur demande ou automatiquement (watch
) en ligne de commande.
La tâche “css” du fichier gulpfile.js
:
// Tâche "css" = LESS + autoprefixer + minify
gulp.task('css', function() {
return gulp.src(source + '/assets/css/styles.less')
.pipe(less())
.pipe(autoprefixer())
.pipe(rename({
suffix: '.min'
}))
.pipe(minify())
.pipe(gulp.dest(prod + '/assets/css/'));
});
Explications : mon fichier de travail (styles.less
) est tout d'abord compilé en CSS classique, puis préfixé, puis renommé en .min.css
avant d'être minifié et placé dans mon dossier de production.
La tâche “js” du fichier gulpfile.js
:
// Tâche "js" = uglify + concat
gulp.task('js', function() {
return gulp.src(source + '/assets/js/*.js')
.pipe(uglify())
.pipe(concat('global.min.js'))
.pipe(gulp.dest(prod + '/assets/js/'));
});
Explications : tous les fichiers JavaScript du dossier /js/
sont minifiés pour concaténés (regroupés) en un seul fichier global.min.js
et placé dans mon dossier de production.
La tâche “img” du fichier gulpfile.js
:
// Tâche "img" = Images optimisées
gulp.task('img', function () {
return gulp.src(source + '/assets/img/*.{png,jpg,jpeg,gif,svg}')
.pipe(imagemin())
.pipe(gulp.dest(prod + '/assets/img'));
});
unCSS est un outil (disponible en versions grunt et gulp) permettant de supprimer les styles CSS non utilisés au sein de votre projet.
Il s'agit d'une véritable bénédiction lorsque vous travaillez à l'aide de frameworks CSS tels que Bootstrap ou KNACSS car il va réduire drastiquement le poids de vos fichiers CSS :
If you're building a #twitterbootstrap page with #grunt or #gulp, consider using #uncss. > CSS file reduced from 150kB to 11kB! #Javascript
— Sascha Sambale (@mastixmc) 11 Mars 2015
unCSS fonctionne bien évidemment sur un ensemble de fichiers et fait très bien son boulot... à condition que vous n'ayez oublié aucun fichier dans la boucle !
Sur le site de goetter.fr, la feuille de style CSS minifiée est passée de 16ko à 10ko après l'action de unCSS, soit une réduction de 40%. Imaginez le résultat sur des gros fichiers de centaires de ko. Le pire est que le site fonctionne toujours, rien n'est cassé :)
unCSS a été intégrée dans ma tâche "css" ainsi :
// Tâche "css" = LESS + autoprefixer + unCSS + minify
gulp.task('css', function() {
return gulp.src(source + '/assets/css/*.less')
.pipe(less())
.pipe(autoprefixer())
.pipe(uncss({
html: [source + '/{,_includes/}/{,conf/}/{,livres/}*.html']
}))
.pipe(rename({
suffix: '.min'
}))
.pipe(minify())
.pipe(gulp.dest(prod + '/assets/css/'));
});
Passons à présent à des tâches moins classiques, voire carrément spécifiques à mes besoins et envies.
En tant qu'intégrateur HTML/CSS, j’ai toujours été quelque peu frustré de devoir passer par un langage serveur pour faire des inclusions de fichiers partiels (header, footer, nav, etc.).
Bien-sûr, il est possible de passer par JavaScript, AJAX, webcomponents / polymer ou des langages tels Jade, HAML ou Handlebars pour atteindre cet objectif, mais en toute honnêteté je ne suis pas fan de rajouter une couche de complexité à mon workflow et je ne supporte pas les syntaxes “à la Jade”.
Je veux écrire du bête HTML et avoir des include de fichiers. Je veux le beurre et l’argent du beurre. Et là, sur mon site perso, je peux me le permettre.
Par chance, puisque mon workflow est déjà basé sur NodeJS / Gulp, il existe des plugins pour parvenir à mes fins.
L’un de ces plugins est “Gulp HTML extend”.
À l’aide de simples commentaires HTML, il offre (au-moins) deux fonctionnalités qui m’intéressent tout particulièrement :
Le principe est simplissime : les instructions se présentent sous forme de commentaires HTML (pour préserver la syntaxe et la validité), par exemple <!-- @@include fichier.txt -->
pour inclure un fichier dans le document, ou bien <!-- @@var variable -->
pour inclure une variable.
Voici un exemple de page index.html
avant compilation :
<head>
<!-- @@include _includes/head.html {"title": "Mon site web personnel", "path": "../"} -->
</head>
Le fichier inclus head.html
:
<meta charset="UTF-8">
<title><!-- @@var title --></title>
...
<link rel="stylesheet" href="<!-- @@var path -->assets/css/styles.min.css" media="all">
Et le résultat compilé index.html
en prod :
<meta charset="UTF-8">
<title>Mon site web personnel</title>
...
<link rel="stylesheet" href="../assets/css/styles.min.css" media="all">
</head>
Voici la tâche “html” du fichier gulpfile.js
correspondant à mes besoins :
// Tâche "html" = includes HTML
gulp.task('html', function() {
return gulp.src(source + '/{,conf/}/{,livres/}*.html')
// Generates HTML includes
.pipe(extender({
annotations: false,
verbose: false
})) // default options
.pipe(gulp.dest(prod))
});
Explications : tous les fichiers HTML à la racine du site ainsi que ceux situés dans les dossiers /conf
et /livres
seront compilés en tenant compte des inclusions et des variables fournies.
La documentation et les options de ce plugin : https://www.npmjs.com/package/gulp-html-extend
Autre plugin que j’ai pu mettre en place sur mon site perso : “Critical CSS”.
Vous avez déjà certainement été confronté à l’un des conseils récurrents de Google PageSpeed Insights (l’outil de perf web très pratique pour tester son site mobile et desktop) qui est Éliminer les codes JavaScript et CSS qui bloquent l’affichage du contenu au-dessus de la ligne de flottaison
.
L’explication est celle-ci : JavaScript et CSS retardent l’affichage de la page tant qu’ils ne sont pas chargés.
Google considère que la partie visible d’une page web, c’est à dire tout se qui se trouve au-dessus de la ligne de flottaison (ou “above the fold”), devrait être affiché instantanément, soit :
async
, defer
),<style>
comme au bon vieux temps des newsletter).
Sans surprise, la méthode d‘“inliner” les CSS dans l’élément <style>
présente un sacré paquet d’inconvénients (un peu les mêmes que l’on retrouve avec les data-URI
) :
La contrepartie est que les avantages... ne sont pas négligeables non plus :
Quelques ressources intéressantes sur ce sujet qui ne l’est pas moins :
Si vous ne deviez retenir qu’une seule ressource, je vous invite vivement à vous imprégner de la conférence de Patrick Hamann (The Guardian), “CSS and the critical path” dont voici les slides et la vidéo associée.
Il existe deux outils connus et suffisamment maintenus et testés pour réaliser la tâche de “inliner des CSS” : Critical d’Addy Osmani et CriticalCSS de Filament Group. Les deux proposent une version Grunt et Gulp.
Pour ma part et sur mon site perso goetter.fr, j’ai utilisé le premier de ces deux outils, Critical, en version Gulp bien sûr.
Voici ma tâche “critical” du fichier gulpfile.js
:
// Tâche "critical" = critical inline CSS
gulp.task('critical', function() {
return gulp.src(prod + '/*.html')
.pipe(critical({
base: prod,
inline: true,
width: 320,
height: 480,
minify: true
}))
.pipe(gulp.dest(prod));
});
Le principe général est celui-ci :
<style>
dans la page<noscript>
Dans mon cas, j’ai décidé que seront concernés tous les fichiers à la racine du site (et uniquement ceux-là).
Maintenant que l’on s’est bien amusé, passons quelques tests pour découvrir si ça en valait vraiment la peine…
Google PageSpeed Insights donne une “note globale de performance” sur 100 à votre page en version mobile et desktop.
Illustration avant critical :
Illustration après critical :
Dareboost testé sur mobile (Nexus 5, en 3G et en France) attribue une note totale de 92% avant et après critical.
Avant Critical :
Après Critical :
Illustration : comparaison avant et après :
Voici la tâche complète de mise en production de l’ensemble des contenus de _src/
vers _dist/
que j’emploie :
// Tâche "prod" = toutes les tâches ensemble
gulp.task('prod', ['css', 'js', 'html', 'critical','img']);
En un clic, voici les actions menées automatiquement :
Et pour finir, voici la tâche "watch" qui va surveiller en continu toutes les modifications opérées sur les fichiers LESS et HTML et qui va automatiquement lancer les tâches correspondantes :
// Tâche "watch" = je surveille LESS et HTML
gulp.task('watch', function () {
gulp.watch(source + '/assets/css/*.less', ['css']);
gulp.watch(source + '/{,conf/}/{,livres/}*.html', ['html']);
});
Si l'envie vous prend et si vous avez envie de tester tout ça chez vous, vous pouvez récupérer les fichiers package.json
et gulpfile.js
sur mon espace Gist.
Disposer d'un environnement de travail automatisé (au moins en partie) est devenu une évidence de nos jours où nous ne pouvons plus nous contenter d'écrire du HTML et du CSS. L'industrialisation de notre métier exige d'aller vite, de tester sur de nombreux devices, d'éviter les régressions, de maintenir son code et de le rendre le plus performant possible.
Des outils tels que Grunt, Gulp ou Brunch offrent un "workflow" automatique pour la plupart des tâches courantes.
Pour ce qui est du reste, par exemple inclure des fichiers en HTML ou rendre inline ses CSS "critiques"... il y a aussi une application pour ça ! :)
Retrouvez l'intégralité de ce tutoriel multi-pages en ligne
VorlonJS est un puissant outil d'inspection, debug et test JavaScript. Il est construit sur node.js et socket.io.
Vous allez dire : oui mais les navigateurs actuels disposent tous d'outils relativement complets et puissants. Quel est son intérêt ?
L'approche est ici différente. Le but est de pouvoir s'affranchir des contraintes imposées par chaque plate-forme pour disposer d'un outil universel, notamment pour les mobiles et tablettes qui imposent bien souvent des inspecteurs dédiés et propriétaires (par exemple Safari sur Mac OS X avec un câble USB pour tout ce qui tourne sous iOS).
Retrouvez une belle démonstration dans cette vidéo de la KiwiParty
L'installation de Vorlon est relativement simple grâce à npm, et décrite sur le site officiel mais je ne résiste pas à la tentation de la transcrire ici :
npm i -g vorlon
Puis on lance la commande vorlon
vorlon
À partir de ce moment, un serveur tourne sur votre poste local à l'adresse http://localhost:1337
La dernière étape est de rajouter une balise <script>
dans les documents HTML à analyser.
<script src="http://localhost:1337/vorlon.js"></script>
Le tour est joué : chaque client (navigateur, application) utilisant cette page sera "raccordé" au debug et pourra être inspecté à distance, quelle que soit sa nature.
Le développement de cet outil est open-source sur GitHub, à l'initiative de plusieurs personnes de Microsoft. N'hésitez pas à contribuer pour l'écriture de plugins.
Dans la jungle des CMS, il y en a certains qui sortent du lot pour leurs fonctionnalités avancées et leur capacité de proposer des solutions à presque toutes les éventualités (Drupal, WordPress,..) et il y en a d'autres qui, à l'inverse, tentent de rester le plus simple possible. 99ko fait partie de cette deuxième catégorie. Installé en quelques secondes, fonctionnalités natives suffisantes pour un projet simple, rapide (basé sur un stockage au format .json
), la version 2.0.2b (beta) vient de sortir.
Ce CMS s'adresse plutôt à ceux qui souhaitent partir d'une structure simple à modifier pour créer des sites vitrines ne demandant pas trop de fonctionnalités. Il est codé en php (orienté objet pour cette nouvelle version). Les seuls prérequis :
mod_rewrite
activé sur apache (pour la réécriture d'url)./data/
, /plugin/
, /theme/
et les fichiers install.php
, .htaccess
install.php
On peut choisir la langue principale (fr ou en pour l'instant) dès l'installation. le basculement d'une langue à l'autre peut se faire ultérieurement dans l'administration.
La page d'accueil de l'administration est pour le moins dépouillée.
La première page a été créée par mes soins, les trois autres l'étaient déjà après installation. Vous pouvez les modifier (donner un titre, des informations meta, utiliser un gabarit personnalisé, les faire afficher ou non dans le menu, les définir comme page d'accueil), les supprimer.
Ici, le listing des pages dont on peut modifier l'ordre. Vous pouvez également ajouter un lien vers une page externe (bouton Ajouter un lien).
Fidèle à la philosophie du CMS : simple, épuré.
Vous pouvez bien évidemment créer votre propre thème, il suffit de s'inspirer du thème par défaut.
Comme ce cms se veut le plus simple possible, vous n'aurez pas forcément toutes les fonctionnalités que vous souhaitiez, mais il est possible d'étendre son champ d'action par l'intermédiaires d'extensions (Plugins et thèmes pour le CMS 99ko). Certes, elles ne sont pas légions pour l'instant. Les principales fonctionanlités mises à disposition nativement :
Au moment où nous écrivons cet article, cette version 2 étant en beta-test, elle peut encore comporter des bogues.
Ce projet a débuté en 2012. Le développeur principal est à l'écoute des utilisateurs et corrige rapidement les bogues trouvés. Certes, certains points sont encore à améliorer (réécriture d'url, travail sur l'accessibilité, optimisation des css,...), mais cet outil a le grand avantage d'être simplissime à prendre en main et à modifier.