Archive for the ‘programming’ Category

Non Relational DB: The (near?) future of databases.

Saturday, July 25th, 2009

Neo4j:

“Neo4j is a graph database. It is an embedded, disk-based, fully transactional Java persistence engine that stores data structured in graphs rather than in tables. A graph (mathematical lingo for a network) is a flexible data structure that allows a more agile and rapid style of development.
[...]
Neo4j has been in commercial development for 8 years and in production for over 5 years. It is a mature and robust graph database[...]
In addition, Neo4j includes the usual database features: ACID transactions, durable persistence, concurrency control, transaction recovery, and everything else you’d expect from an enterprise-strength database.[...]“

http://neo4j.org/

http://giladmanor.blogspot.com/2009/07/down-rabbits-hole-with-neo4j-part-1.html

mongoDB:

“MongoDB is a high-performance, open source, schema-free document-oriented database.[...]
When we describe MongoDB as “document oriented”, we mean it’s in the class of databases for which the primary storage unit is a collection – possibly structured – of data, most likely as key/value pairs.”

http://www.mongodb.org

Hypertable:

“Hypertable is an open source project based on published best practices and our own experience in solving large-scale data-intensive tasks. Our goal is to bring the benefits of new levels of both performance and scale to many data-driven businesses who are currently limited by previous-generation platforms.”

http://www.hypertable.org/

Dynamo:

“Unlike a relational database, Dynamo is a distributed storage system. Like a relational database it is stores information to be retrieved, but it does not break the data into tables. Instead all objects are stored and looked up via a key.”

http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html
http://www.readwriteweb.com/archives/amazon_dynamo.php

Extra info:

http://www.computerworld.com/s/article/9135086/No_to_SQL_Anti_database_movement_gains_steam_?taxonomyId=173&pageNumber=1&taxonomyName=Databases

Subversion (SVN) with WebSVN, DAV and Apache2 under Ubuntu

Saturday, July 4th, 2009

Install Subversion:

Use the following command to install Subversion and the Apache2 module:

sudo apt-get install subversion libapache2-svn

Create a repository:

Use the following command to create a repository:

sudo svnadmin create /var/svn/new-project/

Add permission to the directory for the Apache user only:

chmod -R 775 /var/svn/new-project

chown -R www-data:www-data /var/svn/new-project

Configure Apache

Open /etc/apache2/mods-available/dav_svn.conf and add a new “virtual directory”:

<location /svn>
DAV svn

SVNParentPath /var/svn

AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd

AuthzSVNAccessFile /etc/apache2/dav_svn.authz

Require valid-user

</location>

Create the users password file. Use the following command the first time only, the -c parameter will create AND override the file if it exists:

htpasswd2 -c /etc/apache2/dav_svn.passwd username

To add other users or change password use:

htpasswd2 -m /etc/apache2/dav_svn.passwd username

In /etc/apache2/dav_svn.authz, add the users permissions

[/]
me=rw

[new-project:/]
other.user=rw

Finally, restart Apache so that the changes take effect:

apache2ctl restart

Eclipse 3.4 Show and Hide Breadcrumbs

Thursday, June 18th, 2009

Eclipse 3.4 Ganymede comes with a very handy Breadcrumbs Navigator which creates a breadcrumb above the source code editor. To open it, right click on the Java Editor and choose “Show in Breadcrumb”. Or simply toggle this navigator with the toolbar button:

eclipse-breadcrumb
For those of you who are unaware of what breadcrumbs do, it is navigation aid used in user interfaces. The term breadcrumbs comes from the trail of breadcrumbs left by Hansel and Gretal in the famous fairytale. It is a method for users to keep track of their locations in programs or documents. They really aid in user friendliness of a programme.


A similar tool is used on sites like Gumtree, lets say you are looking for free stuff on Gumtree, the site will uses breadcrumbs to help make it easier for you to navigate around it. It’s simpler to find where you have been and where you are going. They provide links back to each previous page the user navigated through to get to the page you are on now. Breadcrumbs provide a trail for the user to follow back to the starting or entry point.

Interesting way of defining Java exceptions

