Web Programming for Artificial Intelligence -1
Web Programming for Artificial Intelligence -1
(Autonomous)
SiddharthNagar,Narayanavanam Road–57583
QUESTIONBANK(DESCRIPTIVE)
UNIT–I
HTML5, CSS3, XML, JavaScriptandJQuery
1 a What is Web Programming? Briefly explain the Architecture of WEB? [L1] [CO1] [ 6M ]
Web programming is the process of creating web pages. During this process, the
programmer is in charge of shaping the site according to the demands and needs
of the company.
Web architecture consists of several components, including the client, the server,
the network, and the database. The client is the web browser or application that
the user interacts with, and the server is the computer or group of computers that
host the website or web application. The network is the infrastructure that
connects the client and the server, such as the internet. The database is a
collection of data that is used to store and retrieve information for the website or
web application.
Web architecture also includes the design and layout of the website or web
application, as well as the way it is organized and the relationships between
different pages and components. It also includes the way the website or web
application is built and maintained, including the use of frameworks and
libraries, and the deployment and hosting of the website or web application
b What is HTML? Briefly explain the tags in HTML? [L1] [CO1] [ 6M ]
HTML tags are like keywords which defines that how web browser will format
and display the content. With the help of tags, a web browser can distinguish
between an HTML content and a simple content. HTML tags contain three main
parts: opening tag, content and closing tag. But some HTML tags are unclosed
tags.
2 Create a Simple job Registration form using HTML [L6] [CO1] [12M]
<!DOCTYPE html>
<html>
<head>
<title> Job Registration form</title>
</head>
<body>
<h2>Job application form</h2>
<form>
<h3>Personal Information</h3>
First name: <input type="text" name="Fname" placeholder="first name">
Last name: <input type="text" name="Lname" placeholder="last name">
Middle name: <input type="text" name="Mname" placeholder="middle name">
<br><br>
<table>
<tr>
<td>Current address</td>
<td>Permanant address</td>
</tr>
<tr>
<td><textarea rows="5" cols="15" name="Current address" placeholder="type your
address...."></textarea></td>
<td><textarea rows="5" cols="15" name="Permanant address" placeholder="type your
address...."></textarea></td>
</tr>
</table>
<p><strong>Phone:</strong></p>
Home Phone: <input type="number" name="pnumber" size="20" maxlength="5"
placeholder="Country code">
<br><br>
E-mail: <input type="E-mail" name="email" placeholder=" email address">
upload cv: <input type="file" name="cv"
<hr>
<br><br>
<hr>
<strong>Employment Details</strong>
<br>
<p><strong>position:</strong></p>
Professor: <input type="radio" name="position">
Assoc Prof: <input type="radio" name="Position">
Assit Prof: <input type="radio" name="position">
<br>
<p><strong> Are you Currently employed </strong></p>
yes: <input type="radio" name="employee">
No: <input type="radio" name="employee">
<hr>
<strong>Start date:</strong>
<input type="date" name="start date">
<hr>
<strong>Avalability</strong>
<br>
Monday: <input type="checkbox" name="day">
Tuesday: <input type="checkbox" name="day">
Wednesday: <input type="checkbox" name="day">
Thursday: <input type="checkbox" name="day">
Friday: <input type="checkbox" name="day">
Saturday: <input type="checkbox" name="day">
<hr>
Submit: <input type="Submit" name="submit">
Reset: <input type="reset" name="reset">
</form>
</body>
<html>
3 Explain HTML 5.0 and mention the tag differences between HTML and [L5] [CO1] [12M]
HTML 5.0?
HTML HTML5
It didn’t support audio and video without the use It supports audio and video controls with the use of <audio> and
of flash player support. <video> tags.
Vector graphics is possible in HTML with the Vector graphics is additionally an integral a part of HTML5 like
help of various technologies such as VML, Silver- SVG and canvas.
light, Flash, etc.
It does not allow drag and drop effects. It allows drag and drop effects.
Older version of HTML are less mobile-friendly. HTML5 language is more mobile-friendly.
Doctype declaration is too long and complicated. Doctype declaration is quite simple and easy.
4 Create a webpage using HTML and add CSS to the webpage. [L6] [CO1] [12M]
<!DOCTYPE html>
<html>
<head>
<style>
body {
background-color: linen;
}
h1 {
color: maroon;
margin-left: 40px;
}
</style>
</head>
<body>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
</body>
</html>
In CSS, the term "box model" is used when talking about design and layout.
The CSS box model is essentially a box that wraps around every HTML element.
It consists of: margins, borders, padding, and the actual content. The image below
illustrates the box model:
Content - The content of the box, where text and images appear
Padding - Clears an area around the content. The padding is transparent
Border - A border that goes around the padding and content
Margin - Clears an area outside the border. The margin is transparent
In the external css file, we have set color for H1 element as maroon. Now look at
the html source code, we have an i element, located within H1 element, to make
the word inheritance italic. Because of inheritance, word inheritance has also
become maroon since it is a child element of H1.
To set the value of a property which you want to be applied throughout a web
document, you can place that property value at the very top level of the document
tree, for HTML, which is html or body element. Here is an example:
To manipulate text using CSS properties. You can set following text properties
of an element −
The color property is used to set the color of a text.
The direction property is used to set the text direction.
The letter-spacing property is used to add or subtract space
between the letters that make up a word.
The word-spacing property is used to add or subtract space
between the words of a sentence.
The text-indent property is used to indent the text of a
paragraph.
The text-align property is used to align the text of a
document.
The text-decoration property is used to underline, overline,
and strikethrough text.
The text-transform property is used to capitalize text or
convert text to uppercase or lowercase letters.
The white-space property is used to control the flow and
formatting of text.
The text-shadow property is used to set the text shadow
around a text.
b Explain XHTML and Specify some new tags in XHTML? [L5] [CO1] [6M]
XHTML elements are referred to as "tags", though many prefer the term tag
strictly in reference to the semantic structures delimiting the start and end of an
element.
In XML, element names are defined by the developer. This often results in a
conflict when trying to mix XML documents from different XML applications.
<root>
<h:table xmlns:h="http://www.w3.org/TR/html4/">
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table xmlns:f="https://www.w3schools.com/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
</root>
DTD
DTD stands for Document Type Definition.
A DTD defines the structure and the legal elements and attributes of an XML
document.
XML DTD
The purpose of a DTD is to define the structure and the legal elements and
attributes of an XML document:
Note.dtd:
<!DOCTYPE note
[
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
9 a What is DOM? Briefly explain DOM based XML Processing? [L1] [CO1] [6M]
document.getElementById("name").innerHTML=
xmlDoc.getElementsByTagName("name")[0].childNodes[0].nodeValue;
document.getElementById("company").innerHTML=
xmlDoc.getElementsByTagName("company")[0].childNodes[0].nodeValue;
document.getElementById("phone").innerHTML=
xmlDoc.getElementsByTagName("phone")[0].childNodes[0].nodeValue;
</script>
</body>
</html>
The jQuery parseJSON() method takes a JSON string and returns a JavaScript object.
The specified JSON string must follow the strict JSON format. Passing an incorrect
string will cause a JS exception.
Some of the examples of malformed JSON strings that can cause an exception on
passing are given as follows -
As similar to the above strings, multiple other malformed strings will cause an
exception. The JSON standard also does not allow the appearance of control
characters (such as tab or newline character) in the string.
Syntax
1. jQuery.parseJSON( json )
UNIT–II
Web Applications and services
<html>
<head>
<title>AngularJS First Application</title>
</head>
<body>
<h1>Sample Application</h1>
<divng-app="">
<p>Enter your Name: <inputtype="text"ng-model="name"></p>
<p>Hello <spanng-bind="name"></span>!</p>
</div>
<scriptsrc="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js">
</script>
</body>
</html>
2 Explain briefly aboutMVC. [L2][CO2] [12M]
Features of MVC :
It provides a clear separation of business logic, Ul logic, and input logic.
It offers full control over your HTML and URLs which makes it easy to
design web application architecture.
It is a powerful URL-mapping component using which we can build
applications that have comprehensible and searchable URLs.
It supports Test Driven Development (TDD).
Components of MVC :
The MVC framework includes the following 3 components:
Controller
Model
View
Controller:
The controller is the component that enables the interconnection between the views and
the model so it acts as an intermediary. The controller doesn’t have to worry about
handling data logic, it just tells the model what to do. It process all the business logic
and incoming requests, manipulate data using the Model component and interact with
the View to render the final output.
View:
The View component is used for all the UI logic of the application. It generates a user
interface for the user. Views are created by the data which is collected by the model
component but these data aren’t taken directly but through the controller. It only
interacts with the controller.
Model:
The Model component corresponds to all the data-related logic that the user works with.
This can represent either the data that is being transferred between the View and
Controller components or any other business logic-related data. It can add or retrieve
data from the database. It responds to the controller’s request because the controllercan’t
interact with the database by itself. The model interacts with the database and gives the
required data back to the controller.
3 Explain about LARAVEL framework. [L5][CO2] [12M]
Laravel offers a rich set of functionalities which incorporates the basic features of PHP
frameworks like CodeIgniter, Yii and other programming languages like Ruby on Rails.
Laravel has a very rich set of features which will boost the speed of web development.
If you are familiar with Core PHP and Advanced PHP, Laravel will make your task
easier. It saves a lot time if you are planning to develop a website from scratch.
Moreover, a website built in Laravel is secure and prevents several web attacks.
Features of Laravel
Laravel offers the following key features which makes it an ideal choice for designing
web applications −
Modularity
Laravel provides 20 built in libraries and modules which helps in enhancement of the
application. Every module is integrated with Composer dependency manager which
eases updates.
Testability
Laravel includes features and helpers which helps in testing through various test cases.
This feature helps in maintaining the code as per the requirements.
Routing
Laravel provides a flexible approach to the user to define routes in the web application.
Routing helps to scale the application in a better way and increases its performance.
Configuration Management
A web application designed in Laravel will be running on different environments, which
means that there will be a constant change in its configuration. Laravel provides a
consistent approach to handle the configuration in an efficient way.
Query Builder and ORM
Laravel incorporates a query builder which helps in querying databases using various
simple chain methods. It provides ORM (Object Relational Mapper)
and ActiveRecord implementation called Eloquent.
Schema Builder
Schema Builder maintains the database definitions and schema in PHP code. It also
maintains a track of changes with respect to database migrations.
Template Engine
Laravel uses the Blade Template engine, a lightweight template language used to design
hierarchical blocks and layouts with predefined blocks that include dynamic content.
E-mail
Laravel includes a mail class which helps in sending mail with rich content and
attachments from the web application.
Authentication
User authentication is a common feature in web applications. Laravel eases designing
authentication as it includes features such as register, forgot password and send
password reminders.
Redis
Laravel uses Redis to connect to an existing session and general-purpose cache. Redis
interacts with session directly.
Queues
Laravel includes queue services like emailing large number of users or a
specified Cron job. These queues help in completing tasks in an easier manner without
waiting for the previous task to be completed.
Some of the most popular and extensively used MVC frameworks are listed
below.
• Ruby on Rails
• Django
• CherryPy
• Spring MVC
• Catalyst
• Rails
• Zend Framework
• Fuel PHP
• Laravel
• Symphony
Single page application (SPA) is a web application that fits on a single page. All your
code (JS, HTML, CSS) is retrieved with a single page load. And navigation between
pages performed without refreshing the whole page.
The MVC architectural pattern allows us to adhere to the following design principles:
2. Increase cohesion. The components have stronger layer cohesion than if the view
and controller were together in a single UI layer.
3. Reduce coupling. The communication channels between the three components are
minimal and easy to find.
4. Increase reuse. The view and controller normally make extensive use of reusable
components for various kinds of UI controls. The UI, however will
become application specific, therefore it will not be easily
reusable.
5. Design for flexibility. It is usually quite easy to change the UI by changing the
view,the controller, or both.
8 Design an application in node.js for student management [L6][CO2] [12M]
import javax.swing.*;
import java.awt.*;
import java.awt.Image;
import java.awt.event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.print.*;
import javafx.print.Printer;
import java.io.*;
import java.io.IOException;
JFileChooser f1;
// Default constructor to
// initialize the parameters
fee()
{
l2 = new JLabel(
"Name of the Student:");
l2.setBounds(50, 150, 250, 20);
l3 = new JLabel(
"Name of the Father:");
l3.setBounds(50, 200, 250, 20);
l7 = new JLabel("Address:");
l7.setBounds(50, 400, 250, 20);
l9 = new JLabel("Gender:");
l9.setBounds(50, 500, 250, 20);
JRadioButton r5
= new JRadioButton(" Male");
JRadioButton r6
= new JRadioButton(" Female");
String language[]
= { "2016", "2015", "2014" };
String languagess[]
= { "2019", "2018", "2017" };
bg1.add(rb1);
bg1.add(rb2);
String languages[]
= { "CSE", "ECE", "EEE",
"CIVIL", "MECH" };
final JComboBox cb
= new JComboBox(languages);
cb.setBounds(800, 200, 90, 20);
DefaultListModel<String> li2
= new DefaultListModel<>();
li2.addElement(
"2 SHARE(1, 50, 000)");
li2.addElement(
"3 SHARE(1, 40, 000)");
li2.addElement(
"5 SHARE(1, 20, 000)");
li2.addElement(
"8 SHARE(1, 10, 000)");
li2.addElement(
"bus(40, 000)");
JButton Receipt
= new JButton("Generate Receipt");
Receipt.setBounds(600, 490, 150, 30);
JButton b2 = new JButton("Reset");
b2.setBounds(750, 490, 150, 30);
JButton Print = new JButton("Print");
Print.setBounds(900, 490, 150, 30);
add(l1);
add(l2);
add(l3);
add(l4);
add(l5);
add(l6);
add(l7);
add(l8);
add(l9);
add(l10);
add(l11);
add(l12);
add(l13);
add(l14);
add(tf1);
add(tf2);
add(tf3);
add(tf4);
add(tf5);
add(tf6);
add(tf7);
add(tf8);
add(area1);
add(area2);
add(l15);
add(rb1);
add(rb2);
add(rb3);
add(rb4);
add(r5);
add(r6);
add(cb);
add(cb1);
add(cb2);
add(list1);
add(list2);
add(b);
add(label);
add(Receipt);
add(b2);
add(Print);
b.addActionListener(new ActionListener() {
area2.setText(
"--------------------------------"
+ "-----------FEE RECEIPT----"
+ "--------------------------"
+ "--------------------------"
+ "-------------------\n");
area2.setText(area2.getText()
+ "Student Name: "
+ tf1.getText()
+ "\n");
area2.setText(area2.getText()
+ "Father's Name: "
+ tf2.getText()
+ "\n");
area2.setText(area2.getText()
+ "RollNumber: "
+ tf3.getText()
+ "\n");
area2.setText(area2.getText()
+ "Email ID: "
+ tf4.getText()
+ "\n");
area2.setText(area2.getText()
+ "Contact Number: "
+ tf5.getText()
+ "\n");
area2.setText(area2.getText()
+ "Wants to take: "
+ cb.getSelectedItem()
.toString()
+ "\n");
if (rb1.isSelected()) {
area2.setText(area2.getText()
+ "Wants to Join in "
+ "School of Engineering "
+ "and Applied Sciences\n");
}
if (rb2.isSelected()) {
area2.setText(area2.getText()
+ "Wants to Join in "
+ "School of Liberal "
+ "Arts and Sciences\n");
}
if (rb3.isSelected()) {
area2.setText(area2.getText()
+ "Wants to be a "
+ "Hosteller \n");
}
if (rb4.isSelected()) {
area2.setText(area2.getText()
+ "Wants to be a "
+ "Day Scholar \n");
}
area2.setText(area2.getText()
+ "Had chosen: "
+ list1.getSelectedValue()
.toString()
+ "\n");
area2.setText(area2.getText()
+ "Had chosen: "
+ list2.getSelectedValue()
.toString()
+ "\n");
if (index2 == 1) {
area2.setText(area2.getText()
+ " "
+ "Total amount to be paid "
+ "is 3.9 Lakhs \n");
}
if (index2 == 2) {
area2.setText(area2.getText()
+ " "
+ "Total amount to be paid "
+ "is 3.8 Lakhs \n");
}
if (index2 == 3) {
area2.setText(area2.getText()
+ " "
+ "Total amount to be paid "
+ "is 3.7 Lakhs \n");
}
if (index2 == 4) {
area2.setText(area2.getText()
+ " "
+ "Total amount to be paid "
+ "is 2.9 Lakhs \n");
}
if (e.getSource() == Receipt) {
try {
FileWriter fw
= new FileWriter(
"java.txt", true);
fw.write(area2.getText());
fw.close();
}
catch (Exception ae) {
System.out.println(ae);
}
}
JOptionPane.showMessageDialog(
area2, "DATA SAVED SUCCESSFULLY");
};
});
addWindowListener(
new WindowAdapter() {
public void windowClosing(
WindowEvent we)
{
System.exit(0);
}
});
setSize(800, 800);
setLayout(null);
setVisible(true);
setBackground(Color.cyan);
}
public static void main(String[] args)
{
new fee();
}
}
9 Create an application using MeteorJS framework [L6][CO2] [12M]
10 a Explain the features of Responsive web Design [L5][CO2] [6M]
1.Reflowing Content
Reflowing content simply refers to content that adjusts its width to fit width of
window. Every day, new devices are being developed with new screen sizes. It
forces browser to again calculate dimensions and position of all elements and then
again reload page. It is essential to provide optimized layouts for mobile devices
and tablets.
2. Relative Sizing
Relative sizing simply means adjusting size of element according to width of
browser or screen. When it comes to responsive design, one need to use relative
length unit. Relative unit length does not have fixed size. With help of relative
sizing, images or other elements adapt their size according to browser width.
Different relative unit length that one can use include %, VW (Viewport Width),
em, Vmin (Viewport Minimum), VH (Viewport Height), etc.
3. Breakpoints
Breakpoints, also known as media queries, are the simplest filters applied to CSS
styles that can be used for different style rules for various devices such as laptops,
mobiles, tablets, etc. One can also modify and make changes to layout and design
on different device width ranges. It can also be used to detect other things about
environment on which site is running and one can customize their website design
for different devices.
Cons
More complex to build
You need to write pretty much javascript, handle shared state between pages, manage
permissions, etc.
SEO
To index your SPA app, search engine crawlers should be able to execute javascript.
Only recently Google and Bing started indexing Ajax-based pages by executing
JavaScript during crawling. You need to create static HTML snapshots specially for
search engines.
Initial load is slow
SPA needs to download more resources when you open it.
Client should have javascript enabled
Of course, SPA requires javascript. But fortunately, almost everyone has javascript
enabled.
UNIT–III
Web Communication Processes and Technologies
1 What is servlet?What are the advantages of servlet?Explain the Lifecycle of [L1][CO3] [12M]
servlets.
Servlets are server side java program used for generating dynamic web
in response to the client requests
Servlets are deployed in application server or webserver.
In servlets the request send by the browser and the response send by the
server will be represented as objects.
Advantages of servlet
• Efficient and scalable
• Reduces the execution time
• Avoids loading program for every request.
• Portability
• Server and platform independent
• Able to deploy in any server and worked on various operating system
• Robustness
• Managed by JVM
• No problem of memory leak or garbage collection.
Init():
• This method define the initialization information
• The init() method is called only once throughout the life cycle of the
servlet
• It must be called by the servlet container before the servlet can service
any request.
Service()
• The servlet container calls the service() method for servicing any request.
• The service() method determines the kind of request and calls the
appropriate method (doGet() or doPost()) for handling the request and
sends response to the client using the methods of the response object.
•
Destroy():
• This method removes the servlet from the server
• Define any clean up codes that releases resources,such as closing a
database connection etc before removing the servlet from memory
• It is called only once throughout the life cycle of the servlet
2 Write a servlet code to get parameters from HTML document. [L2][CO3] [12M]
NewServlet.java
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
count=new Integer(count.intValue()+1);
}
session.setAttribute("NewServlet.HitCount",count);
out.println("<html><html><title>Session example </title></head>");
out.println("<body><h4>Session server to "+"demonstrate session Tracking
and its life cycle </h4>");
out.println("</br> session status : ");
if(session.isNew())
{
out.println("New session </br>");}
out.println("HitCount for your current session is : "+count);
out.println("</br> <h2>some basic session information</h2>");
out.println("session ID : "+session.getId()+"</br>");
out.println("it is a new session: "+session.isNew());
out.println("</br>session creation time : "+session.getCreationTime());
out.println("("+new Date(session.getCreationTime())+"</br>");
out.println("Last acessed Time : "+session.getLastAccessedTime());
out.println("("+ new Date(session.getLastAccessedTime())+"</br>");
out.println("Max Inactive Time :
"+session.getMaxInactiveInterval()+"</br>");
out.println("session info as in cookie :
"+rq.isRequestedSessionIdFromCookie()+"</br>");
out.println("</body></html>");
}
}
URL Rewriting
In URL rewriting, we append a token or identifier to the URL of the next Servlet
or the next resource.
We can send parameter name/value pairs using the following format:
url?name1=value1&name2=value2&??
HttpSession interface
In such case, container creates a session id for each user.
The container uses this id to identify the particular user.
An object of HttpSession can be used to perform two tasks:
• bind objectsview and manipulate information about a session, such as the
session identifier, creation time, and last accessed time.
5 Create a Java servlet program to display current Date and Time [L6][CO3] [12M]
NewServlet.java
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
count=new Integer(count.intValue()+1);
}
session.setAttribute("NewServlet.HitCount",count);
out.println("<html><html><title>Session example </title></head>");
out.println("<body><h4>Session server to "+"demonstrate session Tracking
and its life cycle </h4>");
out.println("</br> session status : ");
if(session.isNew())
{
out.println("New session </br>");}
out.println("HitCount for your current session is : "+count);
out.println("</br> <h2>some basic session information</h2>");
out.println("session ID : "+session.getId()+"</br>");
out.println("it is a new session: "+session.isNew());
out.println("</br>session creation time : "+session.getCreationTime());
out.println("("+new Date(session.getCreationTime())+"</br>");
out.println("Last acessed Time : "+session.getLastAccessedTime());
out.println("("+ new Date(session.getLastAccessedTime())+"</br>");
out.println("Max Inactive Time :
"+session.getMaxInactiveInterval()+"</br>");
out.println("session info as in cookie :
"+rq.isRequestedSessionIdFromCookie()+"</br>");
out.println("</body></html>");
}
}
6 Explain about a) HTTP servlet Request b) HTTP servlet Response with [L5][CO3] [12M]
syntax.
A Servlet Request object provides data including parameter name and values,
attributes, and an input stream. Interfaces that extend Servlet Request can provide
additional protocol-specific data.
HttpServletRequest Interface
getContentType() --- Returns the MIME type of the body of the request
getMethod() ---This method returns the type of the HTTP request such as
get,post etc
Defines an object to assist a servlet in sending a response to the client. The servlet
container creates a ServletResponse object and passes it as an argument to the
servlet's service method.
● PrintWriter object
out.println("<HTML><HEAD>...")
● ServletOutputStream object
a) Servlet Collaboration
b) Servlet Filter
NewServlet.jsp
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
count=new Integer(count.intValue()+1);
}
session.setAttribute("NewServlet.HitCount",count);
out.println("<html><html><title>Session example </title></head>");
out.println("<body><h4>Session server to "+"demonstrate session Tracking
and its life cycle </h4>");
out.println("</br> session status : ");
if(session.isNew())
{
out.println("New session </br>");}
out.println("HitCount for your current session is : "+count);
out.println("</br> <h2>some basic session information</h2>");
out.println("session ID : "+session.getId()+"</br>");
out.println("it is a new session: "+session.isNew());
out.println("</br>session creation time : "+session.getCreationTime());
out.println("("+new Date(session.getCreationTime())+"</br>");
out.println("Last acessed Time : "+session.getLastAccessedTime());
out.println("("+ new Date(session.getLastAccessedTime())+"</br>");
out.println("Max Inactive Time :
"+session.getMaxInactiveInterval()+"</br>");
out.println("session info as in cookie :
"+rq.isRequestedSessionIdFromCookie()+"</br>");
out.println("</body></html>");
}
}
Advantages of Ajax :
• Response time of AJAX is high henceforth it increases speed and
performance.
• AJAX supports a lot of browsers.
• Some of the complex AJAX applications gives feeling that we are using it
on Desktop.
• There is lesser requirement of time between server and client.
• AJAX allows multiple tasks to be performed at same time.
Disadvantages of Ajax :
• We face browser compatibility issues in AJAX.
• If JavaScript is disabled by user then those users cannot use AJAX as
AJAX needs JavaScript to be enabled.
• Various search engine like Google can’t index AJAX pages.
• We cannot bookmark AJAX updated page content.
• Since data is downloadable from client side henceforth AJAX is less
secure.
Advantages of Ajax :
• Response time of AJAX is high henceforth it increases speed and
performance.
• AJAX supports a lot of browsers.
• Some of the complex AJAX applications gives feeling that we are using it
on Desktop.
• There is lesser requirement of time between server and client.
• AJAX allows multiple tasks to be performed at same time.
Disadvantages of Ajax :
• We face browser compatibility issues in AJAX.
• If JavaScript is disabled by user then those users cannot use AJAX as
AJAX needs JavaScript to be enabled.
• Various search engine like Google can’t index AJAX pages.
• We cannot bookmark AJAX updated page content.
• Since data is downloadable from client side henceforth AJAX is less
secure.
UNIT–IV
Web Servers
Features of Node.js
Following are some of the important features that make Node.js the first choice of
software architects.
• Asynchronous and Event Driven − All APIs of Node.js library are
asynchronous, that is, non-blocking. It essentially means a Node.js based server
never waits for an API to return data. The server moves to the next API after
calling it and a notification mechanism of Events of Node.js helps the server to
get a response from the previous API call.
• Very Fast − Being built on Google Chrome's V8 JavaScript Engine, Node.js
library is very fast in code execution.
• Single Threaded but Highly Scalable − Node.js uses a single threaded model
with event looping. Event mechanism helps the server to respond in a non-
blocking way and makes the server highly scalable as opposed to traditional
servers which create limited threads to handle requests. Node.js uses a single
threaded program and the same program can provide service to a much larger
number of requests than traditional servers like Apache HTTP Server.
• No Buffering − Node.js applications never buffer any data. These applications
simply output the data in chunks.
Following are the areas where Node.js is proving itself as a perfect technology
partner.
• I/O bound Applications
• Data Streaming Applications
• Data Intensive Real-time Applications (DIRT)
• JSON APIs based Applications
• Single Page Applications
import javax.swing.*;
import java.awt.*;
import java.awt.Image;
import java.awt.event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.print.*;
import javafx.print.Printer;
import java.io.*;
import java.io.IOException;
JFileChooser f1;
// Default constructor to
// initialize the parameters
fee()
{
l2 = new JLabel(
"Name of the Student:");
l2.setBounds(50, 150, 250, 20);
l3 = new JLabel(
"Name of the Father:");
l3.setBounds(50, 200, 250, 20);
l7 = new JLabel("Address:");
l7.setBounds(50, 400, 250, 20);
l9 = new JLabel("Gender:");
l9.setBounds(50, 500, 250, 20);
JRadioButton r5
= new JRadioButton(" Male");
JRadioButton r6
= new JRadioButton(" Female");
String language[]
= { "2016", "2015", "2014" };
String languagess[]
= { "2019", "2018", "2017" };
bg1.add(rb1);
bg1.add(rb2);
String languages[]
= { "CSE", "ECE", "EEE",
"CIVIL", "MECH" };
final JComboBox cb
= new JComboBox(languages);
cb.setBounds(800, 200, 90, 20);
DefaultListModel<String> li2
= new DefaultListModel<>();
li2.addElement(
"2 SHARE(1, 50, 000)");
li2.addElement(
"3 SHARE(1, 40, 000)");
li2.addElement(
"5 SHARE(1, 20, 000)");
li2.addElement(
"8 SHARE(1, 10, 000)");
li2.addElement(
"bus(40, 000)");
final JList<String> list2
= new JList<>(li2);
list2.setBounds(
800, 300, 125, 125);
JButton Receipt
= new JButton("Generate Receipt");
Receipt.setBounds(600, 490, 150, 30);
JButton b2 = new JButton("Reset");
b2.setBounds(750, 490, 150, 30);
JButton Print = new JButton("Print");
Print.setBounds(900, 490, 150, 30);
add(l1);
add(l2);
add(l3);
add(l4);
add(l5);
add(l6);
add(l7);
add(l8);
add(l9);
add(l10);
add(l11);
add(l12);
add(l13);
add(l14);
add(tf1);
add(tf2);
add(tf3);
add(tf4);
add(tf5);
add(tf6);
add(tf7);
add(tf8);
add(area1);
add(area2);
add(l15);
add(rb1);
add(rb2);
add(rb3);
add(rb4);
add(r5);
add(r6);
add(cb);
add(cb1);
add(cb2);
add(list1);
add(list2);
add(b);
add(label);
add(Receipt);
add(b2);
add(Print);
b.addActionListener(new ActionListener() {
// Method to display the data
// entered in the text fields
public void actionPerformed(ActionEvent e)
{
String data = "";
if (list1.getSelectedIndex() != -1) {
data = "You had selected the Group:"
+ list1.getSelectedValue();
label.setText(data);
}
if (list2.getSelectedIndex() != -1) {
data += " and Hostel with the "
+ "facility of: ";
area2.setText(
"--------------------------------"
+ "-----------FEE RECEIPT----"
+ "--------------------------"
+ "--------------------------"
+ "-------------------\n");
area2.setText(area2.getText()
+ "Student Name: "
+ tf1.getText()
+ "\n");
area2.setText(area2.getText()
+ "Father's Name: "
+ tf2.getText()
+ "\n");
area2.setText(area2.getText()
+ "RollNumber: "
+ tf3.getText()
+ "\n");
area2.setText(area2.getText()
+ "Email ID: "
+ tf4.getText()
+ "\n");
area2.setText(area2.getText()
+ "Contact Number: "
+ tf5.getText()
+ "\n");
area2.setText(area2.getText()
+ "Wants to take: "
+ cb.getSelectedItem()
.toString()
+ "\n");
if (rb1.isSelected()) {
area2.setText(area2.getText()
+ "Wants to Join in "
+ "School of Engineering "
+ "and Applied Sciences\n");
}
if (rb2.isSelected()) {
area2.setText(area2.getText()
+ "Wants to Join in "
+ "School of Liberal "
+ "Arts and Sciences\n");
}
if (rb3.isSelected()) {
area2.setText(area2.getText()
+ "Wants to be a "
+ "Hosteller \n");
}
if (rb4.isSelected()) {
area2.setText(area2.getText()
+ "Wants to be a "
+ "Day Scholar \n");
}
area2.setText(area2.getText()
+ "Had chosen: "
+ list1.getSelectedValue()
.toString()
+ "\n");
area2.setText(area2.getText()
+ "Had chosen: "
+ list2.getSelectedValue()
.toString()
+ "\n");
if (index2 == 1) {
area2.setText(area2.getText()
+ " "
+ "Total amount to be paid "
+ "is 3.9 Lakhs \n");
}
if (index2 == 2) {
area2.setText(area2.getText()
+ " "
+ "Total amount to be paid "
+ "is 3.8 Lakhs \n");
}
if (index2 == 3) {
area2.setText(area2.getText()
+ " "
+ "Total amount to be paid "
+ "is 3.7 Lakhs \n");
}
if (index2 == 4) {
area2.setText(area2.getText()
+ " "
+ "Total amount to be paid "
+ "is 2.9 Lakhs \n");
}
if (e.getSource() == Receipt) {
try {
FileWriter fw
= new FileWriter(
"java.txt", true);
fw.write(area2.getText());
fw.close();
}
catch (Exception ae) {
System.out.println(ae);
}
}
JOptionPane.showMessageDialog(
area2, "DATA SAVED SUCCESSFULLY");
};
});
addWindowListener(
new WindowAdapter() {
public void windowClosing(
WindowEvent we)
{
System.exit(0);
}
});
setSize(800, 800);
setLayout(null);
setVisible(true);
setBackground(Color.cyan);
}
public static void main(String[] args)
{
new fee();
}
}
4 a What is Express Framework? [L1][CO4] [6M]
Sessions are server-side files that contain user information, whereas Cookies are
client-side files that contain user information. Session is dependent on Cookie, but
Cookie is not dependent on a session. Session ends when a user closes his/her
browser, while a Cookie expires depending on the lifetime you set for it.
5 What is an Event? Explain the Callback Event [L1][CO4] [12M]
Node.js has a built-in module, called "Events", where you can create-, file-, and listen
for- your own events.
• To include the built-in Events module use the require() method.
• In addition, all event properties and methods are an instance of an EventEmitter
object.
• To be able to access these properties and methods, create an EventEmitter object:
Read-Eval-Print Loop(REPL)
A Read-Eval-Print Loop, or REPL, is a computer environment where user inputs are
read and evaluated, and then the results are returned to the user.
• Read − Reads user's input, parses the input into JavaScript data-structure,
and stores in memory.
REPL Commands
Cookies are text files with small pieces of data — like a username and password —
that are used to identify your computer as you use a computer network.
Specific cookies known as HTTP cookies are used to identify specific users and
improve your web browsing experience.
Data stored in a cookie is created by the server upon your connection. This data is
labeled with an ID unique to you and your computer.
When the cookie is exchanged between your computer and the network server, the
server reads the ID and knows what information to specifically serve to you.
Session cookies. Session cookies, also known as 'temporary cookies', help websites
recognise users and the information provided when they navigate through a website.
Persistent cookies or permanent cookies are stored on users' hard drive until it
expires or until the user deletes the cookie. These cookies remain on a user's device
even after they close a web browser.
First-Party Cookies
These cookies allow website owners to collect analytics data, remember language
settings, and perform other useful functions that provide a good user experience.
An example of a first-party cookie is when a user signs into an ecommerce website,
like Amazon.
A Flash cookie, also known as a local shared object, is a text file that is sent by a Web
server to a client when the browser requests content supported by Adobe Flash, a
popular browser plug-in.
A zombie cookie is a piece of data that could be stored in multiple locations -- since
failure of removing all copies of the zombie cookie will make the removal reversible,
zombie cookies can be difficult to remove.
8 Create a Java Servlet Program session life time cookies [L6][CO4] [12M]
NewServlet.jsp
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
count=new Integer(count.intValue()+1);
}
session.setAttribute("NewServlet.HitCount",count);
out.println("<html><html><title>Session example </title></head>");
out.println("<body><h4>Session server to "+"demonstrate session Tracking and its
life cycle </h4>");
out.println("</br> session status : ");
if(session.isNew())
{
out.println("New session </br>");}
out.println("HitCount for your current session is : "+count);
out.println("</br> <h2>some basic session information</h2>");
out.println("session ID : "+session.getId()+"</br>");
out.println("it is a new session: "+session.isNew());
out.println("</br>session creation time : "+session.getCreationTime());
out.println("("+new Date(session.getCreationTime())+"</br>");
out.println("Last acessed Time : "+session.getLastAccessedTime());
out.println("("+ new Date(session.getLastAccessedTime())+"</br>");
out.println("Max Inactive Time : "+session.getMaxInactiveInterval()+"</br>");
out.println("session info as in cookie :
"+rq.isRequestedSessionIdFromCookie()+"</br>");
out.println("</body></html>");
}
}
9 Discuss Rendering JSON Data [L6][CO4] [12M]
The JSON format is syntactically similar to the code for creating JavaScript objects. Because of
this, a JavaScript program can easily convert JSON data into JavaScript objects.
Since the format is text only, JSON data can easily be sent between computers, and used by
any programming language.
JavaScript has a built in function for converting JSON strings into JavaScript objects:
JSON.parse()
JavaScript also has a built in function for converting an object into a JSON string:
JSON.stringify()
To load JSON data using jQuery, use the getJSON() and ajax() method. The jQuery.getJSON( )
method loads JSON data from the server using a GET HTTP request.
Here is the description of all the parameters used by this method −
• url − A string containing the URL to which the request is sent
• data − This optional parameter represents key/value pairs that will be sent to the server.
• callback − This optional parameter represents a function to be executed whenever the
data is loaded successfully.
• Widgets − Using widgets which are jQuery plugins, you can create user interface
elements like accordion,datepicker etc.
• Effects − These are built on the internal jQuery effects. They contain a full suite of
custom animations and transitions for DOM elements.
• Utilities − These are a set of modular tools the JqueryUI library uses internally.
NewServlet1.java
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class NewServlet1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest rq, HttpServletResponse rs)
throws ServletException, IOException {
HttpSession s=rq.getSession();int itemcount=0;
ArrayList cart;
cart = (ArrayList)s.getAttribute("cart");
if(cart!=null)
{
itemcount=cart.size();
}
rs.setContentType("text/html");
PrintWriter p=rs.getWriter();
p.println("<html><head><title> shopping cart 1 </title></head><body>");
p.println("<h1>Welcome to the shopping cart</h1>");
p.println("<p>You've "+itemcount+" items in your cart.</p>");
p.println("<form action=\"");
p.println(rs.encodeURL("http://localhost:8084/simple1/NewServlet"));
p.println("\"method=\"post\">");
p.println("<p><input type=checkbox name=item value=java>");
p.println("Item1:JAVA </p>");
p.println("<p><input type=checkbox name=item value=c>");
p.println("Item2:c </p>");
p.println("<p><input type=checkbox name=item value=c++>");
p.println("Item3:C++ </p>");
p.println("<p><input type=checkbox name=item value=C#>");
p.println("Item4:C# </p>");
p.println("<p><input type=submit value=Add to cart>");
p.println("</form></body><html>");
p.close();
}
NewServlet.java
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.*;
public class NewServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
cart.add(itemname);
}
out.println(response.encodeURL("/simple1/NewServlet1"));
out.println("\"method=\"post\">");
out.println("<h1>Items currently in your cart</h1>");
out.println("<hr>");
Iterator iterator=cart.iterator();
while(iterator.hasNext())
{
out.println("<p>"+iterator.next()+"</p>");
}
out.println("<hr>");
out.println("<a href=\"");
out.println(response.encodeURL("/simple1/NewServlet1"));
out.println("\">Back</a>");
out.println("</form>");
out.println("<hr>");
out.println("</body></html>");
out.close();
}
}
UNIT–V
Storage,Web toolkits –Backend and
FrontendWebframeworks
• Scalability
• Performance
• High Availability
• Scaling from single server deployments to large, complex multi-site
architectures.
• Key points of MongoDB
• Develop Faster
• Deploy Easier
• Scale Bigger
1. Install MongoDB.
2. Create Project.
3. Create Database.
4. Create Collection.
5. Insert Data.
6. Find Data.
7. Update Data.
8. Delete Data.
3 Create a MongoDB collection of “Research articles “with required details [L6][CO5] [12M]
package net.javaguides.mongodb.collection;
import java.util.ArrayList;
import org.bson.Document;
import com.mongodb.MongoCommandException;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
/**
* Java MongoDB Create Collection Example
* @author Ramesh Fadatare
*
*/
public class MongoCreateCollection {
try {
database.createCollection("users");
System.out.println("Collection created successfully");
} catch (MongoCommandException e) {
database.getCollection("users").drop();
}
collection.insertMany(docs);
}
}
}
1. Django
2. Laravel
3. Express
4. Spring Boot
5. Ruby on Rails
6. Flask
7. ASP.NET
1. React.
2. Angular.
3. JQuery.
4. Vue.js.
5. Backbone.js.
6. Ember.js.
7. Semantic-UI.
8. Svelte.
// Database Address
const url = "mongodb://localhost:27017/GFG";
// Connecting to database
mongoose
.connect(url)
.then((ans) => {
console.log("Connected Successful");
})
.catch((err) => {
console.log("Error in the Connection");
});
// Creating collection
const collections = mongoose.model("GFG2", collection_structure);
a) Angular
Angular is a TypeScript-based, free and open-source single-page web application framework
led by the Angular Team at Google and by a community of individuals and corporations.
Angular is a complete rewrite from the same team that built AngularJS.
Angular is at least 7 times faster than AngularJS due to its better architecture, and algorithm for
data binding. It does not generate HTML, and wait for the browser to parse it, instead, it creates
DOM data structures directly.
b) Meteor
Meteor is a full-stack JavaScript platform for developing modern web and mobile applications.
Meteor includes a key set of technologies for building connected-client reactive applications, a
build tool, and a curated set of packages from the Node. js and general JavaScript community.
Meteor is a full-stack framework. In practice, that means Meteor applications include client
code, which runs in either a web browser or Cordova mobile app, server code inside a Node. js
container, as well as a common code that runs on both client and server sides.
import javax.swing.*;
import java.awt.*;
import java.awt.Image;
import java.awt.event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.print.*;
import javafx.print.Printer;
import java.io.*;
import java.io.IOException;
JFileChooser f1;
// Default constructor to
// initialize the parameters
fee()
{
l2 = new JLabel(
"Name of the Student:");
l2.setBounds(50, 150, 250, 20);
l3 = new JLabel(
"Name of the Father:");
l3.setBounds(50, 200, 250, 20);
l7 = new JLabel("Address:");
l7.setBounds(50, 400, 250, 20);
l9 = new JLabel("Gender:");
l9.setBounds(50, 500, 250, 20);
JRadioButton r5
= new JRadioButton(" Male");
JRadioButton r6
= new JRadioButton(" Female");
String language[]
= { "2016", "2015", "2014" };
final JComboBox cb1
= new JComboBox(language);
String languagess[]
= { "2019", "2018", "2017" };
bg1.add(rb1);
bg1.add(rb2);
String languages[]
= { "CSE", "ECE", "EEE",
"CIVIL", "MECH" };
final JComboBox cb
= new JComboBox(languages);
cb.setBounds(800, 200, 90, 20);
DefaultListModel<String> li2
= new DefaultListModel<>();
li2.addElement(
"2 SHARE(1, 50, 000)");
li2.addElement(
"3 SHARE(1, 40, 000)");
li2.addElement(
"5 SHARE(1, 20, 000)");
li2.addElement(
"8 SHARE(1, 10, 000)");
li2.addElement(
"bus(40, 000)");
JButton Receipt
= new JButton("Generate Receipt");
Receipt.setBounds(600, 490, 150, 30);
JButton b2 = new JButton("Reset");
b2.setBounds(750, 490, 150, 30);
JButton Print = new JButton("Print");
Print.setBounds(900, 490, 150, 30);
add(l1);
add(l2);
add(l3);
add(l4);
add(l5);
add(l6);
add(l7);
add(l8);
add(l9);
add(l10);
add(l11);
add(l12);
add(l13);
add(l14);
add(tf1);
add(tf2);
add(tf3);
add(tf4);
add(tf5);
add(tf6);
add(tf7);
add(tf8);
add(area1);
add(area2);
add(l15);
add(rb1);
add(rb2);
add(rb3);
add(rb4);
add(r5);
add(r6);
add(cb);
add(cb1);
add(cb2);
add(list1);
add(list2);
add(b);
add(label);
add(Receipt);
add(b2);
add(Print);
b.addActionListener(new ActionListener() {
area2.setText(
"--------------------------------"
+ "-----------FEE RECEIPT----"
+ "--------------------------"
+ "--------------------------"
+ "-------------------\n");
area2.setText(area2.getText()
+ "Student Name: "
+ tf1.getText()
+ "\n");
area2.setText(area2.getText()
+ "Father's Name: "
+ tf2.getText()
+ "\n");
area2.setText(area2.getText()
+ "RollNumber: "
+ tf3.getText()
+ "\n");
area2.setText(area2.getText()
+ "Email ID: "
+ tf4.getText()
+ "\n");
area2.setText(area2.getText()
+ "Contact Number: "
+ tf5.getText()
+ "\n");
area2.setText(area2.getText()
+ "Wants to take: "
+ cb.getSelectedItem()
.toString()
+ "\n");
if (rb1.isSelected()) {
area2.setText(area2.getText()
+ "Wants to Join in "
+ "School of Engineering "
+ "and Applied Sciences\n");
}
if (rb2.isSelected()) {
area2.setText(area2.getText()
+ "Wants to Join in "
+ "School of Liberal "
+ "Arts and Sciences\n");
}
if (rb3.isSelected()) {
area2.setText(area2.getText()
+ "Wants to be a "
+ "Hosteller \n");
}
if (rb4.isSelected()) {
area2.setText(area2.getText()
+ "Wants to be a "
+ "Day Scholar \n");
}
area2.setText(area2.getText()
+ "Had chosen: "
+ list1.getSelectedValue()
.toString()
+ "\n");
area2.setText(area2.getText()
+ "Had chosen: "
+ list2.getSelectedValue()
.toString()
+ "\n");
if (index2 == 1) {
area2.setText(area2.getText()
+ " "
+ "Total amount to be paid "
+ "is 3.9 Lakhs \n");
}
if (index2 == 2) {
area2.setText(area2.getText()
+ " "
+ "Total amount to be paid "
+ "is 3.8 Lakhs \n");
}
if (index2 == 3) {
area2.setText(area2.getText()
+ " "
+ "Total amount to be paid "
+ "is 3.7 Lakhs \n");
}
if (index2 == 4) {
area2.setText(area2.getText()
+ " "
+ "Total amount to be paid "
+ "is 2.9 Lakhs \n");
}
if (e.getSource() == Receipt) {
try {
FileWriter fw
= new FileWriter(
"java.txt", true);
fw.write(area2.getText());
fw.close();
}
catch (Exception ae) {
System.out.println(ae);
}
}
JOptionPane.showMessageDialog(
area2, "DATA SAVED SUCCESSFULLY");
};
});
addWindowListener(
new WindowAdapter() {
public void windowClosing(
WindowEvent we)
{
System.exit(0);
}
});
setSize(800, 800);
setLayout(null);
setVisible(true);
setBackground(Color.cyan);
}
public static void main(String[] args)
{
new fee();
}
}
a) Django
It is a high-level web framework from Python that allows for the rapid implementation
of security and sustainable websites.
Designed by seasoned programmers, it takes care of most of the web creation headache
and you can focus on developing the software without the need to start from scratch.
It’s free and open-source, it has a vibrant and involved community, excellent resources,
and lots of free and paid services.
It has a customized caching system.
Django REST framework is one of the best tools for building API’s.
Applications:
1. Data-analysis tools.
2. Photo-based verification systems.
3. E-mail systems.
Famous companies that use Django framework:
• Instagram
• NASA
• Dropbox
• Spotify etc
b) Ruby on Rails
Applications:
There are many applications and websites that are built with ruby on rails:
• GitHub- It is a platform that brings together the community of developers to
discover, share, and develop better software.
• Crunchbase- It is one of the top platforms to collect the company’s information
for both private and public entities.
• Basecamp- Business managing project scheduling and tools for team
collaboration.
Ask.fm, SlideShare, Shopify, Hulu, Zendesk, etc., are some other applications and
websites that use Ruby On Rails framework