L'appartement

Aller au contenu | Aller au menu | Aller à la recherche

Le codage

Pep, ne me tue parceque je fais une section php et pas une section shellscript, une c++ ;-) Je savais quoi mettre !

Fil des billets - Fil des commentaires

vendredi, mai 7 2010

Freecommande, une WebApp pour contrôler votre Freebox

Free a sortie la semaine dernière une API qui permet de contrôler son boitier Freebox HD.

Pour le fun, j'ai rapidement réalisé une petite "application web" (basique de chez basique) pour iPhone ou tout autre navigateur ayant la même résolution (320px x 460px / je n'ai testé que sur iPhone).

Un peu de Javascript et de CSS et le tour est joué :

Freecommande pour télécommander votre Freebox

Inutile donc indispensable ;)

Pour l'avoir en plein écran sur iPhone, cliquez sur le "+" de Safari et ajoutez le site à l'écran d'accueil !

A venir dès que je trouve un peu de temps :

  • Le clavier azerty complet
  • La liste des chaines MAJ du 8 mai => liste des chaines
  • Les programmes TV

Notez que le code que vous devez rentrer est accessible sur l'écran de la TV dans les paramètres généraux. Il est nécessaire d'avoir le dernier Firmware. Redémarrez la Freebox et le boitier HD pour en être sur.

Rassurez-vous, Le code est enregistré en local sur votre iPhone via un cookies

Les sources seront prochainement disponibles.

Bon amusement !

jeudi, mars 4 2010

Une nouvelle version de sendNews

Après un certain nombre de tests et d'utilisations en production, voici une nouvelle version de mon script de mailing en PHP

En plus des habituelles corrections de bugs, celle-ci intègre une nouvelle fonctionnalité très demandée permettant de personnaliser les messages pour chaque expéditeur.

Le principe est simple : il suffit d'utiliser le marqueur {_(nom_du_champ)_} dans votre fichier HTML

Par exemple : dans ma table SQL, j'ai le champ "nom". Dans le fichier HTML qui compose mon message, je place donc "Bonjour, {_(nom)_}"

J'ai testé cette fonctionnalité sur des envois de plusieurs lettres de plus de 25000/30000 abonnés et je n'ai noté aucun problème.

Le script est téléchargeable sur github

Et je rappelle que le mini site est toujours en ligne (mais pas à jour)

Le développement continue au fur et à mesure de l'utilisation du script, et j'espère proposer prochainement quelques fonctionnalités sympathiques en cours de test...

mardi, janvier 19 2010

[tips] Colonnes de la même hauteur avec jQuery

Un truc simple mais efficace pour obtenir des colonnes de tailles égales malgré des contenus de tailles différentes.

Colonnes Différentes Tailles

Voici une exemple avec trois colonnes : #colonne_un, #colonne_deux, #colonne_trois et la classe .colonne sur chacune.

var maxCol = Math.max($('#colonne_un').height(),$('#colonne_deux').height(),$('#colonne_trois').height());
$('.colonne').height(maxCol);  

vendredi, novembre 27 2009

Les vidéos de votre site intégrées et lisibles directement sur Facebook

Vous souhaitez, à l'instar de Youtube ou Dailymotion, que vos visiteurs, également utilisateurs de Facebook, puissent ajouter directement les vidéos de votre site sur leur mur ? C'est très simple.

Première étape, intégrer les balises méta demandées par Facebook

Le ''wiki developer'' de Facebook est assez explicite sur les balises meta à intégrer dans le head de vos pages contenant des vidéos. (exemple dans le code source de cette page)

<meta name="title" content="video_title" /> 
<meta name="description" content="video_description" /> 
<link rel="image_src" href="video_screenshot_image_src url" /> 
<link rel="video_src" href="video_src url"/>
<meta name="video_height" content="video_height" />
<meta name="video_width" content="video_width" /> 
<meta name="video_type" content="Content-Type header field" />

Deuxième étape : demandez à facebook de whitelister votre domaine

Pour cette étape :

1. connectez vous sur l'application Facebook Developper

2. postez un message sur Developer Help Contact Form en précisant la catégorie de demande Embedding Videos On Facebook. Dans le champ Link, précisez bien le domaine sur lequel vous souhaitez cette autorisation.

