Adding Mongo DB driver to XAMPP

Like many developers I use XAMPP for PHP development. But adding PHP extensions in xampp to does not seem to have a direct procedure . So when I wanted mongodb drivers I was on my own to figure out how to get it working . Here is the knowledge I gained .

I am using Ubuntu oneiric ocelot machine so this procedure is similar for all *NIX machines  (Sorry windows users but the procedure must similar).

  1. First download and install Mongo db from mongodb.org/downloads
  2. Secondly download the PHP MongoDB driver source from github.com/mongodb/mongo-php-driver
  3. Now to compile the code
    1. You need phpize to compile the source code, so install php5-devpackage by running `sudo apt-get install php5-dev`
    2. Navigate into the mongo-php-driver directory and run `phpize` on the terminal
    3. Then run `./configure` to check for dependencies
    4. Run `make` to build the package
  4. Assuming XAMPP is installed at `/opt/lampp/` copy `mongo.so` and `mongo.la` from `modules` directory inside mongo-php-driver directory to `/opt/lampp/lib/php/extensions/no-debug-non-zts-20090626/` directory
  5. Add the line `extension=mongo.so` to  `/opt/lampp/etc/php.ini`
  6. Start mongodb and xampp servers and run the program test program from php.net/manual/en/mongo.tutorial.php to check if it is working

 

Advertisements

C some Speed !!

Most programmers know that c programs are the next best thing to assembly language programs in terms of Speed , and here is yet another example .

When solving one of the problems at projecteuler.net.I Suddenly came upon the idea to compare the speed of execution of the same algorithm in different languages.

So here is the program in Three Programming languages , C , Java and Python

First in C

#include<stdio.h>
long long  LargestPrimeFactor(long long number) {
		long long n = number , i , Largestfactor = 1;
		for (i = 2; i <= (n / i); i++) {
			while (n % i == 0) {
				Largestfactor = i > Largestfactor? i : Largestfactor;
				n /= i;
			}
		}
		Largestfactor = n > Largestfactor ? n : Largestfactor;

		return Largestfactor;
	}
int main (){
	printf(" %d \n",LargestPrimeFactor(600851475143));
}

Then in Java

class ex3{
	public static long LargestPrimeFactor(long number) {
		long n = number, factor = 1 , i;
		for (i = 2; i <= n / i; i++) {
			while (n % i == 0) {
				factor = i>factor?i:factor;
				n /= i;
			}
		}
		factor = n>factor?n:factor;
		return factor;
	}
	public static void main(String [] args){
		System.out.println(LargestPrimeFactor(600851475143L));
	}
}

and now in Python

def LargestPrimeFactor(num):
        n=num
        factor = 1
        i=2
        while( i<= (n/i) ):
                while( n%i == 0 ):
                        if i>factor :
                                factor = i
                        n /= i
                i += 1
        if n > factor:
                factor = n
        return factor

print LargestPrimeFactor(600851475143)

I computed the times using the time utility in linux .

I expected the c program to win there was no doubt about that , and java was expected to come in second with python last .

$ time ./a.out
 6857

real	0m0.003s
user	0m0.004s
sys	0m0.000s

$ time java ex3
6857

real	0m0.114s
user	0m0.084s
sys	0m0.028s
$ time python ex3.py
6857

real	0m0.035s
user	0m0.028s
sys	0m0.004s

From the results its quite visible that c had won over python and python had won over java ,even though java was supposed to be faster than python.

The reason for python winning is that the cost of starting up the JVM is quite high, when compared with the cost of starting the python interpreter.

So lesson learnt If your program is short run it in python when given a choice , but still C is the king of Speed

Ps: This Question on stackoveflow goes over some more details .


Screencasting from Ubuntu

Screencasting (Recording a video of  your desktop) just got easier since if you have Gnome Shell .

Gnome shell comes with an inbuilt screencasting feature which is activated by pressing

ctrl+alt+shift+r 

To deactivate it just press the same combination . The video is by default saved in webm format in the current user’s home directory.

Here is a sample video.

 

 


Limit the CPU usage of a process (Linux).

There have been times when I wished that I could limit the cpu usage of a process even though it might run slower , There is a simple way to do it on Linux .

Just type the following in terminal.

 cd /tmp
 wget 'http://downloads.sourceforge.net/cpulimit/cpulimit-1.1.tar.gz'
 tar -zxvf cpulimit-1.1.tar.gz
 cd cpulimit-1.1
 make
 cp cpulimit /usr/local/sbin/
 rm -rf cpulimit*

If you are a debain/Ubuntu user you can also do the following in terminal.


$ sudo apt-get install cpulimit

After installation to limit the cpu usage of a process :

cpulimit -p  -l

Happy cpu reduction !!


Professionally git

Git (not to be mistaken for the English-slang word) , is a version control system from the maker of the Linux Kernel  , who seems to name everything after himself (to be mistaken for the English-slang word ).

git is more than just a version control system , Its light weight , lightning fast Distributed Revision Control System .

I learnt on how to use git the hard way , (i.e) on my own without a book .

But for those of you wanting to gain in-depth knowledge or just start-up with git you can try this free E-book http://progit.org/ebook/progit.pdf  and http://progit.org/book/ .

Image Courtesy : Amazon


Typing தமிழ் (Tamil) on Ubuntu Linux

To type a indic language on Linux you need to do some work before you get it working and before we start I am assuming that you are using ubuntu Linux 10.04 or higher .

The first thing you need is to install ibus 

so to install ibus open terminal and type

sudo apt-get install ibus


sudo apt-get install ibus-m17n

after installing ibus and m17n go to System->Administration->Language Support in the Gnome menu

Select keyboard input system as ibus

Click on Install/Remove Languages -> Select Tamil -> Select all the Components ->Apply the changes.

Then go to System->Preferences->Keyboard Input Methods 

Goto Input Method Tab , Select an Input method and then choose Tamil -> Tamil-phonetic and click Add

Enable Show icon on System tray 

then your preferred shortcut keys .

Choose Tamil from the keyboard icon in the notification area

and now you can type தமிழ் (Tamil) !!

நண்றி வணக்கம் !

 

Post you comments and Suggestions in the section below .


Serving Servlets !

When staring web developement now a days many people  start with PHP , Ruby on Rails , or something like that , but there was a Time when Servlets were King .

Servlets are still very Prominent and are also very powerful, and sometimes better than any other web development platform.

To get started with servlets using just Tomcat is very easy , but using Eclipse along with it Required a small bit of effort .

I spent 20 minutes on learning how to configure Eclipse to work with Tomcat 7

So here is a Tutorial for the same .

So Lets get Started…..

The Downloads

2 Things have to be downloaded

  1.  Eclipse IDE for Java EE Developers
  2. Apache Tomcat 7

The Process

I am writing this tutorial for Linux but the concept is the same for Windows and Mac .

After Downloading

Extract Eclipse and tomcat into a folder

After Extracting Eclipse ,

Run Eclipse

open Window->Preferences 

Choose Server->Runtime Environments

Click Add 

Choose Apache Tomcat v7.0

Click Next

Choose the location where Tomcat was extracted 

Click Finish

Now the Server has been successfully added .

The Project

Create a new Dynamic Web Project

After Creating the project

Right click on the project  select New->Servlet

Now you can create your Servlet and run it in eclipse with Tomcat ,  so what are you waiting for  get coding!!