This page is part of a searchable archive of the Code Style site log. Technical implementation notes that shed light on when, why and how the site has evolved since 2000.
Follow the latest entries to the site log.
Added a new mode parameter to the XHTMLtoRSS XSL used by the Web Feed Generator to override its fragments mode where necessary. With an additional &mode=links parameter passed to the servlet controller, paragraph links mode is activated. Also updated the Javascript include stylesheet, XHTMLtoJS, and HTML demonstration feed XSL, XHTMLtoDemo, with the same option.
Actions: Ask a question about this post, seek clarification or offer a correction.
Refactored the log file analyser package to improve performance and reduce memory usage. Created a new two-tier data structure to map user agent identifiers to virtual sessions and individual requests for more efficient look-up and storage.
Added a method isAggregatorRequest to the Request interface and WebRequest class. Added a range of known robots and RSS aggregator agent identifiers to WebRequest to extend the isRobotRequest method and implement isAggregatorRequest. Altered WebRequest so that it uses the new static WebSession.joinSession(Request) method to log itself and stores a reference to its own session. Also added a checkAggregatorAgent method to the initialization checks, to record the type of request it represents.
Added getFirstPageRequest and getLastPageRequest methods to the Session interface and WebSession class. Also getStartDate and getEndDate, getDuration, isRobotSession and isAggregatorSession methods. Adopted the session handling methods from the working draft Analyser class and added a static count variable to track the total number of sessions.
Wrote-up command line arguments for the Analyser class in JavaDoc and added header field names to the CSV output. Also added figures for total referrers for start and end points of links.
Created a new FaqMenuGenerator class and launch script to maintain the SSI files for the Code Style FAQ section.
Actions: Ask a question about this post, seek clarification or offer a correction.
Raised the error level for logging the re-thrown IOException in the AbstractParseServlet to investigate and added the exception to the log to get a stack trace.
catch (IOException ioe) {
logger.error(
"AbstractParseServlet: doGet caught an IOException",
ioe);
}
Upon deployment, it turns out this exception is thrown when the HTTP connection is interrupted by a client and the servlet output pipe is broken. Not critical.
Actions: Ask a question about this post, seek clarification or offer a correction.
Processed Metacentric service logs for December and identified three new RSS user agents. Flock spoofs as Firefox and had previously been included under that heading. Protopage is a custom homepage service whose client also spoofs as Firefox. Xprss is an online aggregator and blog host.
Updated font survey results and added a SSI directive to the meta element of the parent pages to maintain dates automatically.
<meta name="DC.Date.modified" scheme="W3CDTF" content="<!--#flastmod virtual='/css/font-family/table-CombinedResults.htm'-->" />
Also updated copyright dates for various pages, scripts and server side includes.
Actions: Ask a question about this post, seek clarification or offer a correction.
Added proper date header parsing to AbstractMockHttpServletRequest to complete testing the new GoogleFilter class for Metacentric. Initially, the mock servlet request only handles one date format, which is the problem case with the Google FeedFetcher client:
"EEE, dd MMM yyyy HH:mm:ss zzz"
This parses dates in the form "Sun, 06 Nov 1994 08:49:37 GMT", as required by the HTTP specification.
Also added an explicit Locale.UK argument to the SimpleDateFormat used in the W3CDTF class.
Actions: Ask a question about this post, seek clarification or offer a correction.
Find technical implementation notes on all aspects of the Code Style site.
For a summary overview, see the annotated site log contents.