Tuesday 2 October 2012

Tagged under: , , ,

Creating a Barcode in PHP



A barcode is an optical machine-readable representation of data relating to the object to which it is attached. Originally barcodes represented data by varying the widths and spacings of parallel lines, and may be referred to as linear or one-dimensional (1D).
A Barcode is generally used to map a product to its characteristics. For example, a barcode is commonly used to identify the product code, and map the unique code to the price of the product in the database. This barcode is a widely used technique.
Creating a barcode is a fairly easy job, provided you have the right font for it. I found one, with relative ease, and guess what....it was free of cost!! I have added the font file in free3of9.zip folder, which can be downloaded from the download box present in the sidebar. I really want to thank the creator of this font, for his hardwork, and also making his work available free of charge.
Once you have the right font, the rest is quite an easy job. we will use the basic function in PHP, viz

imagettftext($img, $fontsize, $angle, $xpos, $ypos, $color, $fontfile, $text);
Now, create a PHP file, which I have named as index.php in my case.

Include the following code in the file:

<?php

$number = '*8108137*';

$barcode_font = 'FRE3OF9X.TTF';

$width = 200;
$height = 80;

$img = imagecreate($width, $height);

// First call to imagecolorallocate is the background color
$white = imagecolorallocate($img, 255, 255, 255);
$black = imagecolorallocate($img, 0, 0, 0);

// Reference for the imagettftext() function
// imagettftext($img, $fontsize, $angle, $xpos, $ypos, $color, $fontfile, $text);
imagettftext($img, 36, 0, 10, 50, $black, $barcode_font, $number);

//imagettftext($img, 14, 0, 40, 70, $black, $plain_font, $number);

header('Content-type: image/png');

imagepng($img);
imagedestroy($img);

?>
Here, in this code, the code for which barcode needs to be generated is stored in the $number variable. Care needs to be taken that the code starts and ends with an asterisk (*). The barcode scanner starts looking for an asterisk, and then scans ahead of * till it reaches the ending *.
For example, if the code is 1234567, it is represented as *1234567*.
Now, this number, or code can be passed from another page, using the GET method of PHP.
Your code is now ready!! Open your project in localhost, and see your code generating a Barcode!! 

If you found the post helpful, please share!!

Saturday 14 July 2012

Tagged under: , , ,

Secure Login Code using PHP and MySQL / Preventing SQL Injection using PHP

Many Web pages accept parameters from web users and generate SQL queries to the database. SQL Injection is a trick to inject SQL script/command as an input through the web front end.

Your application may be susceptible to SQL Injection attacks when you incorporate invalidated user input into the database queries. Particularly susceptible is a code that constructs dynamic SQL statements with unfiltered user input.