3. patientez en attendant un message de Facedebouc

that's all folks !

mardi, octobre 13 2009

Une nouvelle version du script de mailing avec gestion des bounces

Disclaimer : Ce programme reste en version beta. Je l'utilise en production mais pas la peine de m'insulter si vous ne parvenez pas à l'utiliser !

Je suis heureux de proposer enfin une nouvelle version de mon script de mass mailing et d'analyse des bounces en PHP (CLI). Il y a pas mal d'améliorations et de corrections par rapport à la version précédente.

On peux déjà noter que pour plus de lisibilité, j'ai développé un mini-site avec pas mal d'informations utiles sur la chose.

Une des autres principales nouveautés réside dans l'analyse des mails invalides, via les « bounces ».

Rien n'est plus problématique qu'une liste d'abonnés à moitié fausse ! Il est de plus en plus fréquent que les fournisseurs blacklistent des adresses IP qui tentent d'expédier beaucoup trop de messages à destination d'adresses inexistantes.

Pour cette fonctionnalité, j'ai choisi d'analyser la boite qui reçoit les erreurs (celle précisée par l'entête return-path du mail).

Tant que tous les serveurs de mail ne se donneront pas la main pour chanter en cœur ne respecteront pas les RFCs à ce sujet, je ne pense pas qu'il y aura d'autre solution efficace !

Je me suis basé sur une classe trouvée sur Sourceforge [1] et mon collègue Zas a pas mal bricolé sur cette partie (corrections de bugs et optimisations) en plus des corrections sur le reste de sendNews ;)

Cette version de sendNews est depuis quelques temps en production et je suis assez satisfait du résultat. Il manque un certain nombre de règles d'analyse des bounces pour être réellement exhaustif. Quoiqu'il en soit, mes listes de diffusion ne contiennent pas un nombre beaucoup trop important d'adresses non valide.

Tous les feedbacks sur ce script sont les bienvenus !

Le site mini-site sendNews

Précédemment sur le même sujet

Notes

[1] Le développement de cette classe (bmh) a repris sous la houlette des créateurs de PHPMailer, je n'ai pas encore eu le temps d'apprécier le refactoring qui a été réalisé

jeudi, mars 5 2009

Script pratique : rechercher/remplacer/patcher comme vous voulez

Dans votre vie quotidienne de développeur et/ou d'administrateur système vous êtes sans doute confronté à la nécessité de rechercher et remplacer des motifs par lots.

L'utilisation conjointe d'une multitude d'outils le permettent efficacement sous GNU/Linux : find, grep, sed, awk, perl, diff, patch... Votre éditeur préféré possède sans doute également ce type de fonctionnalité.

Le remplacement doit parfois être assorti d'une vérification visuelle et d'une validation manuelle des différentes occurrences. Si vous changez l'intégralité de vos serveurs de nom dans les fichiers de zone de BIND, vous ne souhaitez sans doute pas qu'un de vos sites à la configuration tordue ne fonctionne plus ?

Partant de ce constat, mon collègue Zas[1] a sympathiquement concocté un script en pure bash habilement nommé search_replace ! C'est un savant mélange de find, sed, awk, diff(color) et patch qui a l'avantage de la simplicité (3 ko tout mouillé).

Comment ça marche ?!

  • On recherche un pattern donné sur un répertoire (exemple, la chaine « ma chaine » sur les fichiers .php du répertoire /var/www)
  • Pour chaque occurrence, un diff - en couleur, si vous avez installé colordiff - et dans le contexte vous permet de visualiser les changements qui seront appliqués
  • A chaque étape, vous choisissez :
    • d'accepter ou pas cette modification et de passer à l'occurrence suivante
    • de modifier manuellement via votre éditeur préféré VIM
    • d'annuler les actions en cours
  • Vous pouvez bien sur choisir de remplacer le tout sans confirmation ni vérification
  • Au final, vous choisissez d'appliquer les modifications ou de garder le patch pour plus tard.
  • Cerise sur le pompon, l'utilisation du patch vous permet de revenir sur les modifications si vous avez tout cassé !

Télécharger search_replace (tar.gz / 3ko)

