Apr 24, 2011

Reasons for Slow Database Performance

Great article focusing on the reasons for slow database performance.

Reasons for Slow Database Performance

Notice the interesting comments about over normalization at the end of the article.

Apr 19, 2011

Continuous Integration in 40 screens

These screens describe our continuous integration setup using Atlassian's software tools and Hudson

About one year ago, i was asked to research various products and setup a  continuous integration test environment. The plan was to migrate part of our development to the new setup.
These screens which are also available from my public Picassa album were taken during the evaluation process of the Atlassian platform and finally the setup was adopted by our development team with some additions ofcourse.

 Fisheye - Percentile source code distribution between real and test code - the test code's path is parameterized.

 Fisheye - Percentile distribution of each commiter to the codebase.

 Fisheye - Diff presentation and history of a file.

 Fisheye - Source code filtering.

 Fisheye - LOC ,( lines of code), chart.

 Fisheye Crucible - Review status of a source file.

 Fisheye Crucible - The review's author receives a pending review warning.

 Fisheye Crucible - Pending activities and reviews are displayed on the dashboard.

Fisheye Crucible - Review and comment on source code at line level.

 Fisheye Crucible - Each reviewer can read the author's comments and respond to complete the review process.

 Fisheye Crucible - A reviewer responds to author's code comment.

 Fisheye - DIFF history.

 Fisheye - Full source code view. Changes are color-coded including the name of each commiter.

 Fisheye - Recent activity for favorite projects and files.

Fisheye - Overall user's repository activity  and statistics.

JIRA - dashboard.

JIRA - activities' stream, netbeans integration.

JIRA - project's issues summary

Fisheye JIRA integration. Inspecting issue's details from Fisheye's interface. Source code changes correspond to Jira issues.

JIRA Fisheye integration. Source code changes for an issue are accessible from JIRA.

Netbeans IDE JIRA integration.

Netbeans IDE JIRA integration - submitting an issue from Netbeans IDE.

Netbeans IDE JIRA integration - commiting code including the project's JIRA key in the comments

Netbeans IDE JIRA integration - creating a new issue.

JIRA - project summary including Bamboo build activity.

Bamboo - projects' build status.

Bamboo - executing a maven build.

Bamboo - display of all the available build plans. The user can actively execute a plan.

Bamboo JIRA Fisheye integration

JIRA Bamboo integration -  JIRA issues include Bamboo's build information.

Bamboo - a build's plan summary

Bamboo JIRA integration. The issues tab displays information about the builds they are related to.

Bamboo JIRA  integration - details of a build including all the JIRA issues that are related to it.

Bamboo - project's bulid history.

Hudson - Status of the project's latest build. RSS feeds and email notifications also available.

Hudson - The workspace of a new hudson project.

Netbeans IDE Hudson integration - integrating a hudson server instance with Netbeans.

Apr 15, 2011

Sonar quality platform - Using profiles

Quoting Sonar's official site:
SONAR is an open source quality management platform, dedicated to continuously analyze and measure source code quality.
In short, it tells you how bad your code is and where to start fixng things cost-wise. The total code quality of the project very much depends on the number of code violations. But when does something promote as a violation? Is parentheses' padding a violation to you? Maybe declaring arguments as final? 

Each Sonar profile defines a collection of rules - checks. The configuration of this profile can dramatically alter  the final metrics so it would be better to stick with a profile for the entire lifecycle of a project in order for the metrics to be always relevant.

In the following screen the zero-drop after enabling the most unforgiving profile is obvious, rendering all previous metrics irrelevant.

rules compliance

At milestone A the build was analyzed with an all-out Sonar profile including all the rules, checks and thresholds.

To create such a profile:

1. Log in to Sonar ,(ver. 2.6+), go to configuration and then Quality profiles on the top-left from the menu bar.

2. Click copy to make an exact copy of the default Sonar way configuration and name it as you wish e.g. Sonar complete.Click on Set as default. Next time sonar analyzes a project will use this new configuration.

3. Before triggering a build let's activate some more rules and checks.Click on the newly createdconfiguration to browse and activate the rules.

Select any on the three lists: Plugins, Severity, Status and click search to browse all the available rules.
To activate them all perform a Bulk change selecting Activate all from the select menu on the right , (highlighted with red on the screenshot).

The profile is now ready and we can either set it as default or associate it with specific projects.


Trying to run the maven sonar goal with the above profile activated i came accross the folowing two exceptions, (sonar and plugins were completely updated after a clean install):

  1. Caused by: java.lang.NullPointerException at org.sonar.java.squid.check.ClassComplexityCheck.visitClass(ClassComplexityCheck.java:48)
  2. Can not execute Sonar: Can not execute Checkstyle: cannot initialize module Header - property 'headerFile' is missing or invalid in module Header.

1.  Edit the profile and deactivate all checks of the squid plugin. This is the one responsible for the exception 
Caused by: java.lang.NullPointerException at org.sonar.java.squid.check.ClassComplexityCheck.visitClass(ClassComplexityCheck.java:48)

2. For the second one disable the following subset of rules:

  • XPath rule template

  • Header
  • Regexp
  • Regexp Header
  • Regexp Multiline
  • Regexp Singleline
  • Regexp Singleline Java

Apr 12, 2011

Proteus a Web Document Management System

Proteus is a Web Document Management System developed with Seam framewrok, JSF 1.2 and Richfaces framework combined with jQuery javascript library running under JBoss 5 AS.

This is the very first presentation of the project during the inception phase of the project.
Real Time Web Analytics