Types of Cloud Computing

Cloud computing is typically classified in two ways:

  1. Type of access to the cloud computing – The working model is referred to as Deployment models
  2. Type of services offered – The working model is referred to as  Service models

Various deployment models :

  1. Public cloud allows systems and services to be easily accessible to the general public. Public cloud may be less secure because of its openness, e.g., e-mail.

    In Public cloud the computing infrastructure is hosted by the cloud vendor at the vendor’s premises. The customer has no visibility and control over where the computing infrastructure is hosted. The computing infrastructure is shared between any organizations.

  2. Private cloud Cloud allows systems and services to be accessible within an organization. It offers increased security because of its private nature.

    The computing infrastructure is dedicated to a particular organization and not shared with other organizations. Some experts consider that private clouds are not real examples of cloud computing. Private clouds are more expensive and more secure when compared to public clouds.

    Private clouds are of two types: On-premise private clouds and externally hosted private clouds. Externally hosted private clouds are also exclusively used by one organization, but are hosted by a third party specializing in cloud infrastructure. Externally hosted private clouds are cheaper than On-premise private clouds.

  3. Community cloud involves sharing of computing infrastructure in between organizations of the same community. It allows systems and services to be accessible by group of organizations.

    For example all Government organizations within the state of California may share computing infrastructure on the cloud to manage data related to citizens residing in California.

  4. Hybrid cloud  is mixture of public and private cloud. However, the critical activities are performed using private cloud while the non-critical activities are performed using public cloud. Organizations may host critical applications on private clouds and applications with relatively less security concerns on the public cloud. The usage of both private and public clouds together is called hybrid cloud. A related term is Cloud Bursting. In Cloud bursting organization use their own computing infrastructure for normal usage, but access the cloud using services like Salesforce cloud computing  for high/peak load requirements. This ensures that a sudden increase in computing requirement is handled gracefully.

Various Service Model:

Service Models are the reference models on which the Cloud Computing is based. These can be categorized into three basic service models as listed below:

  1. Infrastructure As A Service (IAAS)

IaaS provides access to fundamental resources such as physical machines, virtual machines, virtual storage, etc.

  1. Platform As A Service (PAAS)

PaaS provides the runtime environment for applications, development & deployment tools, etc.

  1. Software As A Service (SAAS)

SaaS model allows to use software applications as a service to end users.

The following image shows a comparison between the three types of services:

types_of_service

Posted in Cloud Computing | Leave a comment

What is Cloud Computing ?

Cloud computing refers to the abstraction of web based computers, resources and services that system developers can utilize to develop their system rather than possessing local resources. In other words cloud computing enables companies to consume compute resources as a utility — just like electricity — rather than having to build and maintain computing infrastructures in-house. In cloud computing, the word “cloud” symbolizes  for “the Internet,” so the phrase cloud computing means “a type of Internet-based computing“, where different services — such as servers, storage and applications —are delivered to an organization’s computers and devices through the Internet.

Clouds allow access to remote computing services, which are generally delivered by a single party. Users only have to pay for what they use, when they want to use it.

cloud_concept1

How Cloud Computing Works?

Let view the cloud as it consists of layers -mainly the back end layers and the front end layers. The front layers are the parts we see and interact with. For example, say when we access our profile on Facebook account, we are using software running on the front end of the cloud. The back end consists of the hardware and the software architecture that delivers the data we see on the front end.

Clouds use a network layer to connect users’ end point devices, like computers or smart phones, to centralized resources in a data centre. Users can access the data centre via a company network or the internet or both. Clouds can also be accessed from any location, allowing mobile workers to access their business systems on demand.

Applications running on the cloud take advantage of the flexibility of the computing power available. The computers are set up to work together so that it appears as if the applications were running on one particular machine. This flexibility is a major advantage of cloud computing, allowing the user to scale up or down as much of the cloud resources as they want at short notice, without any assigning any specific hardware for the job in advance.

Posted in Cloud Computing | Leave a comment

How to pass a multi-dimensional array to a function?

When we pass an array to a function, what really gets passed is a pointer to the array’s base address. We know that when we declare a function that seems to accept an array as a parameter, the compiler quietly compiles the function as if that parameter were a pointer, since a pointer is what it will actually receive. What about multidimensional arrays? What kind of pointer is passed down to the function?