Notes

[1] Je vous invite à essayer geeqie, co-développé par Zas

lundi, octobre 20 2008

Script minimaliste : génération des clés DKIM et ajout de l'enregistrement DNS

Un script pour ajouter un domaine dont on veux signer les mails via DKIMproxy. Celui-ci est forcément lié à mon article sur le sujet : "Installer la signature DKIM sur Postfix avec DKIMproxy". Vous pouvez très facilement l'adapter à votre usage.

Que fait ce script :

  • crée la clé publique et la clé privée dans le répertoire keys de DKIMproxy
  • change les droits sur la clé privée
  • sur demande, ajoute l'enregistrement dans le fichier de zone du domaine
  • ajoute les informations qui vont bien dans le fichier sender_map de DKIMproxy

On le lance de la façon suivante

./generate_keys domain.tld

Il faut ensuite incrémenter le numéro de série de la zone, relancer BIND et DKIMproxy.

Le script

#!/bin/bash

# Yves Tannier [grafactory.net] 2008 GPL...

# private/public keys path
PATH_KEYS='/usr/local/dkimproxy/keys'

# sender_map file path
PATH_SENDER_MAP='/usr/local/dkimproxy/sender_map'

# dkimuser
USER_GROUP='dkim:dkim'

# domain on parametre
DOMAIN=$1

# bind file path (optional)
ZONE_PATH="/var/cache/bind/$DOMAIN.hosts"

openssl genrsa -out $PATH_KEYS/$DOMAIN.key 1024
openssl rsa -in $PATH_KEYS/$DOMAIN.key -pubout -out $PATH_KEYS/${DOMAIN}_pub.key

# chg right
chown $USER_GROUP $PATH_KEYS/$DOMAIN.key
chmod 640 $PATH_KEYS/$DOMAIN.key

# Adding DKIM key on BIND Zone ?
echo
echo -n "Add DKIM key on BIND zone file ? ([Y]/n) "
read ans
if [ ! _$ans = _y -o _$ans = _Y ]; then

    # bind file
    echo -n "BIND Zone filename ($ZONE_PATH) : "
    read ${ZONE_PATH_READ}

    if [ ! -z "$ZONE_PATH_READ" ]; then
        ZONE_PATH=${ZONE_PATH_READ}
    fi

    # public key one line
    PUBLIC_KEY=$(cat $PATH_KEYS/${DOMAIN}_pub.key | sed -n '/BEGIN PUBLIC KEY/,/END PUBLIC KEY/p' | sed '/PUBLIC KEY/d' | tr -d '\n')

    # write
    echo
    echo "_domainkey.$DOMAIN.               IN TXT      \"t=y; o=-;\"" >> $ZONE_PATH
    echo "$DOMAIN._domainkey.$DOMAIN.       IN TXT      \"k=rsa; t=s; p=$PUBLIC_KEY\"" >> $ZONE_PATH

fi

SM="$DOMAIN dkim(c=simple,s=$DOMAIN,a=rsa-sha1,key=$PATH_KEYS/$DOMAIN.key), domainkeys(c=nofws,s=$DOMAIN,key=$PATH_KEYS/$DOMAIN.key)"
echo $SM >> $PATH_SENDER_MAP

echo
echo "Please, restart DKIMproxy !"
echo
echo "... And maybe BIND with new serial on $ZONE_PATH !"

Au format compressé : generate_keys.tar.gz

N'hésitez pas à me proposer vos améliorations.

mercredi, février 27 2008

Un script de monitoring ultra simpliste

Loin de Nagios et de ses innombrables possibilités, voici un script bash minimaliste pour tester la disponibilité d'une machine ou plusieurs machines via un ping et recevoir, en cas de non réponse, les alertes par SMS[1] et/ou mail. Le principe est le suivant :

  • on teste toutes les X minutes la disponibilité des hôtes
  • si une machine est détectée down, on le note dans un fichier temporaire
  • si 5 minutes après la machine est toujours down, on lance les alertes
  • quand la machine est de nouveau up, on renvoi un mail (pas de SMS dans ce cas)

Pour configurer le script, il suffit de préciser les variables commentées au début du fichier.

#!/bin/bash