Consider the following example code:
Sql DataAdapter myCommand = new SqlDataAdapter(
"Select * from Users
Where UserName = ' "+txtuid.Text+" ", conn);

Attackers can inject SQL by terminating the intended SQL statement with the single quote character  followed by a semicolon character to begin a new command and then executing the command to their choice. Consider the following character string entered into the .txtuid field.
' OR 1=1
This results in the following statement to be submitted to the database for execution:
SELECT * FROM Users WHERE UserName = ' ' OR 1 = 1;

Because 1=1 is always true, the attacker retrieves very row of data from the user table.

Now, to prevent such an attack, a secure login technique is required. Here, in this article, we discuss the coding of a secure login script using PHP and MySQL.


Step I: Create a database and a table 'members' in it:

CREATE TABLE `members` (
  `username` varchar(20),
  `password` varchar(128)
)



Step II: Create a Login Form:

<form action="process_login.php" method="post">
Username: <input type="text" name="username" /><br />
Password: <input type="password" name="password" /><br />
<input type="submit" value="Login" />
</form>


Connect to MySQL Server:

$host = 'localhost'; // Host name Normally 'LocalHost'
$user = 'root'; // MySQL login username
$pass = ''; // MySQL login password
$database = 'test'; // Database name
$table = 'members'; // Members name
 
mysql_connect($host, $user, $pass);
mysql_select_db($database);


Step III: Now, you need to provide mechanism to avoid SQL Injection. For this, escape special characters like ", ', \

We can escape special characters (prepend backslash) using mysql_real_escape_string or addslashes functions. In most cases PHP will this do automatically for you. But PHP will do so only if the magic_quotes_gpc setting is set to On in the php.ini file.
If the setting is off, we use mysql_real_escape_string function to escape special characters. If you are using PHP version less that 4.3.0, you can use the addslashes function instead.

name = mysql_real_escape_string($_POST['username']);
$password = md5($_POST['password']);
 
$result = mysql_query("SELECT * FROM $table WHERE username = '$username' AND password = '$password'
");


Here, we use the MD5(Message Digest 5) Algorithm, that generates the message digest for the password. So, while writing the script for registration page, care must be taken that the md5 of the password entered by the user must be stored in the database, instead of the actual text password. In a real world situation, do not use MD5, as it is no longer considered secure. Use some other secure hashing algorithm.

Validating the login:

if(mysql_num_rows($result))
{
  // Login
  session_start();
  $_SESSION['username'] = htmlspecialchars($username); 
}
else
{
  // Invalid username/password
  echo '<p><strong>Error:</strong> Invalid username or password.</p>';
}
 
// Redirect
header('Location: http://www.example.com/loggedin.php');
exit;


You are done!! This code will help prevent the SQL injection problem. However, it must be noted that no script is 100% secure. So, it is advisable to provide multilevel security process, which make the login more secure.

Wednesday 11 July 2012

Tagged under: , , ,

Auto Refresh a Web Page using AJAX

AJAX is nothing but Asynchronous JavaScript and XML. It is not a new programming language, but a new way to use the existing standards. It is the art of exchanging data with a server, and updating parts of a web page without reloading the whole page!!

Ajax is not a single technology, but a group of technologies. HTML and CSS can be used in combination to mark up and style information. JavaScript and XMLHttpRequest object provide a method for exchanging data asynchronously between browser and server to avoid full page reloads.

 Using JavaScript for periodically refreshing a page can be quite annoying, as the entire page reloads time to time. Hence, a better option would be to use AJAX.
Include the following code in the <head> section of the page....

<script src="http://ajax.googleapis.com/ajax/
libs/jquery/1.3.0/jquery.min.js"></script>
<script>
var auto_refresh = setInterval(
function()
{
 $.ajaxSetup({ cache: false });
$('#loaddiv').fadeOut('slow').load(window.location.href).fadeIn("slow");
}, 20000);
</script>


The section now refreshes after every 20 seconds. You can change the 20000 value to suite your requirements.
You can remove the ".fadeOut('slow')" and ".fadeIn(Slow)" parts if you want the page to be refreshed unnoticed.

Now, whichever section you want to be refreshed, must be included within the <div id="loaddiv"> tags as follows:

<div id="loaddiv">
<!--Your Content goes here-->
</div>


You are now done!! Enjoy as your page refreshes without you noticing!!

Sunday 8 July 2012

Tagged under: ,

Checking if your Computer has been violated and infected with DNS Changer

Domain name system (DNS) is the part of the internet that links a website name (say example.com) to its numerical internet protocol equivalent (say 123.456.789.098). As the cyber world awaits Monday, when the FBI will shut down servers affected by the DNS changer malware, there is still a day to check if your system has been affected.
Various cyber security firms are offering free solutions. You can visit www.mcafee.com/dnsdetect to check if your computer is infected.
You can also manually check if your DNS server has been changed.

Step I: Open Command Prompt.
           Navigate to Start-> Run.  Type cmd and hit enter.


StepII: (For Windows XP)Type ipconfig/all and hit enter.
           (For Windows 7) Type ipconfig/allcompartments/all and hit enter.


Step III: (For Windows XP) The command you entered displays information about your computer’s network settings. Read the line starting with "DNS Servers". There might be two or more IP addresses listed there. These are the DNS servers your computer uses. Write down these numbers.

(For Windows 7) The output will be very long, since Windows7 by default has support for IPv6. Most likely, you want to look for the IPv4 information under the section entitled “Ethernet adapter…”. Look for the “DNS Servers” line, and write down these numbers. There may be two IP addresses listed there.

Step IV: Check if your DNS settings are OK

Compare your DNS settings with the known malicious Rove DNS settings listed below:
Starting IP Ending IP CIDR
85.255.112.0 85.255.127.255 85.255.112.0/20
67.210.0.0 67.210.15.255 67.210.0.0/20
93.188.160.0 93.188.167.255 93.188.160.0/21
77.67.83.0 77.67.83.255 77.67.83.0/24
213.109.64.0 213.109.79.255 213.109.64.0/20
64.28.176.0 64.28.191.255 64.28.176.0/20

 What if you are infected?
If you computer is infected, please refer the page that list tools to clean DNS Changer and other self help guides to clean your computer – http://www.dcwg.org/fix/

Monday 2 July 2012

Tagged under: , , ,

How to create CAPTCHA using PHP

CAPTCHA:  Completely Automated Public Turing Test To Tell Computers and Humans Apart.

A CAPTCHA is a program that protects websites against bots by generating and grading tests that humans can pass but current computer programs cannot. For example, humans can read distorted text as the one shown alongside, but current computer programs can't:

The term CAPTCHA (for Completely Automated Public Turing Test To Tell Computers and Humans Apart) was coined in 2000 by Luis von Ahn, Manuel Blum, Nicholas Hopper and John Langford of Carnegie Mellon University.

Generating a simple CAPTCHA and its verification is quiet a simple task using PHP. In this post, I would do the same, but the CAPTCHA generated would be a simple one, while the reader can add his own creativity to it later!!

  • Step I: Create a file captchaimg.php, and add the following code to it:

<?php 
session_start(); 
header("Content-Type: image/png");
$text=substr(md5(uniqid(rand(), true)),0,5);
$_SESSION["vercode"] = $text; 
$height = 25; 
$width = 65; 
  
$image_p = imagecreate($width, $height); 
$black = imagecolorallocate($image_p, 0, 0, 0); 
$white = imagecolorallocate($image_p, 255, 255, 255); 
$font_size = 14; 
  
imagestring($image_p, $font_size, 5, 5, $text, $white); 
imagejpeg($image_p, null, 80); 
?>


You can check the above file by opening it in your browser. Everytime you refresh, a new, random alphanumeric string is generated in the CAPTCHA.
  • Step II: Create a form form.php, and add the following code to it:
<?php 
session_start(); 
if ($_POST["vercode"] != $_SESSION["vercode"] OR $_SESSION["vercode"]=='')
  { 
     echo  '<strong>Incorrect verification code.</strong>'; 
  } else { 
     // add form data processing code here 
     echo  '<strong>Verification successful.</strong>'; 
}; 
?>
<form action="form.php" method="post"> 
Comment: <input type="text" name="coment"> 
Enter Code <img src="captchaimg.php" /><input name="vercode" type="text" /> 
<input name="Submit" type="submit" value="Submit" /> 
</form>


Now, this is it!! Your basic CAPTCHA is ready!! It will look like below:

Another Example:
For this, you need to include a font file in your project folder. I have used AngelicWar.ttf. Download the font from the download box alongside.
Now, Overwrite the file captchaimg with the following code:

<?php
session_start();
header("Content-type: image/png");
$_SESSION["vercode"]="";
$im = imagecreate(105, 50); //Size of the image Width, Height

imagecolorallocate($im, 167, 218, 239);  //Set background color 
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);        

$font = 'AngelicWar.ttf'; // You can replace font by your own        
for($i=0;$i<=5;$i++) {
    $numb=substr(md5(uniqid(rand(), true)),0,1);
    $_SESSION["vercode"].=$numb;
    $angle=rand(-25, 25);
    imagettftext($im, 20, $angle, 8+15*$i, 30, $black, $font, $numb);    
    // Add shadow to the text    
    imagettftext($im, 20, $angle, 9+15*$i, 34, $grey, $font, $numb);    
}
imagepng($im);
imagedestroy($im);
?>

Now, this will result in following CAPTCHA:


For the following CAPTCHA use cheapink.ttf from the download box alongside.



You can enhance it by using two different strings in a single CAPTCHA image, or using some string characteristics.

Want help in creating more creative CAPTCHA?? Feel free to Contact Me.

Friday 15 June 2012

Tagged under: , , ,

Connecting C# to MySQL database / C# connection String for MySQL

In many cases it becomes imperative to connect C# to MySql, the prominent reason being the inherent simplicity of MySql. We have generally used the usual connection string to connect PHP to MySql. Connecting C# to MySql is similar.
We first need to use the connection string to establish the connection with MySql. Then, we use the SQL queries to carry out the Creation, Insertion, Update & Delete operations.


Before we do anything, first you need to download and install mysql-connector. You can get this connector from MySQL :: Download Connector/Net.

Once you install this connector, you need to add it as a reference in your C# project. You can do this by navigating to Project -> Add Reference. Then go to the .Net tab, and search for MySql.Data, and add it as a reference.

Now you need to include MySql.Data.MySqlClient at the start of the code. Add this at the start:
using MySql.Data.MySqlClient;



Now, you can use this connection string for establishing the connection:
string MyConString = "SERVER=localhost;" +    "DATABASE=dbname;" +    "UID=root;" +    "PASSWORD=\"\";";
MySqlConnection con = new MySqlConnection(MyConString);

con.Open();


Now, you can use 'con' when you need to fire any query.

Now, lets get into details of using sql queries.

1. CREATE TABLE:

   string query = "CREATE TABLE table_name";
   MySqlCommand cmd = new MySqlCommand(query, con);
   try
   {
     cmd.ExecuteNonQuery();
   }
   catch(Exception e)
   {
     Console.WriteLine(e);
   }
                 
2. INSERT:

   string query = "INSERT INTO table_name (attributes) VALUES(values)";
   MySqlCommand cmd = new MySqlCommand(query, con);
   try
   {
      cmd.ExecuteNonQuery();
   }
   catch(Exception e)
   {
      Console.WriteLine(e)
   }
                 
3. UPDATE:

   string query = " UPDATE table_name
   SET column1=value1, column2=value2, ...
   WHERE some_column=some_value";
   MySqlCommand cmd = new MySqlCommand(query, con);
   try
   {
     cmd.ExecuteNonQuery();
   }
   catch(Exception e)
   {
     Console.WriteLine(e)
   }
                 
4. DELETE:

   string query = "DELETE FROM table_name WHERE some_column=some_value";
   MySqlCommand cmd = new MySqlCommand(query, con);
   try
   {
     cmd.ExecuteNonQuery();
   }
   catch(Exception e)
   {
     Console.WriteLine(e)
   }

5. SELECT:

   MySqlCommand query = new MySqlCommand("Select * FROM `table_name` where
   CONDITION, con);
   MySqlDataReader reader = con.ExecuteReader();
   while (reader.Read())
   {
     Console.WriteLine(reader.GetString("column_name"));
   }

Finally, you need to close the connection, after you finish executing the queries. You can do this by writing:
con.Close();

                 


Friday 1 June 2012

Tagged under: , , , ,

Generating a Unique Hardware Fingerprint for Software Licensing

Generating a hardware fingerprint is the most commonly sought technique to ensure security in case of softwares. There can be various methods of generating the hardware fingerprint, using different languages. However, the important thing to decide is, which devices to consider while generating the fingerprint.

For licensing purposes, the best and secure way is to generate a unique key for the client's machine and provide a corresponding license key for that key. The key can be generated using the unique id of the client's computer motherboard, BIOS and processor. When you get these IDs, you can generate any key of your preferable format.

In this post, I will get into the details of generating the unique fingerprint for the user's system.

Step I: Adding References:

First of all, you need to add the following references to your project.
1. System.Drawing
2. System.Management
3. System.Windows.Forms
For doing this, navigate to Project in the Menu Bar--> Add References-->.Net

Step II: Starting to Code

Add the following code at the start.
using System;
using System.Threading;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Resources;
using System.Globalization;
using System.Reflection;
using System.Text;
using System.Data;
using System.Drawing;


namespace Aj_fingerprint
{
    public class Aj_fp
    {
        public static void Main(string[] args)
        {
            Aj_Fingerprint f = new Aj_Fingerprint();
            string fp = f.Value();
            Console.WriteLine(fp);
            Console.ReadLine();
        }
    }


    public class Aj_Fingerprint
    {
        public string Value()
        {
            return pack(cpuId()+ biosId()+ diskId()+ baseId()+ videoId()+ macId());
        }
        
        private string biosId()
        {
            return identifier("Win32_BIOS", "Manufacturer")
            + identifier("Win32_BIOS", "SMBIOSBIOSVersion")
            + identifier("Win32_BIOS", "IdentificationCode")
            + identifier("Win32_BIOS", "SerialNumber")
            + identifier("Win32_BIOS", "ReleaseDate")
            + identifier("Win32_BIOS", "Version");
        }

        private string cpuId()
        {
            string retVal = identifier("Win32_Processor", "UniqueId");
            if (retVal == "")
            {
                retVal = identifier("Win32_Processor", "ProcessorId");

                if (retVal == "")
                {
                    retVal = identifier("Win32_Processor", "Name");


                    if (retVal == "")
                    {
                        retVal = identifier("Win32_Processor", "Manufacturer");
                    }

                    retVal += identifier("Win32_Processor", "MaxClockSpeed");
                }
            }

            return retVal;

        }

        private string diskId()
        {
            return identifier("Win32_DiskDrive", "Model")
            + identifier("Win32_DiskDrive", "Manufacturer")
            + identifier("Win32_DiskDrive", "Signature")
            + identifier("Win32_DiskDrive", "TotalHeads");
        }

        private string pack(string text)
        {
            string retVal;
            int x = 0;
            int y = 0;
            foreach (char n in text)
            {
                y++;
                x += (n * y);
            }

            retVal = x.ToString() + "00000000";

            return retVal.Substring(0, 8);
        }

        private string videoId()
        {
            return identifier("Win32_VideoController", "DriverVersion")
            + identifier("Win32_VideoController", "Name");
        }

        private string baseId()
        {
            return identifier("Win32_BaseBoard", "Model")
            + identifier("Win32_BaseBoard", "Manufacturer")
            + identifier("Win32_BaseBoard", "Name")
            + identifier("Win32_BaseBoard", "SerialNumber");
        }

        private string macId()
        {
            return identifier("Win32_NetworkAdapterConfiguration", "MACAddress", "IPEnabled");
        }

        private string identifier(string wmiClass, string wmiProperty)
        {
            string fprint = "";
            System.Management.ManagementClass aj_mc = new System.Management.ManagementClass(wmiClass);
            System.Management.ManagementObjectCollection aj_moc = aj_mc.GetInstances();
            foreach (System.Management.ManagementObject aj_mo in aj_moc)
            {
                if (fprint == "")
                {
                    try
                    {
                        fprint = aj_mo[wmiProperty].ToString();
                        break;
                    }
                    catch
                    { }
                }
            }
            return fprint;
        }

        private string identifier(string wmiClass, string wmiProperty, string wmiMustBeTrue)
        {
            string fprint = "";
            System.Management.ManagementClass aj_mc = new System.Management.ManagementClass(wmiClass);
            System.Management.ManagementObjectCollection aj_moc = aj_mc.GetInstances();
            foreach (System.Management.ManagementObject aj_mo in aj_moc)
            {
                if (aj_mo[wmiMustBeTrue].ToString() == "True")
                {
                    if (fprint == "")
                    {
                        try
                        {
                            fprint = aj_mo[wmiProperty].ToString();
                            break;
                        }
                        catch
                        { }
                    }

                }
            }
            return fprint;
        }


    }
}



Now, you can use this unique hardware fingerprint in further hashing, to authenticate the user system!!



You can for further assistance.

Tuesday 1 May 2012

Tagged under: , , ,

Solution for "Installation Error 0X80004002"

I was having a tough time installing Google Drive. When the setup was run, it gave an error message saying Google Update Installation failed, with error 0X80004002. This error is very common & occurs while installing Google products, like Chrome, Drive.
I tried to search for the solution but in vain. So I took a seemingly daring way, to solve this problem, and guess what...it worked!!!
Though this seems to be a crude way, it worked for me:

1. I Uninstalled all the Google related softwares from my PC, like Chrome, GTalk, Google Earth, Picasa.
2. Then open Run, and type regedit. This opens the Registry Editor.
3. Browse to HKEY_CURRENT_USER in the side bar.
4. Browse Software, and look for Google.
5. Right Click, and select DELETE.
6. Now close the Registry Editor, and try to install the Google related application again.

Had a tough time while reinstalling all my other Google applications though!!

Please contribute, if you have any better solution!!

For me, it worked...hope it works for you!!



You can for further assistance.

Saturday 31 March 2012

Tagged under: , , , ,

Sending email using PHP...(PHPMailer)

Sending emails using PHP is an easy task...Just a few steps and you are through!!

Step I: Download PHPMailer
The very first thing that needs to be done is, downloading the PHPMailer package. This package contains all the methods for sending simple mails, to sending mails with attachments!!
You can download the package from: PHPMailer

Step II: Starting to Code
Create a new php file test.php and copy the following code:
(Note: test.php file should be in the same folder as the extracted PHPMailer package)



The above code uses the gmail SMTP server...You have to mention the username and password of your gmail account!!

This is it!! You are now all ready to send mail!!

My next post will include sending attachments in emails....and also using mail() method!! So, keep visiting!!

You can for further assistance.

Tuesday 7 February 2012

Tagged under: , , ,

Macromedia Flash 8

Flash is a drawing and animation package designed to work with vector graphics. It creates animations which can include sounds, music and interactivity, and which are optimised for use on the web. Hence, the files it produces are small and designed for streaming. Furthermore, all the elements which form part of a flash movie are embedded within the movie. This means that, unlike a standard web page which relies on the fonts and resources on the client machine, as long as the user has the flash player installed, the movie will play exactly as you design it.
                The default file extension for a Flash file is .fla. Flash movie files can also be published in .htm, .swf, .jpg, .exe, .png or as a projector file.

Layout:

§  Toolbox:
The toolbox contains all tools necessary for drawing, viewing, coloring and modifying your objects. Each tool in the toolbox comes with a specific set of options to modify that tool. The diagram below outlines the grouping of tools.

Sunday 5 February 2012

Tagged under: , ,

Autodesk MAYA



Introduction:

Maya is the 3-D animation software that provides a number of tools for creating complex characters and animations. Maya's powerful feature set gives us the flexibility to create any kind of animation. The functionality of the Maya software can be extended with the use of MEL (Maya embedded language). MEL can be used to customize the user interface and write scripts and macros. 
Maya can create objects, lights, cameras and textures. Any object, light, camera, or just any entity can be animated by changing the value of its parameters in time. We can use Maya, to create effects or animations or movies, commercials, architectural animation and forensic animation.

Interface:

Maya user interface looks provides a large number of functions and the scope to add more functions to the user interface which provides the real flexibility to the program. Along with the common functions there are set of functions dedicated to a more specific task like modeling, texturing, animation, rendering etc. The default Maya user interface can be divided into the following sections.
  • Main Menu Bar
Tools and items are accessible from pull down menus located at the top of the user interface. In Maya, menus are grouped into menu sets. These menu sets are accessible from the Main Menu bar.

  • Status Line
The Status Line, located directly below the Main Menu bar, contains a variety of items, most of which are used while modeling or working with objects within Maya. Many of the Status Line items are represented by a graphical icon. The icons save space in the Maya interface and allow for quick access to tools used most often.

  • Shelf
It contains different tools and commands which are used to organize commonly used functions and tools into groups. Different shelves can be created for different functions like modeling, animation, texturing etc with the required tools for each function.

  • Tool Box
Maya Tool Box contains common tools as well as layout buttons for changing views and layouts. The tool box contains:
- Select tool to select a particular object or a group of objects together.
- Lasso tool is used to draw a free hand border around the objects to be selected.
- Move, Rotate and Scale tools are used for transforming objects in Maya.
- Soft Modification tool is used to select the sub-object elements and modify them by
  moving, rotating or scaling in a way that the neighboring sub-objects also get affected
  by this deformation with the effect being an inverse of distance from the primary
  selected sub-objects.
- Last Selected tool section shows the last used tool for easy access.
- Single Perspective view button lets you view the workspace as a single large view from a single perspective.
- Four Views can be used to view the workspace in four sections with each section containing the three orthographic views top, side and front and a perspective view respectively.
Other combination options below these tools are used to divide the workspace into different section in such a way that one section contains the view of the scene and other contains an animation or rendering editor so that you can edit the attributes and watch the results simultaneously.

  • Workspace
The Workspace displays by default in a perspective window or panel. The purpose of using workspace is to view your scene. The workspace can be divided into sections to accommodate the orthographic and perspective views of the scenes as well as the different editors for animation, texturing and rendering etc.

  • Panel Menus
Every view panel has a common set of menus at the top.

  • Time Slider & Range Slider
The Two Sliders are for controlling the frames in your animation. The Time Slider includes the playback buttons and the current time indicator. The Range slider includes start and end times and allows animators to focus on a specific part of the animation.

  • Command Line
The command Line lets you enter the MEL (Maya embedded Language) commands to perform various functions. The left side is where you can type MEL commands and the right half displays system responses, error messages, and warnings.

  • Help Line
Like several other applications, you can look at the help line for descriptions, instructions, and other useful information. While a tool is selected, the helpline gives out a brief description for "how to" and "what for".

  • Channel box
The Channelbox is on the right side of the screen. In this menu you will find all the properties of selected objects, and you can change those properties. If you apply a certain command on an object, Maya will remember this. This is called the history of an object and that is also shown here.

  • Layer editor
It helps in working with different layers in an animation. Objects can be placed in different layers and can be edited using this tool.

Components:



Fluid Effects

A realistic fluid simulator effective for simulating smoke, fire, clouds and explosions.

Classic Cloth

Cloth simulation to automatically simulate clothing and fabrics moving realistically over an animated character.

Fur

Animal fur simulation similar to Maya Hair. It can be used to simulate other fur-like objects, such as grass.

Hair

A simulator for realistic-looking human hair implemented using curves and Paint Effects. These are also known as dynamic curves.

Maya Live

A set of motion tracking tools for CG matching to clean plate footage.

nCloth

nCloth is the first implementation of Maya Nucleus, Autodesk's simulation framework. It gives the artist further control of cloth and material simulations.

nParticle

nParticle is addendum to Maya Nucleus toolset. nParticle is for simulating a wide range of complex 3D effects, including liquids, clouds, smoke, spray, and dust.

MatchMover

This enables compositing of CGI elements with motion data from video and film sequences.

Composite

It is an interactive node based film composing solution.

Camera Sequencer

Camera Sequencer is used to layout multiple camera shots and manage them in one animation sequence.


Maya Embedded Language:

Maya has its very own cross-platform scripting language called Maya Embedded Language. MEL is used not only for scripting, but also as a means to customize the core functionality of the software, since much of the tools and commands used are written in it. Code can be used to engineer modifications, plug-ins or be injected into runtime. Outside these superficial uses of the language, user interaction is recorded in MEL, allowing even inexperienced users to implement subroutines.

Friday 3 February 2012

Tagged under: , , , , ,

Client Server Chat

In this tutorial we will learn how to write a simple client server chat program in java. We will right both the server and client side of this program. One of the ways computers can communicate to each other through the internet is by using TCP/IP.
network socket is an endpoint of an inter-process communication flow across a computer network. Today, most communication between computers is based on the Internet Protocol; therefore most network sockets are Internet sockets.
socket address is the combination of an IP address and a port number, much like one end of a telephone connection is the combination of a phone number and a particular extension. Based on this address, internet sockets deliver incoming data packets to the appropriate application process or thread.

An Internet socket is characterized by a unique combination of the following:
  • Local socket address: Local IP address and port number
  • Remote socket address: Only for established TCP sockets. As discussed in the client-server section below, this is necessary since a TCP server may serve several clients concurrently. The server creates one socket for each client, and these sockets share the same local socket address.
  • Protocol: A transport protocol (e.g., TCP, UDP, raw IP, or others). TCP port 53 and UDP port 53 are consequently different, distinct sockets.

So, now lets get started with the actual code...
  • Client.java:
import java .io.*;
import java.net.*;
public class Client
{
Socket soc;
BufferedReader inFromUser,inFromServer;
PrintWriter outToServer;
String str;
public Client()
{
try
{
soc=new Socket(InetAddress.getLocalHost(),9999);
inFromUser=new BufferedReader(new InputStreamReader(System.in));
outToServer=new PrintWriter(soc.getOutputStream(), true);
System.out.println("Client Started");
while(true)
{
str=inFromUser.readLine();
outToServer.println(str);
new InnerClient();
}
}
catch (Exception e){e.printStackTrace();}
}
class InnerClient extends Thread
{
String str1;
InnerClient()
{
try
{inFromServer=new BufferedReader(new InputStreamReader(soc.getInputStream()));
start();
}
catch (Exception e){e.printStackTrace();}
}
public void run()
{
try
{
while(true)
{
str1=inFromServer.readLine();
System.out.println("Server says : " +str1);
}
}
catch (Exception e){e.printStackTrace();}
}
}
public static void main(String args[])
{
new Client();
}
}
  • Server.java:
import java.io.*;
import java.net.*;
public class Server extends Thread
{
ServerSocket ss;
Socket soc;
BufferedReader inFromUser,inFromClient;
PrintWriter outToClient;
String str;
public Server()
{
try
{
System.out.println("Chat Server");
ss=new ServerSocket(9999);
System.out.println("Server started.Wawiting for Client......");
soc=ss.accept();
System.out.println("client connected.");
inFromUser= new BufferedReader(new InputStreamReader(soc.getInputStream()));
start();
new InnerServer();
}
catch (Exception e) {e.printStackTrace();}
}
public void run()
{
try
{
while(true)
{
str= inFromUser.readLine();
System.out.println("Client says:"+str);
}
}
catch (Exception e) {e.printStackTrace();}
}
class InnerServer
{
String str1;
InnerServer()
{
try
{
inFromClient=new BufferedReader(new InputStreamReader(System.in));
outToClient=new PrintWriter(soc.getOutputStream(),true);
while(true)
{
str1=inFromClient.readLine();
outToClient.println(str1);
}
}
catch(Exception e){e.printStackTrace();}
}
}
public static void main(String args[])
{
new Server();
}
}



Note: If you want to implement the Server & Client on Different PC's then the only change required is changing the InetAddress.getLocalHost() in Client.java to the IP address of the Server PC!!

SNAPSHOTS OF SERVER & CLIENT SIDES

 

You can for further assistance.

Thursday 26 January 2012

Tagged under: , , ,

...straight from the heart of an INDIAN



“With the dawn of a new day, came a new stage,
With determined agitation, we broke a white cage,
India rose to freedom, when the world was asleep,
The jailor had to back off, before our leap.”
At the dawn of history, India started on her quest, and trackless centuries are filled with her striving, and the grandeur of her success and her failures. Through good and ill fortune alike, she has never lost her sight of that quest, or forgotten the ideals, which gave her the strength. The achievement which we celebrate today is but a step, an opening of opportunity, to the greater triumphs and achievements that await us. Are we brave enough and wise enough to grasp this opportunity and accept the challenge of the future? What exactly does ‘Freedom’ mean to us?
Freedom does not merely mean breaking the bondage of the oppressor by the oppressed. But it has a rather significant appeal to break off the internal bondages, of thought, knowledge, customs and traditions. The greatest freedom, is the freedom from all prejudices, preconceived notions, conditioning, ideologies, conflicting desires, hatred & anger- until you have achieved awareness of pure consciousness- you cannot call yourself free, you are not independent. Once you have that awareness, you realize what freedom is…what Independence means The road to freedom is not strewn with roses. It is a path covered with thorns, but at the end of it, there is the full blown rose of liberty, awaiting the tired pilgrim. We have gained freedom when we had paid the full price for our right to live. Freedom is to live one’s life, with the window of the soul open to new thoughts, new ideas, new aspirations. In 1947, Winston Churchill laughed at the idea of India as a Democracy. Today, it is the world’s largest

Monday 23 January 2012

Tagged under: ,

Computer Engineering SEM VIII Question Papers

You can download the question papers from the download box present on my blog. Optionally, you can download it from the link COMP_ENGG_SEM_VIII

You can for further assistance.

Saturday 21 January 2012

Tagged under: , , , ,

C# code for connecting to a Web Page & Obtaining its Source Code/ Web Crawler Algorithm in C#

HTTP is the primary mechanism for communicating with resources over the Web. It is a Stateless protocol, used for simple Request-Response communication.  A developer may often want to obtain web pages & their source codes, for different reasons like: building a spider, obtaining info on a particular page, etc. For this purpose, the .NET Framework includes classes that aid in this respect.

Requesting & Obtaining an HTTP page:

Thursday 12 January 2012

Tagged under: , , , , , ,

Live Search / AutoComplete Using XML & PHP

Many a times, we need to build a search engine for our website, which can serve various purposes like searching through your site! In such cases, live search option is the most sought after, for the ease of searching!!
The code for live search can be broken down in three parts viz:
  1. HTML file
  2. PHP file
  3. XML file