Bastien Donjon

Développeur web à Bordeaux

Saturday

18

January 2014

0

COMMENTS

Download and install JAVA jdk 7 for DEBIAN 7

Written by , Posted in Uncategorized

Download jdk with command line (source) :
wget --no-cookies --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com" "http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-x64.tar.gz
Uncompress (source) :
tar -zxvf jdk-7-linux-x64.tar.gz

Move java directory “jdk1.7.0” in “/usr/java”.

Add JAVA_HOME and PATH variables :
export JAVA_HOME=/usr/java/jdk1.7.0/bin/javaexport PATH=$PATH:/usr/java/jdk1.7.0/bin

Thursday

18

July 2013

0

COMMENTS

PHP Notice: Failed saving metadata to metadataCache in Zend Cron

Written by , Posted in PHP

If you have this message during execution php script in command line :

PHP Notice:  Failed saving metadata to metadataCache in /var/www/vhosts/website.com/httpdocs/library/Zend/Db/Table/Abstract.php on line 838

It is probably that APC is not enabled for CLI scripts. With default configuration, APC is not enabled for CLI script.

To this, add the lines in the configuration file apc :

apc.enable_cli = 1
apc.enabled = 1

Sunday

21

April 2013

0

COMMENTS

Installer Ruby 2.0 sur Centos 6 avec Ruby Version Manager (RVM)

Written by , Posted in Ruby

1) Installation de Ruby Version Manager (RVM)

RVM est une application qui permet d’installer et d’utiliser plusieurs version de Ruby sur une même machine.

# Installation des packages nécessaires
yum groupinstall "Development Tools"
yum install ntp
yum install zlib zlib-devel sqlite-devel

# Téléchargement et installation de RVM
bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
2) Vérification que RVM est bien installé. Si tous s’est bien passé vous devriez avoir “RVM is a function” comme résultat.
type rvm | head -1
3) Installation de Ruby 2.0
rvm install 2.0
# Utilisation de la version 2 par défaut
rvm use 2.0 --default
# Vérification de la version courante de Ruby
ruby -v

Votre environnement Ruby devrait être parfaitement fonctionnel

Tuesday

16

April 2013

0

COMMENTS

Moment.js : Le couteau Suisse pour travailler avec les dates en javascript

Written by , Posted in Javascript

A en juger par le nombre d’étoiles que Moment.js a recueilli sur GitHub, vous le connaissez peut être déjà. Mais pour ceux qui ne l’ont pas, Moment.js est une librairie JavaScript bien documentée pour l’analyse, la validation, la manipulation et le formatage des dates.

La librairie peut s’utiliser dans le navigateur ou Node.js et prend en charge de nombreuses langues.

Voici quelques exemples d’utilisation :

moment().format('MMMM Do YYYY, h:mm:ss a');
// => April 16th 2013, 5:16:17 pm
moment().format('dddd');
// => Tuesday
moment().format("MMM Do YY");
// => Apr 16th 13
moment().format('YYYY [escaped] YYYY');
// => 2013 escaped 2013
moment().format();
// => 2013-04-16T17:18:04+02:00

La bibliothèque ne pèse que 5,5 kb et a récemment atteint la version 2.0, donc si vous n’avez pas regardé depuis un certain temps maintenant c’est le temps de vous mettre à jour.

Wednesday

10

April 2013

0

COMMENTS

Colonnes fixes dans un site web de type “Single page”

Written by , Posted in css

Le web se voit de plus en plus influencé par la conception ergonomique des applications mobiles. On parle notamment de la technique de conception “Mobile first” et de l’approche “single page”.

Qu’est-ce que l’approche “Single page” ?

Rien de bien compliqué. C’est un site qui n’a qu’une seul page … et où seulement une partie de celui-ci est mis à jour selon les actions de l’utilisation. Niveau ergonomie, il n’y a pas de scroll général mais éventuellement des scrolls sur des parties du site.

Le layout

Je vous propose de monter un layout composé d’un header fixe, d’un footer fixe et de 3 colonnes qui complètent la place centrale restante.

html :

<div id="header"></div>
<div id="colonnes">
    <div>1</div>
    <div>2</div>
    <div id="last">3</div>
    <div style="clear:both;"></div>
</div>
<div id="footer"></div>

css :

#header {
    background-color: yellow;
    height: 20px;
}

#colonnes {
    position: fixed;
    height: auto;
    top:20px;
    bottom: 20px;
}

#colonnes div{
    float: left;
    width: 100px;
    height: 100%;
    bottom: 0;
    margin: 0 10px 0 0;
    background-color: black;
}

#footer {
    background-color: red;
    height: 20px;
    position: fixed;
    bottom: 0;
    width: 100%;
}

body{
    height: 100%;
    padding: 0;
    margin: 0;
}

exemple

Saturday

30

March 2013

0

COMMENTS

Gérer toutes les erreurs javascripts (Parse, ReferenceError et Exception)

Written by , Posted in Javascript

En production plusieurs cause peuvent entraîner l’arrêt ou le dysfonctionnement d’une application javascript. Avec l’augmentation des développements front end il est maintenant indispensable de savoir les éviter et les gérer pour une analyse ultérieur. Cet article traite de 3 niveaux de gestion à mettre en place.

1. Eviter les erreurs de syntaxe

C’est indéniablement l’erreur qui a la plus grave conséquence, l’arrêt total de l’application. Mais c’est aussi la plus simple à avoir si le code produit n’est pas rigoureusement testé.

Beaucoup d’IDE permettent d’éviter les erreurs grossières de syntaxe, mais nous ne somme jamais à l’abri d’un d’oubli… Ce n’est donc pas du luxe que d’analyser une dernière fois le code avant une mise en production. L’analyseur de code JSHINT permet de dresser un rapport sur l’état de votre code avant une éventuelle mise en production. Il ne s’arrête pas là puisqu’il vous fournira aussi un rapport contenant en autre les variables “undefined”, non utilisées, déclarées plusieurs fois …

2. Capturer les “exception”, les erreurs type ReferenceError ou toutes les erreurs provenant de librairies externes

En production, il peut être intéressant de garder un œil sur les erreurs qui peuvent être levées, qu’elles soit originaires de votre propre développement ou de librairies externes. Les navigateurs proposent l’événement window.onerror  levé à chaque erreurs javascript rencontrées. Il permet ainsi de détecter les exceptions, mais aussi les erreurs de référence ou toutes erreurs des librairies externes.

window.onerror = function(message, url, lineNumber) {
    console.info(message);
    console.info(url);
    console.info(lineNumber);
};

Attention au crossdomaine. Si cet évènement est levé par un script qui ne se trouve pas sur le même domaine/sous domaine alors le message sera “Script error.” et le code “0”. C’est une limitation volontaire des navigateurs pour une raison de sécurité.

Cette technique est donc le dernier filet avant de perdre la trace d’une erreur. Elle peut s’avérer peu précise pour les exceptions levées avec un objet. Limité aux paramètres “message”, “url”, “lineNumber”, les données contenues dans un object ne seront pas transmises par l’évènement. Pour une gestion plus poussées dans exceptions il faudra passer au point 3.

3 – Capturer les exceptions

Aucun autre moyen à ma connaissance existe pour capturer et traiter une exception. Il faudra passer pas un bloc try..catch général à votre application.

Couplé à une requête ajax, les 2 derniers points vous permettront de mettre en place un système de log de toutes les erreurs rencontrées coté client.