When we  pass a multi-dimensional array, since the first element of a multidimensional array is another array, what gets passed to the function is a pointer to an array. If you want to declare the function func in a way that explicitly shows the type which it receives, the declaration would be

func(int (*a)[7])
	{
	...
	}


The declaration int (*a)[7] says that a is a pointer to an array of 7 ints. Lets take an example of adding two matrix.

#include<stdio.h>
#define R 10
#define C 10
 
void addmat(int (*x)[],int (*y)[],int (*z)[],int,int);
void readmat(int (*a)[],int,int);
void showmat(int (*a)[],int,int);
main()
{
	int m1[R][C],m2[R][C],m3[R][C],r,c,i,j;
 
	printf("\nEnter no. of rows and columns you want to use");
	scanf("%d %d",&r,&c);
	printf("\nEnter data for matrix1");
	readmat(m1,r,c);
	printf("\nEnter data for matrix2");
	readmat(m2,r,c);
	addmat(m1,m2,m3,r,c);	
	printf("\nMatrix - 1");
	showmat(m1,r,c);
	printf("\nMatrix - 2");
	showmat(m2,r,c);
	printf("\nMatrix - 3 = Matrix -1 + Matrix -2");
	showmat(m3,r,c);	
	return 0;
}
void readmat(int (*a)[C],int r,int c)
{
	int i,j;
	for(i=0;i<r;i++)
	{
		for(j=0;j<c;j++)
		{
			scanf("%d",*(a+i)+j);
		}	
	}
}
void showmat(int (*a)[C],int r,int c)
{
	int i,j;
	for(i=0;i<r;i++)
	{
		printf("\n");
		for(j=0;j<c;j++)
		{
			printf("%d\t",*(*(a+i)+j));
 
		}	
	}
 
}
void addmat(int (*x)[C],int (*y)[C],int (*z)[C],int r,int c)
{
	int i,j;
	printf("\nAdding ...");	
	for(i=0;i<r;i++)
	{
		for(j=0;j<c;j++)
		{
			*(*(z+i)+j)=*(*(x+i)+j)+*(*(y+i)+j);
 
		}	
	}	
}


Posted in Placements | Leave a comment

Memory Layout of a C Program

There are four segments in C Program. Data, Code, Stack and Heap Segments. All this sections define the scope & storage class of the data and flow of control between the instructions.

Data Segments: The data segment is used to hold the value of those variables that need to be available throughout the lifetime of the program, so global & static variables (which are local but are required between function calls) are stored here. The data segment is divided into two parts: the Initialized data segment & the Un-initialized data segment. All the global/static variables which are not initialized are created in the un-initialized part of the data segment which is set to zero by loader. The uninitialized segment usually referred as BSS(Block Starting with Symbol). BSS gets its name from old IBM systems that had segment initialized to zero. The layout of this segment is in the control of the underlying OS, though some loaders might give some control to the users. Pointers can be used to access the data in this segment.

Code Segment: The code segment is used to store the executable code. This area is also known as the Text Segment & is of fixed size. Only function pointers can access this area. It’s only read only segment so any attempt to write this area by user can lead to undefined behavior.

Stack segment: Here automatic variables are stored, along with information that is saved each time a function is called. Each time a function is called, the address of where to return to and certain information about the caller’s environment, such as some of the machine registers, are saved on the stack. The newly called function then allocates room on the stack for its automatic and temporary variables. This is how recursive functions in C can work. Each time a recursive function calls itself, a new stack frame is used, so one set of variables doesn’t interfere with the variables from another instance of the function.

The stack is a collection of stack frames. When a new frame needs to be added (as a result of a newly called function), the stack grows downward. Every time a function is called, an area of memory is set aside, called a stack frame, for the new function call. This area of memory holds some crucial information, like:

  1. Storage space for all the automatic variables for the newly called function.
  2. The line number of the calling function to return to when the called function returns.
  3. The arguments, or parameters, of the called function.

Heap segment: The heap is for dynamic memory allocation i.e. whenever memory is allocated using malloc/ calloc/ realloc functions etc heap area is used. The C library also gets dynamic memory for its own personal workspace from the heap as well. As more memory is requested at run-time, the heap grows upward.

The stacks and heaps are un-initialized area, so any uninitialized variables get a default value as garbage value.

Posted in Placements | Leave a comment

PHP and Its Advantages

