[Mailman-Developers] [GSoC 2012] Metrics

George Chatzisofroniou sophron at latthi.com
Tue Jun 5 23:59:56 CEST 2012


Hi,

Here's my report. As always, you can also read it in my blog [1].

--

The coding period has started. I’ve already learned a lot of stuff!

Although, I intended to have more work done by now. That’s why i’m
going to speed up in the following days.

Here’s what i’ve done so far:

- I documented the components of the app. I’ve documented storage of
counts, parsing of custom tags and generation of HTML output, basic
interfacing with mailman, coalescor (a daemon that cleans up the
database) and generator (that generates the metrics from scratch).

- I coded the most of my models using polymorphism solutions.

- I’ve described the syntax of my custom tags. The syntax is defined
by the BNF Language description below:

<graph_tag> ::= ‘{%’ ‘GRAPH’ ‘%}’ <on_the_y_axis> <on_the_x_axis>
<where_clause_or_default> ‘{%’ ‘ENDGRAPH’ ‘%}’

<tabulate_tag> := ‘{%’ ‘TABULATE’ ‘%}’ <on_the_y_axis> <on_the_x_axis>
<where_clause_or_default> ‘{%’ ‘ENDTABULATE’ ‘%}’

<on_the_y_axis> ::= <attribute>
| <on_the_y_axis> ‘, ‘ <attribute>

<attribute> ::= <metric_clause>
| <metric_clause> ‘BY’ <property>

<metric_clause> ::= <aggregation_interval> <event_counters>
| <measured_level>

<aggregation_interval> ::= ‘DAILY’
| ‘MONTHLY’
| ‘ANNUAL’
| (* Omitted. Default value: DAILY *)

<event_counters> ::= ‘posts’ (* The number of total posts *)
| ‘threads’ (* The number of total threads started *)

<measured_level> ::= ‘subscribers’ (* The number of total subscribers *)
<on_the_x_axis> ::= ‘FOR’ <time_period>
| ‘FROM’ <start_date> ‘TO’ <end_date>
| ‘SINCE’ <start_date>

<time_period> ::= ‘LAST MONTH’
| ‘LAST DAY’
| ‘YESTERDAY’
| ‘TODAY’
| ‘THIS MONTH’
| ‘THIS YEAR’
| <number> DAYS
| <number> MONTHS
| <number> YEARS

<start_date> ::= ‘YESTERDAY’
| ‘START OF THE MONTH’
| ‘START OF THE YEAR’
| <date>

<end_date> ::= ‘TODAY’
| ‘NOW’

<date> ::= YYYY-MM-DD (* International format defined by ISO (ISO 8601) *)

<where_clause_or_default> ::= <where_clause>
| (* Omitted. Default value: Ommited *)

<where_clause> ::= ‘WHERE’ <constraint>
| <where_clause> ‘AND’ <constraint>

<constraint> ::= <property> ‘STARTSWITH’ <prefix>
| <property> ‘IS’ <value>
| <property> ‘ENDSIN’ <suffix>

<prefix> ::= <literal_string>
<suffix> ::= <literal_string>
--

[1]: http://sophron.latthi.com/gsoc-mailman/

-- 
George Chatzisofroniou
sophron.latthi.com


More information about the Mailman-Developers mailing list