Thursday, July 12, 2007

Great Resources and Links

Here I intend to provide a common repository to some thought provoking articles and useful resources. This is just the beginning. I intend to update this post at regular intervals.
Database
  1. Database Normalization Rules
Web Site Design
  1. Perfect Colors for your web site
General
  1. Repository of Algorithms
Core Java
  1. Thread States
Java EE
  1. Top 10 Java EE Perf Problems
  2. Servlet Performance Report
AJAX
  1. 80 AJAX Solutions for Professional Coding
Architecture
  1. E-Bay Architecture overview & the gory details

What is a Software Component?

Yesterday a team member asked me to explain what a software component is. Even though I was able to provide a reasonable answer, the question fascinated me to do a bit of research on the topic.

Let's start with the definition. Here's what Google returned:
A reusable piece of software in binary form that can be easily integrated with other components with relatively little effort.
An alternative definition is:
A software component is a unit of composition with contractually specified interfaces and explicit context dependencies only. A software component can be deployed independently and is subject to composition by third parties.
One of the primary features of software component is information hiding. The component can be treated as a black box which defines a crisp interface to the outside world. The implementation is carefully hidden from the end user, thus allowing for implementation change at a later point in time. Components are easily usable in different application contexts. As a consequence, components need to be self-contained software entities.

The most common example of a component that comes to my mind is JDBC drivers. They have
  1. Contractually defined interfaces - They implement the JDBC specifications.
  2. Context Independence - The JDBC jars do not depend upon any other component besides the Java runtime for their execution.
  3. High Reuse - They do not need any further code customization i.e. they are ready-to-use.
Another example of a software component would be EJB. The application developer needs to implement the home, remote and ejb bean and is provided with out-of-the-box support for transaction management, security, persistence etc.

Labels: , , , , ,

Wednesday, July 11, 2007

Identifying linux server ports in use

Some days back I was facing an interesting problem. We have multiple tomcat instances configured on a single Linux box. The box was configured to have more than one internal ips. I needed to know which ports were active. Did some browsing on the net (essentially did a google search ;-)) and found a Linux command nmap.

Used the following command
nmap -sT -p
For example:
nmap -sT 127.0.0.1 -p 1-9000

This is the command to check ports from 1 to 9000 on the server 127.0.0.1. There is a -sS option available for users with root privileges but myself a lowly developer does not enjoy such rights.

Labels: , , ,

Thursday, September 21, 2006

Understanding type in OOPS

I have always been confused with the various explanations that have been available on the net regarding differenciating type and class. I found an article that seems to be able to make some sense about the difference. The URL is 1 and example is 2. Another interesting read on the same topic is an article on javaworld.

Monday, September 18, 2006

Starting my own tech stuff log

This is my first post regarding tech stuff. Intention is to write some pearls of wisdom that I have gathered in my IT career and also to provide pointers to interesting technical stuff & links that I have come across and would like to share with the world.

So here's the first one! I came across this one while I was surfing theserverside.com. One thing I liked about Pranshu's blog is his simplicity. His blog proves yet again KEEP IT SIMPLE STUPID works.

Here's the link to layers and tiers.

Until the next blog.