michelc Blog

Just <strong>another</strong> WordPress.com weblog

Archives de janvier 2006

Boite SqlRepeat

sans commentaires

La boite SqlQuery automatise l’affichage du résultat d’une requête SQL dans une table à l’aide de l’objet XTable. La nouvelle boite SqlRepeat permet également d’afficher le résultat d’une requête SQL, mais offre plus de souplesse en ce qui concerne la présentation. Il est ainsi possible de définir :

  • le code html a afficher avant le résultat de la requête,
  • le code html servant de modèle pour formatter chaque ligne du résultat de la requête,
  • le code html à générer à la suite du résultat de la requête.

Exemple de paramétrage pour un fichier CSV :

  • Connection string : {odbc};Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=~/data/
  • Sql query :
    SELECT affix, givenName, legalName,
           telephone, email,
           addressLine1, postalCode, municipality
    FROM   [adresses.csv]
    ORDER BY postalCode DESC, legalName ASC, givenName ASC
  • Header section : <ol>
  • Template for each item : <h4>{0} {1} {2}</h4><ul><li>téléphone : {3}</li><li><a href=’mailto:{4}’>{4}</a></li><li>{5} – {6} {7}</li></ul>
  • Footer section : </ol>

Dans le cas d’un fichier Excel, la paramétrage de la connexion et de la requête devraient être effectué de la façon suivante :

  • Connection string : {odbc};Driver={Microsoft Excel Driver (*.xls)};Dbq=~/data/adresses.xls
  • Sql query :
    SELECT affix, givenName, legalName,
           telephone, email,
           addressLine1, postalCode, municipality
    FROM   [Sheet1$]
    ORDER BY postalCode DESC, legalName ASC, givenName ASC

Rédigé par michel

29 janvier 2006 à 7:07

Publié dans QC

Mise en cache côté serveur

sans commentaires

Révision de la durée de mise en cache pour l’ensemble des boites des toolbox Admin et Classic. Jusqu’à présent, celle-ci était généralement définie à -1 (pas de mise en cache) ou à 60 secondes. Ces valeurs ont été augmentées et établies selon les règles suivantes :

  • Xmlfeed et Blogmarks sont paramétrées par défaut à 10800 secondes (3 heures) pour éviter de trop solliciter les serveurs hébergeant les fils atom ou rss,
  • les boites de la toolbox Admin sont initialisées à -1,
  • les boites contenant un formulaire sont initialisées à -1 (sinon on se fait avoir et on a l’impression que ça ne marche pas :) ,
  • les boites dont le contenu dépend de la page en cours (Breadcrumbs, FileDir, ScreenInfo, SiteMenu) sont initialisées à -1,
  • toutes les autres boites passent à 600 secondes (10 minutes).

Réalisation du script 20060128_update.sql pour mettre à jour les tables qc_BoxTypes (paramétrage par défaut) et qc_Boxes (re-paramétrage des boites déjà existantes).

Rédigé par michel

28 janvier 2006 à 3:59

Publié dans QC

Google Sitemap et mise à jour fichiers

sans commentaires

Modification des modules Aspxfile, Flashfile, Htmlfile, Image, Svgfile, Textfile, Xmlfeed et Xmlfile pour tester la date de dernière mise à jour du fichier (ou celle de sa création).

Lorsque celle-ci est supérieure d’une heure à la date de dernière mise à jour de l’écran, la date de mise à jour de l’écran est actualisée puis le fichier sitemap destiné à Google est regénéré. Cela permet d’éviter que la mise à jour des pages dont le contenu est basé sur des fichiers “externes” ne soit jamais signalée à Google.

Rédigé par michel

28 janvier 2006 à 2:04

Publié dans QC

Boite Blogmarks

sans commentaires

Création d’une nouvelle boite pour simplifier l’affichage du fil atom produit par Blogmarks. Le module de configuration de cette boite permet de définir les éléments suivants :

  • nom de l’utilisateur,
  • liste des tags séparés par des espaces,
  • nombre d’entrées à afficher.

