-
The IBuySpy Portal architecture (PDF) :
In this book, we'll be using the freely available IBuySpy Portal as a starting point for our intranet development. We'll look at both why we are modifying an existing intranet application rather than creating our own, and why we choose the IBuySpy Portal in particular. Once we have covered the basics, we'll take a tour of its features, looking at the files and types it consists of, how they function and fit together, and general principles behind the site. Finally, we'll take a brief look at how security is handled.
Tag - QC
jeudi 15 octobre 2009
Blogmarks du 14/10/2009
Par Michel le jeudi 15 octobre 2009, 08:21
mardi 9 juin 2009
Evolutions QC au 9 juin 2009
Par Michel le mardi 9 juin 2009, 12:12
Récapitulatif de ce qui a été fait depuis le 17 avril 2009 (pour l'intranet Classeurs Projets) :
- Documents.cs : Ajout d'un constructeur basé sur le fichier (pour tester s'il existe)
- editDocuments.ascx.* : Teste si le document est déjà présent
- editDocuments.ascx.cs : Teste si le document est utilisé plusieurs fois avant de le supprimer physiquement
- listDocuments.ascx.cs : Ajout d'une classe css extensionxxx liée à l'extension du fichier pour personnaliser l'affichage
- listUsers.ascx.cs : Correction pour que le tri fonctionne correctement
- 1024.css : Ajout des styles pour afficher l'icone du fichier en fonction de sa classe
vendredi 17 avril 2009
Evolutions QC au 17 avril 2009
Par Michel le vendredi 17 avril 2009, 12:09
Récapitulatif de ce qui a été fait depuis le 7 janvier 2008 (pour l'intranet Classeurs Projets) :
- Reprise du code de Luxhor
- listContacts.ascx.cs : Colonnes téléphones élargies de 75px à 20%
- cnfgDocuments.ascx.* : Paramétré une classe CSS et l'ordre de tri par défaut
- editDocuments.ascx.* : Simplification des modes de publication
- listDocuments.ascx.cs : Prise en compte de la classe CSS et de l'ordre de tri par défaut
- listDocuments.ascx.cs : Modification de la présentation
- editUsers.ascx.cs : Accepte un point (.) dans le code utilisateur
- editUsers.ascx.cs : Limite la liste des rôles quand on est en mode intranet (repris de Luxhor ?)
- Login.ascx.cs : Gestion du cas où on est déconnecté entre l'entrée dans un formulaire et le post
- InputHelper.cs : Accepte un point (.) dans le code utilisateur
- Global.asax.cs : Gestion du cas où on est déconnecté entre l'entrée dans un formulaire et le post
jeudi 26 février 2009
IIS et FLV : The page cannot be found
Par Michel le jeudi 26 février 2009, 17:44
Pour afficher une vidéo sous QC, c'est un peu compliqué parce qu'il faut créer un fichier html avec la balise <object> qui va bien pour visualiser la vidéo via le lecteur FLV Player.
Et comme en plus la vidéo est au format MOV, c'est moi qui m'y colle. Au début, tout va vite et bien. Je commence par transformer la vidéo MOV d'origine en FLV, je l'insère sur le site en local, je fais quelques réglages et ça fonctionne. Mais au moment de faire la même chose sur le site de production, il n'y a pas moyen que ça marche !
Le lecteur FLV Player affiche un laconique "loading..." puis tout semble bloqué. Après installation de la dernière version, c'est un peu mieux puisque j'y gagne un message "Video not found http://www.xxxxxxx.com/data/ma-video.flv".
Je vérifie, re-vérifie et re-re-vérifie pour m'assurer que le dossier et le nom du fichier sont bien OK et je fini par copier directement l'url de la vidéo dans la barre d'adresse de Firefox 3 et à nouveau tout semble bloqué. La même chose sous Internet Explorer 6 et boum : "The page cannot be found".
Après une recherche sous Google, il apparait que c'est tout à fait "normal" : IIS6 ne renvoie pas les types MIME qu'il ne connait pas.
Pour résoudre ça, il faut :
- aller dans le gestionnaire de Services Internet,
- faire un clic droit sur le site web concerné et choisir Propriétés
- cliquer sur l'onglet "En-têtes HTTP"
- cliquer sur le bouton "Types de fichiers..." dans le panneau "MIME"
- cliquer sur le bouton "Nouveau type"
- saisir ".flv" dans la zone "Extension associée" (avec le point sans les guillemets)
- saisir "video/x-flv" pour le "Type de contenu (MIME)"
- cliquer sur le bouton "OK" pour valider
Au moins j'aurai appris quelque chose.
mercredi 24 septembre 2008
Je me souviens...
Par Michel le mercredi 24 septembre 2008, 13:45
Il y a près de quatre ans, je démarrais un nouveau projet sans trop savoir ce que j'allais en faire et petit à petit c'est devenu Quick-Content puis Altrr-Press aujourd'hui.
Pour me motiver et garder une trace des différents essais que je faisais, j'avais démarré un blog en anglais sur WDevs, un hébergeur de blogs dédiés au .NET. Malheureusement, WDevs avait fermé ses portes et disparu courant 2007, ce qui faisait que j'avais perdu toutes mes notes.
Et aujourd'hui, après des tonnes de fois à me dire qu'il fallait que j'aille faire un tour du côté des archives de l'internet , je me suis enfin décidé (merci le bruit) et miracle, on dirait que tout est encore là : http://blogs.wdevs.com/qc, en attendant le backup complet ici même : http://blog.pagesd.info/tag/wdevs.
Ca parle pas mal de QC (enfin quand je m'astreignais à bloguer), mais pas que (y'a notamment mon "célèbre" billet sur l'utilisation du SMTP de GMail avec System.Web.Mail. Les liens sont un peu cassés, parce que 4 ans pour internet c'est vieux, mais c'est quand même agréable de retrouver et relire tout ça.
Edit: ça pourrait être l'occasion de terminer la mise à jour du site à partir des différents essais sous Wordpress et Blogger.
lundi 7 janvier 2008
Evolutions QC au 7 janvier 2008
Par Michel le lundi 7 janvier 2008, 12:07
Récapitulatif de ce qui a été fait depuis le 22 octobre 2007 (généralement pour l'intranet Start avec une base de données Oracle) :
- Announcements.cs : Gestion du cas où le champ author est à NULL
- editUsers.ascx.cs : Encodage du message d'erreur lors de la saisie d'un utilisateur
- 20070207_1core.sql : Champ hostAddress accepte les valeurs NULL
lundi 22 octobre 2007
Evolutions QC au 22 octobre 2007
Par Michel le lundi 22 octobre 2007, 12:04
Récapitulatif de ce qui a été fait depuis le 3 avril 2007 :
- Suppression de MailFormHandler.cs
- Compression des vieilleries de dufour34, extranet, nioulargo, usg et vito
mardi 3 avril 2007
Evolutions QC au 3 avril 2007
Par Michel le mardi 3 avril 2007, 12:02
Récapitulatif de ce qui a été fait depuis le 25 octobre 2006 :
- _dumpdb.aspx : Utilisation de StringBuilder
- _dumpdb.aspx : Fichier dump.sql zippé et mailé en fonction de la ligne de commande
- BDHelper.cs : Correction de la fonction #SUBSTRING() pour les connexions ODBC
- Common.cs : Gestion erreur fichier inexistant dans la fonction TrackFileUpdate()
- Email.cs : Gestion absence destinataire en cas de démonstration
- Log.cs : Ajout de la fonction GetLastHtml() pour afficher les logs du dernier traitement (fusion PilOTT)
- Macros.cs : Changement du namespace de google.com en sitemaps.org
- AjaxXxxxx : Ajout possibilité d'utiliser Ajax dans QC (c'est à dire sans le FormEnhance.js de PilOTT)
- Suppression de fichiers inutiles
lundi 11 décembre 2006
Mises à jour QC
Par Michel le lundi 11 décembre 2006, 16:54
Pour rattraper le retard pris dans le suivi des mises à jours / évolutions, la liste des quelques modifications apportées à QC depuis septembre.
- Correction des macros websiteUrl et resourcePath
- Amélioration prise en compte d'un sql multi base de données dans BDHelper
- Bidouillage du module discussion pour l'extranet
- Correction création du cookie à l'authentification pour utiliser le login "normalisé" (tel qu'enregistré dans qc_Users) et pas celui saisi (à cause maj/min...)
- Harmonisation du paramétrage pour GoogleSearch, MsnSearch et YahooSearch
- Traduction des messages d'erreurs dans la boite de modification du mot de passe
- Gère le cas où fichier n'existe plus lors du test de sa date mise à jour (Common.TrackFileUpdate())
- Passage à la dernière version du namespace pour le sitemap (cf http://www.sitemaps.org/)
- Ajout de la propriété FieldClass au composant XTable
- tableEnhance.js ne génère plus les fonctions onmouseover() et onmouseout() pour FireFox
- tableEnhance.js recopie les classes de colgroup/col dans les td pour FireFox
mercredi 25 octobre 2006
Evolutions QC au 25 octobre 2006
Par Michel le mercredi 25 octobre 2006, 12:00
Récapitulatif de ce qui a été fait depuis le 29 juin 2006 (essentiellement lié à la fusion des sources de OTT) :
- _dumpdb.aspx : Fichier dump.sql généré dans le sous-répertoire data (car il a toujours les droits d'écriture)
- _initdb.aspx : Amélioration gestion enchainement de commandes sql
- _initdb.aspx : Prise en compte des instructions MODIFY et RENAME
- LiteralFR.config : Traduction des messages de la boite Classic.Password
- BDHelper.cs : Gestion des erreurs dans la fonction ListZip
- BDHelper.cs : Simplification de la traduction des pseudos-fonctions
- BDHelper.cs : Ajout des pseudos-fonctions sql #DAY(), #MONTH(), #YEAR() et #SUBSTRING()
- editDiscussions.ascx.cs : Gestion du marqueur {@OK} pour le Helpdesk Snef
- viewFeedback.ascx : Les champs paramétrables sont mis à Enabled=False
- viewPassword.ascx.cs : Utilisation des messages traduits en français
- Common.cs : Ajout de la propriété IsLoopback
- Email.cs : Ajout de la propriété Reply-To
- Email.cs : Utilisation de smtp.gmail.com en plus de smtp.ifrance.com
- InputHelper.cs : Suppression des <br /> en début ou fin de texte dans la fonction newLineToBR()
- Regular.cs : Passage des variables {@user.ip} et {@user.dns} dans la fonction CommonVariables()
- Users.cs : Accepte un mot de passe vide quand on est en localhost
- dlgFiles.aspx.cs : Gère cas où pas de fichier uploadé avec Firefox
- qc_Classic.cs : Amélioration présentation des XTables
jeudi 19 octobre 2006
Structure d'une solution sous QC
Par Michel le jeudi 19 octobre 2006, 10:55
Private Assemblies
Une solution basée sur QC est constituée d'au minimum 4 projets, chacun correspondant à une DLL :
- qc.Engine : qc.Engine.dll
- qc.Framework : qc.Framework.dll
- qc.Classic : qc.Classic.dll
- BAS.Data.BDHelper : BAS.Data.BDHelper.dll
QC utilise le principe des Private Assemblies (PA) selon la méthode " Development Framework" pour DotNetNuke 2 qui a été décrite par Bo Norgaard sur son site (http://www.dotnetnuke.dk/Default.aspx?tabid=59).
Répertoire principal
- default.aspx : charte graphique vide (nécessaire mais inutilisé),
- default.aspx.cs : code pour la classe inPortal.Default,
- global.asax.* : ràs,
- LiteralFR.config : textes français pour les PA qc.Engine et qc.Classic
- qc.Engine.csproj : le fichier projet pour la PA
- qc.sln : le fichier de la solution QC
- web.config : ràs,
- BDHelper : sous-répertoires avec le code de la PA gérant l'accès aux bases de données
- bin/ : répertoire avec le code compilé,
- Classic/ : sous-répertoires avec le code des boites standards de QC
- data/ : sous-répertoires où stocker les fichiers de données
- Engine/ : sous-répertoires avec le code de base de QC
- Framework/ : code de la PA servant à lier le tout,
- res/ : sous-répertoires (scripts, images, chartes graphiques...)
Créer une nouvelle solution
Ce paragraphe explique point par point comment créer une nouvelle solution nommée "demo" à partir de la solution QC.
- Copier le répertoire X:\Portals\qc dans X:\Portals\demo
- Créer un répertoire virtuel "demo" qui pointe sur le sous-répertoire X:\Portals\demo
- Donner à l'utilisateur ASPNET TOUS les droits sur le sous-répertoire X:\Portals\demo\data
- Tester que http://localhost/demo fonctionne correctement
- Renommer X:\Portals\demo\qc.sln en X:\Portals\demo\demo.sln
- Supprimer X:\Portals\demo\qc.suo
- Remplacer manuellement http://localhost/qc par http://localhost/demo dans
les fichiers suivants :
- X:\Portals\demo\demo.sln
- X:\Portals\demo\qc.Engine.csproj.webinfo
- X:\Portals\demo\Classic\qc.Classic.csproj.webinfo
- Supprimer X:\Portals\qc\BDHelper\BAS.Data.BDHelper.csproj.user
- Charger la solution X:\Portals\demo\demo.sln dans Visual Studio
- Générer la solution
- dans la barre de menu, cliquer sur Générer - Générer la solution (Ctrl+Maj+B)
- le résultat doit être de la forme "Génération : 4 a réussi, 0 a échoué, 0 a été ignoré"
- Tout sauvegarder, quitter et tester que http://localhost/demo fonctionne toujours
Ajouter un nouveau projet
Ce paragraphe explique comment ajouter un nouveau projet sous forme de Private Assembly à la solution "demo". Concrètement, ce projet regroupe logiquement plusieurs "boites" dans une même Private Assembly et physiquement les sous-répertoires relatifs à chacune de ces boites dans un même répertoire.
- Lancer Visual Studio 2003 et ouvrir la solution "demo"
- Créér le projet correspondant à la Private Assembly
- dans l'explorateur de solutions, cliquer avec le bouton droit sur la solution "demo" et choisir Ajouter - Nouveau Projet
- dans la boite de dialogue sélectionner le type de projet "Projet Visual C#" et le modèle "Projet Web Vide"
- définir l'emplacement à http://localhost/demo/Exemple et valider en cliquant sur OK
- Renommer le projet
- dans l'explorateur de solutions, cliquer avec le bouton droit sur le projet qui vient d'être créé (Exemple dans le cas présent) et choisir Renommer puis indiquer "demo.Exemple"
- cliquer à nouveau avec le bouton droit sur le projet et choisir Propriétés
- dans la boite de dialogue, sélectionner Propriété communes - Général
- définir Nom de l'assembly à "demo.Exemple"
- définir Espace de noms par défaut à "demo.Exemple"
- Ajouter des références
- dans l'explorateur de solutions, cliquer avec le bouton droit sur le dossier "Références" du projet "demo.Exemple" et choisir Ajouter une référence
- cliquer sur l'onglet "Projets"
- sélectionner "qc.Engine" et valider
- Référencer le projet
- dans l'explorateur de solutions, cliquer avec le bouton droit sur le dossier "Références" du projet "qc.Framework" et choisir Ajouter une référence
- cliquer sur l'onglet "Projets"
- sélectionner "demo.Exemple" et valider
- Générer la solution
- dans la barre de menu, cliquer sur Générer - Générer la solution (Ctrl+Maj+B)
- le résultat doit être de la forme "Génération : 5 a réussi, 0 a échoué, 0 a été ignoré"
Ajouter une nouvelle boite
Dans ce paragraphe, on va voir comment ajouter une nouvelle "boite" dans le projet demo.Exemple créé auparavant. Dans la terminologie QC, une boite correspond à un module de code et regroupe généralement une classe métier et un ou des contrôles utilisateurs web destinés à gérer un élément de base dans l'application (les clients, les fournisseurs, les catégories de clients...).
- Lancer Visual Studio 2003 et ouvrir la solution "demo"
- Créer un dossier pour la boite
- dans l'explorateur de solutions, cliquer avec le bouton droit sur le projet "demo.Exemple" et choisir Ajouter - Nouveau dossier
- cliquer sur le dossier "NewFolder1" qui vient d'être créé et le renommer en "Adresse"
- Créer le contrôle utilisateur pour l'affichage
- dans l'explorateur de solutions, cliquer avec le bouton droit sur le dossier "Adresse" du projet "demo.Exemple"
- choisir Ajouter - Ajouter un contrôle utilisateur Web
- donner "viewAdresse.ascx" comme nom et valider
- sélectionner le contrôle utilisateur créé et choisir Afficher le code
- repérer la définition de la classe et remplacer "System.Web.UI.UserControl" par "qc.Engine.BoxControl" de façon à obtenir la ligne de code suivante : "public class viewAdresse : qc.Engine.BoxControl"
- Créer le contrôle utilisateur pour le paramétrage
- dans l'explorateur de solutions, cliquer avec le bouton droit sur le dossier "Adresse" du projet "demo.Exemple"
- choisir Ajouter - Ajouter un contrôle utilisateur Web
- donner "editAdresse.ascx" comme nom et valider
- sélectionner le contrôle utilisateur créé et choisir Afficher le code
- repérer la définition de la classe et remplacer "System.Web.UI.UserControl" par "qc.Engine.BoxControl" de façon à obtenir la ligne de code suivante : "public class editAdresse : qc.Engine.BoxControl"
- Créer la classe pour gérer l'objet Adresse
- dans l'explorateur de solutions, cliquer avec le bouton droit sur le dossier "Adresse" du projet "demo.Exemple"
- choisir Ajouter - Ajouter une classe
- donner "Adresse.cs" comme nom et valider
- Générer la solution
- dans la barre de menu, cliquer sur Générer - Générer la solution (Ctrl+Maj+B)
- le résultat doit être de la forme "Génération : 5 a réussi, 0 a échoué, 0 a été ignoré"
mercredi 18 octobre 2006
Installer et compiler les sources de QC
Par Michel le mercredi 18 octobre 2006, 20:03
Installation des sources de QC sur un poste de développement
- Décompacter l'archive complète de la solution dans le sous-répertoire C:\Portals\qc ou D:\Portals\qc
- Créer un répertoire virtuel "qc" qui pointe sur le sous-répertoire X:\Portals\qc
- Donner à l'utilisateur ASPNET TOUS les droits sur le sous-répertoire X:\Portals\qc\data
- Tester que http://localhost/qc fonctionne correctement => installation réussie :)
Compilation des sources de QC
- Rechercher tous les fichiers *.csproj.user dans X:\Portals\qc et ses sous-répertoires pour les supprimer
- Sous Visual Studio, le chargement de la solution X:\Portals\qc\qc.sln ne doit pas planter (ne pas la mettre sous Source Safe)
- Recompiler toute la solution (Générer - regénérer la solution) doit donner un message style "Régénération globale : # a réussi, 0 a échoué, 0 a été ignoré" => compilation réussie :)
- Tout sauvegarder puis fermer la solution afin de sauvegarder les .csproj.user de C: ou D:
- Tester que http://localhost/qc est toujours OK
jeudi 12 octobre 2006
Contrôles de liste d'options
Par Michel le jeudi 12 octobre 2006, 11:29
Lorsque on utilise un contrôle CheckBoxList ou un contrôle RadioButtonList, il ne faut pas oublier d'utiliser RepeatLayout="Flow" et RepeatDirection="Horizontal" pour éviter que le contrôle soit rendu côté client par une table et des balises <tr> et <td>.
Si on souhaite que les différents choix apparaissent verticalement, il faut utiliser RepeatDirection="Vertical" au lieu de RepeatDirection="Horizontal" de façon à générer une balise <br /> entre les différentes options. Dans ce cas, il faut également définir la classe par CssClass="std radiov" et pas simplement CssClass="std" pour que les options soient correctement alignées les unes sous les autres et pas cadrées complètement à gauche de l'écran.
jeudi 5 octobre 2006
Définition de données avec QC
Par Michel le jeudi 5 octobre 2006, 10:06
Les "pseudo-types" de données de QC présentaient quels types de données utiliser avec QC.
Pour parvenir à ce résultat, on peut créer les tables dont on a besoin directement dans Access, TOAD, SQL Server Enterprise Manager… pour la base de données cible en veillant à bien respecter ces consignes.
Puis, lorsque le besoin d'utiliser une autre base de données se présente, il suffit de recréer les tables à l'identique dans l'autre base de données. Si on a été un peu prévoyant et que l'on dispose des scripts SQL de création de la base de données, il est possible de les modifier à coup de rechercher / remplacer pour les traduire de la syntaxe de la base de données source dans celle la base de données cible.
- Avantage : on ne se complique pas la vie tant qu'on a pas besoin de changer de base de données.
- Inconvénient : pas toujours évident d'avoir des scripts à jour (ou de pouvoir les regénérer) et le rechercher / remplacer ne fait pas tout.
Lorsqu'il est très probable que l'application devra être multi bases (ou lorsque la base de données cible n'est pas encore définie au début du projet), il est possible de rédiger les scripts de création de la structure de la base de données directement dans une syntaxe "multi-base".
L'outil de requêtes disponible avec QC supporte un certain nombre de commandes DDL (Data Definition Language) qui couvrent la majorité des cas rencontrés dans les scripts de création et de mise à jour des tables d'une base de données relationnelle.
Créer une table, sa clé primaire et un index
/* Create table
*/
CREATE TABLE test_Parametres (
idParametre AUTOINCREMENT,
libelle TEXT(100)
);
GO;
/* Create primary key
*/
ALTER TABLE test_Parametres
ADD CONSTRAINT PK_test_Parametres PRIMARY KEY (idParametre);
GO;
/* Create index
*/
CREATE UNIQUE INDEX UK_test_Parametres_libelle ON test_Parametres (libelle);
GO;
Créer une table, une clé étrangère et un index
/* Create table and primary key
*/
CREATE TABLE test_Donnees (
idDonnee AUTOINCREMENT,
vraiFaux BOOLEAN,
petitEntier SMALLINT,
entier INT,
grandEntier BIGINT,
simplePrecision SINGLE,
doublePrecision DOUBLE,
desSous CURRENCY,
texteLong TEXT(2000),
texteCourt TEXT(100),
texteMemo MEMO,
jourHeure DATETIME,
idParametre INT,
CONSTRAINT PK_test_Donnees PRIMARY KEY (idDonnee)
);
GO;
/* Create foreign key
*/
ALTER TABLE test_Donnees
ADD CONSTRAINT FK_test_Donnees_Parametres FOREIGN KEY (idParametre)
REFERENCES test_Parametres (idParametre) ON DELETE CASCADE ON UPDATE CASCADE;
GO;
/* Create index
*/
CREATE INDEX IK_test_Donnees_texteCourt ON test_Donnees (texteCourt);
GO;
Notes :
- dans ce cas, la création de la clé primaire a été définie au niveau de la commande CREATE TABLE.
- ON UPDATE CASCADE n'est pas directement supporté avec Oracle
Modifier une table
/* Add a column
*/
ALTER TABLE test_Donnees ADD COLUMN autreChamp TEXT(50);
GO;
/* Modify a column
*/
ALTER TABLE test_Donnees MODIFY COLUMN autreChamp TEXT(100);
GO;
/* Rename a column
*/
ALTER TABLE test_Donnees RENAME COLUMN autreChamp TO autreTexte;
GO;
/* Remove a column
*/
ALTER TABLE test_Donnees DROP COLUMN autreTexte;
GO;
Note : RENAME COLUMN ne fonctionne pas avec Access et MySQL.
Faire du ménage
DROP TABLE test_Donnees;
GO;
DROP TABLE test_Parametres;
GO;
mercredi 4 octobre 2006
Google Gadgets sur mon site
Par Michel le mercredi 4 octobre 2006, 10:19
Pas mal! Google nous livre tout plein de petits trucs à inclure sur un site : des jeux (pacman, patience, sudoku…), des outils (cartes, calendrier, horloge, calculatrice…), des machins communicants (traduction, messenger, dictionnaire et même sms mais us only ?), etc…
Une fois réglé le petit souci de dimensionnement (dû à l’iframe ou à la css ?) tous ces gadgets Google semblent parfaitement utilisables via une boite Htmlfile de QC.
De quoi se faire un mini-mini Netvibes personnel pour pas cher et sans trop de boulot.
Vu sur Hotlinks
mercredi 27 septembre 2006
Les "pseudo-types" de données de QC
Par Michel le mercredi 27 septembre 2006, 17:42
QC étant destiné à être multi base de données, il est nécessaire de prendre un certain nombre de précautions pour tout ce qui concerne SQL, qu'il s'agisse des requêtes ou des types de données.
Pour les requêtes on verra plus tard, pour les types de données, c'est ici.
Pour faciliter le développement multi base de données voire simplifier la migration d'une base de données à l'autre, QC ne gère qu'un sous-ensemble de types de données, qui fonctionnent de façon plus ou moins identique dans la plupart des bases de données.
La liste des "pseudo-types" de données reconnues par QC est la suivante :
- AUTOINCREMENT
- BOOLEAN
- SMALLINT
- INT
- BIGINT
- SINGLE
- DOUBLE
- CURRENCY
- TEXT(2000)
- TEXT
- MEMO
- DATETIME
- DATE
- TIME
- BINDATA
Remarques :
- Pour le type de données TEXT, il faut impérativement définir une longueur comprise entre 1 et 255 ou strictement égale à 2000.
- Il est conseillé d'éviter d'utiliser des données de types CURRENCY (n'existe réellement que sous Access et Sql Server) et BINDATA.
- Le type DATE et le type TIME ne doivent pas être utilisés. Ils sont uniquement destinés à gérer des tables déjà existantes pour lesquelles il serait impossible de modifier le type de données.
Transposition pour une base de données Access
- AUTOINCREMENT : INT NOT NULL IDENTITY (1, 1)
- BOOLEAN : BIT
- SMALLINT : SMALLINT
- INT : INTEGER
- BIGINT : LONG
- SINGLE : REAL
- DOUBLE : DOUBLE PRECISION
- CURRENCY : MONEY
- TEXT(2000) : MEMO
- TEXT : TEXT
- MEMO : MEMO
- DATETIME : DATETIME
- DATE : DATE
- TIME : TIME
- BINDATA : IMAGE
Transposition pour une base de données Sql Server
- AUTOINCREMENT : INT NOT NULL IDENTITY (1, 1)
- BOOLEAN : BIT
- SMALLINT : SMALLINT
- INT : INTEGER
- BIGINT : BIGINT
- SINGLE : REAL
- DOUBLE : DOUBLE PRECISION
- CURRENCY : MONEY
- TEXT(2000) : NVARCHAR(2000)
- TEXT : NVARCHAR
- MEMO : NTEXT
- DATETIME : DATETIME
- DATE : DATETIME
- TIME : DATETIME
- BINDATA : IMAGE
Transposition pour une base de données Oracle
- AUTOINCREMENT : INT NOT NULL
- BOOLEAN : NUMBER(1,0)
- SMALLINT : NUMBER(5,0)
- INT : NUMBER(10,0)
- BIGINT : NUMBER(20,0)
- SINGLE : FLOAT(24)
- DOUBLE : FLOAT(48)
- CURRENCY : NUMBER(19,1)
- TEXT(2000) : VARCHAR2(2000)
- TEXT : VARCHAR2
- MEMO : CLOB
- DATETIME : DATE
- DATE : DATE
- TIME : DATE
- BINDATA : BLOB
Dans le cas du pseudo-type AUTOINCREMENT, l'incrémentation automatique est simulée à l'aide :
- d'une séquence SEQ_NomTable,
- d'un trigger before insert TRG_BI_NomTable
Transposition pour une base de données PostgreSQL
- AUTOINCREMENT : BIGSERIAL
- BOOLEAN : NUMERIC(1)
- SMALLINT : INT2
- INT : INT4
- BIGINT : INT8
- SINGLE : FLOAT4
- DOUBLE : FLOAT8
- CURRENCY : NUMERIC(16,4)
- TEXT(2000) : VARCHAR(2000)
- TEXT : VARCHAR
- MEMO : TEXT
- DATETIME : TIMESTAMP WITHOUT TIME ZONE
- DATE : DATE
- TIME : TIME
- BINDATA : BYTEA
Transposition pour une base de données MySQL
- AUTOINCREMENT : INT AUTO_INCREMENT
- BOOLEAN : TINYINT(1)
- SMALLINT : SMALLINT
- INT : INTEGER
- BIGINT : BIGINT
- SINGLE : FLOAT
- DOUBLE : DOUBLE PRECISION
- CURRENCY : DECIMAL(16,4)
- TEXT(2000) : TEXT
- TEXT : VARCHAR
- MEMO : MEDIUMTEXT
- DATETIME : DATETIME
- DATE : DATE
- TIME : TIME
- BINDATA : MEDIUMBLOB
mardi 26 septembre 2006
Déployer un projet QC sur un serveur ASP.NET
Par Michel le mardi 26 septembre 2006, 18:00
Créer le fichier QC_Deploy.bat sur C:\ ou D:\ selon que l'on travaille avec C:\Portals ou D:\Portals et y insérer les lignes suivantes (en modifiant D:\ en C:\ si nécessaire) :
IF "%1" == "" GOTO Finito
REM ---------- Recopie le répertoire principal
XCOPY D:\Portals\%1\*.* D:\Portals\%1_ftp\ /S /Y /EXCLUDE:D:\QC_deploy.txt
XCOPY D:\Portals\%1\*.css D:\Portals\%1_ftp\ /S /Y
:Finito
Créer également le fichier QC_Deploy.txt sur C:\ ou D:\ pour indiquer les fichiers à exclure du déploiement :
\Engine\bin
\Engine\refs
\Classic\bin
\Framework
\BDHelper
.pdb
.cs
.resx
.csproj
.sln
.webinfo
.bak
.sql
.zip
.rar
Dans le cas où il s'agit de déployer une solution basée sur le framework QC, il
est nécessaire d'ajouter le sous-répertoire bin des projets contenus dans la
solution après la ligne "\Classic\bin".
...
\Classic\bin
\Mon_Projet_Numero_1\bin
\Mon_Projet_Numero_2\bin
\Framework
...
Passer ensuite sous l'invite de commandes, sur la racine C:\ ou D:\, et taper la commande QC_Deploy qc puis appuyer sur Entrée. Cela crée un répertoire X:\Portals\qc_ftp qui ne contiend que les fichiers à déployer sans aucun fichier source ou autres fichiers inutiles. Il suffit alors de transférer (généralement par ftp) ces fichiers sur le serveur de production.
mercredi 20 septembre 2006
Trucs à faire
Par Michel le mercredi 20 septembre 2006, 10:03
Pour ne pas oublier :
- OK : Auto-login quand on est sur localhost,
- Tâche planifiée pour sauvegarder la base de donnée (si .mdb) lorsqu’elle a été modifiée (pour PI),
- OK : Gérer l’authentification par défaut sur smtp.gmail.com,
- OK : Problème sur le module Feedback quand on fait saisir un n° de téléphone.
Et aussi :
- OK : {@user.dns} et {@user.ip} pas gérés correctement dans _feedback.txt.
- OK : Générer _dumpdb_xxxxx.sql dans le sous-répertoire data.
Ayé! quasiment tout fait.
jeudi 29 juin 2006
Evolutions QC au 29 juin 2006
Par Michel le jeudi 29 juin 2006, 11:57
Récapitulatif de ce qui a été fait depuis le 29 mai 2006 :
- _logon.aspx.* : Prise en compte de copyrightGenerator
- BDHelper.cs : Ajout de List_Zip() pour OTT
- BDHelper.cs : Correction de la pseudo-fonction #DAYDATE sous DB2
- BDHelper.cs : Ajout de la pseudo-constante #NULLDATE
- viewLogin.ascx.cs : Utilise user.id et plus le code utilisateur saisi pour le cookie d'identification
- xxxMsnSearch.ascx.* : Homogénéisé par rapport à GoogleSearch
- xxxYahooSearch.ascx.* : Homogénéisé par rapport à GoogleSearch
- default.aspx : Corrigé les macros resourcePath en resourcepath et websiteUrl en websiteurl
- Global.asax.cs : Suppression d'un test pour la boite Documents
- Global.asax.cs : Ajout de la méthode veryBadBadBadMethod de OTT
mardi 30 mai 2006
(Wdevs) One can count only on oneself
Par Michel le mardi 30 mai 2006, 20:02
After the publication of the site for Arsac Voyages, I could note that it was not so easy to reference a website.
It's not a problem with the major search engine like Google, Msn Search or Yahoo. And it's ok with Dmoz too.
No, that becomes a deal when you want your site to appear on more local directories. In my case, I naturally wished to record it on directories about Ardèche.
And there, it's not very brilliant compared to search engine :
- many directories imperatively requires a back link
- a majority make only a redirection to your site (like goto.php?id=12345) and not a good old true real hard link
- there are also all those directories where you have to pay
What has also surprised me, it's the little number of links which these directories contain :
- some are really ridiculous with less than one about fifty links which display only after a long travel in an infernal tree structure
- in the best cases, most serious directories posts between 200 and 300 links, which seemed to me very poor : Ardeche is a "small" department, but not at this point :)
And to crown the whole, the process to submit a new site is not always very simple but on the other hand it's generally take several weeks to be recorded!
What has to arrive arrived. And I said to myself : I am not so stupid! I can make with QC a better directory than all these things.
Et voila, after a little programming and much input, there is not one but two new sites built with QC :
- 07-Ardeche.com - l'annuaire de l'Ardèche : my directory for Ardèche websites,
- 69.pagesd.info - l'annuaire du Rhône : Fred's directory for Rhône websites.
And once again, thanks to the magic of QC (and CSS :), its possible to obtain two different layout with tyhe same code base.
Edit : and 74 - Haute-Savoie - l'annuaire de la Haute-Savoie : Philippe's directory for Haute-Savoie websites.
« billets précédents - page 1 de 10