# pingTest par Yves et Thierry
# http://www.grafactory.net/blog/
# 2008 / Licence LGPL

# les hotes a tester
HOSTS="domain.tld autredomaine.tld"

# sujets des mails
SUBJECT="machine down"
SUBJECT_UP="machine up"

# envoyer un SMS via tm4b.com
EMAILID="moi@domain.tld"
TELID="XXXXX"
PASSWD="XXXXX"

# envoyer un simple mail
EMAILSIMPLE="moi@domain.tld"

# nombre test
COUNT=4

for myHost in $HOSTS
do
    if ! ping -q -c $COUNT $myHost >> /dev/null
    # elle est KO
    then
        if [ ! -f /tmp/mail.$myHost ]
        # on n est pas encore au courant
        then
            if [ -f /tmp/ping.$myHost ]
                # elle etait KO cinq minutes avant, faut prevenir
            then
                # envoyer un SMS
                echo "To - $TELID\nFrom - $TELID\nMessage - La machine $myHost ne repond plus a $(date)\nPassword - $PASSWD" |\
                mail -s "[$myHost] $SUBJECT" $EMAILID
                # envoyer un mail normal
                echo "La machine $myHost ne repond plus a $(date)" |\
                mail -s "[$myHost] $SUBJECT" $EMAILSIMPLE
                #  creer le fichier pour indiquer que le mail a ete envoye
                touch /tmp/mail.$myHost
            fi
            touch /tmp/ping.$myHost
        fi
    else
        # elle n est pas KO
        if [ -f /tmp/ping.$myHost ]
        then
            rm /tmp/ping.$myHost
        fi
        if [ -f /tmp/mail.$myHost ]
        then
            rm /tmp/mail.$myHost
            # renvoyer un mail
            echo "La machine $myHost repond a nouveau a $(date)" |\
            mail -s "[$myHost] $SUBJECT_UP" $EMAILSIMPLE
        fi
    fi
done

Dans la crontab, on ajoute la ligne suivante (ici, un test toute les 5 minutes).

# faire un test de ping toutes les 5 min
*/5 * * * * /usr/local/sbin/pingtest >> /dev/null

(on suppose donc ici que le script est installé dans /usr/local/sbin/)

Toutes les améliorations sont les bienvenues ;)

Notes

[1] Pour recevoir les alertes par SMS, j'utilise le service Email to SMS de TM4B . Les SMS peuvent être de prépayés via PayPal à un tarif très intéressant. Cette société propose aussi un API très complet pour l'envoi de SMS depuis un programme, un site Web...

lundi, septembre 10 2007

Recherche Fulltext et InnoDB avec Mysql

Logo MysqlLes avantages de l'utilisation du moteur de stockage InnoDB par rapport à MysIsam sur une base de données Mysql (à partir de la version 5.02) sont non négligeables sur certains projets. Il permet l'utilisation :

  • de contraintes d'intégrité (Foreign Key ect...)
  • de triggers (déclencheurs en français dans le texte).
  • de procédures stockées
  • ...

Un inconvénient est, par contre, particulièrement pénalisant dès qu'on envisage un moteur de recherche en "texte intégral". Il est en effet impossible de créer des index FULLTEXT avec le moteur InnoDB ! L'utilisation des MATCH et autres joyeusetés est donc impossible. Le classement pertinent des résultats devient plus compliqué à mettre en oeuvre.

Je me suis retrouvé confronté à ce problème récemment et voici comment je l'ai contourné. Je résume, pour l'exemple, en une unique table, ma structure de données qui en compte quelques dizaines.

J'ai donc une table "texts" qui utilise InnoDB avec quelques champs dont le "title" sur lequel je souhaite faire les recherches (la clé primaire s'appelle "idtext").

J'ai créé une table "searchs_texts" avec le moteur MyIsam, deux champs - idtext/title - et un index FULLTEXT sur le champ "title".

Cette table contient, vous l'aurez compris, l'exacte correspondance des champs idtext/title de la table texts.

Reste à tenir à jour cette table sans modifier le code de tous le site. Les triggers vont nous être bien utile pour ça :

Un pour l'INSERT :

