michelc Blog

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

Archive for janvier 2006

Boite SqlRepeat

leave a comment »

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

Written by michel

29 janvier 2006 at 7:07

Publié dans QC

Mise en cache côté serveur

leave a comment »

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).

Written by michel

28 janvier 2006 at 3:59

Publié dans QC

Google Sitemap et mise à jour fichiers

leave a comment »

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.

Written by michel

28 janvier 2006 at 2:04

Publié dans QC

Boite Blogmarks

leave a comment »

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

Written by michel

28 janvier 2006 at 10:35

Publié dans QC

HTTP 301 – Moved Permanently

leave a comment »

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) :

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

Références :

Written by michel

25 janvier 2006 at 8:28

Publié dans QC, Référencement

HTTP 301 – Moved Permanently

with one comment

<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)

Written by michel

24 janvier 2006 at 1:13

Comment cibler les publicités AdSense

leave a comment »

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?»

Written by michel

20 janvier 2006 at 3:10

Publié dans html, Référencement

Blogmarks to Html conversion

with one comment

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)

Written by michel

19 janvier 2006 at 8:18

Publié dans Code Snippets, html, xml

RDF to Html conversion

with one comment

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)

Written by michel

16 janvier 2006 at 3:04

Publié dans Code Snippets, html, xml

RSS to Html conversion

leave a comment »

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)

Written by michel

16 janvier 2006 at 3:03

Publié dans Code Snippets, html, xml