Tuesday, September 08, 2009
Java Vs C performance comparison
Tuesday, February 03, 2009
TSVN Icon Overlays does not appear on explorer
In fact, displaying the status through Icon overlays is one of the key features with TSVN. After googling around for sometime and trying various options, zeroed down on one. The solution that worked for me included changing the "Cache status" from "Default" to "Shell".
Following image would show the new status. One can access Cache status by right clicking on the windows explorer --> Tortoise SVN --> Settings --> Icon Overlays
Thursday, January 15, 2009
Subversion Installation - Step by Step Tutorial
Following paragraph provides detailed steps
1. Install Apache 2.2
2. During subversion installation ensure that you choose the proper Binding ie. Apache 2.2 (in our case)
3. Using the windows explorer, go to the installation directory of Subversion (usually c:\program files\Subversion) and find the files /httpd/mod_dav_svn.so and mod_authz_svn.so. Copy these files to the Apache modules directory (usually c:\program files\apache group\apache2\modules ).
4. Copy the file /bin/libdb*.dll and /bin/intl3_svn.dll from the Subversion installation directory to the Apache bin directory.
5. Edit Apache's configuration file (usually C:\Program Files\Apache Group\Apache2\conf\httpd.conf) with a text editor such as Notepad and make the following changes:
Uncomment (remove the '#' mark) the following lines:
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so
Add the following two lines to the end of the LoadModule section.
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
6. Now you are ready to check out the files. Create a local working folder and do an initial check out. Create the following folders trunk, branches and tags. Check in these folders into the repository. The main directories that you need to add to repository for the first time should go into trunk folder.
Whenever one wants to tag the code, you can do so by adding tags/
Configuration
Now you have set up Apache and Subversion, but Apache doesn't know how to handle Subversion clients like TortoiseSVN yet. To get Apache to know which URL will be used for Subversion repositories you have to edit the Apache configuration file (usually located in c:\program files\apache group\apache2\conf\httpd.conf) with any text editor you like (e.g. Notepad):
1. At the end of the config file add the following lines:
DAV svn
SVNListParentPath on
SVNParentPath D:\SVN
#SVNIndexXSLT "/svnindex.xsl"
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile passwd
#AuthzSVNAccessFile svnaccessfile
Require valid-user
This configures Apache so that all your Subversion repositories are physically located below D:\SVN (Say). The repositories are served to the outside world from the URL: http://MyServer/svn/ . Access is restricted to known users/passwords listed in the passwd file.
Ensure that you create the repository at D:\SVN by using the following command:
svnadmin create D:\SVN
The above command assumes that there is a folder called “SVN” under D:\
2. To create the passwd file, open the command prompt (DOS-Box) again, change to the apache2 folder (usually c:\program files\apache group\apache2) and create the file by entering
3. bin\htpasswd -c passwd
This will create a file with the name passwd which is used for authentication. Additional users can be added with
bin\htpasswd passwd
4. Restart the Apache service again.
You can test your configuration by using: http://localhost:8090/svn/
It assumes that Apache Server is running on 8090 port. In my case, I had something else running on 80, so configured Apache server to run on 8090
Following two sites gives wealth of information about "Branching"
http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-branchtag.html
http://drc-dev.ohiolink.edu/wiki/TortoiseSVNHowTo
Saturday, August 02, 2008
Web 3.0 ?
Many of are still grappling with Web 2.0 and most of the traditional companies are still in Web 1.0. But this post published on Tech Crunch is already making headway into Web 3.0.
We need to stop walking fast and need to run to catch up with this new way of life.
Saturday, June 21, 2008
Can software component creation be industrialized ?
One of the best examples of industrialization in this century includes car manufacturing, and invention of assembly lines. Each parts of the car gets manufactured somewhere else and finally gets assembled at one place. The parts are made with such a perfection that even robots can put together various parts in no time. You might be wondering, yeah I know this and everybody knows this fact, how is this related to this software architecture blog ? Okay, here is what I wanted to ask, can the software be developed in a similar manner as a car gets manufactured ? i.e. various components can be designed and developed at various places, and shipped to one location. Some automated tools can in turn assemble these components to build an application. Finally a final test can be done by the QA team before releasing the product. I believe it is difficult to implement this idea in a software industry keeping our current understanding and knowledge in mind, however it is not impossible. Here is an article that provides more insight into the topic I am discussing.
Loosely coupled, reusable and Replaceable components
I am sure as software developers we know the importance of designing and developing reusable and loosely coupled components. Recently in the XP discussion forum I came across a discussion on the topic of "Building Agile applications using replaceable components". It drew my attention and followed the thread to understand where it was heading. Basically the author challenges the basic assumption behind "loosely coupled components". Instead of giving my version of the details, I would let his article speak about the thoughts.
Here are couple of links from the author(Raju's) webpage explaining loosely coupled, replaceable components.
Hierarchy of swappable modules
How to build an application using replaceable components
Also this article challenges the assumption that Java could be used to build loosely coupled, replaceable components.
Thursday, February 28, 2008
Steps to remember during tradeoff analysis
The tradeoff guide could be built either based on one's own experience or by taking help from other architects/resources. It would be good, if the guide covers most of the architecture principles and the non functional requirements (also called -ilities)
I would recommend following steps while doing tradeoff analysis
- Understand the customer's requirement and convert it into SMART objective
- Prioritize the requirements (NFRs) by having continuous collaboration with the customer
- Finally, using the tradeoff analysis guide, recommend the final design and educate the customer about the impact of the design on the priorities.
Wednesday, February 27, 2008
Open Source is not free
Many companies wants to use OSS in their product development/projects thinking that they could save money by choosing OSS. In reality, choosing the right OSS helps companies in saving money, and at the same time the wrong ones would incur cost to them.
Check this article out to know why OSS is not free !!
Premature Optimization and the evil
Premature optimization is root of all evil - Sir Tony Hoare (popularized by Donald Knuth)
As we aware, the words like "Premature", "Optimization" and "evil" these are generic terms and open for interpretations with no SMART objective associated with them. Developer to PM to architects, each interprets the above quote in their own way and, sometimes using it to their own advantage as and when needed.
let me share my perspective of the above quote. "Premature optimization" has two important hidden pointers. First one, the "time/period" i.e. how much "premature" is acceptable. The second pointer is "quantity" i.e. how much "optimization" is necessary.
Let me start with the second pointer "Optimization". Optimization of any application could be done at various stages. During the design stage, implementation and pre release. So, what stage is ideal to do performance optimization ? Or, should it be done continuously ?
My experience shows that following steps are needed during performance optimization
- performance criteria needs to be well understood at the beginning of the project,
- it should be explained to all team members(means testers included)
- Good design and coding guidelines(ex: proper use of String Vs StringBuffer, use of sets, hashmaps, etc) around performance needs to be created and taught to the development team
- Each component/module needs to be designed to satisfy the ground rule created at the beginning around performance, and excess tuning needs to be avoided.
- Check points at regular intervals should be created and performance testing should be done
- Optimizing design,code is a continuous process happening throughout the development cycle.
- excess application optimization at the beginning of the project should be avoided