The Code Style site has evolved by gradual refinement and accumulation of features and content. This review is part of a fully backdated site log and archive that sheds light on when, why and how particular features were implemented.
This log is sometimes updated several times per week, sometimes with a long overdue backlog of items. Many log entries refer to the Code Style Java package, which delivers the servlet services and utilities used to manage this site.
Subscribe to the news feed for this log:
Created a new Navigable interface for navigable document content for implementation in abstract template documents, plus a first draft XhtmlTemplate.
Added DOCTYPE and LANGUAGE fields to the draft CodeStyleTemplate class, plus new getHeader(String title), getIntro(String intro), getContent(String content) and getFooter() methods from the Presentable interface.
Introduced getIntro(String intro) and getContent(String content) methods to the Presentable interface to wrap body text in template-specific markup.
Added a standard getServletInfo() method to the ViewSequence and ViewSource servlets. Simplified the exception handling in ViewSource and finished the JavaDoc comments.
Reviewed and updated the JavaDoc comments in the DBResults class with @since tokens and removed the interim fontFrequencyTable method.
Removed the deprecated final static LOGOOBJECT field from the ServletUtilities helper class because it is no longer used or referenced.
Latest updates to the Code Style font survey results:
Commented out all methods except getElementNames(boolean distinct) and size() in the draft Discoverable interface to assist implementation in the Metadata class. Changed Metadatum from an interface to an abstract object with no abstract fields or methods. This class has accessors but no mutators to ensure that each metadatum is created atomically.
Implemented the Discoverable interface methods getElementNames(boolean distinct) in the new Metadata class, plus a private getDistinctElementNames() and public size() method. Metadata uses a Vector to store all Metadatum components.
Re-packaged the Sequence class in org.codestyle.model. Introduced a HashMap for all sequence properties via a Map interface and removed all mutator methods so that Sequence properties cannot be modified independently. Decanted the referrer property to the implementation-specific ViewableSequence class.
Completed the JavaDoc comments for the Viewable interface.
Added the new org.codestyle.model and org.codestyle.view packages to the JavaDoc packages file and tested.
Re-packaged the SequenceFactory class in the org.codestyle.model package and re-structured the validation checks so that the Sequence type check is last.
Changed the copyright date on the site search results page, Copyright, terms and conditions, Privacy statement and p3p-Full.xml policy file, and the generic metadata include file for the site.
Re-structured all link navigation include files by moving all generic links into the generic metadata include file for the whole site and standardising the links included at the section and subsection level. Abandoned individual link navigation files for each media specific test document in the CSS media monitor subsection, to reference the main subsection link navigation.
Removed all references to the former CSSSelector servlet and abandoned this project.
Created a Server Side Include file of the top three Windows font survey results for inclusion on the home page and elsewhere.
Changed the copyright date on the master include file for all link navigation and removed the email address. Updated the copyright date in all document footer include files.
Changed the bar chart image reference in the FontStats.xsl XSLT to use a new lilac bar image, bar-12px99C.gif:
. Updated all font results tables with this new image reference and added these tables to the master documents via Server Side Include.
Trimmed the Combined font survey results down to the top 40 fonts for all platforms and added a separate Combined font results (full) document (approximately 100 KB) for reference.
Added a combined results link to the Code Style font sampler navigation menu and Font sampler contents, and a generic subsection navigation menu to the subsection index page.
Made some final markup adjustments to the new EchoHeaders servlet including specific table column widths and privacy information.
Finished a new answer for FAQ: Cascading Style Sheets on styling the browser window chrome, and FAQ: Java servlets on the potential causes of browser specific server errors.
Created a first draft JAXP StylesheetCache based on the example in Java and XSLT by Eric Burke.
Made some minor text amendments to the Anchor Points: HTML & XHTML sections on markup validators and DOCTYPE interpretation, and the FAQ: Java servlets page.
Added an alias to the servlet zone configuration file for the new EchoRequest servlet.
Added a new platform element to FontStats.dtd and amended the row element optionally to contain it. Implemented platform element processing in the FontStats.xsl XSLT to generate combined cross-platform font results tables, as well as plaform-specific ones. Amended the FontStats class to generate a combined font results table as source for the transformation.
Produced the first Combined font survey results, with a full listing of all fonts surveyed, a new SQL script to generate a plain text version for email notification, and a script to generate the relevant mailing list. Also produced an SQL script for calculating the rate of submission for each survey, as mentioned on the results pages.
Added a validate parameter to the draft JAXP servlet optionally to request validation of the XML source.
Created a new draft EchoRequest servlet to list all request headers and query parameters.
Made some minor text amendments to the Anchor Points: Cascading Style Sheets page and added a new draft answer to FAQ: Java servlets on possible causes of HTTP 500, Internal Server Error, with specific browsers.
Created a new SQL script for generating combined font survey results prior to inclusion in the Java FontStats class for XML output.
Made finishing touches to the adapted Ant documentation XSLT, adding xsl:import and xsl:call-template elements for newly created sidebar and footbar templates in standard Code Style format. Also added the XHTML namespace URI and an exclude-result-prefixes attribute to the xsl:stylesheet element to suppress empty xmlns attributes in the result elements:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="xhtml #default">
Tested each of the Ant targets for the standard build script and added status information to each. The targets have the general sequence: init, backup, clean, prepare, compile, deploy.
There are three sets of build targets, dev, test and live. These have separate tasks for deploying the servlet zone configuration files independently of the compiled classes. For instance, deploy.live deploys just the compiled classes, while deploy.live.conf deploys the configuration files only. The deploy.live.full target deploys all.
Copies of the filters files for the production environment are kept locally and renamed on upload to the live site, e.g. remote.live.filters is renamed local.live.filters.
The JavaDoc target is currently disabled because this task crashes Windows ME with Ant 1.5.
Finally tested all the .test build targets on the production host and corrected some bad path references in the filters files.
Created a new set of classes to represent Dublin Core metadata: an abstract Metadatum, a Discoverable interface and concrete DCMetadatum object. Also created a Presentable interface for abstract document types such as templates and a draft CodeStyleTemplate implementation, ultimately to supersede the multi-purpose ServletUtilities class. Made several fields and methods private because they are only used internally.
Adjusted the AnchorPoints servlet to ensure only HTTP requests are forwarded. Reviewed and edited the JavaDoc comments in the CSSSelector and draft JAXP transformation servlet.
Added Amazon links for Java and XSLT by Eric Burke to the generic section and subsection boxout menus.
Created an adapted version of AntDoc.xslt from an example in Java and XSLT by Eric Burke for summarising the targets and dependencies for the Code Style build file. Required some corrections to the original version to produce the global properties table:
...
<xsl:template name="globalProperties">
<!-- ERRATA
This test should be for "target/property",
not "property" -->
<xsl:if
test="target/property">
<table
summary="A list of global properties
and their values">
<caption>
A list of global properties and their values
</caption>
<thead>
<tr>
<th>
Name
</th>
<th>
Value
</th>
</tr>
</thead>
<tbody>
<!-- ERRATA
This select should be on "target/property",
not "property" -->
<xsl:apply-templates
select="target/property"
mode="tableRow">
<xsl:sort
select="@name"/>
</xsl:apply-templates>
</tbody>
</table>
</xsl:if>
</xsl:template>
...
Created new SequenceFactory for instantiating ViewableSequence objects, which are an extension of Sequence objects, and renamed ViewImages to ViewSequence to reflect this abstraction. Moved some of the implementation-specific methods of the Sequence class to the Viewable interface. The SequenceFactory instantiates the appropriate sequence type for a given servlet request. Updated the servlet alias to the new name.
Added a set of ViewSequence requests to the Apache JServ on Windows 95 article (offline) to test the servlet.
Added a new answer to the FAQ: Javascript & DOM on reading CSS file properties using Javascript.
Added a Dublin Core DC.Description.abstract entry to the Who is Philip Shaw? page and brought the text up to date. Also corrected a markup comment in the Help and FAQ section link navigation include file.
Added a new answer to the Font sampler and survey FAQ on Mac OS X fonts that are apparently "missing" from the current survey.
Added an example email header to the article feedback acknowledgement screen for subscribers to adjust anti-spam filters where necessary.
Added a new pattern match to the validation script for the codestyle_fonts database to identify Mozilla on Windows ME; the user agent string matches like '%Win 9x 4.90%'. Also added a check to the browser update script to distinguish Mac OS X from other Mac systems, and created an SQL script for reporting the number of different operating systems represented in the user agent strings of all font survey submissions.
Updated the user manual for the font survey update tools and created a new SQL script for reporting the submission_id value for the latest survey submission.
Added a new answer on background images to the FAQ: Cascading Style Sheets page.
Added a section navigation boxout to the Javascript & DOM section home page. Also added another answer to the FAQ: Javascript & DOM page and included question links on the section index.
Produced a more rigorous Ant build regime for test deployment on the production host with more distinct treatment of development, test and production environments, and backup tasks. Finalised all Ant filter files and consolidated filter file versions of the master JServ properties and zone configuration files.
Added complete JavaDoc comments throughout the AnchorPoints servlet, switched to use the getFirstParameter utility method and implemented a getServletInfo method.
These backdated pages record detailed changes to the Code Style Web site since July 2000, when development first got underway. Some pages may refer to documents or features that have since changed or are no longer part of the site, but the archive is checked to ensure there are no dead links.
For a summary overview, see the annotated site log contents.