Asselin Benoit Développement - Création et conception de sites internet - Amiens Somme Picardie Paris France

La fonction date() PHP traduite en français ( PHP, date )
01`02`2010

Aucun commentairePoster un commentaire !
Tags: PHP

Cette fonction se comporte exactement de la même manière que la fonction date() en PHP, mais traduite en français.

function date_french($format, $timestamp = null) {
	$param_D = array('', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam', 'Dim');
	$param_l = array('', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche');
	$param_F = array('', 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
	$param_M = array('', 'Jan', 'Fév', 'Mar', 'Avr', 'Mai', 'Jun', 'Jul', 'Aoû', 'Sep', 'Oct', 'Nov', 'Déc');

	$return = '';
	if(is_null($timestamp)) { $timestamp = mktime(); }
	for($i = 0, $len = strlen($format); $i < $len; $i++) {
		switch($format[$i]) {
			case '\\' : // double.slashes
				$i++;
				$return .= isset($format[$i]) ? $format[$i] : '';
				break;
			case 'D' :
				$return .= $param_D[date('N', $timestamp)];
				break;
			case 'l' :
				$return .= $param_l[date('N', $timestamp)];
				break;
			case 'F' :
				$return .= $param_F[date('n', $timestamp)];
				break;
			case 'M' :
				$return .= $param_M[date('n', $timestamp)];
				break;
			default :
				$return .= date($format[$i], $timestamp);
				break;
		}
	}
	return $return;
}


Comment attribuer un rang aux lignes d'un résultat en MySQL ? ( sql )
23`09`2009

2 commentairesPoster un commentaire !
Tags: MySQL

Lors de tries par page ou par ligne en base de données, il est parfois utile d'attribuer un rang pour chaque enregistrement. Voici une requête SQL qui vous permettra d'effectuer une telle opération :

SELECT (
	SELECT COUNT(id) FROM table t2
	WHERE t2.titre <= t1.titre 
	) AS rang , t1.*
FROM table t1
ORDER BY t1.titre

Désactiver l'anti-aliasing des polices sur NetBeans Mac OS X
11`08`2009

Aucun commentairePoster un commentaire !
Tags: NetBeans

Et non, ce blog n'est pas mort, ou du moins pas encore... même si le temps manque cruellement pour ajouter de petites astuces.

NetBeans La recette du jour est destinée à l'attention des MacUsers qui travaillent avec NetBeans (dernière version 6.7.1). Peut-être comme moi, vous regrettez de ne pouvoir utiliser la police "Monaco" en codant. Car il faut bien l'avouer cette typo avec un anti-aliasing n'est pas franchement lisible en petite taille. Heureusement, il existe UNE solution... Il "suffit" de désactiver le fameux anti-aliasing. Pour ce faire, il faut éditer le fichier suivant :

NetBeans.app/Contents/Ressources/NetBeans/etc/netbeans.conf
( Rappel: clique-droit sur l'application NetBeans.app puis "Afficher le contenu du packet" )

Trouver la ligne suivante :

netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-XX:MaxPermSize=200m -J-Xverify:none -J-Dapple.laf.useScreenMenuBar=true -J-Dsun.java2d.noddraw=true"

Ensuite, ajouter -J-Dswing.aatext=false -Dawt.useSystemAAFontSettings=false, ce qui vous donnera :

netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-XX:MaxPermSize=200m -J-Xverify:none -J-Dapple.laf.useScreenMenuBar=true -J-Dsun.java2d.noddraw=true -J-Dswing.aatext=false -Dawt.useSystemAAFontSettings=false"

Vous enregistrez le fichier, vous relancez NetBeans, et l'opération est terminée ! Il ne vous reste plus qu'à choisir la police de votre choix dans les Préférences.


Toute votre musique préférée gratuite et en illimitée ( Spotify, invitation )
15`05`2009

3 commentairesPoster un commentaire !
Tags: Detente MP3

Aujourd'hui, je ne vous propose pas un morceau de code source, mais simplement un petit outil fort pratique pour vos oreilles et qui vous permettra d'augmenter votre cadence de travail avec un fond musical de premier choix et de bonne qualité.

Spotify Ainsi, je vous présente le logiciel Spofity :
Ce logiciel est à mi-chemin entre iTunes et Deezer !
Je vous laisse donc imaginer le reste...
Toute la musique que vous désirez, est disponible gratuitement en écoute streaming (aucun fichier ne peut être chargé). Le logiciel contient quelques bannières de pub, et encore quelques rares jingles publicitaires. Une version payante vous permet d'enlever ces petits parasites.

Le logiciel est pour le moment en version bêta et les inscriptions semblent limitées à des invitations. Toutefois, si vous vous rendez directement à l'adresse suivante :
https://www.spotify.com/en/get-started/
vous n'avez pas besoin d'invitation ;-)


Internet Explorer 8, la nouvelle croix du développeur web ( EmulateIE7 )
24`03`2009

2 commentairesPoster un commentaire !
Tags: Internet Explorer XHTML

Peut-être comme moi, vous venez de découvrir Internet Explorer 8 et que ce dernier est un " peu " plus compatible que Internet Explorer 7... Toutefois, certaines pages fonctionnent mal vu la quantité de patch CSS appliqués pour fixer les soucis de IE7, IE6, etc...

Microsoft a donc pensé à tout ! Il nous a sorti une balise META qui permet d'indiquer à Internet Explorer 8 la version du moteur graphique à utiliser. Pour forcer un rendu IE7 et non IE8, il suffit d'injecter la META ci-dessous :

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

Chose assez amusante, on pourrait croire que le site officiel de Microsoft est parfaitement compatible Internet Explorer 8, et qu'il n'a pas du tout besoin de cette META... et bien il n'en est rien, leur code source contient aussi la dite balise ! " Vive Microsoft ! "

Pendant ce temps, on doit toujours faire attention à Internet Explorer 6, utilisé par environ 1/4 des surfeurs du Web... Heureusement, ce chiffre baisse de mois en mois.

Documentation MSDN :
• http://msdn.microsoft.com/en-us/library/cc817574.aspx


Comment forcer le téléchargement d'un fichier ? ( Header, FilesMatch )
09`01`2009

1 commentairePoster un commentaire !
Tags: htaccess Regex

Comment forcer le téléchargment d'un fichier sans utiliser de script PHP (ou autres...) ?
Solution : Un simple fichier .htaccess à placer dans le dossier désiré !

<IfModule mod_headers.c>
	<FilesMatch "\.(jpe?g)$">
		ForceType image/jpeg
		Header set Content-Disposition attachment
	</FilesMatch>
</IfModule>

A noter : en cas de dysfonctionnement, cela veut dire que le mod_headers n'est pas installé, ou est indisponible sur votre serveur Apache.

Documentation officielle :
• http://httpd.apache.org/docs/2.0/mod/core.html#filesmatch
• http://httpd.apache.org/docs/2.0/mod/mod_headers.html


Combinaison de document.getElementById et RegExp ( javascript, dom )
14`12`2008

6 commentairesPoster un commentaire !
Tags: Javascript Regex DOM

On sent que la récession en France est très forte, j'ai moi-même du mal à joindre les 2 bouts... notamment à propos du temps qui m'est disponible pour rédiger ce poste (Travailler plus, pour gagner plus, qui disait !).
L'idée du code source du jour :

Rechercher dans une page (X)HTML, les IDentifiants correspondant à une expression régulière new RegExp.

function getElementsByRegExpId(p_regexp, p_element, p_tagName) {
	p_element = p_element === undefined ? document : p_element;
	p_tagName = p_tagName === undefined ? '*' : p_tagName;
	var v_return = [];
	var v_inc = 0;
	for(var v_i = 0, v_il = p_element.getElementsByTagName(p_tagName).length; v_i < v_il; v_i++) {
		if(p_element.getElementsByTagName(p_tagName).item(v_i).id && p_element.getElementsByTagName(p_tagName).item(v_i).id.match(p_regexp)) {
			v_return[v_inc] = p_element.getElementsByTagName(p_tagName).item(v_i);
			v_inc++;
		}
	}
	return v_return;
}

// Exemple d'utilisation
var v_array = getElementsByRegExpId(/^test.+/);


Barack Obama VS John McCain, différences des 2 candidats en code
08`10`2008

5 commentairesPoster un commentaire !
Tags: Detente Internet

Voici une petite étude technique comparative des sites officiels de John McCain et de Barack Obama...

A y regarder de plus près, les portraits des deux candidats se révèlent de manière assez intéressante :

Barack ObamaJohn McCain
XHTML 1.0 Transitional standardHTML 4.01
4 Erreurs W3C151 Erreurs W3C
UTF-8ISO-8859-1
Open source (PHP / Apache)Corporate (Microsoft ASP)
Erreur 404 géréeErreur 404 standard
Pretty URLURL case-sensitive et imbitable

Maintenant, il ne reste plus qu'à faire votre choix... Je vous laisse deviner vers qui se porte mon vote ;)

Sources :
http://www.barackobama.com/
http://www.johnmccain.com/
http://www.presse-citron.net/


Obfuscateur de code Javascript ET geekettes en folie ( Hello geekette )
04`10`2008

1 commentairePoster un commentaire !
Tags: Javascript Obfuscateur Detente

On peut dire qu'en ce moment, je fais fort avec des titres très accrocheur ! ( ou qui ne semble avoir aucun sens... ). Plus sérieusement, je vais vous parler d'un thème qui vous semblera au combien aride et en ennuyeux : l'obfuscator de code... Afin de vous captiver jusqu'au bout de ma prose, vous trouverez en fin de ce message une Geekette tout droit venue de vos rêves les plus fous !

Obfuscateur ou Obfuscator : encore un terme barbare pour ne pas dire grand chose et accessoirement pour frime dans un dîner mondain. Exemple :

- Oui, en effet, la semaine dernière, j'ai découvert un obfuscateur d'une grande puissance qui transforme du bytecode en un algorithme du même langage plus difficile à décompiler pour le newbie qui peine à coder deux méthodes en POO sans générer un code erreur de compilation.
- Mmmffff mmmfff mmfff .....
- Vous reprendrez bien un peu de thé avec ceci ?

Avez-vous remarqué l'approche pédagogique qui a été faite, je vous ai donné une belle définition dans une blague totalement lamentable ?! L'obfuscateur a en effet pour mission de faire de la purée de votre code, et ainsi le rendre plus difficile à comprendre et donc à décompiler.
Toutefois, dans notre cas présent, obfusquer de code Javascript a un double intérêt, rendre le code illisible (mais ceci n'est vraiment que très partiel) et surtout rendre vos scripts plus légers car ils se retrouveront débarrasser de leurs espaces et de leurs commentaires.

Voici sûrement le plus connu et gratuit /packer/ de Dean Edwards disponible sur http://dean.edwards.name/packer/ qui opère en ligne. Différentes options sont disponible, notamment retirer les espaces et commentaires, obfusquer le code, et remplacer les noms des variables sans influencer le comportent de vos scripts.


Et voici le passage que vous attendez tous : la Geekette !

Au hasard de mes navigations sur le net, je suis tombé sur le site Hello Geekette .com. Un petite série de court-métrages sur le thème des relations entre les geeks et les humains :


Greg est ce que l'on peux appeler si ça existe: « un mec normal ».
Alors que Valérie est ce que l'on peux appeler: « une geekette » .

Mais cela ne serait pas grave… s’ils n’étaient pas aussi… colocataires!

L'épisode Hello Geekette 5 - Geeks Vs Bobos est particulièrement savoureux ;-)
Dernier épisode en date du 1er octobre Hello Geekette 8 - Faites la guerre, pas l'amour !.


Hello Geekette 5 - Geeks Vs Bobos

Sources :
http://www.hellogeekette.com/
http://www.dailymotion.com/hellogeekette


O'Reilly France bientôt de retour ? Édition Ellipses... ( www.oreilly.fr )
24`09`2008

1 commentairePoster un commentaire !
Tags: Actualites Internet

Oreilly France

La maison d’édition Ellipses s’est finalement portée acquéreuse des ouvrages qui étaient bloqués en stock depuis la liquidation des Éditions O’Reilly.

Ce petit article sur le nouveau blog d’Ellipses officialise la nouvelle, mais ne précise pas quand vous pourrez trouver ces livres à nouveau chez votre libraire favori. Si votre libraire s’est déjà renseigné, n’hésitez pas à partager vos informations dans un commentaire !

Autre question en suspens, est-ce qu’Ellipses obtiendra l’autorisation de réimprimer ces ouvrages auprès des auteurs (pour les ouvrages originaux) et/ou d’O’Reilly US (dans le cas des traductions) ? Nous ne savons pas non plus si les versions PDF seront à nouveau disponibles un jour.

À suivre !

Voilà enfin une lueur d'espoir pour ces ouvrages d'une grande qualité...
Sinon, les ouvrages anglais sont disponible sur Oreilly.com (ou sur Amazon.fr) et avec la devise du dollar, vous aurez droit à une belle remise ;-)

Sources :
http://blog.immateriel.fr/2008/09/23/le-fonds-oreilly-rediffuse-par-ellipses/
http://blog-ellipses.typepad.fr/presentation/2008/09/bienvenue-oreil.html

http://www.oreilly.fr/
http://www.editions-ellipses.fr/


border: 1px solid transparent Sous Internet Explorer 6 ( css , hack )
17`09`2008

5 commentairesPoster un commentaire !
Tags: Internet Explorer CSS

Astuce du jour : Comment faire comprendre à ce bon Internet Explorer 6.0 la couleur transparent appliquée sur un border ?

Une réponse peut déjà vous passer par la tête : " baaaahhhh un padding: 1px;, non ?! "...
oui mais voilà, Internet Explorer a une petite tendance à bugguer avec le CSS ( quelle découverte ! ) et pour fixer ces petits soucis, un border: 1px solid #fff; règle parfois le problème aussi étrange que celui puisse paraître, et donc la réponse a ma question prend tout son sens...

<style type="text/css" media="screen">

div.mon-test {
	width: 100%; height: 100px;
	border: 1px solid transparent;
}

</style>

<!-- Propriété propre à Internet Explorer 6.0 -->
<!--[if IE 6]>
<style type="text/css" media="screen">

div.mon-test {
	border-color: pink;
	filter: chroma(color=pink);
}

</style>
<![endif]-->

Cette solution n'est pas sans modifier le comportement du div impliqué, j'ai notamment remarqué que les propriétés de l'overflow n'étaient plus les mêmes. En bref, cette solution pourra ( je l'espère) vous aider, mais risque aussi de vous recréer d'autres problèmes ultérieurement. Je serais personnellement plus adepte d'un div dans un div.

Mais n'oubliez jamais cet adage : " Trop de div, Tue le div ! ".

Source du hack : http://acidmartin.wordpress.com/

 

nice try


Comment lire des données POST bruts en PHP ( flux, php://input )
09`09`2008

1 commentairePoster un commentaire !
Tags: PHP

Voici sûrement l'une des astuces les plus inutiles du moment. Comment accéder aux données POST bruts en PHP ? Il suffit de lire le flux d'entrée php://input de la manière suivante :

<form action="page-input.php" method="post">
	<p>
		<label for="text">Zone de texte :</label>
		<input type="text" name="text" id="text" />
	</p>
	
	<p><input type="submit" name="submit" value="Continuer" /></p>
</form>

<p><?php echo file_get_contents('php://input'); ?></p>

Ce qui retournera comme résultat :

text=bla+bla+bla&submit=Continuer

php://input ne fonctionnera pas si vous utilisez l'attribut enctype="multipart/form-data" dans votre balise <form action="" method="post">.

Documentation officielle : http://www.php.net/wrappers.php


Détecter le navigateur Google Chrome ( Webkit, Safari, Javascript )
02`09`2008

3 commentairesPoster un commentaire !
Tags: Google Actualites Internet Webkit

Google vient de lancer son nouveau navigateur Google Chrome. J'en entends déjà raller dans leur coin : " Encore un navigateur dont il va falloir contrôler le rendu avant de mettre mon site en production. "

Sachez que ce navigateur se base sur le moteur de Apple Webkit ( Safari sur Mac OS X ) comme le montre la ligne ci-dessous :

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13

Pour résumé, si votre site est compatible avec Safari, vous ne devriez pas rencontrer de problèmes particuliers.
Pour ceux qui n'ont jamais essayé Webkit ( Safari ), sachez que Webkit se comporte "pratiquement" de la même manière que Mozilla Firefox au niveau du HTML et du CSS. En ce qui concerne le Javascript, l'affaire est quelque peu différente notamment dans le support du DOM W3C ou encore du designMode, toutefois les développeurs de Google Chrome semblent avoir beaucoup retravaillés le moteur Javascript (nom de code V8) donc...

Affaire à suivre, il n'en reste pas moins qu'une éternelle question subsiste :
Quand pourra-t-on abandonner Microsoft Internet Explorer 6.0 ?! ^^


Les coulisses de Google Chrome :

Télécharger Google Chrome :
http://www.google.com/chrome
http://code.google.com/chromium/


Utiliser l'écriture Array sous forme Object en PHP ( PHP5, POO, ArrayAccess )
25`08`2008

2 commentairesPoster un commentaire !
Tags: PHP5 PHP

Comme annoncé la semaine dernière et les vacances se terminant, il est maintenant temps de remonter (un peu) le niveau de ce blog qui sombrait doucement mais sûrement dans le grand n'importe quoi.

L'astuce du jour n'est guère facile à expliquer en quelques lignes, un exemple sera à mon avis beaucoup plus clair.
Comment utiliser un tableau comme un pur objet ? ( à la sauce Java, si je puis m'exprimer ainsi )

// Ecriture PHP classique
$array = array(); // Ligne facultative
$array['key1'] = 'value 1';
$array['key2'] = 'value 2';
$array['key3']['key31'] = 'value 31';
...

Voici une écriture qui ne fonctionne qu'en PHP 5 :

// Ecriture PHP5 objet
$array = new ClassArray(); // Ligne obligatoire !
$array['key1'] = 'value 1';
$array['key2'] = 'value 2';
...

En soit, il n'y a absolument rien de révolutionnaire, mais le new crée l'instance de l'objet ClassArray() et vous pouvez constater que l'écriture reste un tableau et non un objet
$array->key1 = 'value 1';

Une question se pose sûrement dans votre cerveau qui bouillonne d'impatience : Qui a-t-il dans cette ClassArray() ? Une simple implémentation de ArrayAccess ( PHP5 only ), ce qui nous donne :

class ClassArray implements ArrayAccess {
	
	protected $_array = array();
	
	public function __construct() {
		$this->_array = func_get_args();
	}
	
	// En cas d'appel de la fonction isset()
	public function offsetExists($offset) {
		return isset($this->_array[$offset]);
	}
	
	// En cas d'appel de la valeur
	public function offsetGet($offset) {
		return $this->_array[$offset];
	}
	
	// En cas d'affectation de la valeur
	public function offsetSet($offset, $value) {
		return $this->_array[$offset] = $value;
	}
	
	// En cas d'appel de la fonction unset()
	public function offsetUnset($offset) {
		unset($this->_array[$offset]);
	}
	
}

Ensuite, libre à vous de modifier cette classe pour lui ajouter de nouvelles fonctionnalités...

Remarque importante : Si vous essayez de créer un tableau sur plusieurs dimensions, un message d'erreur se produira avec l'écriture suivante :

$array = new ClassArray();
$array['key3']['key31'] = 'value 31';

// Problème : Vous n'avez pas définit $array['key3'] ! l'écriture POO est beaucoup plus stricte ;)
// Solution :
$array = new ClassArray();
$array['key3'] = new ClassArray();
$array['key3']['key31'] = 'value 31';

Documentation officielle :
http://www.php.net/~helly/php/ext/spl/interfaceArrayAccess.html


Get a Mac ! ( Bill Gates, Steve Jobs, Microsoft, Windows, Apple, iPhone )
18`08`2008

2 commentairesPoster un commentaire !
Tags: Detente Mac OS X

Mac ou PC ? Le bien ou le mal ? Le monde limité ou le monde buggué ? Steve ou Bill ?...

Que de questions, mais votre humble serviteur vous apportera une seule et unique réponse -> Choisissez les Mac !

Pourquoi ? Voici quelques réponses en vidéos :

Pub : Get a Mac sur Windows Vista


Apple Mac Music Video : Again and Again


Parodie : Gates VS Jobs


Promis... pour les prochaines actualités, je retournerai aux Sources.

Dernière minute : Je vous invite à tester la toute dernière version beta de NetBeans IDE 6.5 ; pour le développement PHP et autres petits langages (html, css, js...) qui gravitent autour c'est un réel bonheur !
Disponible sous Windows, Linux et Mac OS X bien sûr ;)