4/30/2008

Ajouter un nuage de tag sur Blogger

Bonjour, comme vous pouvez le voir, j'ai ajouté un nuage de tag sur mon blog. J'ai développé cela hier soir pour ma première initiation aux codes de templates de Blogger. Un peu dur au début, mais une fois les principales structures assimilée ça part tout seul.

Voici donc le code du widget à placer dans votre sidebar pour afficher ce nuage de tag.
Généralement il faut l'insérer après les lignes :
< id="'sidebar-wrapper'">
< class="'sidebar'" id="'sidebar'" preferred="'yes'">


Les tags sont basés sur les libellés que vous spécifiez pour chaque messages. J'ai mis 5 niveaux de tag mais il est très simple d'ajouter plus.
Les tags sont placés sur cette échelle : > 19 > 9 > 4 > 1 >

Il est très simple de modifier cette échelle, il vous suffit de remplacer les lignes du type :

< cond="data : label .count > 9" >

Et le tour est joué !



Hi, as you can see, I added a tag cloud on my blog. I developped it yesterday evening for my first blogger widget development. It was a little hard at first, but i've finished it !
Here is the blogger widget tag cloud code to insert in your sidebar in order to show the tag cloud.
You must copy this code after these line :
< id="'sidebar-wrapper'">
< class="'sidebar'" id="'sidebar'" preferred="'yes'">


Tags are based on labels that you specify when you post a message, they are showed with 5 levels (> 19 > 9 > 4 > 1 >) but you can add more if you want.

In order to change levels go to line like this :
< cond="data : label .count > 9" >

Et voila !
4/29/2008

Extrait Bande Son Iron-Man

Aujourd'hui c'est mardi, et je vous offre cette piste audio extraite du cd de la (BSO) Bande Son Originale de Iron Man.

J'attends ce film avec impatiente, même si je sais que c'est une super production américaine dont le seul but est de ramasser de l'argent.
Cliquez ici pour télécharger la piste, Musique de la bande d'annonce sur Deezer
4/28/2008

Vendre un véhicule rapidement : ParuVendu !

Vente aux particuliersAujourd'hui, petit billet sponsorisé à propos du site ParuVendu. Pour ceux qui ne connaissent pas, il s'agit du premier site français (5,9 millions de visite/mois et 700 000 annonces/semaine) de petites annonces de vente aux particuliers.


De ce billet je vais m'intéresser plus précisément à leurs espaces "Auto moto" (pour l'avoir même utilisé) et qui regroupe voitures, moto, scooters, quads, caravane, nautisme et accessoires. Vous pouvez ainsi acheter un véhicule, vendre un véhicule, acheter une moto d’occasion.


Comme je vous le disais précédemment, j'ai déjà utilisé ParuVendu afin d'aider mon paternel à vendre sa voiture (une Citroën C5) et je dois avouer que nous avons été surpris de la rapidité de mise en vente.


Redécouvrons donc, leur espace Auto-Moto en plusieurs points : ergonomie, recherche et choix, qui sont pour moi les éléments les plus importants pour ce genre de site.


Ergonomie


On observe un menu horizontal habituel, avec les différents grands espaces du site. Toutes la partie inférieur à ce menu a un thème rouge, la partie supérieure se distingue en 3 sections "passez une annonce", "mon compte"/"ma sélection", "accès professionnels", toutes ces sections sont sur une seule ligne et ont leurs propres couleurs. C'est vraiment très bien pensé du fait que si dans la partie inférieur au menu, vous souhaitez ajouter une annonce à votre sélection, vous retrouvez le code couleur de la section "ma sélection" (à savoir vert), le visiteur n'est donc pas perdu dans un site multicolore.


Le menu hiérarchique permet de savoir où l'on se trouve sur le site par rapport à la page d'accueil : très important pour les personnes qui n'ont pas l'habitude de naviguer sur Internet.


Un seul bémol, que je trouve à cette section, est que la partie "Accès direct aux annonces auto moto" se trouve en bas de page, alors qu'il s'agit de ce que l'on recherche principalement sur ce genre de site. Les créateurs ont préféré privilégié les "liens utiles" et "l'éditorial auto moto" plutôt qu'un accès direct aux sous-parties des différentes sections (accès aux voitures de marque Renault depuis la section voiture).