PHP is one of the most popular server side scripting languages running today. It is used for creating dynamic webpages those interact with the user offering customized information.
Rasmus Lerdorf wrote the first PHP (first called Personal Home Page) scripts as a series of Perl scripts that he used to track visitors to his webpage and to see who was viewing his resume. He eventually rewrote PHP as a scripting engine and added support for forms. PHP has been evolving since 1994 as an open source code. A community of followers and developers formed and began using and further developing PHP. Over the years the Personal Home Page acronym was dropped and it evolved into the PHP Hypertext Pre-processor.

PHP is open source and similarly to most open source software, it is free for both personal and commercial use. PHP is available for many operating systems but its native operating system is Linux. In that relation you will often hear LAMP development, which is an abbreviation for software development using Linux, Apache, MySQL, and PHP. Some of the advantages of using PHP are:

  • PHP code is inserted directly into the HTML that makes up a website. When a visitor comes to the website, the code is executed.
  • As PHP is a server side technology, the user does not need any special browser or plug-ins to see the PHP in action.
  • PHP is simple, It is easy to understand and learn, especially for those with backgrounds in programming such as C, javascript and HTML. The language is similar to C and Perl so that anyone with a background in either C or Perl programming will feel comfortable using.
  • PHP runs on just about every platform including most UNIX, Macs and Windows versions.
  • PHP doesn’t use a lot of the system’s resources, so it runs fast and doesn’t tend to slow other processes down.
  • It is typically used as an Apache module, written in C, so it loads and executes quickly.
  • It works well with other software and can be quite fast.
  • PHP is fairly stable and since it is open source, the PHP community works together to fix any bugs. The community offers technical support and continuously updates the code further expanding PHP’s capabilities.
  • PHP offers many levels of security to prevent malicious attacks. These security levels can be adjusted in the .ini file.
  • Another key advantage of PHP is its connective abilities. PHP uses a modular system of extensions to interface with a variety of libraries such as graphics, XML, encryption, etc. In addition, programmers can extend PHP by writing their own extensions and compiling them into the executable or they can create their own executable and load it using PHP’s dynamic loading mechanism.
  • In addition to extensions, PHP has tons of server interfaces, database interfaces and other modules available. Of the server interfaces, PHP can load into Apache, IIS, Roxen, THTTPD and AOLserver. It can also be run as a CGI module. Database interfaces are available for MySQL, MS SQL, Informix, Oracle and plenty of others. If a database is not supported, ODBC is an option.
  • The main PHP source repository is loaded with modules and interfaces that users have written and contributed. There you can find modules for flash movies, PDF files, calendars and more.
  • Benefit of applications written in PHP is that they are fast and if written properly, they could be pretty secure. There are also tons of ready PHP scripts and functions, which you can customize to your liking and use in your PHP applications.
Posted in Web Technology | 1 Comment

How to Prepare for a Technical Interview

It is the thought of having to answer technical questions makes most job seekers really anxious in a campus interview. A technical interview for Engineering/MCA students not only requires more preparation; it is more in depth in that the interviewee must demonstrate his ability to solve problems. Within a time span of 20 – 40 minutes one needs to prove his/her technical excellence. The key to doing well in a technical interview is being able to confidently demonstrate or showcase your knowledge. The following are certain points one should keep in mind while preparing.

  1. Make a list of the technical skills that you are confident with as those subjects you need to give maximum emphasis on. And do not mention any subject you are not confident about.
  2. The projects that you have undertaken have to be prepared well. Review all the technology you have used in the project and prepare the documentation which you can produce during the interview if allowed.
  3. Search for the company’s website and learn as much as you can about the company with which you are interviewing. Make a note of the recent projects they have undertaken and which are the various technologies they are using etc.
  4. Gather your study materials and take a few days to study them. Instead of attempting to memorize all of the information in your technical books and notes, study the subjects you are good in and give a overlook on others. Give yourself some time to look over the study materials as this will help you remember the information.
  5. Your success in a technical interview depends more on your ability to solve problems than it does on how much information you can recite from memory. Reviewing case studies, word problems and brainteasers is a good way to develop your problem-solving skills.
  6. Be prepared to deliver. Technical interviews often involve using a whiteboard or blank piece of paper to solve problems and demonstrate skills. An interviewer will ask you to do this in order to test your communication skills and determine what your thought process is when you solve problems. Your studies should include solving complex problems on paper. You should practice explaining the solution to the problems as you write them down
  7. Practice answering interview questions. Now that you have studied and feel ready to answer any technical questions that the interviewer might ask you, you should focus on being confident during your interview. Maintaining good eye contact, sitting up straight and expressing your enthusiasm throughout the interview are just as important as demonstrating your skills. The best way to practice for your interview is to answer the questions out loud or in front of someone. Observe your body language and continue practicing until you feel comfortable and relaxed.
  8. Review your resume. The best way to prove your technical skills is by reviewing the different ways in which you have used your skills in project works. Interviewers will often ask you about the different ways you’ve used your skills to solve problems and develop new procedures. You must respond to these questions by describing different work situations you have encountered and how you have accomplished difficult tasks or finished projects.
  9. Find something comfortable and professional to wear to your interview. While the focus of your technical interview is to determine whether or not you have the technical skills to do the job, your appearance is just as important. As the saying goes “First impression lasts long” – you only get one opportunity to make a positive first impression, and what you wear to the interview reveals a lot about your character. In researching the employer, you may have noticed that casual attire is allowed, but this dress code does not apply to you. Wear a formal wear that is comfortable and fits well.

