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 that delivers the servlet services and utilities used to manage this site.
Subscribe to the news feed for this log:
Changed the premium content subscription form to an annual subscription basis. Also created an SQL script to count basic statistics about the Help and FAQ section: 361 questions total of which 178 are premium content questions.
Technorati tags: premium content, subscription.
Decanted Tomcat questions into a new Apache Tomcat FAQ section and added several new answers to various Java servlet and servlet container questions.
Created a ServiceLogClientParser to automatically extract spam client details from service logs and emails submitted through Web forms. A sorted map of clients is stored in a TreeMap keyed by IP address and serialized between invocations to build a cumulative record. A getDenyList() method returns the current set of IP addresses formatted as Apache Deny from directive statements for insertion in .htaccess. A getClientFilterList() method returns the clients formatted for a servlet ClientFilter configuration set.
Updated the standard Client class to implement Serializable to enable storage and used the serialver tool to add a long serialVersionUID variable for forward compatibility.
D:\java\jdk150\bin\serialver
-classpath e:/home/codestyle/build
org.codestyle.servlet.Client
Refined the initial output of the ServiceLogClientParser output to produce Deny directives for parent network addresses where numerous clients share the same subnet. The parser stores the latest data and deletes the new input files before exiting.
Technorati tags: Apache Tomcat, FAQ, spam, Deny directive, Serializable, serialver.
Updated font survey results and added new answers to the Javascript and various Java FAQ sections. Ran a link check and deleted dead links from several pages.
Technorati tags: font survey, Web fonts.
Amended the Person interface to extend the Storable interface rather than SQLEntity and implemented the delete(Connection) method in the Subscriber class. Also added a removeSubscriber(Person) method to the Service interface with an implementation in SubscriptionService. Added a Delete button to the SubscriptionEditor application with a deletePerson() method to remove the person from all services, delete from the database and the JTree display. Focus returns to the first person in the list.
Added a new getPerson(String) by email method to the SubscriptionEditor application to check whether new people are actually existing people before adding them to the subscription database. Updated the savePerson() method to make this check and select the person's record in the list of subscribers.
Technorati tags: subscription editor, mailing list.
Published a backlog of 7 FAQ answers on various Java subjects, Javascript date comparison and basic Web publishing.
Technorati tags: FAQ, Java, Javascript.
Created a Swing version of a file chooser panel named FileSelectJPanel and adapted various components of the LogManager application to use it in place of the original AWT FileSelectPanel. The JFileChooser is configured select multiple files. Also simplified the panel layout in AppendPanel, IncludePanel and TrimPanel to use a BorderLayout.
JFileChooser chooser = new JFileChooser();
...
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
chooser.setMultiSelectionEnabled(true);
chooser.showDialog(client, "Open");
Technorati tags: JFileChooser, log manager, Swing, BorderLayout.
Added a profile panel to the PingApplication class with a CardLayout to display the current feed profile. Also added methods to load profiles from a Java properties file and save new profiles. Added EventListeners to the New profile and Save profile buttons to create a new blank profile and save it. Amended the main entry point method to take a second parameter for the feed profiles property file and created an initial configuration to test.
Added an internal reference to the Vector of items in LabelledSelectList so that new items can be identified. Updated the addItem(Object) method to check whether the item is new to add it, and to select the item that was passed.
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.