[Home]|[Project Management]|[Developer Info]|[Links]|[Contact]

Developer Info

Here comes the changelog of the QualiWeb project. Entries are presented in reverse chronological order. Text of some entries are in French. For translation to English, please contact the author.

20040712 : Procedure to Reset Test Database (WASA_DEV accessed from wasa-dev.ulb.ac.be)

1. Run on wasa-demo.ulb.ac.be (iseult2): /home/wasa/wasa/bin/ExportContentJournal.sh
2. Copy /tmp/export-CJ_XXXXXXX.csv to wasa-dev.ulb.ac.be, into directory C:\Wasa-MySQL\var\tmp\
3. In VAJ Run AdminTool with parameters: C:\\wasa-MySQL\\conf\\main.properties dropTables
4. In VAJ Run AdminTool with parameters: C:\\wasa-MySQL\\conf\\main.properties createTables (ignore error messages)
5. In VAJ Run AdminTool with parameters: C:\\wasa-MySQL\\conf\\main.properties populateTables
6. In VAJ Run AdminTool with parameters: C:\\wasa-MySQL\\conf\\main.properties importContentJournal wasa.ulb.ac.be C:\\wasa-MySQL\\tmp\\export-CJ_XXXXXXX.csv
7. Follow instructions in Console: copy CJ files from wasa-demo to wasa-dev, into directory C:\Wasa-MySQL\var\cj\wasa.ulb.ac.be\ ; and in MySQL ControlCenter run SQL command INSERT INTO KeyTable VALUES (ArchiveFileId, <number in console>)
8. Cleanup C:\wasa-MySQL\var\wasa.ulb.ac.be_analysed*.log to appropriate
9. In VAJ Run DailyBatch with parameters: C:\\wasa-MySQL\\conf\\main.properties

20020926 : semantic values

Nous introduisons les notions de présence et de diffusion.

La présence instantanée d'un mot est définie comme le nombre d'occurrences d'un mot mises en ligne à un instant donné :

La présence périodique (le terme "périodique" signifie ici "se rapportant à une période de temps" et non "cyclique de période donnée") d'un mot est la présence temporelle de ce mot intégrée sur une période de temps donnée :

Note : la notion de présence n'a de sens que pour les occurrences de mots dans des pages statiques.

La diffusion d'un mot sur une période donnée est le nombre d'occurrences de ce mot vues par l'ensemble des visiteurs du site, dans les pages statiques et dynamiques :

Note : cette valeur n'existe que sous sa forme périodique ; il n'y a pas de sens à parler de diffusion instantanée.

Nous voulons à présent pouvoir calculer ces valeurs à l'aide de WASA.

Nous commençons par la grandeur la plus simple à calculer : la diffusion. La transformation de son expression mathématique repose sur les constatations suivantes :

Les méthodes nécessaires dans WASA pour calculer cette grandeur sur base de cette expression sont :

La présence peut être réexprimée sur base d'une propriété des FileTraces : leur domaine d'existence sur une période de temps limitée (voir définition) fait que le nombre d'occurrences de tout mot est nul en dehors de cet intervalle de temps et constant dedans :

La valeur de l'intégrale de cette grandeur sur une période [t1,t2] vaut donc :

Dès lors, pour des FileTraces dont le domaine temporel d'existence est disjoint de la période [t1,t2], la valeur de cette intégrale est nulle. Cela apporte une simplification intéressante en terme de calcul puisqu'il n'est dès lors plus nécessaire d'instancier tous les objets FileTrace. Soit FileTrace[t1,t2] l'ensemble des FileTraces dont le domaine d'existence n'est pas disjoint de l'intervalle de temps [t1,t2], nous avons :

Les méthodes nécessaires dans WASA pour calculer cette grandeur sur base de cette expression sont :

La notion d'intérêt pourrait être définie comme suit :
intérêt = diffusion / présence périodique

20020823 : Oracle !

Oracle is very demanding in order to run WASA.