CREATE TRIGGER trigger_insert_texts
AFTER INSERT ON texts
FOR EACH ROW
INSERT INTO searchs_texts SET idtext=NEW.idtext, title=NEW.title;


Un pour l'UPDATE :

CREATE TRIGGER trigger_update_texts
AFTER UPDATE ON texts
FOR EACH ROW
UPDATE searchs_texts SET title=NEW.title WHERE idtext=OLD.idtext;


Et enfin, un pour le DELETE :

CREATE TRIGGER trigger_delete_texts
AFTER DELETE ON texts
FOR EACH ROW
DELETE FROM searchs_texts WHERE idtext=OLD.idtext;

Et voilà. Le tour est joué ! Maintenant, votre moteur de recherche pourra utiliser tous ce qui est disponible et bientôt concurrencer Google ;)

vendredi, avril 13 2007

Le plein de navigateurs

Voilà un petit truc qui évite d'avoir plein de machines virtuelles pour tester vos sites sur IE6+IE7+IE5+Opéra+Firefox ect... Une compilation de navigateur qui se lance en "standalone" sous Winchose. (je n'ai pas Win mais j'ai au moins une VM de test)

Standalone et Portable browser

N'oubliez quand même pas de tester sous Safari, Konqueror, Epiphany et Lynx ;)

jeudi, octobre 5 2006

Une nouveauté pas web 2.0 de Google

Un truc sympa du maxi Google - à première vue. il faut voir à l'usage - : le moteur de recherche sur du code source. C'est Google Codesearch. Ca change des trucs web 20.0 ;)

D'après ce qu'on peux lire ici ou là, il n'y aurait pas de liens sponsorisés sur ce moteur... Pour combien de temps ? Quand on voit la foultitude de sites de "développeurs" sans aucun contenu réel et qui ne font que pomper des listes de diffusions (voir carrément des articles d'autres sites)... Tout ça, bien entendu, entouré d'un maximum de publicité, on peux se poser la question...

C'est quand même à tester !

jeudi, octobre 27 2005

Le PHP est loin d'être mort

La mode est à Ruby. Il faut programmer en Ruby pour être un vrai geek de la programmation. Ruby On Rails par çi, Ruby machin par là... C'est vrai que ça a l'air bien mais c'est à se demander si PHP n'est pas un langage de "hasbeen". Il semble en être autrement si on en croit cet article paru sur ZDnet et intitulé Oracle et IBM professionnalisent PHP. Le titre est quand même un peu mal choisi : comme si on avait attendu IBM et Oracle pour que PHP soit un langage pro !

samedi, juillet 2 2005

Du Ajax plein les yeux... XmlHttpRequest inside

La rumeur court sur la planète Webdesign, il paraît que le futur des applications Web passera peut-être par "Ajax". Mais que se cache t'il donc derrière ce nom de produit ménager ?! En tout cas mon avis est fait après quelques lectures non dénuées d'intérêts et quelques mises en applications des exemples donnés : c'est sans doute vrai qu'une petite révolution est en marche !

Google Mail ou encore Google Suggest, par exemple, sont déjà basés sur ce système et le nombre de sites qui utilisent cette technologie ne fait qu'augmenter de jour en jour.

C'est vrai qu'à la vue des possibilités offertes par ce système on peux imaginer beaucoup de mise en pratique. Avant d'en arriver là, voici un article que Bruno m'avait signalé et qui résume très bien le mode de fonctionnement des applications Web utilisant cette technologie. Si vous n'êtes pas un parfait bilingue, je vous conseille quand même de vous attarder sur le schéma explicatif...

Après avoir lu cet article, vous voudrez bien évidement connaître toutes les possibilités offertes par Ajax, et vous y essayer. C'est là qu'un petit tour dans la partie "demo" du site consacré à OpenRico - Une classe justement à cette fabuleuse technologie - vous permettra définitivement d'être convaincu que vos applications vont s'enrichir de cette nouveauté !

De mon côté, après l'avoir très modestement éprouvée sur le moteur de recherche par référence du site de La Crosse Technology, j'ai récidivé sur Theatre-contemporain.net.

Je me suis déjà attaqué à la page des éditeurs. Pour cet exemple, j'ai utilisé la classe découverte sur ce blog de qwix trouvé par hasard et qui semble être le fait d'un blogueur bisontin. Je vous livre donc tel quel, brut de décoffrage, le bout de source qui va bien :