Wish you all the best !!!

Posted in Placements | Leave a comment

ORACLE – A Brief Introduction

The concept of the relational database was first coined in 1970 by Dr. E. F. Codd. Oracle is a relational database management system from Oracle Inc. Oracle database helps in achieving reliable, flexible, secured and cost effective way to manage information and applications. Oracle offers high performance and scalability, because all computing resources can be flexibly allocated to applications as needed.

In oracle the logical and physical structures are separate and thus this helps in data independence i.e., physical storage of data can be managed without affecting the access to logical storage structures. Oracle is a major database which along with its added features passes the ACID test, which is important in insuring the integrity of data. Oracle is very much suited for enterprise computing and large database applications because of the following:

  • Oracle provides greater Performance and scalability
  • Helps in achieving greater reliability i.e., it ensures continuous availability of data and applications.
  • Have many features for maintaining the security of data.
  • Oracle has advanced integration features that allow applications and data to run anywhere in the network and thus offering distributed network.
  • ORACLE consists of many tools that allow one to create an application with ease and flexibility.
  • Several of the more useful features available to ORACLE application developers are integrity constraints, stored procedures and packages, database triggers, cost-based optimizer, shared SQL, locking and sequences.

Some more features are:

Automatic Storage Management : Oracle has in it Automatic Storage Management also called as ASM in short which helps in simplifying the administration of Oracle database files.

Oracle Scheduler: Oracle Scheduler helps in scheduling and performs various IT tasks.

Table space: The main feature of oracle is that the table space in it, helps in extracting data files from database and move or copy them to another location or even put them in another database by the concept of Transportable Table spaces in Oracle.

Oracle is available in different forms like namely:

Personal Oracle: It is a database ideal for single users and is used to develop code for implementation on other Oracle multi-user databases.

Oracle Standard Edition: Oracle Standard Edition was named Workgroup Server in its first iteration as part of the Oracle7 family and is often simply referred to as Oracle Server. Oracle Standard Edition is available on Windows NT, Netware, and UNIX platforms such as Compaq (Digital), HP/UX, IBM AIX, Linux, and Sun Solaris. The Oracle Standard Edition is useful for small number of users and a smaller database.

Oracle Enterprise Edition: This includes additional functionality and is used for larger-scale implementations. Thus it is used for a large number of users or a large database with advanced features for extensibility, performance, and management.

Oracle Lite: This is also called as Oracle Mobile and this is used for single users who are using wireless devices. Thus this is used in lightweight database engine for mobile computing on notebooks and handheld devices.

Oracle has full support for polymorphism, inheritance and most all of the OO constructs. Oracle also provides the concept of dimension objects. A dimension object is a description of the hierarchies inherent in the fact table and is used by Oracle to optimize execution plans and thereby helps in achieving higher performance level in the application. The ‘i’ in version of oracle like oracle 8i was added to denote added functionality supporting Internet deployment in the new version.

There are various branches in which one can go into by learning oracle like be a functional consultant, or a Database administrator DBA in short, Oracle PL/SQL Developer Certified Associate designation, Oracle Forms Developer Certified Professional designation and so on.

Posted in Database | 1 Comment