Start

Ruhoh is all about the command-line.
Check out the goods:

$ ruhoh help

Derniers Articles

Pourquoi Bootstrap est devenu un fleau 2012-07-06

J’exprime dans cet article une opinion strictement personnelle qui peut être partagée ou non par chacun, merci de repecter ce fait si vous choississez de commenter.

Boostrap un fléau ?

Tout d’abord, et dans un soucis de clarté, il faut bien comprendre que je considère Bootstrap comme un outil très pratique qui fait bien le travail pour lequel il à été conçu.
Je ne reproche pas ici à Bootstrap ces qualités, le problème que je relate ici est lié à l’utilisateur.

Le layout

Depuis l’arrivée de Bootstrap, son utilisation n’a fait que croître et de plus en plus de sites en production l’utilisent saveur nature.
De fait, tous ces sites ont ainsi la même apparence (au détail près de la mise en page) et réutilisent très souvent l’un des layouts proposées par défaut.
Un détail étrange de la documentation me donne l’impression que Bootstrap n’est pas recommandé pour une utilisation hors pistes. C’est la raison pour laquelle je préfère les autres frameworks, et peut-être l’une des raison de la réutilisation massive du layout.

Les styles

Le web se retrouve en état de surpopulation de clones Bootstrap auxquels aucun effort particulier de style n’a été apporté.
Twitter à tenté d’apporter une solution avec le passage à Less, mais ce n’est pas suffisant sans outil adapté à la personnalisation via les variables fournies.

Nota: il existe des outils qui ont étés conçus par la communauté mais il y a un problème récurrent d’ergonomie. Une telle quantité de colorpickers n’est pas ergonomique.

La communication

C’est là le point essentiel de ma réflexion, il manque un aspect que je juge capital dans la documentation de Bootstrap :

Bootstrap à originellement été conçus pour faciliter le prototypage d’un site web, afin d’avoir un aperçu de qualité du produit fini.
Il reste toutefois possible d’utiliser Bootstrap pour la création d’un produit fini, mais il faut y apporter des efforts de personnalisation des styles selon chaque cas.

Comment peut-on y remédier ?

  1. La solution à troll : il faut tuer Bootstrap
  2. Apporter des précisions sur le bon usage de Bootstrap dans sa documentation (un guide pas à pas sur la personnalisation peut apporter une grande aide)
  3. Faire évoluer Bootstrap (ceci fera l’objet d’un prochain article)

Comment j'ai resolu le probleme de la panne d'oreiller 2012-03-29

Sleepyti.me is a bedtime calculator that can help you calculate when to fall asleep. By counting backwards in sleep cycles, sleepyti.me has the ability to help you wake up refreshed, instead of feeling groggy. Sleepyti.me can also help you figure out what time to set your alarm if you are going to sleep at that moment.

Sleepyti.me est une application qui permet très simplement de calculer votre heure de coucher en fonction de votre heure de lever, ou bien de calculer à quelle heure vous réveiller si vous alliez au lit “maintenant”.

Ce calcul est très simple : il suffit de compter les cycles de sommeil afin de se réveiller entre deux, ce qui permet d’être en forme et d’éviter la panne.

PHP rencontre l'elegance et la beaute, intro a Laravel 3.0 2012-02-22

Il est là !

Laravel est un framework dont la motivation première est la beauté du code. Cette nouvelle version, qui arrive moins d’un an après la création de ce framework apporte tout son lot de nouveautées, toutes plus intéressantes les unes que les autres. On y trouvera entre autres les migrations de base de données, l’intégration native des tests unitaires et les modules.

Toutes les notions mentionnées ici sont très bien documentées

Les routes

Route::get('/', function()
{
return View::make('home.index');
});

Voila à quoi ressemble l’utilisation la plus basique de Laravel.

Les sessions

Les sessions servent à faire transiter des données entre les pages, Laravel en tire très avantageusement l’utilité.

return Redirect::to('profile')->with('message', 'Welcome Back!');