Quelques extrait de la page qui contient la liste nominative :

// appel à la classe
// fonction javascript
<script type="text/javascript" language="javascript">
    function chargeFichier(id) {
        // Création de l'objet
        var XHR = new XHRConnection();
        // Zone a remplir
        XHR.setRefreshArea('zonedetail'+id);
        // Chargement de la page
        XHR.sendAndLoad("details-editeur.php?idedit="+id, "GET");
        return true;
    }
</script>
<?php
// boucle depuis la base de données
    while ($row = $result->fetchRow()) {
        $country =& $db->getOne("SELECT ".$lang." FROM ".$table_paysth." WHERE id='".$row['country']."' ");
            echo "<li><a href=\"javascript:;\" onclick=\"chargeFichier(".$row['id'].");\">".$row['organisation']."</a> - ".$row['city']." (".$country.")";
            echo "<div id=\"zonedetail".$row'id'."\"></div>";
            echo "</li>";
    }
... ect
?>

Extrait de la page qui contient les détails :

<?php
 echo "<div class=\"maisonseditions\">";
       echo "<div style=\"font-size: 10px; text-align: right;\"><a href=\"javascript:;\" onclick=\"document.getElementById('zonedetail".$row'id'."').innerHTML = '';\">x
fermer</a></div>";
... ici les infos détaillées ....
       echo "</div>";
?>

Pour être sur que tout le monde à compris : la page editeurs.html ne charge que la liste nominative. Ensuite chaque clic sur le nom d'un éditeur fait appel au données le concernant. Léger et efficace, seulement quelques octets de données sont appelés à chaque fois depuis le serveur.

Sur ma lancée, j'ai aussi utilisé Ajax sur la page du calendrier afin d'éviter de charger les importantes et longues listes déroulantes du moteur de recherche avancé à chaque chargement de la page "calendrier" (couplé à un système de cache c'est bien rapide).

Alors pas convaincu par l'intitulé de l'article cité plus haut : "Ajax: A New Approach to Web Applications" ?

samedi, mars 26 2005

Rotation des logs après l'analyse statistique

Je me suis pas mal pris la tête sur ce problème. Il s'agit d'archiver les logs brut du serveur web Apache compressés en gzip, toutes les nuits après la génération des statistiques par AWStats. Ceci pour une historisation des journaux qui laisse la possibilité de, par exemple, recalculer les statistiques annuelles avec autre choses que AWStats.

La solution est en fait assez simple : il suffit de préciser à logrotate qu'il doit exécuter un script avant d'archiver. Voici donc la configuration de logrotate sur le serveur en question :

     /home/web/*/logs*/access_log {
         notifempty
         daily
         rotate 31
         compress
         sharedscripts
         prerotate
             /home/cgi-stats/tools/awstats_updateall.pl now -awstatsprog=/home/cgi-stats/awstats.pl -configdir=/home/cgi-stats/
         endscript
         postrotate
             /usr/bin/killall -HUP httpd
         endscript
     }
     
     /home/web/*/logs*/error_log {
        notifempty
        weekly
        rotate 4
        compress
        postrotate
             /usr/bin/killall -HUP httpd
        endscript
     }

Pour comprendre l'utilisation des jokers (*), voici comment sont organisés les fichiers du serveur web :

/home/web/domaine.tld/logs/acces_log
/home/web/domain.tld/logs/error_log

Enfin, le script awstats_updateall.pl permet de lancer l'analyse statistique pour tous les domaines en même temps.

Pour le détail sur logrotate, je vous renvois au man ;) . Et on me souffle dans l'oreillette que cronolog est aussi une solution intéressante... A voir !

lundi, janvier 31 2005

Une nouvelle réalisation pour La Crosse Technology

Il faut bien que je me congratule un peu ;) Mon premier site vraiment, réellement et entièrement en XHTML strict et en CSS. Bon il y a quelques parties en Flash mais c'est pas moi qui est insisté. Il manque aussi un bonne intégration des "accesskey" , j'ai encore quelques soucis pour des javascript qui ne sont pas "compliant" plus quelques autres détails. Enfin c'est déjà bien sous Lynx, lecteur écran, palm, Pocket PC (netscape 4, s'abstenir).

