-=- -=- -=- -=- MagicStats 2.0 Change Log -=- -=- -=- -=-
Version 2.0pr14: 3/12/01
1. 11/20/00 - Made the source "-W clean". Now we compile with -W & -Wall.
2. 12/04/00 - Made the DailySummaryPlugin work correctly for monthly pages.
3. 03/02/01 - Fixed a crasher in AccessLog.cpp
4. 03/12/01 - Do not parse -I,-D commandline args, don't print them for -H
5. 03/12/01 - The Dejavu theme is significantly cleaned up and nicer. Now
the referrer section should not contain self referring URLs.
6. 03/12/01 - New, simpler, syntax for specifying themes is implemented:
instead of [theme:name] you can now just use [[theme]]
Version 2.0pr13: 11/19/00
1. 11/11/00 - Made the count plugin ignore the string ""
2. 11/11/00 - Added way cool functionality to the skel file parser to allow
it to handle very complex function expressions and evaluations,
including passing functions to functions, partial evaluation,
and several useful built in functions.
3. 11/12/00 - Fixed the Fancy theme so that it filters out referrers that are
not from the local site. This makes extensive use of functions
described in #2, and serves as a very good testcase for them.
4. 11/12/00 - In order to use new functionality, filters must be specified in
list form now. Crappy to *BREAK BACKWARDS COMPATIBILITY*, but
*much* better in the long run!
5. 11/17/00 - New Truncate AccessFilter.
6. 11/19/00 - Renamed UnescapeURL plugin to just "Unescape".
Version 2.0pr12: 11/05/00
1. 11/03/00 - Added ALT tags to the breakout plugin so that Lynx likes
MagicStats again.
2. 11/04/00 - Added Referrer info to the Details page of the Fancy theme.
3. 11/04/00 - Fixed case bug in field selection. This could have caused
filters to not match right.
4. 11/04/00 - Generalized host and page count plugins to be able to count
any type of information. Now known as the "Count" plugin.
5. 11/05/00 - Skel files can now use list expressions ( [xxx,xxx] )
6. 11/05/00 - Added a table of the most common referrers to the Fancy theme.
Version 2.0pr11: 11/03/00
1. 11/02/00 - Added logic to AFUnescapeURL filter to merge //'s.
2. 11/02/00 - Allow data tables to contain links based on the contents of
a row. Used in Fancy Theme to link hosts to details page.
3. 11/02/00 - Fixed very minor bugs in Fancy theme.
4. 11/02/00 - Can now treat "magic" MSInsert variables as $(Variables). For
example, to get the page date, use $(MS.Date:Format=Long).
5. 11/03/00 - Documentation from the web site is now included in the source
and install distribution.
Version 2.0pr10: 10/22/00
1. 10/22/00 - Fixed bug reading MSDOS style logs in unix.
2. 10/22/00 - Fixed unix filename expansion problem with logs (~ expansion)
3. 10/22/00 - Removed some gross string debug stuff (only enabled in _g
builds anyways.)
4. 10/22/00 - Fixed bug preventing serialization of AccessFormatPlugins.
5. 10/22/00 - New IIS4.0 compatible AccessFormat plugin...
Version 2.0pr9: 10/16/00
1. 10/16/00 - Many portability fixes. Now compiles "out of the box" on
Win32 platforms with Visual C++ 6.0.
2. 10/16/00 - New Installation Guide. Describes Unix/Win32 install steps.
3. 10/16/00 - Graph plugin added to build tree (in /StatsGraph)
Version 2.0pr8: 10/10/00
1. 10/09/00 - Fixed minor bugs in StatsGraph graph applet
2. 10/09/00 - Fixed bugs in themes that were referring to Graph.java.ImgUrl
instead of Graph.Java.ImageURL
3. 10/10/00 - Fixed SEGV when referencing an undefined variable
4. 10/10/00 - Moved initialization of MSOptions::GetBuiltInPluginResURL(),
earlier (right when it is first known).
5. 10/10/00 - Added a new theme accessable variable $(MS.BuiltInURL)
Version 2.0pr7: 09/24/00
1. 08/30/00 - Made a rudimentary web page for MS2.0
2. 09/24/00 - Fixed bugs in PageBreakout and DetailBreakout plugins to get
rid of extraneous http:/ & http:// breakouts...
3. 09/24/00 - Export regular expression matching functionality to plugins.
4. 09/24/00 - Add ability to get regex match span
5. 09/24/00 - New plugin! Rewrite plugin to allow access modification by
by arbitrary regex's
Version 2.0pr6: 09/16/00
1. 08/30/00 - Fixed ElapsedSeconds bug to make it accurately report time.
2. 08/30/00 - Updated a lot of documentation...
3. 08/30/00 - Implemented cached skel files. Sped up performance a lot on
runs that produced stats for many days... doesn't just leak
skel mem now (it still isn't free'd, but at least it's reused).
4. 08/31/00 - Strings are shared (performance win!)
//, including their hash values
5. 09/01/00 - Added Browser and Referrer support. Made AfCommonLog plugin
able to parse extra fields appended to the end of the CLF
records.
6. 09/01/00 - Added a SIGINT handler to allow clean interruption of M.S.
7. 09/01/00 - Added MSInsert=MSCopyright to assist with theme maintenance.
8. 09/01/00 - Chasing through SkelFiles with interation instead of recursion.
9. 09/03/00 - Abstracted tree generation code out of PPPathBreakout plugin
into a "BreakoutRenderer" API.
10. 09/04/00 - Added serialization methods for DataPair's, Table's, Arrays,
and LinkedList's. Created SerializeEx.h header file.
11. 09/04/00 - Created the DetailedBreakout plugin, and the Fancy Theme.
12. 09/05/00 - Changed Copyright Flags back to me as Cherokee died.
Version 2.0pr5: 01/27/00
1. Totally restructured build structure to use recursive makes and seperate
install mechanisms.
2. Themes and Documentation is now part of the build structure.
3. Converted some documentation to SDF format.
4. Started prototyping configuration applet.
5. Plugins now have full dependancy information.
6. Fixed Seek bug in FSGZipped plugin.
7. Added comma operator to ConfigFile parser so that lists can be created.
This changed a lot of code, because now variables are bound to
expressions, which may be a string, or may be a list of subexpressions.
8. AccessLogPlugins have been removed, now they are handled by the AccessLog
class in a uniform way. Domain names may now be associated with access
logs.
9. Multiple (unrelated) access logs may be read from at the same time.
10. New Domainify plugin created: Plugins/AFDomainify
Version 2.0pr4: 05/11/99
1. Changed Skel File processing to use flex and bison. Much more efficient,
also allows the use of more complex expressions in MSInsert and MSPlugin
tags, as well as the new MSIF tags.
2. Changed the Config Files to use flex and bison. Same bennies as above.
3. Changed MagicStats.cpp to use MagicStats Engine plugins... interesting,
the possibilites suddenly become limitless.
4. Dramatically restructured config file flow to reflect #1 & #2 above, many
fewer special cases. Fixed DateEnum plugin.
5. Made MSFilename be an immutable class that no longer derives from String.
Benefits: Efficiency, reduction of confusion, can now merge //'s into a
single / under unix without a big performance hit.
6. Added the -lint option. It seems to work.
Version 2.0pr3: 02/12/99
1. Reworked Plugin API so that plugins may be created with meta data, not
just a filename. This enabled a reworking of the FileStreamPlugin's.
Stuff makes more sense now.
2. Optimized some string routines... much faster now...
3. Changed API to use MSAPI declarations... which under windows, causes them
to be marked as __declspec(dllimport) or __declspec(dllexport) in a plugin
or in the main MagicStats tree, respectively. This allows plugins to be
built under windows...
4. Changed copyright flags to say copyright Cherokee Communications, Inc.
5. Changed all copyright messages in source files to Cherokee
6. Added a few new plugins.
Version 2.0pr2a,b: 12/02/98
1. Added the FileStream abstraction, in anticipation of supporting compressed
log files and writing a compressed MagicStats.dat file.
2. Added FileStreamPlugin capabilities...
3. Added FSNormal and related classes for dealing with normal uncompressed &
unencrypted files.
4. Now uses PCRE for RegEx's instead of code by Henry Spencer.
5. Changed the MSLoadContext class so that it finds all available themes,
also ended up renaming it to ThemeManager.
6. Added -T commandline option for listing all available themes.
7. Combined Directory scanning functions for plugins and themes to make
porting layer (platform specific layer) smaller.
8. Increased performance of String class by not allocating space for empty
string.
9. Fix wierdness in string class that allowed "SetLength" to be called...
10. Made MSOptions class completely static. All member variables are now
static, which makes passing and maintaining pointers to an MSOptions
variable useless and dumb (sped it up too).
Version 2.0pr2: 10/23/98
1. Fixed crash that occured when MagicStats.cfg file was not found.
2. Fixed some unused code to be correct.
3. Fixed a portability problem that was because of an endian dependancy.
4. Fixed problem that caused web pages to be skipped when a server didn't
get any hits on a certain day.
5. Generalized Plugin model so all plugins are serialized to disk.
6. Added -P option to print out the available plugins.
7. Modified PageCountPlugin to actually link to the pages...
8. Added LinkedList Iterators for navigating linked lists.
9. Implemented the new filtering mechanism, incorporating regexps...
10. Created the PlatformAbstraction class for putting platform dependant stuff
into. This is a better solution than UnixStuff.(h|cpp) was...
11. Modularized Access class so that it may be virtualized... and implemented
AccessFormatPlugins.
12. Added dynamic loading of plugins in Unix target!!!
13. Changed to a templated Plugin model for more terse plugin descriptions.
This change also removed the need to have PluginTables and redundant
information (which could lead to inconsistencies)
14. Compiled on Solaris for OHSU release.
Version 2.0a13: 6/27/98
1. Implemented AccessFilters!
2. Reduced compile time dependancies by forward declaring some classes rather
than #including everything...
3. Fixed the kludge to share code between the OutputManager and PluginManager
classes. Created new HTMLManager class.
4. Consolidated all wierd ways to _create_ plugins into the
Plugin::CreatePlugin static method.
5. Cleaned up the plugin interface some so that things are more consistant,
and so that the Plugin constructor actually does useful initialization...
6. Changed the main() manager initialization scheme to be more sane... and so
the Managers use references to Options rather than pointers.
Version 2.0a12: 6/14/98
1. Changed the Table class to use a HashTable back end instead of a binary
search tree. This eliminated the problem that I encountered with linear
time search performance (Keys were being serialized in a sorted order and
later inserted into a tree in that sorted order).
2. Added the display of debugging information to serialization and
deserialization of plugins routine in PluginManager.
3. Fixed division by zero bug in DailySummaryPlugin plugin...
4. Added a FilterURL method in the Access class as a temporary measure to
remove index.html, index.shtml, and index.htm postfixes.
5. Changed Plugins to all keep track of the version numbers that they were
using.
6. Updated Dejavu theme to have some more modern features...
Version 2.0a11: 5/28/98
1. Fixed the SummaryPlugin so that it works for all update frequencies.
2. Modified Plugin loading structure to use a unified model for all plugin
types. Also made preloading of Page Plugins unneccesary. Remove
PluginNode class.
3. Modified plugins to use a reference to the Options class instead of a
pointer.
Version 2.0a10: 5/21/98
1. Fixed bug in access class that cause spurious resets of the data. Parsing
of the access was failing on multiword authentication strings. This
caused the year to be reported wrong, reseting all of the data.
2. Change the String::Tokenize function to behave slightly different.
3. Fixed some bugs resulting in the change to Tokenize... the code actually
makes more sense now, imagine that.
4. #ifdef'd the #pragma once directives to make gcc stop whining...
5. Modified the MSLoadContext class to support passing URLs into the page
templates...
6. Implemented the $ThemeBase variable for Themes to know where to get their
shared resources.
7. Transfered some stuff from paper notes into TODO list...
8. Added Themes to SourceSafe.
Version 2.0a9: 5/9/98
1. Serialize class added for serializing and deserializing data. It is
extensible enough to allow arbitrary data types to be added.
2. Changed PluginManager class and Plugins to serialize this way instead of
directly to a file.
3. Chanded the serialization class to treat all signed integer types the
same and all unsigned integer types the same. This allowed compression
of data, resulting in significant savings in data file.
4. Made the FilterManager and AccessLogManager classes static so that
strange don't need to be passed around any more. This removes some
ugliness from the main function as well...
5. Made PluginManager serialize the current AccessLog object, instead of
the hardcoded position in the access log file.
6. Improved ALMonolithic class to support versioning when serialized for
the future.
Version 2.0a8: 5/3/98
1. Reworked Table class. Now the [] operator can be used on the left side
of the equation successfully. Ex: T[Key] = NewValue;
2. Modified ConfigFileSection Class to return references to table objects
instead of pointers to them.
3. Switched HostCountPlugin to use Table instead of LinkedList for efficiency.
4. Enabled pluggable AccessLog objects for different format AccessLogs
Version 2.0a7:
1. Completely changed Object hierarchy. Removed String Compare as a required
function for Objects to implement.
2. Fixed memory leaks in String class.
3. Implemented Table class.
4. Added Tree classes and stack class.
Version 2.0pr1 (Preview Release 1): 2/25/98
1. Created makefile for unix.
2. Fixed problems compiling on GCC.
3. Renamed many classes.
4. Added MSFilename class to dereference tildes automatically on Unix.
5. Segregated platform specific code more logically into files.
6. Renamed classes for consistant capitalization
7. Enabled automatic registration of plugins, using INIT_PLUGIN macro
Version 2.0a6:
1. Added FilterManager class
2. Made Filter class cache recent results... Improved performance a bunch.
3. Update MagicStats.h file to take care of platform dependents stuff
4. Made a cool makefile for unix.
Version 2.0a5: 1/26/98
1. Fixed filter problem accepting *.gif or *. anything...
2. Switched LinkedList sorting algorithm to mergesort rather than bubblesort
3. Created DataTable and DataGraph classes to ease interfacing with the graph
Java applet. This simplifies all of the plugins and makes their
OutputHTML function much simpler and cleaner.
4. Added LinkedListPtr class.
Version 2.0a4: 1/12/98
1. Improved comments.
2. Implemented Server Configuration File loading.
3. Added to the TODO list.
Version 2.0a3: 1/11/98
1. Cleaned up Plugin API to use more descriptive names.
2. Fixed String class so that it was able to be used in a collection.
3. Fixed date class so that it can be used in a collection. Required adding
a constructor for making dates from Strings, and adding Compare function
for use with Strings.
Version 2.0a2: 12/19/97
1. Switched over to a template based linked list setup instead of one based
on inheritance. This removes the need to constantly do typecasting of
variables and other bad things.
2. Added version numbering note.
3. Created TODO list.
Monday, 12-Mar-2001 21:06:13 PST |