[Home]|[Project Management]|[Developer Info]|[Links]|[Contact]
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.
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
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
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 :
OPEN_CURSORS = 300000
NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS''
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].
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)
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 :
|
Les différents composants logiques du système logiciel sont répartis dans les différents packages en fonction de leur sémantique.
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.
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 |
... | ... | ... |
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 |
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 |
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.
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
.
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.
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.
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é.
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.
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.
TechnicalException
: apparaît lorsque le code rencontre une situation inconnue. Il peut
essayer de la gérer. Exemple : valeur incongrue dans un traitement
élémentaire.CriticalTechnicalException
: apparaît lorsque le code rencontre une situation inconnue. Il ne va pas essayer de la gérer. Exemple : impossible de se connecter à la base de données.BusinessException
: apparaît lorsque le code est apte à gérer une situation connue. Exemple : un traitement demandé par l'utilisateur ne peut être réalisé pour des raisons logiques.ParameterException
: apparaît lorsque le code est apte à gérer une situation connue. Exemple : des paramètres de requête spécifiés par l'utilisateur sont non valides par rapport aux limites de service imposées par l'application.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.
FileTrace
ModelingLa 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 :
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 :
Les deux grands types de runtimes utilisés dans l'application WASA sont :
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 :
ThreadConnectionManager.getInstance().getConnection();
forem.PersistentParam
)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 Update : connection closing is performed after a timeout by the driver
itself. Thus, simple TCM connection table cleanup is required.createConnection
method and performing a TCM connection table cleanup (closing the leaked
non-valid connections) then retrying the driver to create a connection.
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.
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.
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.
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 :
Alternatives :
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 |
/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
bellini6.ulb.ac.be
(alias wasa-dev.ulb.ac.be
)iseult2.ulb.ac.be
(alias wasa-demo.ulb.ac.be
, alias wasa.ulb.ac.be
)ys
informa1.ulb.ac.be
(alias eao1(eoa1?).ulb.ac.be
)resu1.ulb.ac.be
(alias www.ulb.ac.be
)Responsable de l'étude : Gérard Materna.
Solution retenue pour la conversion du HTML en XHTML et du XHTML en TXT : JTidy.
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/
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)
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.
A titre complémentaire, voici la version électronique au format PDF de mon TFE : Mise en ligne d'informations statistiques relatives à des serveurs web.
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