QuiboBlog, notre blog corporatif
Vendredi, 9 mai 2008
Identificateurs autoincrémentés: comment éviter les trous
Les colonnes autoincrémentées dans une base de données (je fais référence au type de donnée serial en PostgreSQL, ou encore au modificateur de type auto_increment en MySQL) sont très utiles pour obtenir un numéro unique lorsqu'on ajoute une rangée dans une table. Cependant, j'ai appris récemment qu'annuler une transaction SQL (abort ou rollback) ne remet pas le compteur à ce qu'il était avant de débuter la transaction.
Imaginez que vous utilisez une colonne autoincrémentée pour assigner un numéro de facture. La dernière facture que vous avez créée porte le numéro 42. Vous débutez votre transaction SQL avec begin puis vous ajoutez une nouvelle facture: le numéro 43 lui est automatiquement attribué. Disons qu'au moment d'ajuster les tables d'inventaire, un problème survient et vous annulez la transaction SQL avec rollback. Le SGBD effacera toute trace de votre facture comme vous le souhaitez, mais le compteur demeurera à 43. La prochaine facture portera donc le numéro 44 et vous aurez un trou entre la facture 42 et 44, ce qui est guère apprécié des comptables!
Cela se produit avec la plupart des SGBD. Comment se fait-il alors que personne n'ait corrigé ce bogue? Parce que ce n'en est pas un! Pour reprendre l'exemple ci-haut, si un deuxième processus ajoutait une facture (numéro 44) entre le moment où la facture 43 est créée et le moment où la transaction SQL de la facture 43 est annulée, ce serait impensable de défaire aussi la facture 44 sous prétexte que son numéro devrait maintenant être 43...
Alors que faire? Ne pas utiliser de colonne autoincrémentée, malheureusement. Avant de créer une facture, il faut verrouiller la table des factures pour empêcher qu'un autre processus ne la lise (ouch!), faire un "select max(facture_id) + 1" pour obtenir le prochain numéro de facture et ajouter une facture en spécifiant ce numéro. Et bien sûr, ne pas oublier de libérer le verrou sur la table le plus tôt possible!
Mardi, 6 mai 2008
Manger devant son ordinateur
Êtes-vous de ceux qui lunchent devant leur ordinateur au bureau? Je pourrais vous asséner que ce n'est pas bon pour votre santé, pour vos yeux et pour votre concentration, ou encore que vous devriez profiter de votre pause-midi pour socialiser avec vos collègues ou changer d'air. Mais à quoi bon?
Alors je vais m'y prendre autrement. Saviez-vous que, selon une étude britannique commmandée par Which? Computing, les claviers d'ordinateurs renferment 5 fois plus de bactéries qu'un siège de toilette? Imaginez ce qui foisonne dans les miettes de votre sandwich tombées le mois dernier entre le B et le N de votre clavier!!!
Pour vous en sortir, vous pouvez toujours retirer toutes les touches de votre clavier une fois par semaine pour le nettoyer. Ou encore utiliser un revêtement amovible en silicone vous privant des joies du contact direct entre votre peau et votre ordinateur. Ou bien utiliser un clavier flexible fait entièrement en silicone et que vous pouvez passer sous le robinet. Ou finalement, comble du raffinement, utiliser un clavier laser.
Ou aller manger dans un parc au grand air et simplement ne pas vous soucier de vos miettes.
Samedi, 3 mai 2008
Grande déception pour Montréal
Grande déception, défaite de Montréal contre Philadelphie... Somme toute une bonne saison de hockey. En tant que vrai fan du Canadiens de Montréal, QuiboWeb aura une surprise pour ceux-ci dans les prochains jours.
D'ici là, une bonne bière et UMBERGER ketchup moutarde et à dans 5 mois...
Jeudi, 1 mai 2008
Shy
À quoi peut bien servir l'entité HTML ­? À indiquer à votre fureteur où il peut couper un mot trop long à la fin d'une ligne! Le nom de l'entité provient du nom donné au trait d'union qui n'apparaît que lorsqu'un mot est coupé: soft hyphen. Si par exemple vous tapez "triste­ment", vous obtiendrez "tristement" en début ou milieu de ligne, mais si le mot est en fin de ligne, vous verrez "triste-" et "ment" sur la ligne suivante.
Évidemment, il y a des incompatibilités entre fureteurs. Cette fois-ci, c'est Firefox 2.0 le coupable car ce dernier ignore simplement l'entité (http://www.quirksmode.org/oddsandends/wbr.html).
Et ce n'est pas tout. Tapez "Îles-de-la-Madeleine" en fin de ligne et vous aurez deux comportements différents: Internet Explorer insèrera un saut de ligne à l'un des traits d'union, alors que Firefox laissera le mot entier. La logique derrière ce choix serait qu'il n'est pas justifié de prendre pour acquis qu'un mot peut être coupé là où il y a un trait d'union. En effet, dans des cas comme dans "A-1", on ne veut pas que le mot soit coupé. Peut-être aussi que dans certaines langues, d'autres règles de césure s'appliquent.
Mais de tels cas sont à mon avis rarissimes, et à ma connaissance, le trait d'union peut provoquer un saut de ligne au moins dans toutes les langues indo-européennes. Ne serait-il pas plus efficace d'avoir un caractère ou une entité pour indiquer que l'on ne veut PAS permettre un saut de ligne, comme l'espace insécable ?
Le débat est ouvert...
Samedi, 26 avril 2008
Plus de 1 million de domaines .ca
Un peu plus de 1 an et 5 mois après que le Brésil ait atteint le nombre magique de 1 million de domaines .br, le Canada atteint à son tour ce palier au début du mois d'Avril...
Les domaines .ca existent depuis mai 1987 et l'histoire a commencé en Colombie Britannique.
Le premier nom de domaine appartient à l'Université de l’Île-du-Prince-Édouard.
Brent Krause, de Calgary, en Alberta, a enregistré le millionième nom de domaine point-ca. M. Krause a enregistré le nom de domaine krauslaw.ca
Dans le même ordre d'idée, peut-être verrons nous bientôt le premier nom de domaine .qc pour le Québec, une initiative de M. Daniel Turp : Opération .qc
Vendredi, 25 avril 2008
Google un droit acquis
On n'apprécie plus Google à sa juste valeur... Il est devenu un nom commun dans notre vie de tous les jours... En plus des recherches Web standards, on l'utilise par paresse car il nous évite de devoir taper l'adresse du site Web qu'on désire accéder... Aujourd'hui sans Google n'est pas une bonne journée!
Ce matin, je réalise à nouveau à quel point ce moteur de recherche est fort! J'entends dans un reportage radio à propos des jeux olympiques chinois que la Place Tian'anmen est un endroit des plus impressionnants. Curieux, je fais une petite recherche sur Google pour voir de quoi ça a l'air cette place là!
Ma recherche était (n'étant pas chinois du tout) : Place tinimen
Seulement 24 résultats mais Google me propose ceci :
Essayez avec cette orthographe : place tiananmen
Plutôt incroyable!
Google, je t'aime!