Cependant il est à noter qu'il existe quand même un accès direct aux grandes sections de l'espace "auto-moto" depuis l'encadré "accès aux annonces". Il suffirait d'ajouter une surcouche JavaScript, pour permettre au visiteur, lors d'un clic sur une section, d'obtenir directement et sans rechargement de la page, une liste des différentes marques/catégories que composent cette section, on pourrait ainsi enlever la partie "accès direct aux annonces auto moto" et gagner en espace et en fluidité.


Recherche


Au niveau du moteur de recherche (facteur très important pour un site regroupant masse d'information) rien à redire. On retrouve les options habituelles "marques", "modèle", "catégories", "prix max", "énergie" et "année". Le petit plus de ce site est qu'il est possible d'ajouter un critère de recherche par rapport à la localisation de l'annonce (à 30-100-200km).


La zone d'accès rapide aux différents critères est, elle aussi, très bien pensée. Petit bémol : une fois la marque de la voiture sélectionnée, la liste de sélection "modèles" prends un certain temps à se remplir et à être accessible, l'ajout d'un voyant de chargement serait plus que recommandé.


Pourquoi ne pas aussi permettre, en fonction des critères de recherche, d'obtenir un flux rss (cela est déjà possible par email, mais je préfère largement le rss) le visiteur habitué pourrait alors suivre les nouvelles annonces correspondantes.


Choix


Je ne suis pas un grand expert en matière d'automobile et encore moins en moto, mais en parcourant le site à la recherche des voitures de mes rêves, j'ai trouvé ces annonces :

  • Pour la Mazda RX8 : 212 annonces
  • Pour la Smart Roadster : 26 annonces

(Cliquez sur les images pour accéder à la fiche des voitures)

Pour finir, je pense que ParuVendu mérite belle et bien sa place de premier site français de petite annonce, son espace Auto Moto (je ne me suis pas attardé sur les autres espaces du site) est très simple d'utilisation et bien pensé, je vous le conseille fortement si vous souhaitez conclure une affaire dans les plus brefs délais.

Article sponsorisé

Demande de fonctionnalités pour Dropbox


J'ai demandé au staff de Dropbox, de pouvoir savoir directement depuis l'infobulle de notification (qui informe d'un changement sur le dossier partagé) qui à effectué l'action.

Car actuellement, lors d'un changement dans le dossier que l'on partage avec d'autres personnes, on ne voit que l'action effectué (ajout/modification/suppression) mais pas qui l'à effectuée.
D'où cette demande de fonctionnalité.

J'attends donc une réponse.

Convertisseur adresse disque dur CHS <> LBA [MAJ]

Lors d'un cours d'architecture ordinateur, je me suis amusé à créer un petit programme permettant de convertir une adresse C.H.S (Cylindre, Tête, Secteur) en LBA (Logic Block Adressing) et inversement.

Voici donc le code que j'ai écrit pour ma calculatrice casio Graph 35+ :


Lbl 0
"1:CHS->LBA"
"2:LBA->CHS"
?->T:ClrText
T=1=>Goto 1
T=2=>Goto 2
Lbl 1
"CHS(C,T,S)->LBA"
?->C:?->T:?->S
"NOMBRE(C,T,S)"
?->A:?->B:?->D
((CxBxD)+(TxD)+(S-1))->L
"LBA"
L(TRIANGLE)
Goto 0
Lbl 2
"LBA"
?->L
"NOMBRE(C,T,S)"
?->A:?->B:?->D
Int (L/(BxD))->C
Int ((Int L-(CxBxD))/D)->H
Int ((1+Int L)-(CxBxD)-(HxD))->S
"CHS(C,H,S)"
C(TRIANGLE)
H(TRIANGLE)
S(TRIANGLE)
Goto 0



Remarque :
  • (TRIANGLE) : n'est autre que le caractère disponible sous la calculatrice et qui permet d'afficher le contenu d'une variable (SHIFT+VARS+F5)
  • -> : correspond au caractère d'affectation sous casio (touche L)
  • => : caractère de saut sous casio, disponible via le menu SHIFT+VARS+(F3)JUMP
  • x : opérateur de multiplication sous casio
  • / : opérateur de division sous casio

[MAJ] Une version développée en C est compilée sous Windows est disponible ici.
4/27/2008

Activer PHP5 sur 1and1

Petite astuce, pour activer PHP5 sur 1&1, créer un fichier .htaccess à la racine du site et ajoutez lui le contenu :

AddType x-mapp-php5 .php
AddHandler x-mapp-php5 .php


Et voila, un petit phpinfo() vous informera que vous êtes maintenant sous PHP5
4/25/2008

Ajout d'un flux rss Feedburner

Voila, comme tout blog "hype" et malgré mon antipathie pour ce genre de service, geekfg.blogspot.com à droit à son flux rss Feedburner.

Voici quelques inconvénients que je trouve à Feedburner :
  • FeedBurner est une surcouche à votre flux rss, il va chercher de temps en temps l'information sur votre flux rss, vérifie qu'il n'y a rien de nouveau, et dans le cas contraire met à jour son propre flux. Plus il y a d'intermédiaire moins on a le contrôle, personnellement je n'aime pas ça.
  • Vous externalisez le flux rss (url de type : http://feeds.feedburner.com/****), les statistiques, vous n'avez pas le même contrôle que vous pourriez avoir s'il s'agissait de votre propre plateforme de rss, avec votre propre code.
  • Si du jour au lendemain, Google décide de passer Feedburner payant (sais-t-on jamais) comment allez vous faire pour changer automatiquement l'adresse du flux rss dans les agrégateurs ? Alors vous allez me dire, justement, c'est le but de Feedburner il empêche de changer l'adresse du flux rss si vous changer d'adresse de blog. Mais réfléchissons, il suffit d'une simple redirection 301 vers votre nouvelle adresse de flux rss, et voila !
    • Exemple : votre ancienne adresse de flux rss est la suivante : http://vistarc.info/rss/ et vous souhaitez que la nouvelle adresse soit : http://vistarc.net/rss/ :
      • Remplacer le script du flux rss par (avec les balises php)
        • header('Status: 301 Moved Permanently', false, 301);
          header('Location: http://vistarc.net/rss/');
    • Et c'est tout ! Est-ce 2 lignes de code qui peuvent vous faire passer du côté obscure ?
  • Maintenant un bon côté à FeedBurner est que pour les bloggeurs non développeurs parlant d'IT (cela peut faire un non sens mais pourtant ils sont très très nombreux) c'est un très bon moyen d'obtenir des statistiques facilement ainsi que toute une panoplie d'option de personnalisation pour le flux.
  • Un autre bon point est l'API offerte par FeedBurner notamment pour la visualisation des statistiques du blog.
  • En contre partie j'observe que de plus en plus de société demande l'adresse du flux Feedburner, c'est le cas pour Blogrider, qui m'a demandé, lors de l'inscription, de fournir un flux Feedburner (je crois même que le champs était obligatoire). C'est révoltant! Pour ma part je viens juste d'installer le flux FeedBurner sur ce blog, alors qu'il a été créé le 30 Aout 2004 ! Les données que retournera l'API seront donc clairement erronées puisque bon nombre de personne souscrivant déjà au flux ne sont pas sous FeedBurner.
Ainsi ce termine ma petite analyse sur ce service, ses bons côtés et ses mauvais, je pense tout de même qu'il ne serait pas inintéressant de re-créer un service comme FeedBurner mais en libre, open source, intégrée de base dans les différentes plateformes de blogging (wordpress, dotclear...), cms (nukedclan, xoops...) et tout autre plateforme générant du contenu.
Le service devra être décentralisé, c'est à dire qu'il travail sur le serveur du site même (plus de ressource demandée mais plus de flexibilité au niveau du code). Il devra se mettre à jour automatiquement depuis le serveur mère (même si en écrivant ces lignes, il me vient à l'esprit de large problème de sécurité...puis je plongea dans mes songes)....

Une question me taraude l'esprit, pourquoi Blogspot, qui est la plateforme de blogging de Google, n'inclue-t-elle pas Feedburner par défaut ? Est-ce pour concurrence déloyale ? Google n'arrête pas d'ouvrir de nouveaux services, mais peu sont reliés correctement entre eux (sans doute aussi par soucis de confidentialité et de sécurité), je trouve cela vraiment dommage, et vous ?
4/20/2008

Lire récursivement un répertoire en php

Si vous n'avez jamais réussi à parcourir un répertoire ainsi que tout ses sous répertoire en php, ce message est pour vous !

Mais tout d'abord, un petit rappel, qu'est-ce qu'une fonction récursive ?
Une fonction récursive est une fonction qui peut s'appeler elle-même au cours de son exécution
(Wikipedia)
L'algorithme est donc court :

Fonction parcourir(rep)
E :
chaine : rep /* le répertoire à lire */
S :
chaine : liste_fichier /* liste des fichiers dans ce répertoire */
Var :
chaine : f /* fichier actuel */

Debut

TantQue(f = lire_repertoire(rep)))
Si est_repertoire(f)
Alors
liste_fichier += parcourir(rep + f)
FinSi

Si est_fichier(f)
Alors
liste_fichier += f
FinSi
FinTantQue

retourne liste_fichier
Fin


En bref, notre fonction lit le contenu d'un répertoire et retourne sous forme de chaine la liste des nom de fichier qui compose le répertoire en cours (à savoir "rep"). A chaque sous répertoire découvert, on ré-appelle la fonction "parcourir" avec l'adresse actuelle du répertoire ainsi que le nom du sous répertoire, ce qui nous retournera une liste de fichier composant ce répertoire.

Ainsi on va alors obtenir un enchainement d'appelle de fonction "parcourir" chaque fonction retournant une chaine "liste_fichier" à son appelant qui lui même retournera à son appellant etc... Jusqu'à ce que la première fonction appelante, qui aura récupérée tout les "liste_fichier" retourne elle même cette valeur.

Voici donc un exemple de code, qui permet de parcourir tous les sous répertoires d'un dossier, et de calculer le nombre de ligne de code de chaque fichier php, htm/html, css et javascript qu'il contient.
<style>
quote {padding:5px;padding-left:20px;display:block;}
</style>
<?php
function compte_ligne_code($f)
{
    return count(file($f));
}

function read_dir($dir,$dir_max)
{
    $array = array(2);
    if(!strrchr($dir, '_NO_'))//dossier vide
    {
    $me = 0;
    $hdl = @opendir($dir);
    while($f = @readdir($hdl))
    {
        if(is_dir($dir.'/'.$f) && $f !== '..' && $f !== '.')
        {
            if($dir_max > 0)
            {
            $dir_max--;
            $array[0] .= '<quote style="background:#'.rand(2,9).'f'.rand(2,9).'f'.rand(2,9).'f">[DIR] <h3>'.$dir.'/'.$f.'</h3><br />';
                $narray = read_dir($dir.'/'.$f,$dir_max);
                $array[0] .= $narray[0];//code html
                $array[1] += $narray[1];//nombre de ligne
            $array[0] .= '</quote>
';
            }
        }
        else if((substr($f, -4, 4) == '.php'
        ||    substr($f, -3, 3) == '.js'
        ||    substr($f, -4, 4) == '.css'
        ||    substr($f, -4, 4) == '.htm'
        ||    substr($f, -5, 5) == '.html'
        )  && substr($f, 0, 4) !== '_NO_')//fichier .php ou .js
        {
            $l = count(file($dir.'/'.$f));
            $array[1] += $l;
            $array[0] .= '<quote style="background:#'.rand(2,9).'f'.rand(2,9).'0'.rand(2,9).'f">'.$l.' ligne(s) dans <strong style="float:right">'.$dir.'/'.$f.'</strong>';
            $array[0] .= '</quote>
';
        }
        else
        {
        $array[0] .= '['.$dir.'/'.$f.'] ';
        }
    }
    }
    else
    {
        $array[0] .= '<quote style="background:#000000;color:#ffffff">Passe le dossier dossier : '.$dir.'</quote>';
    }
    return $array;
}

$arr = read_dir('.',100);
echo '<h1>'.$arr[1].' lignes de code !</h1>'.$arr[0];


Si vous souhaitez que des dossiers ou des fichiers ne soient pas pris en compte ajoutez "_NO_" devant, par exemple "images" devient "_NO_images" et ainsi de suite.
4/14/2008

Ecran de veille matrix version 2 [MAJ]

Voila, dans ma série de petit programme en C, cela fait maintenant 1h que je travaille sur un écran de veille Matrix (étant fan de la trilogie), voici donc la première version de cet écran de veille, n'hésitez pas à apporter des commentaires :

http://fg.logiciel.free.fr/lycee/CPI1/Programme_C/ecran_de_veille_matrix_v1.exe

Ps : Le programme est exclusivement créé en ASCII donc impossible de partir dans de la 3D poussée, mais j'espère pouvoir un jour porter le code sous opengl, ou glut...


[MAJ]
Une nouvelle version est disponible à l'adresse ci-dessous :
http://fg.logiciel.free.fr/lycee/CPI1/Programme_C/ecran_de_veille_matrix_v2.exe
Elle incorpore un meilleur rendu par rapport à la version 1 (plus de noir, et d'effet de glissement).

Ma petite librairie Windows

J'ai créé une petite libraire windows que j'utilise de tous mes programmes nécessitant l'utilisation de l'API Windows. Cette petite librairie me permet de :
  • Créer des rectangles *
  • Changer la couleur/arrière plan du texte *
  • Gérer des barres de progression *
  • Gérer les évènements claviers
  • Récupérer la largeur et la hauteur de la console *
  • Passer la console en mode plein écran
  • Remplir/effacer une zone de la console
* fonction utilisé dans le programme de démonstration

Voici donc une petit programme qui dessine une fenêtre, affiche une barre de progression et la fait bouger en fonction du sons. Appuyez sur une touche lorsque vos oreilles crieront de douleurs !

Le programme est disponible ici :
http://fg.logiciel.free.fr/lycee/CPI1/Programme_C/sons.exe

Liste des codes ASCII

Voici un petit programme sous la console windows, qui vous permet de voir la liste des codes ASCII (ainsi que ASCII Extended) disponible sur votre console.

Ce programme est disponible gratuitement à l'adresse : http://fg.logiciel.free.fr/lycee/CPI1/Programme_C/ascii.exe
4/03/2008

MiniProjet langage C : Menu déroulant

Dans ma promotion 2007/2008 de l'EPSI Nantes, 2 groupes ont été créé dans la matière algorithme/programmation en fin ...

Voici le dossier contenant les différentes versions

Petite astuce php.ini hébergement 1and1

Il y a quelques semaines, je me suis aperçu que les fonctions file() et fopen() ne fonctionnaient plus lorsqu'il s'agissait de chargée une donnée externe au site.
L'erreur retournée était :
URL file-access is disabled in the server

J'ai donc regardé dans le panel, la faq de 1&1, mais aucune réponse sur le sujet. Après l'envoi d'un mail au support j'ai enfin obtenu une réponse :

Cette activation doit être réalisé par la mise en place d'un fichier
"php.ini".

Il vous suffit simplement de créer un fichier "php.ini" (avec un éditeur
texte comme "vi" ou "Bloc-Notes") avec dans celui-ci uniquement le ou
les variables à redéfinir, et de placer celui-ci dans le dossier où vous
souhaitez que les modifications soient appliquées. Vous pourrez
constater le changement des ces valeurs en plaçant un script "phpinfo"
dans le dossier ou se trouve le fichier "php.ini" et en affichant la
page du "phpinfo" dans un navigateur internet.


Trouvez rapidement les réponses à vos questions en consultant notre FAQ:
http://faq.1and1.fr

Cordialement,
Marc

Alors bien sur, j'ai l'impression de passé pour un con quand je vois les réponses en rapport au php.ini dans la faq, j'en vient même à me demander ce que j'ai cherché dans la faq pour ne pas avoir trouvé ça mais bon.

Pour corrigé mon problème, j'ai donc créer un fichier php.ini avec les valeurs :

[...]
allow_url_fopen = On
allow_url_include = On
[...]

Je n'ai pas encore regardé si il y avait que ces valeurs à modifier, je ne pense pas avec la fonction file() ne dois pas reposé sur ces paramètres là, je regarderai ça plus tard.
J'espère que cela pourra servir à d'autres :)
« »
 
 
Made with on a hot august night from an airplane the 19th of March 2017.