The GamerLog project is an engine which collects log files (containing gamers and scores) to put them in a WEB portal, The platform provides some analysis functionalities on log datas, The plaform is developed with Clojure language with the WEB API Compojure
-
The data-loader namespace (/src/org/gamer/log/data/data_loader.clj): this namespace is responsible for loading data from the file system, storing logs in memory and querrying the memory databse (using the datalog language)
-
The statistics-engine namespace (/src/org/gamer/log/business/statistics_engine.clj): this namespace provides statistics operations (top-ten players, average and standard deviation of a given player across games and machines, or of a given game across players and machines, etc)
-
The pesenter namespace (/src/org/gamer/log/presentation/presenter.clj): this namespace is responsible of html view creation using the hiccup framework
-
The controller namespace (/src/org/gamer/log/controller/handler.clj): it's the central conroller o he application which receives and treats all client http requests
-
The config-manager namespace (/src/org/gamer/log/config/config_manager.clj): this namespace is responsible of loading properties from the gamer-log.properties (for the moment the only property we have is he path of scores logs)
-
The data-schedular namespace (/src/org/gamer/log/data/data_schedular.clj): this namespace is responsible for scheduling the data loader job.
You will need Leiningen 1.7.0 or above installed.
To store data in memoy and facilitate querying them i used the clojure implementation Datalog (clojure.contrib.datalog), i chose this in memory db implementation for two reasons:
- it's a light implementation, (we are not obliged start a db server or install other features to use it), in our project we need just to struture datas and facilitate querying them.
- it's based on the datalog querying language which is a strong querying language used in many fields.
the scheduling system which is responsible for loading data from the file system to memory is implemented with Quartzite framework which is based on the famous cheduling framework Quartz.
Steps to launch the application:
-
1- Change the application log path in the log4j.properties
-
2- Change the scores log path (the path in which the application will find the servers, games, players and scores)
-
3- Launch the following command inside the app directory
lein ring server
Copyright © 2014 Gamer-log