Tuesday, March 30, 2010

best animated sexy girls wallpaper

Animated manga girls , try to build like these .
 work of photo editing software's and illustration

Monday, March 22, 2010

This script will send either SMS or MMS messages and deals

$uname = "another.12345";
$pin = "12345678";
$uploaddir = "uploads/";
$uploaddir = '/var/www/uploads/';
$max_size = 102400;
# do we want debug ?
$debug=1;
# do we want to use HTTPS for a secure connection?
$secure=1;
# $pfile contains the name of this script
$file = $_SERVER["SCRIPT_NAME"];
$break = Explode('/', $file);
$pfile = $break[count($break) - 1];
#
if ($debug)
    {
    if (! file_exists("/tmp" )) { mkdir("/tmp", 0777); }
    $myFile = "/tmp/" . $pfile . ".log";
    $fh_debug = fopen($myFile, 'a') or die("can't open file");
    fwrite($fh_debug, "\n\n" . $pfile . "\n". date("j F Y G:i:s") . "\n");
    @chmod($myFile,0666);
    }       
############################################################
# Function definitions
############################################################
function http_post($vars)
    {
    global $debug, $fh_debug, $secure;
    if($secure)
        {
        $urlencoded = "";
        while (list($key, $value) = each($vars))
            {
            $urlencoded.= urlencode($key)."=".$value."&";
            }
        $urlencoded = substr($urlencoded, 0, -1);
   
        if ($debug)  {fwrite($fh_debug, "\nFirst 100 chars of URLENCODED=" . substr($urlencoded,0,100) . "\n");}
   

        $url = "https://www.csoft.co.uk/webservices/http/sendsms";
        $ch = curl_init();    // initialize curl handle
        curl_setopt($ch, CURLOPT_URL,$url); // set url to post to
        curl_setopt($ch, CURLOPT_FAILONERROR, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
        curl_setopt($ch, CURLOPT_TIMEOUT, 5); // times out after 5s
        curl_setopt($ch, CURLOPT_POST, 1); // set POST method
        curl_setopt($ch, CURLOPT_POSTFIELDS, $urlencoded); // add POST fields
        $result = curl_exec($ch); // run the whole process
        curl_close($ch);
        return $result;
        }

    else    {
        $server1="www.csoft.co.uk";
        $server2="www2.csoft.co.uk";
        $port=80;
        if ($debug)  {fwrite($fh_debug, "PORT=" . $port . "  SERVER=" . $server1 . "\n");}
        # note that the sendsms web service is actually the same as the sendmms service...
        $url= "/webservices/http/sendsms" ;
        $user_agent = "Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)";
        #
        $urlencoded = "";
        while (list($key, $value) = each($vars))
            {
            $urlencoded.= urlencode($key)."=".$value."&";
            }
        $urlencoded = substr($urlencoded, 0, -1);
   
        if ($debug)  {fwrite($fh_debug, "\nFirst 100 chars of URLENCODED=" . substr($urlencoded,0,100) . "\n");}
   
        $content_length = strlen($urlencoded);
   
        $headers  = "POST $url HTTP/1.1\n";
        $headers .= "Accept: */*\n";
        $headers .= "Accept-Langauge: en-au\n";
        $headers .= "Content-Type: application/x-www-form-urlencoded\n";
        $headers .= "User-Agent: $user_agent\n";
        $headers .= "Host: $server\n";
        $headers .= "Connection: close\n";
        $headers .= "Cache-Control: no-cache\n";
        $headers .= "Content-Length: $content_length\n\n";
   
        if ($debug)  { fwrite($fh_debug, "\nHEADERS=" . $headers . "\n"); }
   
        # attempt to open connection to server - with failover
   
        $fp = @fsockopen($server1, $port, $errno, $errstr,5);
        if ($fp)
            {
            $report= "server1 opened OK\n";
            if ($debug)  {fwrite($fh_debug, $report . "\n");}
            }
        else
            {
            $report= "server1 failed, trying server2\n";
            if ($debug)  {fwrite($fh_debug, $report . "\n");}
       
            $fp = @fsockopen($server2, $port, $errno, $errstr,10);
            if (!$fp)
                {
                $report= "server2 failed as well\n";
                if ($debug)  {fwrite($fh_debug, $report . "\n");}
                return false;
                }
            else
                {
                $report= "server2 openened OK\n";
                if ($debug)  {fwrite($fh_debug, $report . "\n");}
                }
            }
   
        fputs($fp, $headers);
        fputs($fp, $urlencoded);
   
        $ret = "";
        while (!feof($fp))
            {
            $ret.=fgets($fp, 1024);
            }
        fclose($fp);
        return $ret;
        }
    }
##############################
function ascii_convert($text)
    {
    $text = str_replace(' ', '___SPACE___', $text);
    $text = urlencode($text);
    $text = str_replace('___SPACE___', '%20', $text);
    return $text;
    }
############################################################
# generate the HTML - dependent on parameters passed

echo "iSend SMS or MMS using HTTP connection";
echo "";
echo "Software version dated 2008-05-28

";

$ToDo=$_REQUEST['ToDo'];

if ($ToDo == "")
    {
    if ($debug)     { fwrite($fh_debug, "ToDo=" . $ToDo . "\n"); }
    echo "Please choose an option from the list below:

";
    echo "

  • Send SMS message";
        echo "



  • Send MMS message";
        echo "

    ";
        }


    elseif ($ToDo == "sms")
        {
        if ($debug)     { fwrite($fh_debug, "ToDo=" . $ToDo . "\n"); }
        echo "Please fill in the form below to send your message:

    ";
        echo "
    ";
        echo "";
        echo "Full International Format Mobile/Cell Phone Number (i.e. 447700912345):
    ";
        echo "";
        echo "

    Message:
    ";
        echo "";
        echo "

    ";
        echo "  |  ";
        echo "
    ";
        }

    elseif ($ToDo == "sendsms")
        {
        if ($debug)     { fwrite($fh_debug, "ToDo=" . $ToDo . "\n"); }
        $message=$_REQUEST['message'];
        $phone=$_REQUEST['phone'];
        $message = stripslashes($message);
        $message = ascii_convert($message);
        if ($debug)     { fwrite($fh_debug,"MESSAGE=" . $message . "\n");}

        $sending = http_post(array("Username" => $uname, "PIN" => $pin, "SendTo" => $phone, "Message" => $message));
        if ($debug)     { fwrite($fh_debug, "SENDING=" .$sending . "\n");}

        echo "Please choose an option from the list below:

    ";
        echo "

  • Send SMS message";
        echo "



  • Send MMS message";
        echo "

    ";
        }



    elseif ($ToDo == "mms")
        {
        if ($debug)     { fwrite($fh_debug, "ToDo=" . $ToDo . "\n"); }
        echo "Please fill in the form below to send your message:

    ";
        echo "
    ";
        echo "";
        echo "Full International Format Mobile/Cell Phone Number (i.e 447700912345):
    ";
        echo "";
        echo "

    Image: ";
        echo "

    Message:
    ";
        echo "";
        echo "


    ";
        echo "  |  ";
        }

    elseif ($ToDo == "sendmms")
        {
        if ($debug)     { fwrite($fh_debug, "ToDo=" . $ToDo . "\n"); }
        $message=$_REQUEST['message'];
        $phone=$_REQUEST['phone'];
        $userfile_name=basename($_FILES['userfile']['name']);
        $userfile_tmp=$_FILES['userfile']['tmp_name'];
        $userfile=$uploaddir . basename($_FILES['userfile']['name']);
        $userfile_size=$_FILES['userfile']['size'];
        $userfile_type=$_FILES['userfile']['type'];
        if ($debug)     { fwrite($fh_debug, "UPLOADFILE=". $userfile . "    USERFILE_TMP=". $userfile_tmp . "   USERFILE_SIZE=". $userfile_size . "   USERFILETYPE=" . $userfile_type . "\n"); }
        #
        if (is_uploaded_file($_FILES['userfile']['tmp_name']))
            {
            if ($debug)     { fwrite($fh_debug, "MMS file was uploaded\n"); }
            if ($userfile_size > $max_size)
                {
                if ($debug)     { fwrite($fh_debug, "MMS file is too big at ". $userfile_size . " bytes\n"); }
                echo "The file is too big.  Please click back to try again with a smaller image.

    ";
                exit;
                }

            if ( ! (($userfile_type == "image/gif") || ($userfile_type == "image/jpeg") || ($userfile_type == "image/jpg") || ($userfile_type == "image/pjpeg")))
                {
                if ($debug)     { fwrite($fh_debug, "MMS file type invalid\n"); }
                echo "Sorry.  Your file needs to be either a .gif or .jpg file.  Please click back to try again.
    \n";
                exit;
                }
            else
                {
                if (! move_uploaded_file($_FILES['userfile']['tmp_name'], $userfile))
                    {
                    if ($debug)     { fwrite($fh_debug, "Failed to move MMS file\n"); }
                    echo "Sorry.  The upload failed.  Please click back to try again.

    ";
                    exit;
                    }
                else
                    {
                    if ($debug)     { fwrite($fh_debug, "MMS file upload OK\n"); }
                    if ($debug)     { fwrite($fh_debug, "Username=" . $uname . "\n"); }
                    if ($debug)     { fwrite($fh_debug, "PIN=" . $pin . "\n"); }
                    if ($debug)     { fwrite($fh_debug, "SendTo=" . $phone . "\n"); }
                    if ($debug)     { fwrite($fh_debug, "Message=" . $message . "\n"); }
                    if ($debug)     { fwrite($fh_debug, "WAPPushFileName1=" . $userfile_name  ."\n"); }
                    echo "File $userfile_name uploaded successfully.  Thank you.

    ";
                    $success = "yes";
                    $filehandle = fopen("$userfile", "r");
                    $data = fread($filehandle, filesize($userfile));
                    fclose ($filehandle);
                    $data = bin2hex($data);
                    $message = stripslashes($message);
                    $message = ascii_convert($message);
                    $sending = http_post(array("Username" => $uname, "PIN" => $pin, "SendTo" => $phone, "Message" => $message, "WAPPushFileName1" => $userfile_name, "WAPPushFileData1" => $data));
                    $delete = @unlink($userfile);
                    if ($debug)     { fwrite($fh_debug, "Result=" . $sending . "\n"); }
                    }
                }
            }
        else
            {
            if ($debug)     { fwrite($fh_debug, "MMS file was NOT uploaded\n"); }
            }
        }
    else
        {
        # we should never get here...
        if ($debug)     { fwrite($fh_debug, "Invalid - ToDo=" . $ToDo . "\n"); }
        }

    fclose($fh_debug);  
    ?>



  • Tuesday, March 16, 2010

    Doom 3 speed up

    ***NOTE*** THIS ONLY WORKS FOR ATI CARDS

    First, open your doom3\base folder. Doubleclick on the pak000.pk4 file. In the "window can't open this file .. .bla bla" dialog, go on and associate the file with an app like WinRar. With this file open in WinRar, go to the glprogs directory in the file. In there you'll find the shaders. The interaction.vfp file seems to be the main rendering shader. Altering this shader to output a constant color turns most objects into that constant color, except for stuff like computer screens etc.

    So doubleclick the interaction.vfp file to open it (you may have to associate the .vfp extension with a text editor like notepad or wordpad first since we're going to edit the file). Scroll down to the fragment shader. You'll find these rows:

    Code:

    PARAM subOne = { -1, -1, -1, -1 };
    PARAM scaleTwo = { 2, 2, 2, 2 };


    Add this right below them:

    Code:

    PARAM specExp = { 16, 0, 0, 0 };


    Now scroll down to this:

    Code:

    # perform a dependent table read for the specular falloff
    TEX R1, specular, texture[6], 2D;


    Comment out that line by adding a "#" to it, and add another line that will do the same thing with math instead, so it should look like this:

    Code:

    # perform a dependent table read for the specular falloff
    # TEX R1, specular, texture[6], 2D;
    POW R1, specular.x, specExp.x;


    Save the file and close your text editor. WinRar will ask if you want to update the file in the archive, select yes. Close WinRar and enjoy about 40% higher performance in Doom3.

    Monday, March 15, 2010

    how to find remote IP ?

    How to find a remote IP

    Method 1

    To view someone's IP# when they send you hotmail email do this:
    1) Click "Options" on the upper right side of the page.
    2) On the left side of the page, Click "Mail"
    3) Click "Mail Display Settings"
    4) Under "Message Headers" select "Full" or "Advanced"
    5) Click ok

    Method 2
    reg a dydns account and install the ip pointer, so each time you ping the host name you regestored

    for example:
    you regestor the host name myhost.dydns.com, then you keep a little software running on the target host. The little software will keep update your IP to dydns.com server.

    so at your pc just start cmd, and ping myhost.dydns.com, it will give you the most updated ip address.

    Method 3
    neverender, what doesn't work for you? Simply type in nc -vvv -l -p 80 on your box, which will set it to listen in verbose mode on port 80. Then give them a link to your IP address (for example: 111.111.111.11) and tell them to type it in their browser. The browser should resolve the address as well as append port 80 automatically. Just make sure that your friend is not very computer literate.

    Method 4
    Just download a very simple server such as this one and install it on your comp. Then run it and give your ip to the person you want and tell them to connect to it through a browser. Your server will log their connection and you will get their IP.

    link:http://www.download.com/Abyss-Web-Server/3000-2165-10283992.html?tag=lst-0-6

    Problems faced by a PC

    10 reasons why PCs crash U must Know

    Fatal error: the system has become unstable or is busy," it says. "Enter to return to Windows or press Control-Alt-Delete to restart your computer. If you do this you will lose any unsaved information in all open applications."

    You have just been struck by the Blue Screen of Death. Anyone who uses Mcft Windows will be familiar with this. What can you do? More importantly, how can you prevent it happening?

    1 Hardware conflict

    The number one reason why Windows crashes is hardware conflict. Each hardware device communicates to other devices through an interrupt request channel (IRQ). These are supposed to be unique for each device.

    For example, a printer usually connects internally on IRQ 7. The keyboard usually uses IRQ 1 and the floppy disk drive IRQ 6. Each device will try to hog a single IRQ for itself.

    If there are a lot of devices, or if they are not installed properly, two of them may end up sharing the same IRQ number. When the user tries to use both devices at the same time, a crash can happen. The way to check if your computer has a hardware conflict is through the following route:

    * Start-Settings-Control Panel-System-Device Manager.

    Often if a device has a problem a yellow '!' appears next to its description in the Device Manager. Highlight Computer (in the Device Manager) and press Properties to see the IRQ numbers used by your computer. If the IRQ number appears twice, two devices may be using it.

    Sometimes a device might share an IRQ with something described as 'IRQ holder for PCI steering'. This can be ignored. The best way to fix this problem is to remove the problem device and reinstall it.

    Sometimes you may have to find more recent drivers on the internet to make the device function properly. A good resource is www.driverguide.com. If the device is a soundcard, or a modem, it can often be fixed by moving it to a different slot on the motherboard (be careful about opening your computer, as you may void the warranty).

    When working inside a computer you should switch it off, unplug the mains lead and touch an unpainted metal surface to discharge any static electricity.

    To be fair to Mcft, the problem with IRQ numbers is not of its making. It is a legacy problem going back to the first PC designs using the IBM 8086 chip. Initially there were only eight IRQs. Today there are 16 IRQs in a PC. It is easy to run out of them. There are plans to increase the number of IRQs in future designs.

    2 Bad Ram

    Ram (random-access memory) problems might bring on the blue screen of death with a message saying Fatal Exception Error. A fatal error indicates a serious hardware problem. Sometimes it may mean a part is damaged and will need replacing.

    But a fatal error caused by Ram might be caused by a mismatch of chips. For example, mixing 70-nanosecond (70ns) Ram with 60ns Ram will usually force the computer to run all the Ram at the slower speed. This will often crash the machine if the Ram is overworked.

    One way around this problem is to enter the BIOS settings and increase the wait state of the Ram. This can make it more stable. Another way to troubleshoot a suspected Ram problem is to rearrange the Ram chips on the motherboard, or take some of them out. Then try to repeat the circumstances that caused the crash. When handling Ram try not to touch the gold connections, as they can be easily damaged.

    Parity error messages also refer to Ram. Modern Ram chips are either parity (ECC) or non parity (non-ECC). It is best not to mix the two types, as this can be a cause of trouble.

    EMM386 error messages refer to memory problems but may not be connected to bad Ram. This may be due to free memory problems often linked to old Dos-based programmes.

    3 BIOS settings

    Every motherboard is supplied with a range of chipset settings that are decided in the factory. A common way to access these settings is to press the F2 or delete button during the first few seconds of a boot-up.

    Once inside the BIOS, great care should be taken. It is a good idea to write down on a piece of paper all the settings that appear on the screen. That way, if you change something and the computer becomes more unstable, you will know what settings to revert to.

    A common BIOS error concerns the CAS latency. This refers to the Ram. Older EDO (extended data out) Ram has a CAS latency of 3. Newer SDRam has a CAS latency of 2. Setting the wrong figure can cause the Ram to lock up and freeze the computer's display.

    Mcft Windows is better at allocating IRQ numbers than any BIOS. If possible set the IRQ numbers to Auto in the BIOS. This will allow Windows to allocate the IRQ numbers (make sure the BIOS setting for Plug and Play OS is switched to 'yes' to allow Windows to do this.).

    4 Hard disk drives

    After a few weeks, the information on a hard disk drive starts to become piecemeal or fragmented. It is a good idea to defragment the hard disk every week or so, to prevent the disk from causing a screen freeze. Go to

    * Start-Programs-Accessories-System Tools-Disk Defragmenter

    This will start the procedure. You will be unable to write data to the hard drive (to save it) while the disk is defragmenting, so it is a good idea to schedule the procedure for a period of inactivity using the Task Scheduler.

    The Task Scheduler should be one of the small icons on the bottom right of the Windows opening page (the desktop).

    Some lockups and screen freezes caused by hard disk problems can be solved by reducing the read-ahead optimisation. This can be adjusted by going to

    * Start-Settings-Control Panel-System Icon-Performance-File System-Hard Disk.

    Hard disks will slow down and crash if they are too full. Do some housekeeping on your hard drive every few months and free some space on it. Open the Windows folder on the C drive and find the Temporary Internet Files folder. Deleting the contents (not the folder) can free a lot of space.

    Empty the Recycle Bin every week to free more space. Hard disk drives should be scanned every week for errors or bad sectors. Go to

    * Start-Programs-Accessories-System Tools-ScanDisk

    Otherwise assign the Task Scheduler to perform this operation at night when the computer is not in use.

    5 Fatal OE exceptions and VXD errors

    Fatal OE exception errors and VXD errors are often caused by video card problems.

    These can often be resolved easily by reducing the resolution of the video display. Go to

    * Start-Settings-Control Panel-Display-Settings

    Here you should slide the screen area bar to the left. Take a look at the colour settings on the left of that window. For most desktops, high colour 16-bit depth is adequate.

    If the screen freezes or you experience system lockups it might be due to the video card. Make sure it does not have a hardware conflict. Go to

    * Start-Settings-Control Panel-System-Device Manager

    Here, select the + beside Display Adapter. A line of text describing your video card should appear. Select it (make it blue) and press properties. Then select Resources and select each line in the window. Look for a message that says No Conflicts.

    If you have video card hardware conflict, you will see it here. Be careful at this point and make a note of everything you do in case you make things worse.

    The way to resolve a hardware conflict is to uncheck the Use Automatic Settings box and hit the Change Settings button. You are searching for a setting that will display a No Conflicts message.

    Another useful way to resolve video problems is to go to

    * Start-Settings-Control Panel-System-Performance-Graphics

    Here you should move the Hardware Acceleration slider to the left. As ever, the most common cause of problems relating to graphics cards is old or faulty drivers (a driver is a small piece of software used by a computer to communicate with a device).

    Look up your video card's manufacturer on the internet and search for the most recent drivers for it.

    6 Viruses

    Often the first sign of a virus infection is instability. Some viruses erase the boot sector of a hard drive, making it impossible to start. This is why it is a good idea to create a Windows start-up disk. Go to

    * Start-Settings-Control Panel-Add/Remove Programs

    Here, look for the Start Up Disk tab. Virus protection requires constant vigilance.

    A virus scanner requires a list of virus signatures in order to be able to identify viruses. These signatures are stored in a DAT file. DAT files should be updated weekly from the website of your antivirus software manufacturer.

    An excellent antivirus programme is McAfee VirusScan by Network Associates ( www.nai.com). Another is Norton AntiVirus 2000, made by Symantec ( www.symantec.com).

    7 Printers

    The action of sending a document to print creates a bigger file, often called a postscript file.

    Printers have only a small amount of memory, called a buffer. This can be easily overloaded. Printing a document also uses a considerable amount of CPU power. This will also slow down the computer's performance.

    If the printer is trying to print unusual characters, these might not be recognised, and can crash the computer. Sometimes printers will not recover from a crash because of confusion in the buffer. A good way to clear the buffer is to unplug the printer for ten seconds. Booting up from a powerless state, also called a cold boot, will restore the printer's default settings and you may be able to carry on.

    8 Software

    A common cause of computer crash is faulty or badly-installed software. Often the problem can be cured by uninstalling the software and then reinstalling it. Use Norton Uninstall or Uninstall Shield to remove an application from your system properly. This will also remove references to the programme in the System Registry and leaves the way clear for a completely fresh copy.

    The System Registry can be corrupted by old references to obsolete software that you thought was uninstalled. Use Reg Cleaner by Jouni Vuorio to clean up the System Registry and remove obsolete entries. It works on Windows 95, Windows 98, Windows 98 SE (Second Edition), Windows Millennium Edition (ME), NT4 and Windows 2000.

    Read the instructions and use it carefully so you don't do permanent damage to the Registry. If the Registry is damaged you will have to reinstall your operating system. Reg Cleaner can be obtained from www.jv16.org

    Often a Windows problem can be resolved by entering Safe Mode. This can be done during start-up. When you see the message "Starting Windows" press F4. This should take you into Safe Mode.

    Safe Mode loads a minimum of drivers. It allows you to find and fix problems that prevent Windows from loading properly.

    Sometimes installing Windows is difficult because of unsuitable BIOS settings. If you keep getting SUWIN error messages (Windows setup) during the Windows installation, then try entering the BIOS and disabling the CPU internal cache. Try to disable the Level 2 (L2) cache if that doesn't work.

    Remember to restore all the BIOS settings back to their former settings following installation.

    9 Overheating

    Central processing units (CPUs) are usually equipped with fans to keep them cool. If the fan fails or if the CPU gets old it may start to overheat and generate a particular kind of error called a kernel error. This is a common problem in chips that have been overclocked to operate at higher speeds than they are supposed to.

    One remedy is to get a bigger better fan and install it on top of the CPU.

    CPU problems can often be fixed by disabling the CPU internal cache in the BIOS. This will make the machine run more slowly, but it should also be more stable.

    10 Power supply problems

    With all the new construction going on around the country the steady supply of electricity has become disrupted. A power surge or spike can crash a computer as easily as a power cut.

    If this has become a nuisance for you then consider buying a uninterrupted power supply (UPS). This will give you a clean power supply when there is electricity, and it will give you a few minutes to perform a controlled shutdown in case of a power cut.

    It is a good investment if your data are critical, because a power cut will cause any unsaved data to be lost.

    Friday, March 5, 2010

    What’s coming up in 2010

    With 2009 in the books, and people starting to see the reality of the app store, I imagine we will see a general decline in the app craze that currently surrounds us. New platforms, and devices, create a sort of gold rush when they are announced. As technologies change quicker and quicker these gold rushes get shorter and shorter. I think it is obvious that as more apps are released and as more developers enter the marketplace, flawless common experiences will be required for apps to be successful. Things like sharing (Twitter, Facebook, Email) are likely to all assimilate as more open source modules for this are introduced. I think an emerging market right now are applications based around accessories. Apple just this month rolled out iPhone accessories for checkout at Apple Stores, along with several others. I imagine we will see things like universal remote adapters, fm transmitters, heath care accessories, scales, and gaming controllers. If these kinds of devices are introduced and gain some popularity it will help to solidify the iPhone in the marketplace, as accessories for any device are really a sort of investment in them. In terms of development changes in 2010, I’m sure we will see SDK 4.0 being released at some point. I can’t speak to new features since they would all essentially be guesses, but I do see apple enhancing one specific type of operation in the next OS revision. A great new feature in OS 3.0 was the introduction of NSOperation and Core Data (Tutorial coming soon I promise!). These tools are Apple’s solution for simplifying the interface to SQLite and NSThreading. I could see apple adding even more abilities to these classes to make background processing even simpler. This could eventually lead to Apple letting the next iPhone run apps in the background like the Palm Pre and some Android distributions.

    Monday, March 1, 2010

    animation training

    how to create animated figures

    calcutta nights

    a night at park street kolkata at 7 pm

    lights ?

    park street lights!!!

    arijit bhattacharyya

    China town

    flower

    Lovely china rose

    an evening in ganga

    sun rise from ganga .

    water drops bath

    Twitter Delicious Facebook Digg Stumbleupon Favorites More