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

Quelques vidéos explicatives sur jQuery ( tuto, tutorial, Javascript )
02`06`2011

1 commentairePoster un commentaire !
Tags: Javascript jQuery

tuto.com Aujourd'hui, je vous propose de découvrir deux vidéos réalisées par votre serviteur sur jQuery disponible sur le site tuto.com :


Comment créer une procédure stockée ? ( MySQL, SQL )
17`03`2010

Aucun commentairePoster un commentaire !
Tags: MySQL MySQL 5 SQL

Une procédure stockée est un ensemble d'instructions SQL pré-compilées stockées sur le serveur de base de données.

L'intérêt réside surtout dans la rapidité en évitant les échanges avec le client, et la simplification du code lors de l'appel.

Voici un exemple qui contrôle le stock de produits disponible et qui réajuste automatiquement la table des quantités si cette dernière est supérieure au stock disponible :

delimiter |

DROP PROCEDURE IF EXISTS CHECK_STOCKS |
CREATE PROCEDURE CHECK_STOCKS(p_order_id INT)
BEGIN
	DECLARE v_done INT DEFAULT 0;
	DECLARE v_o_p_id, v_quantity, v_stock INT;
	DECLARE v_cur1 CURSOR FOR
		SELECT opt.o_p_id , opt.o_p_quantity , p.product_stock
		FROM order_products_tmp opt , products p
		WHERE opt.order_id = p_order_id AND p.product_id = opt.product_id;
	DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET v_done = 1;

	OPEN v_cur1;

	REPEAT
		FETCH v_cur1 INTO v_o_p_id, v_quantity, v_stock;
		IF NOT v_done THEN
			IF v_stock <= 0 THEN
				DELETE FROM order_products_tmp WHERE o_p_id = v_o_p_id LIMIT 1;
			ELSEIF v_quantity > v_stock THEN
				UPDATE order_products_tmp SET o_p_quantity = v_stock WHERE o_p_id = v_o_p_id LIMIT 1;
			END IF;
		END IF;
	UNTIL v_done END REPEAT;

	CLOSE v_cur1;
END
|

Ensuite, il suffit d'exécuter la requête SQL dans phpMyAdmin (les dernières versions supportant le délimiteur DELIMITER).

Pour appeler la procédure stockée, vous devez exécuter la commande CALL.

CALL CHECK_STOCKS(32);

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

4 commentairesPoster 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&eacute;vrier', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Ao&ucirc;t', 'Septembre', 'Octobre', 'Novembre', 'D&eacute;cembre');
	$param_M = array('', 'Jan', 'F&eacute;v', 'Mar', 'Avr', 'Mai', 'Jun', 'Jul', 'Ao&ucirc;', 'Sep', 'Oct', 'Nov', 'D&eacute;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

3 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

7 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

6 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/