Professional Documents
Culture Documents
Dew Internship Report
Dew Internship Report
submitted by
SANYA TANEJA
(16BCE2059)
BACHELOR OF TECHNOLOGY
in
JUNE,2018
DECLARATION BY THE CANDIDATE
ii
School of Computer Science and Engineering
BONAFIDE CERTIFICATE
Signature of Supervisor
I would like to use this opportunity to express my deepest gratitude and special thanks to
Mr. Vivek Pandey (External Project Guide), who in spite of being extraordinarily busy
with his duties, took time out to hear, guide and ensure my training meets my expectations.
His pioneered experience of “16” years in Dew Solutions Pvt. Ltd. was motivation beyond
words for me. His permission for me to train in arguably one of the best startups is an
opportunity I am ever so grateful for.
My deepest thanks to Ms. Chestha Khilauria (HR Manager) who day in and out ensured
my mere knowledge in field of Web Development only increased with the best standards
possible. I choose this moment to acknowledge her contribution gratefully.
Place : Vellore
Date : 17.10.2018
v
TABLE OF CONTENTS
TRAINING CERTIFICATE iv
ACKNOWLEDGEMENT v
CHAPTERS
1 SYNOPSIS 1
2.1 General 2
7 Appendices 22
vi
List of Figures
vii
CHAPTERS
1. SYNOPSIS
The following chapter contains a description of the organization. The details about
training is mentioned in the chapters following that.
1
2. ABOUT THE ORGANIZATION
2.1 General
Dew Solutions was founded in 2010 by graduates from IITs and RECs; all with
expertise in distributed software development and years of experience servicing the U.S.
market.
Their prime objectives are 'satisfaction of our clients' and 'excellent and prompt services'
which is not only given in words but their deeds prove it. They complement the client
with some of the brightest technical minds in their fields, possessing expertise in
enterprise class architectures, tools and technologies. They invest a great deal in
developing and maintaining a culture that fosters openness and flexibility to encourage
employees to think creatively.
They work as an end to end technology partner, i.e. on close quarters with the client that
enables better understanding of the project and the need of the clients. In addition, they
help develop top quality applications and develop effective strategies to cope with
technology challenges during the project development life cycle.
Their experience and expertise have led it to become the trusted specialist of outsourced
software development for clients in the U.S, U.K and Singapore. Their commitment to
100% customer satisfaction has resulted in rapid growth and an impressive list of
satisfied ISV and enterprise clients. They have provided services to all kinds of
professional, educational, technical, and industrial organizations in the short span since
they started the company.
2
2.2 Clients and Projects
• Web Development
• Mobile Development
• Cloud Support
• Quality Assurance
• Design Consultancy
• Product Consultancy
• Big Data
• Data Science
• Internet of Things
• Devops
• TataCLiQ: Tata CLiQ's online shopping App offers certified authentic products
with great deals and is available for both Android and iOS devices. It is India's
only Omni-channel marketplace online shopping App. The App lists 400+ Indian
and International brands with 1000's of products across Electronics, Fashion and
Footwear.
• Max Health: The fastest and easiest way to book an appointment with your Max
Hospital doctor, view your lab reports or get health updates - 'Max My Health'
from Max Healthcare makes managing your health needs simple and convenient!
3
3. SKILL SET INCULCATED BY THE CURRICULUM
I did my internship after completing 2 years in college. In these two years I had done
many projects and as semesters passed on, I gained new skillsets. The following were
my skillset:
• Basic C programming
• Basic C++ programming
• Database Management- SQL
• Data Structures and Algorithms
• Microprocessor and Interfacing- ALP programming
• Internet of Things- Arduino Programming
• Operating System
• Basic HTML, CSS
The University also made available Technical Clubs and Chapters of which I am a part
of Association of Computing Machinery, VIT. It has also helped me enhance my
practical coding and designing abilities in building websites for actual use.
4
4. KNOWLEDGE ACQUIRED FROM IN-PLANT TRAINING
During the course of the Internship I was introduced to the concepts of Web
Development. This is the first time when we I worked on an end to end system and thus
learnt about its different components involved.
Web Development involves creating websites for the Internet. It can be a basic static
website or a complex web-based internet application. I worked on my website from
scratch, from creating the layouts using HTML, CSS and Bootstrap to working on the
Java code in Eclipse using Maven Framework. Java is a general-purpose computer-
programming language that is concurrent, class-based, object-oriented, and specifically
designed to have as few implementation dependencies as possible.
The Eclipse IDE provides excellent support for the Maven. This tooling manages the
project dependencies and updates the class path of the project dependencies in the
Eclipse IDE. Maven has dependency management and can work even with transitive
dependencies. It has powerful builds because of its default plugins. It allows debugging
and collaboration features as well.
I further learnt how to work with JavaScript to program the behavior of the web pages
and its library jQuery to make JavaScript programming easier. JavaScript, often
abbreviated as JS, is a high-level, interpreted programming language. It is a language
which is also characterized as dynamic, weakly typed, prototype-based and multi-
paradigm. Alongside HTML and CSS, JavaScript is one of the three core technologies of
the World Wide Web. Query is a cross-platform JavaScript library designed to simplify
the client-side scripting of HTML. It is free, open-source software using the permissive
5
MIT License. Web analysis indicates that it is the most widely deployed JavaScript
library by a large margin.
For the backend development for storage of data, I used MySQL Workbench. MySQL
Workbench is a visual database design tool that integrates SQL development,
administration, database design, creation and maintenance into a single integrated
development environment for the MySQL database system.
Additionally, I learnt how to work on technical functionalities such as in the Login page,
if the user selects ‘Forgot Password’, how will the system retrieve the password. This
was done using the Encrypt/ Decrypt algorithm. Further, file handling was used to
collect the images/ files uploaded by the employees. Also, the feature of email handling
was taught to me, i.e. how to send the welcome mail or forgot password mail to
candidates.
The project was deployed on local host (8080 port) using the Eclipse Tomcat Server.
Tomcat is a web server and a Servlet/Java Server Pages container. It is designed to
execute Java servlets and render web pages that use Java Server page coding. It is often
used as an application server for strictly web-based applications but does not include the
entire suite of capabilities that a Java EE application server would supply. Accessible as
either a binary or a source code version, Tomcat's been used to power a wide range of
applications and websites across the Internet.
6
design who offered me valuable insights about their work and help me understand the
work flow that they follow and how it differs from the major technological companies.
Collaborating with fellow developers is something that I had never done before. This
internship mandated collaboration with other designers and website builders. The project
was put up on GitHub repository where we all pushed our work and subsequently pulled
the required changes. It was then easy to work, allowing us to work on different modules
without having to share the code individually.
7
5. APPLICATION OF GAINED KNOWLEDGE IN/DURING THE
SESSION
➢ I used the template of Dew Solutions Private Limited website as the home
page. I understood how dynamic moving content is created.
8
Figure 1: Home Page-2
9
Figure 3: Sign Up Page-1
10
Figure 5: New user added to the database
11
5.4 Login Page
➢ The user needs to add the validated email id along with password. The
system checks this information with the data in the database. If it
matches, the user is allowed to log in and update/view profile. Otherwise
the user has an option to recover the password using Forgot Password
option.
➢ If the user forgets the password, he/she can enter the required email id
and a mail will be sent with the required password. The user can check
and further log in to the account. This is done using popular and widely
adopted symmetric encryption algorithm -Advanced Encryption Standard
(AES). It is Symmetric key symmetric block cipher. It has 128-bit data
and 128/192/256-bit keys.
12
Figure 8: Forgot Password Page
13
5.6 Update Profile Page
14
Figure 12: Educational Details Update Form-3
15
Figure 14: Job Details Update Form-1
16
5.7 View Profile
➢ Retrieved the data entered by user from the database using basic MySQL
queries and displayed it on the page, adding appropriate code in HTML
file.
➢ Appropriate buttons for updating Educational and Job Profile added,
which will take back to the original form page with pre-entered data,
which can be changed and saved. It will be reflected in View Profile
instantly.
➢ Also, created the option to upload resume, profile picture, passport and
Aadhar by browsing from gallery.
17
Figure 17: View Educational Profile-2
18
Figure 19: View Job Profile-1
19
Figure 21: Upload Personal Documents-2
20
6. COMPARISON OF COMPETENCY LEVELS BEFORE AND
AFTER THE TRAINING AND SELF EVALUATION
21
APPENDICES
Code:
package com.dew.training.dao;
jobInfo.setUser_id(rs.getInt("user_id"));
jobInfo.setJob_profile_id(rs.getInt("job_profile_id"));
jobInfo.setBio(rs.getString("bio"));
jobInfo.setIndustry(rs.getString("industry"));
jobInfo.setFunctionalArea(rs.getString("functional_area"));
jobInfo.setRole(rs.getString("role"));
jobInfo.setWorkLocation(rs.getString("work_location"));
jobInfo.setJobType(JobType.get(rs.getInt("job_type")));
jobInfo.setEmploymentType(Preference.get(rs.getInt("employ_type")));
22
jobInfo.setSkills(rs.getString("skills"));
jobInfo.setMaritalStatus(rs.getString("marital"));
return jobInfo;
}
}
@Override
public JobInfo addJobProfile(final JobInfo jobInfo) {
final String sql = "INSERT INTO job_profile
(bio,industry,functional_area,role,work_location,job_type,employ_type,skills,marital,us
er_id)"
+ " VALUES(?,?,?,?,?,?,?,?,?,?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
getJdbcTemplate().update(new PreparedStatementCreator() {
@Override
public PreparedStatement
createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement statement =
connection.prepareStatement(sql,PreparedStatement.RETURN_GENERATED_KEYS);
statement.setString(1,
jobInfo.getBio()); // values from form are converted to varchar for database
usage
statement.setString(2,
jobInfo.getIndustry()); // insert into db
statement.setString(3,
jobInfo.getFunctionalArea());
statement.setString(4,
jobInfo.getRole());
statement.setString(5,
jobInfo.getWorkLocation());
statement.setInt(6,
jobInfo.getJobType().getValue());
statement.setInt(7,
jobInfo.getEmploymentType().getValue());
statement.setString(8,
jobInfo.getSkills());
statement.setString(9,
jobInfo.getMaritalStatus());
statement.setInt(10,jobInfo.getUser_id());
return statement;
}
},keyHolder);
23
jobInfo.setJob_profile_id(keyHolder.getKey().intValue());
return jobInfo;
}
@Override
public void updatejob(JobInfo jobInfo) throws Exception {
// TODO Auto-generated method stub
String sql = "UPDATE job_profile set bio= ?,industry=
?,functional_area= ?,role= ?,work_location= ?,job_type= ?,employ_type= ?,"
+ "skills= ?,marital= ? WHERE job_profile_id = ?";
getJdbcTemplate().update(sql,jobInfo.getBio(),jobInfo.getIndustry(),jobInfo.getF
unctionalArea(),jobInfo.getRole(),
jobInfo.getWorkLocation(),
jobInfo.getJobType().getValue(), jobInfo.getEmploymentType().getValue(),
jobInfo.getSkills(),jobInfo.getMaritalStatus(),
jobInfo.getJob_profile_id());
}
UserService.java
package com.dew.training.service;
UserServiceImpl.java
@Override
public JobInfo updatejobProfile(JobInfo jobInfo) throws Exception {
// TODO Auto-generated method stub
24
JobInfo info=userDAO.getJobInfo(jobInfo.getUser_id());
if(info.getJob_profile_id()>0) {
jobInfo.setJob_profile_id(info.getJob_profile_id());
userDAO.updatejob(jobInfo);
}
else
jobInfo =userDAO.addJobProfile(jobInfo);
return jobInfo;
}
@Override
public JobInfo getJobInfo(int userId) {
// TODO Auto-generated method stub
return userDAO.getJobInfo(userId);
}
<html>
<body>
<%@ include file ="includes/header.jsp" %>
<div class="form-group">
<label for="bio"> Describe
your professional background </label>
<textarea name="bio"
rows="5" cols="5" class="form-control" id="bio" placeholder="${jobInfo.bio
}"></textarea>
</div>
<div class="form-group">
<label
for="industry">Industry</label>
<select name="industry"
id="industry" class="form-control" aria-describedby="emailHelp">
<option>Select</option>
<option
value="Accounting/Finance" selected="${jobInfo.industry eq 'Accounting/Finance'
}">Accounting/Finance</option>
25
<option
value="Advertising/PR/MR/Events" selected="${jobInfo.industry eq
'Advertising/PR/MR/Events' }">Advertising/PR/MR/Events</option>
</select>
</div>
<%@ include file ="includes/footer.jsp" %>
<%@include file="includes/include-js.jsp"%>
</body>
<script type="text/javascript">
$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
function updateJobInfo(){
var formData=$("#updateJob").serializeObject();
console.log(formData);
var url=$("#baseUrl").val()+"/updateJobInfo";
$.ajax({
url : url,
type : 'POST',
data:JSON.stringify(formData),
dataType : "json",
contentType : "application/json",
success : function(data) {
console.log(data)
if(data.status==='success')
window.location.href=$("#baseUrl").val()+"/user/myProfile"
else
alert("Error while adding/updating details")
}
});
}
</script>
</html>
26