Le Blog de MaxiMoi200

jeudi 31 janvier 2008

Données MaxiMoi200 au 31 janvier 2008

  • 290 cartes
  • 1,63 millions de visiteurs
  • 7,31 millions de pages vues
  • 212000 cartes envoyées
  • 4600 abonnés à la newsletter
  • 38900 affichages du gadget MaxiMoi200
  • 11400 appels du fil RSS
  • Pas de changement notable de la présentation du site
  • Gestion automatique de l'effacement des vieilles images et cartes (en base)
  • Interface pour gérer RSS
  • Changement interface newsletter
  • Section "Cartes à l'affiche" en page d'accueil
  • Interface pour "Cartes à l'affiche" en page d'accueil
  • Gestion automatique des "Evenements à venir"
  • Gestion des cartes non lues et de celles revenues en erreur
  • Gestion des adresses email de la newsletter devenues invalides et retournant en erreur

dimanche 27 janvier 2008

La liste mise régulièrement à jour de toutes les extensions géographiques ou suffixes des URL (.com, .fr, .es, etc...)

Elle est disponible ici

Elle peut permettre par exemple de faciliter le contrôle de la validité d'une adresse email saisie dans un formulaire

jeudi 24 janvier 2008

Appliquer un effet de flou à un clip dans Flash

L'application d'un filtre "flou" à un clip sous flash est assez simple, en utilisant la sous-classe filters de la classe flash.

Soit un clip nommé "animation". Pour appliquer un filtre "flou" au clip "animation", il faut commencer par créer un objet de type 'filtre flou'. Lors de sa création, on spécifie l'intensité du flou horizontal, celle du flou vertical, et enfin la qualité du filtre. Par exemple :

filtre_flou = new flash.filters.BlurFilter(5, 5, 1)

On crée ainsi un objet filtre flou de qualité 1 et d'intensité horizontale et verticale de 5 pixels.

Enfin, il suffit d'appliquer le filtre au clip (en l'intégrant à la liste filters, attribut des clips permettant de définir les filtres qui lui sont appliqués) :
animation.filters = [filtre_flou];

Le résultat peut être visualisé sur le fond de cette carte de voeux.

mercredi 2 janvier 2008

Intégrer un son dynamiquement dans une animation flash

Comment intégrer du son dans une animation flash et contrôler le démarrage de sa lecture (pour une meilleure synchronisation) ?
Le probléme que je rencontrais souvent au début lors de l'intégration de sons dans le cartes animées était un décalage entre la lecture et l'animation elle même. En effet, je ne faisait qu'un "cliquer-glisser" de l'objet son depuis la bibliothèque vers l'espace de travail. Ainsi, la synchronisation du son pouvait dépendre de l'ordinateur qui lisait l'animation (configuration etc...)

