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.
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.
Actions: Ask a question about this post, seek clarification or offer a correction.
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.
Actions: Ask a question about this post, seek clarification or offer a correction.
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.
Actions: Ask a question about this post, seek clarification or offer a correction.
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.
Actions: Ask a question about this post, seek clarification or offer a correction.
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.
Actions: Ask a question about this post, seek clarification or offer a correction.
Published a backlog of 7 FAQ answers on various Java subjects, Javascript date comparison and basic Web publishing.
Actions: Ask a question about this post, seek clarification or offer a correction.
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");
Actions: Ask a question about this post, seek clarification or offer a correction.
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.
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.