Le fil atom renvoyé par Blogmarks est ensuite transformé en code html par application du fichier feed-blogmarks.xslt

Rédigé par michel

28 janvier 2006 à 10:35

Publié dans QC

HTTP 301 – Moved Permanently

sans commentaires

Prise en compte des paramètres “permanentRedirectFrom” et “permanentRedirectTo” dans le web.config pour gérer une redirection permanente. Cela permet par exemple de changer le nom de domaine d’un site (et d’en informer correctement les moteurs de recherche) :

  • permanentRedirectFrom = http://www.monsite.info/
  • permanentRedirectTo = http://www.mon-site.com/

Cela peut aussi servir à unifier les urls pour éviter d’être référencé 2 fois (et donc de “gaspiller” son pagerank) :

  • permanentRedirectFrom = http://monsite.info/
  • permanentRedirectTo = http://www.monsite.info/

Références :

Rédigé par michel

25 janvier 2006 à 8:28

Publié dans QC, Référencement

HTTP 301 – Moved Permanently

avec un commentaire

<script runat="server">
private void Page_Load(object sender, System.EventArgs e) {
  Response.Status = "301 Moved Permanently";
  Response.AddHeader("Location", "http://www.new-url.com");
}
</script>

(Publié à l’origine sur http://www.bigbold.com/snippets/posts/show/1295)

Rédigé par michel

24 janvier 2006 à 1:13

Comment cibler les publicités AdSense

sans commentaires

Il est possible d’indiquer à Google quelle sont les parties de la page dont on souhaite mettre le contenu en avant. Cela permet de cibler les annonces affichées sur le site en fonction de ce contenu.

Pour cela, il suffit d’encadrer le contenu “intéressant” par :

<!-- google_ad_section_start -->
    ....
<!-- google_ad_section_end -->

Il est aussi possible de “masquer” du contenu pour éviter d’avoir des annonces relatives à celui-ci :

<!-- google_ad_section_start(weight=ignore) -->

    ....
<!-- google_ad_section_end -->

Via «What is section targeting and how do I implement it?»

Rédigé par michel

20 janvier 2006 à 3:10

Publié dans Référencement, html

Blogmarks to Html conversion

avec un commentaire

Ce fichier permet de transformer le fil atom de Blogmarks (par exemple http://api.blogmarks.net/user/ms_michel) en code html afin de pouvoir l’intégrer à une page web.

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:atom="http://purl.org/atom/ns#draft-ietf-atompub-format-05" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <xsl:output method="html" />
  <xsl:template match="/">
    <xsl:apply-templates select="/atom:feed/atom:head" mode="before" />
    <xsl:apply-templates select="/atom:feed/atom:entry" />
    <xsl:apply-templates select="/atom:feed/atom:head" mode="after" />
  </xsl:template>
  <xsl:template match="atom:feed/atom:head" mode="before" >
    <!-- <h3><xsl:value-of select="atom:title" /></h3> -->
  </xsl:template>
  <xsl:template match="atom:feed/atom:head" mode="after">
    <p><a href="{atom:link[@rel='alternate']/@href}"><img src="http://blogmarks.net/img/88x31_neg.png" alt="blogmarks.net" /></a></p>
  </xsl:template>
  <xsl:template match="atom:feed/atom:entry">
    <div>
      <xsl:choose>
        <xsl:when test="position() mod 2 = 1">
          <xsl:attribute name="class">bm_blogmarks bm_odd</xsl:attribute>
        </xsl:when>
        <xsl:otherwise>
          <xsl:attribute name="class">bm_blogmarks bm_even</xsl:attribute>
        </xsl:otherwise>
      </xsl:choose>
      <a href="{atom:link[@rel='related']/@href}"><img src="{atom:link[@rel='image']/@href}" alt="" /></a>
      <h4><a href="{atom:link[@rel='related']/@href}"><xsl:value-of select="atom:title" /></a></h4>
      <p><xsl:value-of select="atom:summary" disable-output-escaping="yes" /></p>
      <p class="blogmarks-tags">
        <xsl:value-of select="substring(atom:published, 0, 11)" />
        <xsl:if test="atom:category">
          <xsl:for-each select="atom:category">
            <xsl:text> - </xsl:text><a href="{@term}{@sheme}"><xsl:value-of select="@label" /></a>
          </xsl:for-each>
        </xsl:if>
      </p>
    </div>
  </xsl:template>
</xsl:stylesheet>

Le code html généré est inspiré par celui de Hot Links. Il peut ensuite être présenté grâce à la feuille de style CSS suivante :

.bm_blogmarks {
  margin: 10px auto;
  padding: 1%;
  background-color: #f5f5f5;
  border: 1px solid #d9d9d9;
  width: 97%;
  overflow:auto;
}
.bm_even {
  background-color: #fcfcfc;
}
.bm_blogmarks h4 {
  margin-top: 0;
}
.bm_blogmarks p.bm_tags {
  margin-bottom: 0;
  display: block;
  clear: left;
}
.bm_blogmarks img {
  margin: 0 0px 5px 10px;
  float: right;
  border: 0;
  clear: none;
  width: 144px;
  height: 107px;
}
.bm_even img {
  margin: 0 10px 5px 0px;
  float: left;
}

(Publié à l’origine sur http://www.bigbold.com/snippets/posts/show/1206)

Rédigé par michel

19 janvier 2006 à 8:18

Publié dans Code Snippets, html, xml

RDF to Html conversion

avec un commentaire

Ce fichier permet de transformer un fil RDF en code html afin de pouvoir l’intégrer à une page web.

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:foo="http://purl.org/rss/1.0/">
    <xsl:output method="html"/>
    <xsl:template match="/">
        <xsl:apply-templates select="/rdf:RDF/foo:channel"/>
    </xsl:template>
    <xsl:template match="/rdf:RDF/foo:channel">
        <h3><xsl:value-of select="foo:title"/></h3>
        <p><xsl:value-of select="foo:description"/></p>
        <ul>
            <xsl:apply-templates select="/rdf:RDF/foo:item"/>
        </ul>
    </xsl:template>
    <xsl:template match="/rdf:RDF/foo:item">
        <li>
            <a href="{foo:link}" title="{substring(dc:date, 0, 11)}"><xsl:value-of select="foo:title"/></a>
            <p><xsl:value-of select="foo:description" disable-output-escaping="yes" /></p>
        </li>
    </xsl:template>
</xsl:stylesheet>

(Publié à l’origine sur http://www.bigbold.com/snippets/posts/show/1164)

Rédigé par michel

16 janvier 2006 à 3:04

Publié dans Code Snippets, html, xml

RSS to Html conversion

sans commentaires

Ce fichier permet de transformer un fil RSS (version 0.9x ou 2.0) en code html afin de pouvoir l’intégrer à une page web.

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:wfw="http://wellformedweb.org/CommentAPI/">
    <xsl:output method="html"/>
    <xsl:template match="/">
        <xsl:apply-templates select="/rss/channel"/>
    </xsl:template>
    <xsl:template match="/rss/channel">
        <h3><xsl:value-of select="title"/></h3>
        <p><xsl:value-of select="description"/></p>
        <ul>
            <xsl:apply-templates select="item"/>
        </ul>
    </xsl:template>
    <xsl:template match="/rss/channel/item">
        <li>
            <a href="{link}" title="{substring(pubDate, 0, 11)}"><xsl:value-of select="title"/></a>
            <p><xsl:value-of select="description" disable-output-escaping="yes" /></p>
        </li>
    </xsl:template>
</xsl:stylesheet>

(Publié à l’origine sur http://www.bigbold.com/snippets/posts/show/1163)

Rédigé par michel

16 janvier 2006 à 3:03

Publié dans Code Snippets, html, xml