Une solution est de créer et gérer dynamiquement le son au cours de l'animation. Supposons que nous disposions dans la bibliothèque d'un son dont le nom de liaison est "explosion" (pour définir un nom de liaison, clic droit sur l'objet dans la bibliothèque et sélectionner "liaison..." et enfin "exporter pour ActionScript".

Il suffit alors de créer une objet Sound, de lui affecter le son "explosion" et enfin de gérer sa lecture.

var son = new Sound();
son.attachSound("explosion");
son.start();
son.onSoundComplete = function(){
this = null;
}

Ce qui peut être traduit ainsi : créer un objet Sound appelé "son" qui contiendra le bruitage "explosion". Démarrer la lecture du son, et lorsque celui-ci est terminé, détruire l'objet Sound "son".

Pour plus d'info sur les objets Sound et leur gestion en Flash cliquez-ici

mardi 18 décembre 2007

Classement d'événements tels que certaines fêtes de l'année, du plus proche au plus éloigné de la date actuelle par ordre chronologique

Le probléme est le suivant : nous sommes par exemple le 5 juin. Nous souhaitons trier les 365 prochains jours à partir du 5 juin du plus proche au plus lointain (6 juin, 7 juin, .... 31 décembre ... 1 janvier ... 3 juin, 4 juin).

La méthode est simple : il suffit de fixer théoriquement l'origine des dates d'une année au 5 juin. Autrement dit, le 5 juin devient le jour "0" de l'année (un pseudo 1er janvier). Si l'on ne connaît pas la place exacte d'un jour dans l'année (par exemple le 2 février est le 33 ème jour de l'année), il suffit de l'écrire sous la forme MMJJ. Pour le 5 juin : 0506. Tous les jours sont bien rangés par ordre croissant depuis le 1er janvier (101) jusqu'au 31 décembre (1231), en comptant même le 29 février !

Pour transformer la date courante en jour "0", on retire la valeur de ce jour (506 pour le 5 juin) à toutes les dates. Ainsi, le 5 juin deveint le jour "0" (506-506). Les dates antérieures dans l'année deviennent alors négatives, les autres restent positives. Puis on applique l'opérateur modulo par 1231 (jour le plus "élevé").

Les dates "négatives" sont plus éloignées de la date actuelle que celles positives. Il faut alors les classer et utiliser un moyen de transformer les dates négatives en dates positives, plus élevées que celles qui le sont déjà et triées par ordre décroissant.

Application concrète : classement d'événements tels que certaines fêtes de l'année, du plus proche au plus éloigné par ordre chronologique. Par exemple, le 26 décembre, le premier jour férié est le 1er janvier, le dernier est le 25 décembre

Soit une table 'fêtes' d'une base de données contenant comme champs la date ('date') sous le format "MMJJ" et le jour férié ('férié') correspondant.
Soit la date courante $D exprimée sous la forme "MMJJ".

D'après tout ce qui précède, la requête SQL qui permettrait de classer tous les jours fériés du plus proche de la date D au plus éloigné, par ordre chronologique serait :

SELECT * FROM `fêtes` mod(`date` -$D, 1231 ) * IF( mod(`date` -$D, 1231 ) >0, -1, 1000 ) DESC

Au cas où les dates seraient exprimées à l'aide d'un champ "jour" et d'un champ "mois", il suffirait de les concaténer pour obtenir la forme "MMJJ".

SELECT * FROM `fêtes` mod( CONCAT( `mois` , `jour` ) -$D, 1231 ) * IF( mod( CONCAT( `mois` , `jour` ) -$D, 1231 ) >0, -1, 1000 ) DESC

vendredi 14 décembre 2007

Mes logiciels favoris

Voici une liste non exhaustives des logiciels gratuits pour windows que j'affectionne tout particulièrement

Le gadget Google MaxiMoi200 : carte au hazard

Vous êtes webmaster ou blogueur ? Ajoutez du contenu à votre site gratuitement et très simplement. Le module suivant a été créé par MaxiMoi200. Il présente à chaque rechargement de page une carte de voeux choisie au hazard sur MaxiMoi200.com ! Si vous utilisez la page d'accueil personnalisée de Google vous pouvez lui ajouter ce gadget.

Cliquez ici pour récupérer le code à copier sur les pages de votre site et personnaliser la bordure !

Cliquez ici pour une présentation aux webmaster des google gadgets
Cliquez ici pour un mode d'emploi des google gadgets

dimanche 9 décembre 2007

Statistiques MaxiMoi200 au 9 décembre 2007

273 Cartes
Nombre de visiteurs à ce jour : 1092474
Nombre de pages vues à ce jour : 4697528
Nombre de cartes envoyées à ce jour : 122998
Nombre d'abonnés à la newsletter : 3712
Nombre total d'affichages du gadget : 12552
Nombre total d'appels du flux RSS : 1046

Le flus RSS a été créé il y a un mois. Il propose un fil de nouvelles au même titre que la newsletter.
Le gadget google, créé il y a un mois, permet de proposer au webmaster d'ajouter gratuitement sur le site un module "carte au hazard" MaxiMoi200.
Ajout de la fonctionnalité "envoi différé france/canadaé pour prendre en compte le décalage horaire.
Allègement du module webcam
Ajout d'effets spéciaux MaxiMoi200 : aquarium, lampe et taquin.

samedi 1 septembre 2007

Créez facilement des tâches programmées à intervalles réguliers grâce à cron.exe

Comment appeler une page internet à intervalle régulier ? Grâce à cron.exe par exemple ! Ce petit utilitaire permet sous windows de programmer l'exécution périodique d'une ligne de commande. Téléchargement de cron.exe ici. Dans le principe, cron.exe doit être lancé et chaque minute, cet utilitaire consulte un fichier crontab.txt situé dans le même dossier. Si une tâche est programmée pour commencer à la date en cours, cron.exe la lance. Chaque ligne du ficier crontab.txt désigne une tâche à exécuter ainsi que sa périodicité.

Pour appeler une page internet au début de chaque heure, il suffit par exemple d'ajouter la ligne suivante au fichier crontab.txt :

0 * * * * iexplore.exe URL

Et le tour est joué !

jeudi 30 août 2007

Comment intégrer proprement un contenu Flash dans une page web ?

Grâce à l'excellent SWFObject, un fichier javascript qui détecte les contenus flash et permet de les intégrer au code HTML proprement, sur la plupart des navigateurs web

Il permet en outre d'éviter la demande systématique du navigateur de cliquer sur une animation flash pour en utiliser le contenu. Application : Menu interactif MaxiMoi200

Téléchargement et détails sur http://blog.deconcept.com/swfobject/

<script type="text/javascript" src="swfobject.js"></script>

<div id="flashcontent">
This text is replaced by the Flash movie.
</div>

<script type="text/javascript">
var so = new SWFObject("movie.swf", "mymovie", "400", "200", "8", "#336699");
so.addParam("quality", "low");
so.addVariable("variable1", "value1");
so.write("flashcontent");
</script>

mercredi 29 août 2007

Comment générer à la volée une vignette (thumbnail) d'un site avec URL2BMP et PHP (avec la librairie graphique GD) ?

Voir la description de l'utilitaire url2bmp ici

Dans un fichier creation_vignette.php inclure le code suivant :

<? exec('url2bmp.exe -file vignette.jpg -format jpeg -wx 1000 -wy 750 -bx 1000 -by 750 -notinteractive -url '.$_GET['URL'].' -wait 5 -removesb');
header("Content-type: image/jpeg");
$src_im = ImageCreateFromJpeg('vignette.jpg');
imagejpeg($src_im);
ImageDestroy($src_im);
?>

Placez votre fichier php et url2bmp.exe dans le même fossier sur votre serveur (ne marche que pour un serveur sous windows !). Tapez l'adresse suivante dans votre navigateur : http://domaine.com/votre dossier/creation_vignette.php?url=http://www.maximoi200.com

La première ligne du fichier va interagir avec url2bmp.exe en lignes de commande grâce à la fonction exec(). Comme vu plus haut, URL2BMP va créer le thumbnail de la page http://www.maximoi200.com et le placer dans vignette.jpg
La seconde ligne prévient le navigateur que le contenu qu'il va recevoir depuis le serveur est une image jpeg.
La troisième crée un objet PHP image temporaire à partir de vignette.jpg et la quatrième permet de renvoyer vers le navigateur cette image.
La dernière ligne sert à détruire l'image temporaire

Ceci est un exemple de base et peut servir de à d'autres applications plus complexes et performantes. J'utilise ce principe de base pour l'affichage de vignettes de prévisualisation dans liensmalins

mardi 28 août 2007

URL2BMP ou comment transformer une page web en une image (jpg, bmp, png etc...)

Voici un utilitaire très intéressant. URL2BMP ("URL vers Bitmap") est un exécutable (sous windows) ne nécessitant pas d'installation préalable. Il vous permet de capter une page internet en saisissant son URL et d'en enregistrer l'aperçu dans un fichier image (format jpeg ou autre).

Pour moi, ses avantages sont les suivants :

  • Léger
  • Ne nécessite pas d'installation
  • Utilisable en lignes de commande : des paramètres réglables

L'application d'URL2BMP qui m'a particulièrement intéressé est la possibilité de générer automatiquement des thumbnails (prévisualitations de sites sous forme de vignettes) à la manière de grands sites spécialistes comme thumbshots.org. Il suffit juste de disposer d'un hébergement de site web sous windows avec PHP ! Grâce à la possibilité de commander URL2BMP en lignes de commande, PHP peut interagir avec l'utilitaire et générer des thumbnails à la demande.

Pour plus de détails sur la syntaxe d'utilisation d'URL2BMP (et pour le télécharger) visitez le site officiel : http://www.pixel-technology.com/freeware/url2bmp/

Voici un exemple pour l'utilisation d'URL2BMP en lignes de commande :

url2bmp.exe -file maximoi200.jpg -format jpg -wx 1000 -wy 800 -bx 100 -by 80 -notinteractive -url http://www.maximoi200.com


URL2BMP va générer une vignette nommée maximoi200.jpg au format jpg de dimensions 100x80 à partir de l'adresse http://www.maximoi200.com "photographiée" dans un cadre de dimensions 1000x800, et sans interaction avec l'interface de URL2BMP (en autonome).

Comment générer à la volée une vignette (thumbnail) d'un site avec URL2BMP et PHP (avec la librairie graphique GD) ?

cliquez ici pour voir une application PHP

mercredi 8 août 2007

Gestion des dates dans PHP : retrouver automatiquement une date par rapport à la date actuelle

Le but de ce billet est de montrer un traitement PHP que l'on peut mettre en place afin de récupérer une date antérieure en spécifiant la période écoulée entre celle ci et la date actuelle. Par exemple : quelle date était-il une semaine auparavant ? un mois auparavant ? Une application possible est le recensement d'actions qui se sont produites sur une semaine, comme par exemple le nombre de cartes de voeux virtuelles envoyées et lues comme ici.

Première partie : récupérer la date actuelle.

La fonction php date() permet de récupérer la date actuelle.

  • date('Y') retourne l'année courant à 4 chiffres (ex : 2007)

  • date('d') retourne le jour du mois (ex : 27)

  • date('m') retourne le mois de l'année (ex : 11)

  • date('d-m-Y') retournerait donc : "27-11-2007"

D'autres paramètres pour obtenir les secondes, les heures et bien d'autres options sont décrites ici.

Deuxième partie : récupérer la date passée.

Associé à ce que l'on appelle un "timestamp" (une référence à une date précise), la fonction date permet d'afficher les mêmes informations que nous avons vues précédemment mais pour une date différente de celle en cours.

On définit un timestamp grâce à la fonction mktime() (plus d'info ici)

La syntaxe de mktime est la suivante : mktime(heures, minutes, secondes, mois, jours, années)

A titre d'exemple :mktime(0,0,0,12,10,2007) retourne le timestamp du 10 décembre 2007 à 0h.

mktime comporte un grand avantage : il corrige tout seul les erreurs apparentes de date : mktime(0,0,0,11,31,2007) correspondrait théoriquement au 31 novembre 2007. Or, novembre ne comporte que 30 jours. Ainsi, le timestamp retourné correspond en réalité au 1 décembre 2007 (soit le 30 novembre +1 jour !).

Ainsi, on peut exploiter cette correction automatique des dates afin de remonter dans le temps. En effet, il suffit de définir la date actuelle, et d'en retirer 7 jours pour trouver la date d'il y a une semaine. mktime(0,0,0,date('m'),date('d')-7,date('y')) va donc retourner le timestamp du même jour de la semaine d'avant et ce même si ce jour n'est pas dans le même mois ni dans la même année

Enfin, on réutilise la fonction date afin d'afficher la date du jour correspondant à la semaine d'avant : date("d-m-Y",mktime(0,0,0,date('m'),date('d')-7,date('y')))

On utilisera de même date("d-m-Y",mktime(0,0,0,date('m')-1,date('d'),date('y'))) pour le même jour, le mois d'avant.

L'application dans une base de données SQL et PHP pourrait donc être : mysql_query("SELECT * FROM cartes_envoyées WHERE date_envoi>".date("d-m-Y",mktime(0,0,0,date('m')-1,date('d'),date('y')))) afin de retourner l'ensemble des enregistrements correspondant à des cartes envoyées depuis un mois !

vendredi 20 juillet 2007

Remplacer une sous-chaîne par une autre dans une chaîne de caractères avec la fonction str_replace()

Une fonction particulièrement utile en PHP lors de la manipulation de chaînes de caractères : str_replace ("string replace").

Voici sa syntaxe :

str_replace("chaîne à remplacer","chaîne de remplacement","chaîne principale")

Cette fonction retourne la "chaîne principale" dans laquelle chaque occurence de la "chaîne à remplacer" est remplacé par une occurence de la "chaîne de remplacement"

Exemples :

  • str_replace("a","z","abcde") donne "zbcde"
  • str_replace("pierre","michel","pierre et aurélie") donne "michel et aurélie"
  • str_replace("%"," ","un%chat%qui%dort") donne "un chat qui dort"
  • str_replace("e","","une bonne année") donne "un bonn annné"

Une application simple mais efficace de cette fonction est l'inclusion de smileys dans une zone de texte simple et la restitution HTML du resultat.
Dans une zone de saisie de texte simple HTML de type < TEXTAREA >, il n'est pas possible d'intégrer directement des images de types "smileys". Un artifice consiste à intégrer un texte propre à chaque image, comme par exemple [lol] ou [colere] ou encore [love], pour les rendus suivants : . Lors de la restitution HTML du texte en incluant les images, il suffit d'insérer les lignes de code suivantes :

  • texte = str_replace("[lol]","< img src='adresse de image lol'>",texte);
  • texte = str_replace("[colere]","< img src='adresse de image colère'>",texte);
  • texte = str_replace("[love]","< img src='adresse de image d'amour'>",texte);

Exemple :

texte = "[lol] J'ai trouvé cette actrice superbe [love], par contre son ami est plutôt déagréable [colere]";

Ce qui donne après les lignes de codes indiquées plus haut :

J'ai trouvé cette actrice superbe , par contre son ami est plutôt déagréable

Ainsi, toutes les occurences de [lol], [colere] et [love] sont remplacées par les références aux images correspondantes !

Pour plus de précisions sur la fonction str_replace, consultez la documentation suivante : lien

jeudi 28 juin 2007

La fonction PHP : mail()

Pour moi, la fonction mail() de PHP est tout simplement vitale. Sur MaxiMoi200.com elle permet principalement d'envoyer des cartes de voeux virtuelles. Un message est envoyé au destinataire pour lui signifier qu'une carte l'attend sur le site. Cette fonction permet également d'envoyer par email des formulaires, de faire parvenir des newsletters etc...

La syntaxe est simple :

mail(destinataire, objet, message, en-tête)

Cette fonction renvoit "1" (ou "true") si le mail est correctement envoyé, sinon elle renvoit "0" (ou "false").

L'en-tête n'est pas obligatoire mais fortement recommandé. Il donne des informations supplémentaires sur l'adresse de retour de courier, le type du courier envoyé, fichiers attachés.

Pour de plus amples explications sur cette fonction, vous pouvez vous référer au lien suivant :http://fr3.php.net/function.mail

Attention ! Selon le type d'hébergement que vous possédez (gratuit ou payant), il se peut que la fonction mail() soit limitée (nombre d'envois, en-tete modifié), échangée contre une autre fabriquée spécialement (fonction email() par exemple) ou tout simplement pas disponible (pour éviter les abus). Si vous en avez besoin pour le développement de votre site web, n'hésitez pas à vous renseigner sur sa disponibilité au préalable ou à la tester.