Oracle name server name is cs.ulb.ac.be on machine informa1.ulb.ac.be. SID (unique schema/DB id) is wasa, associated listener (= network service handler) is wasa.cs.ulb.ac.be and alias is WASA_DEMO. sqlplus requires user wasa_demo, associated password and 'chaine d'hote' WASA_DEMO (listener alias). JDBC requires URL : jdbc:oracle:thin:@informa1.ulb.ac.be:wasa (SID). Very confuse to me in a first approach.

DB parameters set in init.ora :

NLS_DATE_FORMAT allows to avoid the use of TO_DATE SQL function call everytime a date has to be specified, therefore using this as a default string format. Update : does not work ?!

Example of Unix Solaris commands :
dbshut
setenv ORACLE_SID wasa
sqlplus /nolog
> connect internal
> shutdown

Following up 20020430 entry about Oracle as standard database. Personal notes. The main reason to use a major commercial DBMS is the need of transaction management (commit/rollback). IBM DB2, IBM Informix and Oracle can do the job. MySQL is therefore excluded and will be dropped in the long term. What about postgresql ? Another decision has to be made for development DB platform OS : Linux or Solaris. Oracle is installed on a Sun Enterprise for Mohamed Minout's MurMur research. What about IBM DB2 on Linux ?

Note : DB2 run as is but requires some parameters tweaking to work properly with reasonable amount of data. DB2 docs discusses these parameters [http://www.ibm.com/cgi-bin/db2www/data/data/db2/udb/winos2unix/support/v7pubs.d2w/en_main].

20020822 : Creating tables

Table creation after program installation can be performed using the AdminTool createTable action. AbstractPersister.createTable method transforms varying data types into appropriate DB type :

Java type/Database Oracle 8i MySQL IBM DB2 UDB 7 Default
<LONG> INTEGER BIGINT BIGINT INTEGER
<STRING> VARCHAR(1023) TEXT VARCHAR(1023) VARCHAR(255)
<DATETIME> CHAR(19) DATETIME TIMESTAMP CHAR(19)

Note : DATE is acepted by all DB (must be standard SQL)

20020625 : package reorganization

Package Description
be.fnrs.wasa.* Common classes
be.fnrs.wasa.ca.* WASA-CA (Consultation Analysis)
be.fnrs.wasa.cj.* WASA-CJ (Content Journalling)
be.fnrs.wasa.dc.* WASA-DC (Dynamic Content)
be.fnrs.wasa.la.* WASA-LA (Lexical Analysis)
be.fnrs.wasa.net.* Network helpers and abstractions
be.fnrs.wasa.exception.* Exceptions
be.fnrs.wasa.framework.* Framework classes
be.fnrs.wasa.framework.db.* Framework classes related to DB persistence layer
be.fnrs.wasa.appl.*

Quite dirty package with :

  • application-specific organizing elements
  • application-specific tools & utils
  • batches

Les différents composants logiques du système logiciel sont répartis dans les différents packages en fonction de leur sémantique.

20020612 : meeting with www.ulb.ac.be webadmins

Discussion has been very interesting, concluding to a first common project : testing WASA-CA in order to have logs available at all times while reducting storage overhead.

Next stage is WASA-DC testing on a part of the new web server platform : web1.ulb.ac.be/<to be determined> under Apache 2.0, what requires mod_trace_output porting to Apache 2.0.

WASA-CJ and WASA-LA will be investigated in the future.

20020601 : semantic information (insight)

Définitions :

Occurrences de vue d'un terme sur une période donnée : nombre de fois que ce terme est apparu dans le navigateur des visiteurs pendant cette période.

Occurences statiques d'un terme à un moment donné : nombre de fois que ce terme apparaît dans une page statique proposée sur le site.

Densité de vue d'un terme : occurrences moyennes par jour

Densité statique d'une terme : occurrences moyennes par jour

Supposons que l'on dispose d'informations additionnelles : occurences de vue et statiques d'une liste de termes pour une période donnée.

Termes Densité de vue
[occurences/jour]
Densité statique
[occurences/jour]
linux 262 47
screen 102 12
display 45 4
adapter 41 3
I 16 3
me 9 2
... ... ...
Audience sémantique sur la période [13 mai 2002, 19 mai 2002]


Groupement de termes au sein d'entités conceptuelles

Si l'on définit la notion d'intérêt pour un terme/concept :

intérêt=demande/offre=densité de vue/densité statique

Concept Densité de vue
[occurences/jour]
Densité statique
[occurences/jour]
Intérêt
Technique 450 66 7
Egocentrisme 25 5 5

20020531 : 2001-2003 DEA seminars

Séminaire Intervenant Heures
Together 5 : UML OO Modeling H. Julsing, R. Lagarde 4
Together 6 : RUP Project Management H. Julsing, R. Lagarde 4
Dimension Data : IP Telephony Dimension Data 4
Spatio-temporal databases E. Zimanyi 4
Technical tutorship/coaching N. Postiaux 4
Entrepreneurship (ECULB) : les spin-offs J.-C. Ettinger 2
Business Planning (ECULB/IACE) O.Witmeur 3
Etude de marché (ECULB/IACE) D.Spindler 3
Stratégie de lancement d'entreprise (ECULB/IACE) I.Fromont 3
Sofware Engineering in Practice: Management of a 24/7 operational center L.Jacomet 2
A tool set to retrieve and analyse multilingual texts and to give users cross-lingual information access R. Steinberger 2

20020524 : ModTraceOutputTest

ModTraceOuputTest est un programme de test de validation du module Apache mod_trace_output.c de Gérard Materna.

Le fonctionnement de ModTraceOuputTest repose sur l'utilisation combinée de plusieurs sous-sytèmes de WASA :

L'idée du test implémenté est de comparer deux moyens de réaliser le même traçage d'audience : les pages statiques d'un serveur web. En effet, les capacités de mod_trace_output ne se limitent pas au traçage des pages dynamiques : les pages statiques peuvent également être tracées. Cette utilisation luxueuse du module doit normalement fournir les mêmes résultats que ceux obtenus référentiellement par l'application WASA. ModTraceOutputTest propose de vérifier cette équivalence.

Schéma de fonctionnement :

En bleu, les traces d'audience classique.
En vert, les traces d'audience de mod_trace_output.c.
En magenta, la comparaison des deux types de trace par ModTraceOutputTest.

Résultats de la comparaison entre WASA10 et mod_trace_output.c 1.1 : OK.

20020503 : Open subprojects

  1. Systèmes d'extension des serveurs web
  2. Présentation graphique de données
  3. Analyse sémantique de l'audience sur internet
  4. Mise en ligne stylée sur internet
  5. Modélisation temporelle d'un site internet complexe

20020502 : WASA-CA problem statement

L'objet de WASA-CA est de connaître la consultation des pages statiques d'un site web.

L'information de consultation est stockée par le site web dans les fichiers de log. WASA-CA traite les fichiers de log au format Combined Log Format : <clientHost> <*> [<dateTime> <*> <*> <uri> <*> <responseCode> <bytes> <refererUrl> <agent>

Pour plus d'informations sur les logs et en particulier les logs Apache, voir :

Le nombre de bytes en soi importe peu. Seul compte la valeur quotidienne afin de connaître le débit du site en bytes. Lors de l'analyse des fichiers de logs, je stocke uniquement en DB (table DailyCounters) la totalité par journée.

Le responseCode permet de connaître la nature de la consultation : PENDING : dresser la liste des codes et déterminer quelle action prendre.

Le clientHost est resolved par le programme rotate3, qui utilise ip2fqdn.pl. Il est important que cette résolution soit effectuée le plus tôt possible par rapport à la consultation, afin de garantir un resolving temporellement correct. En effet, les liens entre adresses IP et noms de machine changent avec le temps.

Seules les uri contenant une info sémantique sont intéressantes, càd celles finissant par .html, .htm et .txt.

Les fichiers de log sont d'abord récupérés en local. Je note chaque récupération dans le fichier ~/var/<webSiteName>_downloadedLogFiles.log. Ensuite, ils sont analysés et l'information essentielle est stockée en DB. Je note chaque analyse dans le fichier ~/var/<webSiteName>_analysedLogFiles.log.

20020501 : WASA subsytems

WASA-CJ description can be found in the Project Management page.

WASA-DC description can be partially found in the mod_trace_output.c page. The subsystem also downloads the traced files onto the stats machine (see Architecture diagram).

WASA-LA and WASA-CA can be found here around.

20020430 : Oracle as standard database

The main reason is the need of transaction management (commit/rollback). MySQL will be dropped in the long term. Decision has to be made for development DB platform OS : Linux or Solaris. Oracle is installed on a Sun Enterprise for Mohamed Minout's MurMur research.

commit() and rollback() methods will be implemented in the TCM.

20020426 : mod_trace_output.c

Le module Apache mod_trace_ouput.c (précédemment appelé mod_wasa.c et mod_file_output.c), en charge de Gérard Materna, TFEiste promu par le professeur Zimanyi, a été accepté comme projet SourceForge. Le hosting inclut une page d'accueil présentant les caractéristiques du projet et un espace de travail partagé.

20020416 : WASA-LA problem statement

A part of this subsystem has already been implemented by Gérard Materna, converting semi-structured files to text files with JTidy. Static files are handled as well as JSP files. JSP conversion is now deprecated by the much more generic mod_trace_output.c.

WASA-LA outline is the right zone delimited by the dashed line on the 20011101 vision diagram. The purpose of the application is to analyze text files in order to build a thesaurus of the appearing terms.

Une idée est d'utiliser comme base un dictionnaire des termes d'une langue donnée et d'en référencer les éléments dans la table d'occurrence.

What's needed now is a lexical parser. Input is the files generated with JTidy. Output is the table of occurrences. If no external dictionary is used, expected output also includes a table of all appearing terms.

20020411 : VAJ code transportation

Due to a bug in VAJ 3.5 jar exportation module (messy non-working source code is generated), it is recommended to export Java code under VAJ repository format (.dat). Considered text editor bugs are also annoying, upgrade to VAJ 4.0 is planned.

20020410 : error handling

20020403 : mise à jour du ContentJournal

Le principe de l'opération est de comparer l'état du contenu du WebSite actuellement connu dans WASA (A) avec le contenu réel (B). Soit C = A U B l'ensemble des fichiers au moment de la comparaison. Pour chaque URI de C on compare les timestamps de tA et de tB, et éventuellement les contenus cA et cB :

tA tB cA cB Action sous-jacente Download
X - DELETE
X Y X X REFRESH
X Y X Y UPDATE (content) X
- X INSERT X
X X -

La mise à jour du journal devrait idéalement être faite le plus tôt possible après chaque action sur le contenu du WebSite afin de traiter le plus précisément possible l'évolution du contenu affecté par l'action DELETE, la suppression d'un fichier ne laissant aucune trace du moment de cette action.

Si le batch quotidien détecte des actions, il devrait en avertir le propriétaire du site, avec copie à l'administrateur, afin de prévenir du non respect de cette directive car cela est préjudiciable pour les résultats escomptés de WASA (quantité de présence des concepts dans le site web). A moins que dans ce cadre, on se base sur des valeurs quotidiennes, ce qui reste à déterminer.

20020401 : FileTrace Modeling

La modélisation complexe du concept de FileTrace requiert une explication attenante.

Elle repose sur la constatation qu'à un instant donné, un WebSite met en ligne un certain nombre de fichiers :

Une particularité de cette association est qu'elle peut être qualifiée :

Ainsi représenté, à un instant donné, un WebSite met en ligne par URI (valide) un et un seul fichier. Nous n'envisageons bien sûr ici que les WebSites au contenu statique.

Dans l'application WASA, et en particulier dans son sous système WASA-CJ (gestion de contenu), nous souhaitons modéliser l'évolution temporelle de cete mise en ligne :

En réduction d'analyse, la qualification et la temporalité de l'association se retrouvent dans une classe intermédiaire FileTrace :

La nature de l'association a changé également : on ne s'intéresse plus tant à cce que le WebSite met en ligne qu'à l'historique de cette mise en ligne. Dès lors, l'association avec la classe WebSite apparaît comme peu naturelle.

L'introduction d'une nouvelle classe ContentJournal permet à la classe WebSite de lui déléguer la gestion de cet historique, restaurant ainsi la justesse du modèle :

20020329 : principes de fonctionnement du ThreadConnectionManager (TCM)

Toute application utilisant ce type de ConnectionManager doit disposer au lancement du runtime de 4 paramètres, qui permettent au TCM de se connecter à la base de données :

  1. Le ClassName du driver JDBC
  2. L'URL de connection
  3. UserName
  4. Password

Les deux grands types de runtimes utilisés dans l'application WASA sont :

  1. Standalone (acteur batch, généralement single-thread séquentiel)
  2. Web-enabled (acteur internaute, multi-thread)

Illustrons par des sequence diagrams l'utilisation du TCM par ces deux types de runtime :


Standalone, single-threaded, ThreadConnectionManager call


Web-enabled, multi-threaded, TCM call

Avantages du TCM :

Désavantages du TCM :

Connection leaking :

There is a risk of connection leaking due to calling code that would forget to close the thread connection. Overflow is avoided by catching the driver exception thrown from the createConnection method and performing a TCM connection table cleanup (closing the leaked non-valid connections) then retrying the driver to create a connection. Update : connection closing is performed after a timeout by the driver itself. Thus, simple TCM connection table cleanup is required.

20020322 : liens sur les ontologies

Le Computer Research Laboratory de New Mexico [http://clr.nmsu.edu/] mène de nombreuses recherches intéressantes dans ce domaine. Si nécessaire, envisager un partenariat sur base d'un beta testing par exemple.

20020310 : architecture WASA Phase 1

En bleu, l'environnement de développement et de test.
En rouge, les éléments encore à inclure dans le développement.
En orange, les éléments en cours de développement.
En vert, les éléments fonctionnels.

Update 20020329 : dans l'application WASA, les layers Business Objects (BO) et Persistent Layer (PL) seront désormais logiquement réunies en un business kernel au sein duquel les deux layers sont confondus et peuvent être utilisés indépendamment par le reste de l'application. Ceci permet de simplifier les deux couches et d'éviter les redondances comme le wrapping dans la couche BO des get du PL.

20020319 : WASA-CJ class diagram

Here comes a (French) description of the Qualiweb model, inspired from the original WASA model. For more info on the model, please read Chapter 9. Implementation of Dr. Jean-Pierre Norguet's Ph.D. thesis Semantic Analysis in Web Usage Mining.

Update 20020331 : description des rôles des classes majeures.

Ce diagramme de classe est centré autour d'une classe WebSite. Aucun comportement n'est planifié pour la classe WebSite. Son rôle est de représenter l'élément réel correspondant et de coordonner différentes classes subordonnées comme ContentJournal.

La classe ContentJournal reçoit comme déleguée la tâche de tenir le journal du contenu d'un WebSite. Le petit Robert définit un journal comme un écrit portant la relation quotidienne des événements. Dans ce cas-ci, le ContentJournal gère la liste des traces des fichiers ayant été mis en ligne sur le WebSite. Il assure par exemple la récupération d'un fichier et la mise à jour des traces en parcourant quotidiennement le ContentDirectory du WebSite.

Le ContentJournal collabore activement avec le FilePersister qui est responsable du stockage SQL des traces de fichiers. Chaque ContentJournal dispose de son propre objet FilePersister étiquetté à son service.

20020306 : Java libraries

Java components libraries can be found on wasa-demo in /opt/javalibs/
Libraries can be auto-included in JVMs by symlinking in ~java/lib/ : ext/ --> /opt/javalibs/

So far, the components are :

  1. JNetBeans FTP bean, attention : support inexistant et pas de source, ne supporte pas les symlinks du serveur www.ulb.ac.be [http://www.java-shop.com/jnet.html]
  2. mySQL driver http://www.mysql.com/
  3. Jakarta ORO http://jakarta.apache.org/oro/
  4. JTidy http://sourceforge.net/projects/jtidy/
  5. Xerces 2 Java http://xml.apache.org/xerces2-j/
  6. Kavachart http://www.ve.com/
  7. JavaMail API http://java.sun.com/products/javamail/
  8. JavaBeans Activation Framework http://java.sun.com/products/javabeans/glasgow/jaf.html

Alternatives :

20020306 : liste des batches

Activation sur machine linux : crontab -e

WASA daily batch wrapper : ${WASA_DIR}/bin/DailyBatch.sh

Task Name Machine Periodicity Language Install requirements
rotate logs rotate3 web site (ex : wasa.ulb.ac.be) daily shell PERL, ip2fqdn, GNU date
journal content be.fnrs.wasa.WebSite.getContentJournal() stats (ex : wasa-demo.ulb.ac.be) daily or on-demand Java Java, WASA
recup logs be.fnrs.wasa.DailyBatch stats (ex : wasa-demo.ulb.ac.be daily or hardlier Java Java, WASA

20020305 : installations sur wasa-demo

/usr/local/bin/java --> /opt/java/bin/java donne accès à la machine virtuelle Java à tous les utilisateurs de la machine (attendu que les shell de la debian mettent par défaut /usr/local/bin/ dans le PATH par défaut)

/opt/tomcat

20020227 : machines du projet WASA

20020220 : déformatage de fichiers web dynamiques et/ou semi-structurés

Responsable de l'étude : Gérard Materna.

Solution retenue pour la conversion du HTML en XHTML et du XHTML en TXT : JTidy.

20020206 : Installation instructions

Packaging hierarchy :

/bin/DailyBatch.sh
/lib/wasa.jar --> wasaXXX.jar (XXX = numéro de version)
/var/ --> runtime data dir : this directory full path has to be specified in the Configuration ; for the rest, the WASA application is independant of the system and directory it is installed in.
/var/<wasa-subsystem-acronym>/<webSiteName>/ (ex : /var/cj/wasa.ulb.ac.be/)
/conf/
/tmp/
/log/
/online/
/javadoc/

Sur wasa-demo : WASA deployment directory = /home/wasa/wasa/

20020206 : session context

field type description
beginDate Calendar beginning of the stat observation period, into which the user is interested
endDate Calendar end of the stat observation period, into which the user is interested
currentUri String URI of interest to the user
userName ? ?
target/webSite String target/website id

beginDate : date de lancée de site. Cette journée peut être incomplète si le lancement n'est pas réalisé à 00h00 ; cela ne pose a priori pas de problème.

endDate : date de dernier dépouillement (ex : si le batch tourne le 20020219 à 01h00, endDate = 20020218)

20011101 : vision

20011008 : questions préliminaires au développement de WASA-CJ

20011108 : update

Voici les premières questions à se poser pour le déploiement d'un logiciel d'analyse sémantique d'audience des sites internet.

20011002 : TFE

A titre complémentaire, voici la version électronique au format PDF de mon TFE : Mise en ligne d'informations statistiques relatives à des serveurs web.

20011001 : sujet

Mise en ligne d'informations relatives à l'analyse sémantique de la consultation de sites web dont le contenu présente une évolution temporelle complexe et une mise en forme à la fois statique et dynamique.

Setting on-line information relative to web site consultation semantic analysis where the site content presents a complex temporal evolution and is both statically and dynamically formatted.

Voir le texte complet du projet présenté au FNRS.


© Jean-Pierre Norguet, aspirant FNRS, 2001-2005