C'est un site codé avec les fabuleuses classes PEAR et notamment la classe DB (je peux donc le passer sous Oracle ou Postgree en changeant 2 lignes). J'ai placé un petit gadget sympa : moteur de recherche avec autocomplétion sur la page "produits" (trouvé sur ici. marche avec un backend xml). Le site est en 3 langues SVP merci ;)

J'ai failli oublier de donner l'adresse : http://www.lacrossetechnology.fr

mercredi, mars 17 2004

Faille de sécurité dans SPIP

J'ai eu quelques sueurs froides quand j'ai recu l'info : une faille de sécurité dans mon CMS (Content Management System) préféré !!! Heureusement l'upgrade vers une version plus récente est d'une simplicité déconcertante. Ouf, c'est bien foutu. La nouvelle version n'écrase que les fichiers de SPIP et non pas ceux créés par le webdesigner ou les fichiers contenant les informations de configuration propre au site (une idée simple... si on y pense).

Dans mon cas, le souci a plus été que j'avais bidouillé le code de SPIP sur le site du snuasfp-fsu pour répondre au besoin du client concernant notamment la création d'un espace membre. Il a donc fallu que j'upgrade aussi mes modifications ;)

En même pas 1 heure, tout était fini !

Longue vie à SPIP.

vendredi, novembre 28 2003

Nouveau site codé avec les standards

J'ai enfin codé un site entièrement ou presque en Xhtml 1.0 et CSS2 ! Ce ne fut pas une mince affaire et ré-apprendre à faire un site sans utiliser les tables a été vraiment difficle pour moi. J'ai essayé de respecter sur la plupart des pages publiques de ce site tout les fameux standards, y compris ceux de l'accessibilité. Il reste encore pas mal de boulot tout de même pour arriver au top du top. Je dois, par exemple, créer des feuilles de style alternative pour l'impression et les vieilles versions de Netscape (je hais Netscape 4 :( ), réorganiser la disposition des informations quand il n'y a pas de feuille de style... Bref encore des heures à passer pour respecter ces foutus standard qui ont pourtant un intérêt certain et ne cesserons d'en avoir plus dans les années à venir. La portabilité du site sur toute plateforme et tout navigateur est un des argument qui me plait parmis tant d'autres (Plus d'infos sur les standards sur openweb.eu.org).

Le site en question s'appelle Théâtre et Traduction

mercredi, novembre 26 2003

Suite des cours avec Bruno

Les cours avec Bruno se poursuivent dans la bonne humeur habituelle. Voici un petit résumé de la session d'hier soir qui n'a durée "que" jusqu'à minuit... 2 heures du matin pour Bruno qui était motivé ;)

Bruno avec donc réussi à installer SPIP sur sa machine (voir ce blog). Après un tour d'horizon du fonctionnement de SPIP : la gestion des squelettes, le cache, les feuilles de styles... Nous avons procédé à un petit exercice qui ne requiert que quelques minutes : l'installation de DotClear ! Bruno à ensuite commencé la mise en forme de son site et la création des liens hypertextes de DotClear vers les multitudes de pages de son serveur...

Une fois le DotClear installé, il manquait la galerie pour les photos de la famille :)

Nous avons donc commencé l'installation de Gallery (voir ce blog). Et là, le Nobru repris la main sur sa RedHat 7.3 pour compiler les librairies nécessaires au bon fonctionnement de ce script (ça vaudra une explication détaillée de l'installation de ce programme dans les semaines à venir).

Voilà donc ce qu'il y a maintenant sur slam.dyndns.org

  • Une vieille page d'accueil
  • Un SPIP avec squelettes en CSS2 (enfin presque)
  • Un PHPMyadmin (c'est mieux que en mode console)
  • un Eskuel (au moins y a le choix du gestionnaire de BDD)
  • Un DotClear (sans contenu pour le moment)
  • Une galerie de photos (Gallery)
  • Des pages de statistiques avec Webalizer (faudra mettre Awstats)

ça commence à faire du monde ! La suite dans le prochain épisode.