Thursday, May 28th, 2009
java.lang
ArithmeticException You are trying to use your computer to solve a mathematical problem that you cannot solve yourself. Read up on your arithmetics and try again.
ArrayIndexOutOfBoundsException See IndexOutOfBoundsException. The difference is that this exception refers to more than one finger.
ArrayStoreException You have used all your arrays and need to buy more from the array store.
ClassCastException You need to stay in the class or caste you were born into. Java will not accept dailits acting as kshatriyas or noblemen pretending to be working class. Note the spelling mistake (of caste) that was introduced in Java 1.0 and has not been corrected for backwards compatability reasons.
ClassNotFoundException You seem to have invented your own class. There are also caste systems that are not yet implemented in Java, most notibly the balinese caste system. For example, if you are a wesia, use the indian counterpart vaishya.
CloneNotSupportedException You are a clone. Find the original you, tell him what you want to do and then kill yourself.
IllegalAccessException You are a burgler that are running a Java program during a burglery. Please finish stealing the computer, leave the premises and try again.
IllegalArgumentException You have tried to protest against a previous exception.
IllegalMonitorStateException Please turn your computer screen back on.
IllegalStateException You come from a state that is not yet recognized by the UN, possibly Kurdistan or Palestine. Get a real citizenship, recompile your java code and try again.
IllegalThreadStateException One of the screws in your computer is threaded the wrong way. Please contact your hardware vendor.
IndexOutOfBoundsException You have put your index finger in an unacceptable place. Reposition it and try again.
InstantiationException Not everything can happen instantly. Please be more patient.
InterruptedException Tell your colleagues, room-mates etc. to leave you alone while you are working.
NegativeArraySizeException You have created an array with negative size. This can cause information to be lost and in the long run the Universe will be destroyed. Be happy that Java noticed what you were doing and DON’T DO IT AGAIN.
NoSuchFieldException You are trying to have a picknick on a field that does not exist. You can also get this exception if you try to visit an airfield that in fact does exist, but has been classified as top-secret. I’d give you examples, but then I’d have to kill you.
NoSuchMethodException Don’t use that method! Please, do things like we have always done.
NullPointerException You do not own a dog. Get one, for example a brittany spaniel, and try again.
NumberFormatException You are using outdated units of measurement, for example inches or pints. Convert to SI. There is a known bug that causes this exception to be thrown if you are very short or tall.
RuntimeException You cannot run fast enough, possibly due to obesity. Turn off your computer and go out and get some exercise.
SecurityException You have been deemed a threat to nationaly security. Please sit still and wait for the authorities to come and get you.
StringIndexOutOfBoundsException Your panties have shiften out of place. Adjust them and try again. You can also get this exception if you are not wearing any panties at all.
UnsupportedOperationException You are trying to have an operation that for some reason, ethical or otherwise, is not supported by Java. Examples of this include unneeded amputations, for example circumcisions. Please stop abusing your body and do not remove pieces of you child, damn it!

See more at: http://rymden.nu/exceptions.html

SVN back-up and restore

Friday, May 22nd, 2009

To back-up my SVN repository, I have the following script:


#!/bin/bash
SVNDIR=/var/svn
DATE=`date +%d-%m-%Y`
TARNAME=svn_dump_$DATE.bz2
cd $SVNDIR
rm -f *.svndump
rm -f *.bz2
for repo in $(ls -d */)
do
filename=`basename $repo | cut -d\. -f1`
svnadmin dump $repo > $SVNDIR/$filename.svndump
done
tar -cvz -f $SVNDIR/$TARNAME *.svndump
cp $TARNAME /home/yo/svn_dump

Basically, it iterates thru all my repositories in SVNDIR and dumps them (the back up process itself) with svadmin dump.... After that it tars and compress the *.svndump files in one single file TARNAME and then copies it to its final destination /home/yo/svn_dump from where I grab the tar.bz2 files and burn them in a DVD or whatever.

I also have a cron job as follows:

0 0 * * 7 /home/yo/bin/scripts/svndump.sh >/dev/null 2>&1

which runs the script above once a week.

To restore a svn dump file I have to:
1) Untar the tar.bz2 back up file.
2) With the result I run: svnadmin load /path/to/reponame < filename.svndump
3) Set the correct permissions to the restored repositories. This is needed if you restore the back-up in a different path or computer.

That's pretty much what I do. My source code is safe in several different places (I'm a little bit paranoid, I know...)

Using SVN with Subclipse

Saturday, May 2nd, 2009

If you want to know the basics of SVN with Subclipse there’s no need to add anymore than what this article already says.

http://www.saltycrane.com/blog/2007/03/how-to-setup-subclipse-project-to/

Was really helpful and clear to me.

Java with GUTs

Wednesday, April 15th, 2009

This is a great article on writing unit tests. It will give you a lot of background information and further reading links, as well as different points-of-view and opinions.

Part 1: http://www.javaworld.com/javaworld/jw-03-2009/jw-03-good-unit-tests-1.html
Part 2: http://www.javaworld.com/javaworld/jw-04-2009/jw-04-good-unit-tests-2.html

Enjoy it!

The 30 skills every IT person should have

Friday, January 23rd, 2009

Interesting article:

“…An IT manager’s guide on how to be better at what you do, no matter how experienced you are…”

http://www.infoworld.com/article/08/06/02/23FE-how-to-fire-IT-staff-skills-list_1.html

2 really interesting articles about software development.

Friday, August 29th, 2008

The One Minute Software Development Manager:

http://www.realsoftwaredevelopment.com/2007/08/the-one-minute-.html

Software Development Top 30 Mistakes:

http://www.realsoftwaredevelopment.com/2006/10/software_develo.html

Develop J2ME apps in Ubuntu with Eclipse, EclipseME & Sun Java Wireless Toolkit 2.5.2

Tuesday, June 24th, 2008

1-Download Sun’s Java Wireless Toolkit 2.5.2:
http://java.sun.com/products/sjwtoolkit/download.html

2-Install dependencies (found in the previous link):

yo@notebook# sudo apt-get install libxpm-dev libxt-dev libx11-dev libice-dev libsm-dev libc6-dev libstdc++6-dev

3-Install Sun’s Java Wireless Toolkit 2.5.2. Go to the dir were you downloaded the installer:

yo@notebook# chmod +x sun_java_wireless_toolkit-2_5_2-linux.bin
yo@notebook# ./sun_java_wireless_toolkit-2_5_2-linux.bin

You must enter the location of the JVM (I’m using JDK6 and it is located in /usr/lib/jvm/java-6-sun/bin/) and select a destination dir.

4-Install EclipseME plugin using the instructions found in:
a) http://eclipseme.org/docs/installation.html
b) http://eclipseme.org/docs/installEclipseME.html
c) http://eclipseme.org/docs/configuring.html

They work perfectly!

5-Now go develop some cool app for your mobile :-)

Reference: http://www.gonzalomarcote.com/blog/?p=15