Les modules (aka. Bundles)

La plus importante innovation apportée par cette version est incontestablement le retour des modules avec une nouvelle intégration bien plus efficace que la précédente. Un module fonctionne exactement comme l’application principale (votre application est en réalité un module), il devient ainsi très aisé de partager un code à la communautée.
Retrouvez les modules ici et apprenez en plus ici

Les migrations

Les migrations permettent de définir le schéma de notre base de donnée, et de modifier celui-ci. Il est ainsi possible d’ajouter une colonne à une table, par exemple à partir d’un module afin d’étendre le profil utilisateur.

Schema::create('users', function($table)
{
	$table->increments('id');
	$table->string('email')->unique();
	$table->string('password');
});

Commentez vos RegEx avec CoffeeScript 2012-02-08

Javascript, et par extension coffeescript nous permettent de réaliser, entres autres, une pré validation des formulaires côté client, pour améliorer l’expérience de celui-ci. Pour cela nous disposons d’un outil très utile : les regex (ou expressions régulières).

Cependant il faut bien reconnaitre que ce n’est pas toujours très lisible, surtout en équipe quand le collègue s’est chargé de ces regex.

Prenons l’exemple d’une validation d’adresse email :

var emailPattern = /^([a-z0-9_.-]+)@([\da-z.-]+)\.([a-z.]{2,6})$/i;

if ( "[email protected]".match( emailPattern ) ) {
   console.log( "E-mail is valid" );
} else {
   console.log( "E-mail is invalid" );
}

En regardant uniquement la première ligne, il est très dur (voir impossible pour un débutant) de comprendre ce que fait ce code.

Et c’est là que CoffeeScript nous vient en aide !

Même si vous n’utilisez pas toutes les subtilités de ce précompileur, il peut vous être très utile !

Observons le même code que précedemment, cette fois ci écrit pour coffeescript :

emailPattern = /// ^ #begin of line
   ([a-z0-9_.-]+)    #one or more letters, numbers, _ . or -
   @                 #followed by an @ sign
   ([\da-z.-]+)      #then one or more letters, numbers, _ . or -
   \.                #followed by a period
   ([a-z.]{2,6})     #followed by 2 to 6 letters or periods
   $ ///i            #end of line and ignore case

Une page d'erreur unique pour les gouverner toutes 2012-01-31

Ce petit code à ajouter à votre .htaccess que je vous propose vous permettra de récupérer toutes les erreurs http avec le message associé, afin de savoir tout de suite à quelle erreur nous avons affaire (utile pendant un développement). Ce code peut également très bien servir de base pour gérer plus efficacement ces erreurs sur un environnement de production, pour être prévenu par email par exemple, ou tout simplement pour avoir une page toute jolie.

A garder sous la main donc.

HTACCESS

ErrorDocument 400 /errors.php
ErrorDocument 403 /errors.php
ErrorDocument 404 /errors.php
ErrorDocument 405 /errors.php
ErrorDocument 408 /errors.php
ErrorDocument 500 /errors.php
ErrorDocument 502 /errors.php
ErrorDocument 504 /errors.php

PHP

$status = $_SERVER['REDIRECT_STATUS'];
$codes = array(
       400 => array('400 Bad Request', 'The request cannot be fulfilled due to bad syntax.'),
       403 => array('403 Forbidden', 'The server has refused to fulfil your request.'),
       404 => array('404 Not Found', 'The page you requested was not found on this server.'),
       405 => array('405 Method Not Allowed', 'The method specified in the request is not allowed for the specified resource.'),
       408 => array('408 Request Timeout', 'Your browser failed to send a request in the time allowed by the server.'),
       500 => array('500 Internal Server Error', 'The request was unsuccessful due to an unexpected condition encountered by the server.'),
       502 => array('502 Bad Gateway', 'The server received an invalid response while trying to carry out the request.'),
       504 => array('504 Gateway Timeout', 'The upstream server failed to send a request in the time allowed by the server.'),
);