final report v3
TRANSCRIPT
UNIVERSITY OF MORATUWA
Faculty of Information Technology
IT 3000: Industrial Training
TRAINING REPORT
M.M.A. Shafny
114124B
Based on the training at
Metatechno Lanka Company PVT LTD
From 05th
May 2014 to 31st October 2014
Submitted on 17.11.2014
i | P a g e
PREFACE
This document is presented at the end of the internship period I had from 5th
May 2014 to
31st October 2014 at Metatechno Lanka Company PVT LTD (MTL), Level 28, West
Tower, World Trade Center, Echelon Square, Colombo 1 as a trainee software engineer.
The document is arranged into three main chapters that present different aspects of
the training I got. This contains basic information about the establishment and deep
information on the training I received and my personal views on the internship
period considering the whole experience.
The first chapter is dedicated to the information on the training establishment. Without
having a good understanding about the functionalities of the company, the
procedures, organization hierarchy and structure it is difficult to comfortable move with
the staff, getting things done in the correct way. To give my maximum contribution while
learning from the company I have to have a good understanding on the business the
company is involved in and the technologies and development standards and models they
follow. With all these, this chapter also includes my personal score on the current
performance of MTL.
The second chapter is totally dedicated to the experience I had during the internship
period. This includes all the technical work that I was exposed to as well as the non-
technical experiences. This describes how I completed the tasks I was given and how I
resolved the difficulties I came across while doing them. In explaining the task, the
implementations were mostly described using comprehensive text. The organization
doesn’t allow to express the project materials, at any form and at any cost, due to their
strict regulations and as they follow ISO 27000 standards. The given materials such as
diagrams and pictures in this documentation were brought with the permission of the
administration.
The non-technical experiences which I gained such as professional ethics, soft skills and
the ISO 27000 standards & regulations which the organization is implementing recently,
ii | P a g e
are described considering the great effects they had on building up a professional
personality within me, getting to know more of the staff, company and industry practices.
In the third chapter, I have discussed the effectiveness and personal feelings towards
training as a whole. Also it provides a personal assessment on own experience and
the whole industrial training program from the co-ordination to the end, with
suggestions to improve.
iii | P a g e
ACKNOWLEDGEMENTS
At the very beginning of this report on my work in the internship period, it is my
privilege to thank the people who contribute to make it such a great experience for my
life. If not for the support of them, from arranging training establishment selections to
successful completion of the 26 weeks, it would not be this effective. I heart fully thank
Mr. D.K. Withanage, the Dean, faculty of Information Technology, University of
Moratuwa for the immense effort taken to provide us with best training establishments.
Also the guidance given on how to extract the value of this internship period was
invaluable.
Also I am so grateful to Ms. Ashika Fernando, the Industrial Training Coordinator for the
huge commitment shown in making sure each and every student is getting a training
establishment. The support given by resolving our selections, organizing mock
interviews, coordinating with the industry and giving friendly guidance whenever
needed is incomparably great.
Also I must thank all the members in Industrial Training Division of the University of
Moratuwa and National Apprentice and Industrial Training Authority (NAITA) for
guiding us from the very beginning and for the work carried out throughout our
internship period to make it a success, giving us a complete experience in the industry.
I am so honor to Mr. Koga Michio, Chairman, Metatechno Inc, for giving us this
invaluable opportunity to learn in an internationally recognized, multinational company
within a friendly environment.
Then, I am so grateful to Mr. Jeewana Waidyaratna, General Manager, Metatechno
Lanka for giving opportunities to Sri Lankan undergraduates to complete our internship
in their organization.
Then I am thankful to Mr. Janith Padmakumara, Head of Recruitment Panel who
interviewed me and recommended me for the internship at Metatecho Lanka, also
for the given guidance on how to improve and proceed using the resources provided and
iv | P a g e
for giving us the opportunity to feel the beauty of a technical career giving
appropriate responsibilities.
I am thankful to Mrs. Anoja Wickramasinghe, Manager of HR depepartment, for the
friendly support given in any issue I came up with. The work done in coordination with
university and making us a part of the MTL family is really appreciated. I am so much
grateful to the MTL support team for all the support given throughout my stay at MTL.
Then I dedicate my thanks to Mr. Sameera Weerawardane, Trainer and Intern coordinator
for giving such an excellence guidance and flagship me to get engaged with the staff,
organization culture, policies, rules & regulations.
Then I express my honor to Mr. Dammika Priyadarshana, Project Manager, VS10/13EXT
Project for his guidance towards the project and advices and suggestions towards the
technological struggles I faced.
Then I express my honor to Mr. Amila Perera, Project Manager, P-2014-JMIG-
MPEG4H264HEADER-01 Project for his excellence and kindly guidance towards the
project and the suggestions towards the technological struggles I faced.
Then I express my honor to Mr. Wasantha Payoe, Project Manager, KYU Equipment
Management System Extension Project; and Mr. Ravindra Perera, Project Manager,
NSSHINKI-01 Project for their excellence guidance and mentorship.
Also, I thank to IT support & service department for their on-time service while
requesting for resources & materials, and financial department for their great services.
Finally, I am thankful to each and every member of the MTL family in technical, non-
technical and support staff, for the friendly environment provided and been a helping
hand whenever needed. I did not have to worry having any technical issue or non-
technical issue that there was always someone I could get help from or ask guidance.
v | P a g e
Thank you very much everyone for making this internship period such a fruitful
experience for my life, widening my horizons!
vi | P a g e
Table of Contents
1 Introduction to the training establishment ............................................................. 1
1.1 Overview .............................................................................................................. 1
1.2 Introduction / Profile ................................................................................................. 1
1.3 Services of the Meta Techno Lanka.......................................................................... 2
1.3.1 Embedded Software Services ............................................................................ 2
1.3.2 Software Development....................................................................................... 2
1.3.3 Information Technology Consultancy ............................................................... 3
1.3.4 Training .............................................................................................................. 3
1.3.5 Technical Support .............................................................................................. 3
1.4 Management Structure for Meta Techno Lanka ....................................................... 4
1.5 Metatechno Lanka Products ...................................................................................... 5
1.5.1 Meta Administration Support System ................................................................ 5
1.5.2 Mapit .................................................................................................................. 6
1.5.3 CGS (Career Guidance System) ........................................................................ 6
1.5.4 LibSys (Library System) .................................................................................... 6
1.5.5 Complaint/Process Management Systems ......................................................... 7
1.6 Meta Techno Lanka Events ...................................................................................... 7
1.7 Meta Techno Lanka Environment ............................................................................ 7
1.8 Meta Techno Lanka Technologies ............................................................................ 8
1.9 Meta Techno Lanka Vision ....................................................................................... 8
1.10 Meta Techno Lanka Mission .................................................................................. 8
1.11 Role of Meta Techno Lanka in Sri Lanka ............................................................... 9
2 Training Experience .................................................................................................... 10
2.1 Overview ................................................................................................................. 10
2.2 Projects Engaged During the Training Period ........................................................ 10
2.2.1 VSEXT Function (Feasibility study on Visual Studio Extension) .................. 10
2.2.2 P-2014-JMIG-MPEG4H264HEADER ............................................................ 17
2.2.3 KYU Equipment Management System Ext ..................................................... 23
vii | P a g e
2.2.4 NSSHINKI-01 (Environment migration of a Canon IP camera application) .. 24
3 Conclusion ............................................................................................................... 29
3.1 Introduction ............................................................................................................. 29
3.2 Importance of Industrial Training ........................................................................... 29
3.3 Satisfaction .............................................................................................................. 30
3.4 Metatechno Lanka as a Training Establishment ..................................................... 31
3.5 Suggestions ............................................................................................................. 32
Abbreviation .................................................................................................................... 34
Annex A – Configuration to enable VS macros ........................................................... 35
Annex B – Sample macro to manipulate the variables ................................................ 35
Annex C – Macros to calculate the time difference between two break points......... 36
Annex D – OutputPaneWindow .................................................................................... 37
Annex E – A NUnit test (Access Unit Delimeter NAL unit) ........................................ 38
Annex F – Flow of EventWatchingSystem ................................................................... 40
References ........................................................................................................................ 41
viii | P a g e
List of Figures
Figure 1: Emblem of Organization ..................................................................................... 1
Figure 2: Management Structure of MTL ........................................................................... 4
Figure 3: Microsoft updates to be uninstalled to enable VS macros in 2010 and later
versions ............................................................................................................................. 14
Figure 4: Sample Add-On code segment to manipulate the variable in the current
execution context .............................................................................................................. 15
Figure 5: Sample macro to start an add-on ....................................................................... 16
Figure 6: Ffmpeg process builder ..................................................................................... 19
Figure 7: H264 Format Analyzer Application .................................................................. 20
Figure 8: Installer of H.264 Format Analyzer Application............................................... 21
Figure 9: A sample NUnit Test Project............................................................................. 22
Figure 10: Web Interface of a sample Canon VB-C60 Camera ....................................... 25
Figure 11: RelayServer ..................................................................................................... 27
Figure 12: Smaple macro to manipulate the variables ...................................................... 35
Figure 13: Macros to calculate the time difference .......................................................... 36
Figure 14: Macro to publish the variables in a OutputPaneWindow ................................ 37
Figure 15: Add-On to publish the variables in a OutputPaneWindow ............................. 37
Figure 16: Flow chart of EventWatchingSystem .............................................................. 40
1 | P a g e
Chapter 1
1 Introduction to the training establishment
1.1 Overview
During my training period I worked at Metatechno Lanka (Pvt) Ltd. Rest of this chapter
describes about the history, services, vision, mission, goal and values of the company.
Then this provides an overview about products & technologies used in Metatechno
Lanka. Finally the strengths, weaknesses and the contribution of Metatechno Lanka to Sri
Lankan society are emphasized in the chapter.
1.2 Introduction / Profile
Figure 1: Emblem of Organization
Metatechno Lanka (Pvt) Ltd was established as a fully owned subsidiary of Metatechno
Inc of Japan in 2001. It is Operating under the Board of Investment (BOI) of Sri Lanka.
Metatechno Lanka is a limited liability company. The company specializes in developing
Embedded Software for Electronics and Computing devices manufacturers around the
world. In recent years, the company is establishing itself in the domestic market as a fully
customized software solutions provider in the area of Business Management.
2 | P a g e
Metatechno Lanka boasts of an organization culture unique to itself. Enriched with the
business ethics and efficiency of Japanese Management principles, it also blends Sri
Lankan culture and its value system to forge a rich working environment.
1.3 Services of the Meta Techno Lanka
1.3.1 Embedded Software Services
Since the inception of Metatechno Lanka, Embedded Software Services has been the core
competency of the company. From selection criteria to the overall business model,
Metatechno is fine tuned to cater for the elite Electronics Manufacturers around the
world.
Metatechno Lanka guarantees optimum processing power, highest quality standards,
timely delivery and confidentiality to your development needs. State of the art
development facilities, working experience around the world, flexibility to work with
other teams, has made Metatechno Lanka stand out from the rest.
Few areas of our specialty:
Real Time Operating Systems porting
Communication protocols
Device drivers
Printer/Copier engine controllers
Simulators
Image Processing
1.3.2 Software Development
Metatechno Lanka has one of software developers with lots of experiences in stand-alone
application development, product customization, and integration to third party systems.
Metatechno Lanka uses agile software development methodology to generate high-
3 | P a g e
quality deliverables and the flexibility to handle changing business priorities, while agile
process is focusing on to global attention.
1.3.3 Information Technology Consultancy
Metatechno Lanka helps to build a strategic plan of businesses. It is providing
consultancy to stabilize and secure the current and new IT environment, and being with
the clients to plan the future phases of their business by confirming the most appropriate
strategy for their success, while removing the burden of your business with the cost of a
full-time IT staff. From day-to-day troubleshooting to strategic long term planning,
Metatechno Lanka is being to supplement their IT needs with on-demand experts. That’s
how Metatechno Lanka offers it’s consultancy services to their clients.
1.3.4 Training
Metatechno Lanka is an excellent place to train candidates and trainees with the
supervision of experienced seniors of staff and real world skills. And also Metatechno
Lanka provides tremendous training to a wide range of premier businesses and
organizations. The company provides not only development skills to the trainees but also
software documentary skills as well.
1.3.5 Technical Support
Metatechno Lanka understands the importance of technical support in any organization.
So they are focusing on giving maximum support for any customer. Metatechno Lanka’s
support team available in anytime to help increasing business productivity and
performance. Technical support is available not only for the Metatechno Lanka’s
products but also for the third party systems as part of a managed service contract.
4 | P a g e
1.4 Management Structure for Meta Techno Lanka
Following figure shows you the management structure for Meta Techno Lanka.
Figure 2: Management Structure of MTL
Executive Director
General Manager
CTO
QA Lead
QA Engineer
Project Manager
Tech Lead
Senior software engineer
Software engineer
Associate Software engineer
Web developer
Web designer
Chief business operations officer
Business Support Manger
Head of financial solutions
Associate accountant
Marketing executive
5 | P a g e
1.5 Metatechno Lanka Products
Metatechno Lanka provide their products and services to some of the leading consumer
electronics companies in the world like Canon group, JEOL, Fujitsu, IBM Japan Ltd,
Toshiba, Hitachi etc. Basically Metalanka products can be categorized into five main
areas. They are:
1.5.1 Meta Administration Support System
Complete Administrative Support System suitable for any organization
Web based technology helps to integrate multiple braches geographically
distributed
Available features
o Attendance monitoring
o Leave management
o Reservations
o Task Assigner
o Calendar and Personal Scheduler
o Employee lifecycle management
o Meeting scheduler
o Complain Management
o Payroll
Each module is customizable to match organizational needs
6 | P a g e
1.5.2 Mapit
An innovative social business attempt by Metatechno Lanka to gather and share
Map information of Sri Lanka
Built on top of Google Maps, thus detail clarity
Users themselves can build the information structure by defining categories and
how the items are viewed
Integrity is preserved by moderator level users
Free for all users
1.5.3 CGS (Career Guidance System)
This web based system is the ideal solution for a Career Guidance Unit of any
size and any discipline
Fast and intelligent search and match feature enables perfect match between the
available job vacancies against job seeker information
Priority settings enable the users to search for jobs in different preferences
Job seekers and Recruiters can update their own information
Auto CV generation for job seekers
Generate reports from historical records of job matching
Customizable to match any education institution
1.5.4 LibSys (Library System)
Web based integrated library system can be used stand alone or can connect
distributed library network
Users can search, browse, and reserve media from anywhere they wish
User friendly interfaces are easy to navigate even for the novice
Privileged user group settings to manage different levels of users
Ability to maintain any type of media such as books, DVD’s, references, or files
7 | P a g e
1.5.5 Complaint/Process Management Systems
Ideal for complain process tracking, document tracking or chain authorization
tracking
Gets rid of delays involved with hard copy transfers
Group permission setting enables multiple layers of authority
High Security for sensitive information
Auto generated forms and letters
Report printing inbuilt
Highly customizable
1.6 Meta Techno Lanka Events
Metatechno Lanka takes their social responsibility seriously as a term; they take every
opportunity to hold out a helping hand and a smiling face to those in needs. With the aim
of acquiring the best talent, Metatechno Lanka has focused its recruitment process on the
cream of the crop of leading universities in Sri Lanka and abroad. Metatechno Lanka
social support activities span across several areas among which, providing educational
aid to school children, donating equipment and financial assistance to rural health care
sector, conducting and sponsoring cultural activities, involvement in disaster relief
programs and environmental preservation activities are prominent.
1.7 Meta Techno Lanka Environment
Metatechno Lanka always tries to make their office environment very friendly and charm
to boost employees’ interrelationship between each other. So they are conducting small
games, brain storming sessions and meetings to minimize the work tension of employees.
To increase employees work performance and throughout is the major expectation of
8 | P a g e
Metatechno Lanka’s administration to gain maximum and provide quality products. Also
they use 5S concept. Therefore working environment was always very clean and neat.
1.8 Meta Techno Lanka Technologies
Metatechno Lanka always uses latest technologies through the entire life cycle of the
products which they are developing. C/C++, Object oriented design and development,
.NET platform, Java, Web development tools, Scripting languages, UML, Oracle/SQL,
Windows, Unix and Linux environments.
Metatechno Lanka maintains competence in a wide range of Oracle, Mysql and SQL
software products, including database, middleware and applications, and implements
them for the clients.
Metatechno Lanka QA process is well managed process which leads to provide products
with best quality and minimum risks. So Metatechno Lanka is much focusing their
attention on Quality Assurance of any product.
1.9 Meta Techno Lanka Vision
Assist to quench the global thirst for high quality product oriented software engineers
through mutual collaboration with Japan and other renowned IT industries in the world.
1.10 Meta Techno Lanka Mission
Being a part of a family is the environment that has been created in the workplace which
is based on the Sri Lankan culture. On the other hand, being Japanese owned Company;
one would see a mixed culture at Meta Lanka that is nourished with the Japanese
business ethics, culture and management style.
9 | P a g e
1.11 Role of Meta Techno Lanka in Sri Lanka
Metatechno Lanka believes that its corporate responsibility (CSR) resides in nurturing
and maintaining a keen awareness of being a member of a global society, playing a role
in society as a good corporate citizen, and living up to society's ethical and public
expectations. The philosophy of corporate social responsibility at Metatechno Lanka
stems out from our vision itself. MTL is constantly vigilant and observant of the needs of
Sri Lankan citizens in order to provide them with required help and support in every
possible way. MTL always live up to the standards of a socially responsible company and
it has succeeded in doing so over the past few years in operation.
MTL tribute to virtue comes in many forms. In fact, Metatechno Lanka has a dedicated
group of talented people whose sole responsibility is to look into this all important area of
corporate social responsibility. The outcome of their effort is nothing but a total victory.
In MTL perception, a total victory pays dividends to all parties involved with them; the
company and its employees, their families and the society at large.
Today, MTL social support activities span across several areas among which, providing
educational aid to school children, donating equipment and financial assistance to rural
health care sector, conducting and sponsoring cultural activities, involvement in disaster
relief programs and environmental preservation activities are prominent.
10 | P a g e
Chapter 2
2 Training Experience
2.1 Overview
This section describes about the projects that I was involved and the training experiences
that I gained during my internship of 26 weeks at MetaTechno Lanka. I worked at
MetaTechno Lanka from 5th May to 07th November. At the MetaTechno Lanka I was
mainly involved with four projects. There was a feasibility study research project on
Visual Studio Extension, H.264 bit stream analyzing, Report generation implementation
for an existing Japanese ERP and client side application development for Canon network
camera. These projects were supervised by Mr. Dammika Priyadarshana, Mr. Amila
Perera, Mr Vasantha Payoe and Mr. Ravindra Perera respectively.
The rest of this section describes my training experience about projects that I could work
on. In addition to my duties during the training period, this chapter includes all the
experience of time period of internship such as office practices, management practices,
researching and best practices apart from the difficulties I have undergone during my
internship at MetaTechno Lanka & the steps that I have undertaken to overcome them.
2.2 Projects Engaged During the Training Period
2.2.1 VSEXT Function (Feasibility study on Visual Studio Extension)
2.2.1.1 Introduction
Metatechno’s culture in RnD
This is a feasibility study project based on Microsoft Visual Studio Extension. This
project was initiated by the mother company, Metatechno Inc, Japan. Since the
organization is interested and focusing moving towards Microsoft platforms, they face
11 | P a g e
some difficulties and lacks while using their tools and frameworks. So iteratively,
Metatechno develops its own developing environments according to their needs and
requirements. What do they do is, whenever they encounter a need or lack or problem,
they draft a feasibility study project on that particular topic and add them to their stack.
According to the importance and the priority schedule of the researches, the research
department select the researches and an assign an appropriate internal or external team or
outsource it to their child organization and do the research. When the team succeeds the
study or research, they implement the necessary technologies and integrate them into
their environment. In addition, they give a proper training on that particular
implementation to the necessary players. Likewise, Metatechno Lanka was given a
feasibility study project in Visual Studio Extension.
Microsoft Visual Studio Extension Package
Microsoft Visual Studio is an integrated development environment from Microsoft. It is
used to develop computer programs for Microsoft Windows, as well as web sites, web
applications and web services. Visual Studio uses Microsoft software development
platforms such as Windows API, Windows Forms, Windows Presentation Foundation,
Windows Store and Microsoft Silverlight. Mostly it sticks to the Microsoft .Net
framework and it allows developing open source platforms such C and C++.
Even though Visual Studio is commercial closed-source application, its professional and
ultimate versions allows the users to extend its features and functionalities, using the
Visual Studio Extension Package. The user can dig into a certain extend and can be able
extend it features and functionalities using the mentioned package.
2.2.1.2 Problem Identified
As I have mentioned in the above chapter that the organization moving towards
developing Windows application, they started working with Microsost Visual Studio
IDE. Earlier they had their own IDEs & developer tools and for some open platform
projects, they have been using a fully customized Eclipse IDE. But now, when they
12 | P a g e
migrate to some new IDEs and frameworks like VS and .Net, they encounter some issues
due to the unavailability in the new technologies or the lack of knowledge of the players.
Likewise, they’ve got an issue with VS debugger environment. For testing purposes, the
VS allows to traverse the execution point line by line in code. In such a situation, the user
can assign a break point where he want to test the code and when the execution hits such
a break point, it pause the execution and gives the control to move forward. So the user
can clearly identify the flow and can understand the values of variables & objects and can
manipulate them.
In such a situation, the testers planning to trigger a macro or an add-in, in order to
automate some specific tests. So they have some questions and looking for valid answers
in order to implement such testing macros and add-ons.
The questions are:
1. Whether is it possible to start a macro when a break point is hit?
2. Whether is it possible to start an add-on when a break point is hit?
3. Whether is it possible to continue the execution after starting either a macro or
add-on, when a break point is hit?
4. Whether is it possible to manipulate the variables values in the current debugging
environment, using a macro?
5. Whether is it possible to manipulate the variables values in the current debugging
environment, using an add-on?
6. Whether is it possible to perform the above mentioned variable manipulation from
an external input (an XML value)?
7. Whether is it possible to start an add-on using a macro?
8. Whether is it possible to calculate the time difference between two breakpoints?
9. When the execution hits a break point, whether is it possible to store the variable
values in the current debugging environment to a text file using a macro?
10. When the execution hits a break point, whether is it possible to store the variable
values in the current debugging environment to a text file using an add-on?
13 | P a g e
11. When the execution hits a break point, whether is it possible to print the variables
in the current debugging environment to a OutputPaneWindow if they meet
certain conditions, using a macro?
12. When the execution hits a break point, whether is it possible to print the variables
in the current debugging environment to a OutputPaneWindow if they meet
certain conditions, using an add-on?
2.2.1.3 Required Deliverables
The time given was 4 weeks (20 days). After completing my study and research, I had to
submit a detailed report upon my findings and conclusions with respect to the above
mentioned requirements. Also I had to strongly justify the validity of my argument with
necessary facts and samples such as codes, test programs and etc.
2.2.1.4 My Contribution
In this particular project, I’m the only developer in the team and Mr. Dammika
Priyadarshana acted as the project manager and the reporting superior at that time. At the
very first day I had a meeting with the respective project manager and the project
coordinator. They explained the requirement, the standards which I have to obey during
this research, the expected outcomes and the documenting templates & the formats.
We, I and the project manager drafted the project plan and the work breakdowns. We
discussed about the time allocations and schedule of attainments. Every day, before I
leave the office, we have a review meeting regarding what I have done today, and what
I’ll be focussing on next day.
It was the very first experience for me in .Net environment. I’ve never touched those
tools before. So I had to learn a lot, the basics, syntaxes & semantics in C# and etc. It was
a very good platform for me to learn .Net C# as they provide enough guidance and
tutorials with best practices and all.
14 | P a g e
Setup the environment
First of all, I was asked to setup my working environment. I had to format the given
system and install Windows 7. Then as I supposed to work with VS extension project the
IT service department provided a 1 month trial evaluation version of both VS 2010 and
VS 2013 installations. First I started working with VS 2010 environment.
Enabling macros in Visual Studio
Since the emergent of VS it allows to implement custom macros. But since 2010 version,
using macros is deprecated by Microsoft due to some vulnerability and as it may lead to
some security leaks [1][2]. So I had to find a way to fix and re-enable it.
Finally I found that, removing the following Microsoft updates which corresponds to
Windows and .Net version, will allows working with macros again in VS environment.
OS \ .Net Version 4.5.1 4 3.5
Windows 8.1 KB2898871
Windows 8 KB2898870 KB2898865
Windows 7 KB2898869 KB2898864 KB2898855
Windows XP KB2898855
Figure 3: Microsoft updates to be uninstalled to enable VS macros in 2010 and later versions
Or, by changing the XML attributes in the given configuration files as it’s mentioned in
Annex A, also will make re-enabling the operation of VS macros.
Way of achieving the requirements
Meeting the first three requirements was not hard. It was quite easy to attain and the way
of doing it is straight forward. The VS IDE has the simple ways to do it. The 4th
point, to
manipulate the variables in the debugging environment using macro, I had learn a little
bit. I had to understand the mechanism of compilers, linkers, debugger and etc. Then I
had to learn about the available namespaces and objects in order to access the debugger
and marshal environments.
15 | P a g e
Finally I found out a way to overcome the issue and implement a sample program and a
sample macro in order to test the variable manipulation. It succeeded my test and it’s the
sample macro is documented in Annex B. In order to implement the same using an add-
on, what all I had to do is, just find the corresponding C# namesapces, object and
methods according to the above implemented macro. The below specified codes will
illustrates that how I implemented it.
Figure 4: Sample Add-On code segment to manipulate the variable in the current execution context
This particular add-on will assign the value of 50 to variable ‘age’, in the current
debugging environment if exist.
The implementation in reading an external file or stream and considering the read
information, manipulating the variables is not a big issue. What is the excess things to be
done is, it’s just implement the necessary code segments in order to read the stream and
change it as a string object. Likewise, dumping the variable values into a text file is also
the same.
The next requirement was little bit tough and challenge full. When a break point is hot, it
should start a macro and that macro should start an add-on and perform some actions. It’s
bit complicated. After working a lot of hours, I found a way to implement it. The below
mentioned code will illustrates how it works and this macro ‘CallMyAddIn()’ will start
the add-in ‘myAddIn’.
16 | P a g e
Figure 5: Sample macro to start an add-on
Then, in order to calculate the time consumed between two breakpoints, I implemented a
very simple mechanism. Two integers which read the current time in millisecond and the
difference will be calculated and exposed to user. The sample macros are specified in
Annex C.
The next major requirement was to publish the variable and their values which are in the
current debugging context, in an OutputPaneWindow. It should be done using by both
macro and add-on separately. So, I studied about accessing OutputPaneWindow and
assigning the necessary strings on it. Finally I came up with a solution and succeeded the
requirement and the sample macro & add-on’s code snippet is mentioned in Annex D.
Justification and documenting
Finally, I could be able to meet all the requirements successfully and could be able to
justify my conclusions with the facts I have and the references I referred. I prepared a
documentation with my findings and conclusions, and presented it to the PM and PC.
They were so happy about my works and they translated my document in to Japanese and
forwarded to Metatechno Inc.
A week later they had the review and some clarifications with the Metatechno engineers.
I was requested to be in that online meeting and I explained the facts and my
justifications upon my conclusions. It was an awesome experience for me and I was
really excited to be a part of it.
Finally they accepted all them and concluded the project.
17 | P a g e
2.2.2 P-2014-JMIG-MPEG4H264HEADER
2.2.2.1 Introduction
H.264 format
H.264 is a video compression format that is currently one of the most commonly used
formats for the recording, compression, and distribution of video content. It stores the
video information as Network Abstraction Layer (NAL) units which are considered as the
building blocks of H.264 stream [3].
The coded video data is organized into NAL units, each of which is effectively a packet
that contains an integer number of bytes. The first byte of each H.264/AVC NAL unit is a
header byte that contains an indication of the type of data in the NAL unit. For HEVC the
header was extended to two bytes. All the remaining bytes contain payload data of the
type indicated by the header. The NAL unit structure definition specifies a generic format
for use in both packet-oriented and bitstream-oriented transport systems, and a series of
NAL units generated by an encoder is referred to as a NAL unit stream [4].
I had engaged with project for 15 weeks. This project was managed by Mr. Amila Perera
and he played both the roles, project manager and developer. I was appointed as the
developer to this project. Therefore he acted as my reporting superior during this period.
This entire project was based on ITU-T Recommendation for H.264, 2011 version [5].
2.2.2.2 Required functionalities of the deliverables
The ultimate goal is to develop a Windows application upon .Net framework where it
could get an MP4 video file as an input, extract the raw h.264 bitstream, parse the NAL
units, retrieve the information of each NAL unit’s syntax element, generate an XML
object using those information and populate a GUI view where the user can analyse them.
In addition to that, the user can save the parsed information as an XML document and
later on, he could be able to open and analyse the information.
18 | P a g e
2.2.2.3 My Contribution
I joined this project when the designing phase completed. So the Pm was having a clear
plan and I was asked to implement it step by step. At the beginning I studied a little bit
about H.264 format, NAL unit structure, header & payloads, different NAL units and etc.
Implemented the parsing process of NAL units
There are 18 fully functional NAL unit types available according to the current standard.
Each may have number of modules and each of the have number of sub modules. There
are certain interconnections also available among different NAL units. For example,
Picture Parameter Set (PPS) and Sequence Parameter Set (SPS) are required in order to
parse the syntax elements of Coded Slice NAL units.
So we started from the very basic NAL units, which are 100% independent to other types.
I started with SPS and its sub modules. Then continued with other NAL unit types and
their corresponding modules.
Implemented the extraction of H.264 bitstream from MP4 video file
At this time we’ve been giving the externally extracted H.264 bitstream, to the program.
But the requirement specifies that the user could be able to input an MP4 video file. So
we had to implement a mechanism in order to extract the raw H.264 bit stream from the
given MP4 file.
So I did a study upon the mentioned issue and finally overcame it with an idea. I found
the ffmpeg tool for windows platform which is based on FFMPEG platform. This tool
allows to perform the activities such as decoding, encoding, compression and all most all
the video activities. So, I implemented a mechanism where the ffmpeg toll will be
executed as an external process where it accepts the user input MP4 file and produces the
raw H.264 bit stream.
19 | P a g e
The following code snippet illustrates the basic implementation.
Figure 6: Ffmpeg process builder
API Implementation
This entire project contains two sub VS projects. The core one is the ‘H264Parser’, which
play the major role. The other one is the GUI part, which allows user to populate the view
and let him analyse the syntax element information. We planned to provide the
H264Parser as .Net library where anyone can implement his own application on top of it.
It will cater for both GUI and CLI applications.
So I implemented the necessary APIs. In this phase I have to take care of each and every
methods’ and attributes’ access modifiers due to the encapsulation. I used the VS’s
inbuilt object browser in order to identify them.
GUI Implementation
Then I took the full responsibility to build the GUI part of the project. The GUI should
contain two major parts. One is the TreeView, where the user can traverse the XML
object. And the next one is the RichTextBox where the user can get the corresponding
information of a clicked node in the TreeView.
Here, I had to take care of some issues such as threading and stuff. The bitstream
extraction and parsing process should be handled by a worker thread and the plan
20 | P a g e
required a progress bar as well. So I had to study the mechanism and the implementations
of .Net threading. Then I implemented it.
During the implementation we faced several issues, such as GUI blocking, hanging in
middle, control collapses and all. We analysed each & every issues and took to concern
them one by one. Then we found out the exact bug behind the issue and fixed them.
Finally we made a fully cleaned and bug free application under the recommendation and
best practices.
Figure 7: H264 Format Analyzer Application
21 | P a g e
Installer Development
We plan to deliver our application as full packed one. So we developed an installer using
Inno Setup. This is a free tool. This not only allows the compression archiving and but
also it allows the pre-requisites installations. As our application is based on .Net
framework, we had to distribute the .Net 4.5.1 redistributable binary and make sure that
the environment is installed with .Net. Or else, the installer should install the .Net first
then install our application.
According to the above mentioned criteria, I personally implemented the necessary
implementation of the installer. The scripting of Inno Setup is based on python. So it
allows me to learn the basics of Python as well.
The below image shows our installer.
Figure 8: Installer of H.264 Format Analyzer Application
22 | P a g e
Unit Testing and Documentation
In order make sure that our application meets the ITU-T specification, we had to compare
and ensure the output of our application with a similar trustworthy application. For that,
we found an open-source project ‘ldeocod’. It’s a cross platform project which was
developed in C. So we referred to its outputs and compared with ours. The outputs were
100% matching and same. However, they were a few mismatches in syntax elements
naming, due to the ITU-T specification versions. Therefore, we documented both the
outputs & compared and contrasted the mismatching elements and explained the facts
behind them.
Then we started working on unit testing. Each function was tested. We developed some
generic inputs where it generates 100% of code coverage for the undertaken function. We
monitor the code coverage using some tools. Then tested each and every function with
their corresponding generic inputs, using an open-source tool called, ‘NUnit’. NUnit is an
open source unit testing framework for Microsoft .NET. It serves the same purpose as
JUnit does in the Java world, and is one of many programs in the xUnit family [6].
Figure 9: A sample NUnit Test Project
The above diagram illustrates a sample NUnit test project and Annex D contains one of
our unit test’s implementations.
23 | P a g e
2.2.3 KYU Equipment Management System Ext
2.2.3.1 Introduction
I worked for short time in this project. Even though it is fully fledged one, I could be able
to work just for 3 weeks, due to some constraints both we, myself & company had. This
project is about developing some reporting mechanisms for an existing Japanese ERP
solution. The team consisted 3 players where Mr. Wasantha Payoe acted as the project
manager and my reporting superior for this period.
Metatechno has already developed an ERP for one of its Japanese client and maintaining
& further developing it in iterative agile methodology. Recently it has outsourced the
further development phases to Metatechno Lanka. The client requires some further
development in reporting according to their new criteria.
2.2.3.2 Requirement
The client organization has designed the template of the reports they require using an
image processing software. Now our responsibility is to implement and integrate them
into the existing ERP. Metatechno recommends to use ActiveReports v6.x in order to
develop those reports.
2.2.3.3 My Contribution
As I had mentioned it’s an early developed ERP solution, it is not necessary to
understand and get familiar with the system much. In the short run what all I have to
know is, in order to implement and integrate a particular report, what are the necessary
data and how could I retrieve them from the database or the program itself. But our
designers have already developed a crosslinking Excel document by connecting the data
models. So it is easy to understand the crosslinks between data and the ways of retrieving
them.
Then all I had to do was, design the report. The very big difficulty and burden we had
was, the generated reports should exactly same as it is drawn in the SRS. We could have
24 | P a g e
0.5mm of deviation. We should strictly stick to the alignments, gaps, line thicknesses and
etc. During this time, I could be able successfully implement 4 full forms
2.2.3.4 Problems and constrains faced.
The team was given only 2 registration keys for ActiveReports. Both of them were used
by the PM and another developer Mr. Mohan Kure. So I had to use only the evaluation
version of ActiveReports. Using that version, I could just design the report and
implement the necessary codes. I cannot compile and debug the application.
So, they request me to finish the given task & commit to code repository, and when other
developer is free request him to check my contribution and make sure all my
implementations are working properly and bug free. As I had practiced test driven
methodology, it was very difficult and hard to get the job done. However, I managed to
overcome the issue and met the requirement.
2.2.4 NSSHINKI-01 (Environment migration of a Canon IP camera application)
2.2.4.1 Introduction
Canon Inc is one of the prestigious client of Metatechno Inc. Metatechno is developing
their embedded firmware and client level applications for Canon product. Likewise
Metatechno has given an Canon’s application migration project to Metatechno Lanka.
The particular project has been developed under older developer environments. So the
major requirement is to migrate the existing project into a current stable environment and
further on, develop some extra requirements.
25 | P a g e
Figure 10: Web Interface of a sample Canon VB-C60 Camera
2.2.4.2 Characteristics and Requirements
I worked for 5 weeks in this project. As it was short dated and the team was lacking
behind the schedule, many players were gathered to this project. Mr. Ravindra Perera
acted as the project manager and the reporting superior for this particular period.
Metatechno has developed the client side application of Canon VB-C60 series IP
cameras. It’s been developed under .Net 2.0 & Windows XP environment. Now Canon
requires to develop it as it supports up to Windows 8.1 and Windows Server 2012
environments.
26 | P a g e
2.2.4.3 Assigned Tasks and My Contributions
Migrate the VS projects from VS2008 to VS 2013 environment
The entire project contained 6 VS solutions where each contains number of VS projects.
All them had been developed in VS 2008 environment. So my first task was to migrate
all them to VS 2013 & .Net 4.5.1 environment and bring all them to active state. Each
solution contains a VC++ Metatechno licence check project, a core application project,
no or one or more supportive application projects, a Vix CustomInstaller project and a
Vix installer project. My responsibility is to fix all the version mismatches to latest
versions and take care of necessary implementations.
Fix the Pre & Post-Build Event Commands
In one particular solution, all the projects are interrelated to each other somehow. There
will be a chain of connection between them. One project require another one’s output.
Therefore, it relies upon certain pre and post build commands, in order to copy certain
files to certain directories. So I had to understand the flow of executions and according to
that, I implemented the pre and post build event commands.
MBCS to Unicode Migration
All the VC++ projects were MFC based, which relies upon Microsoft’s static MFC
library. But all they were developed in MBCS format. Since Mirosoft has deprecate the
usage of MBCS, we decided to migrate all the VC++ projects to Unicode format. So I
had to identify the MBCS based data types and MFC functions and change them into
their corresponding Unicode based ones.
Fix, make active and understand the workflow of RelayServer
Among the all 6 VS solutions, there is solution titled, ‘RelayServer’. Which act as the
RelayServer between the camera’s web server and user and, accept the user (web) request
and provide the image buffer from the camera, at the instance.
27 | P a g e
I was requested to fix the existing code and study the work flow & the relations between
the existing modules of RelayServer. It took me around 3 days in order to thoroughly
study and understand it. At the end, I will be explaining my findings to the entire team
and document it for further requirements.
The following image shows a sample serving of RelayServer.
Figure 11: RelayServer
Fix and understand the workflow of EventWatching System
EventWatchingSystem contains 3 majour modules. Those are Event Watcher,
ImageCtrlViewer and SoundCtrl. EventWatcher will load the added cameras from the
CameraList.xml and continuously check their IO statuses in a constant time interval.
According to their status response it colour the GUI camera list elements as either green
or red or grey.
When a user starts a camera, an external process of CameraCtrlViewer.exe will be
triggered with the corresponding camera information. According to the response which
camera gives to the CameraCtrlViewer, it will assign it’s GUI components such as
28 | P a g e
horizontal & vertical positions of camera, zoom level and etc. Then, whenever the user or
the camera itself wants to transmit an audio in either way, the SoundCtl.exe process will
be triggered.
The abstract level work flow is specified by a flow chart in Annex F.
2.2.4.4 Problems and Constrained Faced
Even though its fully fledged project which was developed to a prestigious malty national
company, it lacks proper documentation. We were given not a single flow diagram even.
We had to go through the code line by line and understand the work flow. Sometime we
have to predict and make assumptions.
29 | P a g e
Chapter 3
3 Conclusion
3.1 Introduction
This chapter is the conclusion of the industrial training report. It describes my training
experiences, training establishment’s ability to provide useful training for interns,
assessments on industrial training program which is organizing by the university and
estimate how far the intern’s objectives are satisfied.
3.2 Importance of Industrial Training
Training is a learning process that involves the attainment of knowledge, skills, concepts,
rules, or changing of attitudes and behavior to enhance the performance of trainees.
After learning theories and concepts nearly for three years at university just doing
practical assignments and stuff have this exposure to the industry is so important and it
made us realize the real value of what we learnt for three years. We went away from
university having whole bunch of theories in brain, just seeing in books how to apply
them again in words and having limited experience in implementing them for real again
in very small scales and we are coming back knowing the real meaning of each and every
word we learnt. Witnessing how to use those in providing solutions for real life
problems making the theories serve humans. I know being an expert in any
programming language is not enough. Actually being an expert in anything is not
enough if we cannot use it in correct place in a correct way. Information technology is a
vast field, which can make miracles and learning whole lot of stuff will not ever
be a nightmare. What I finally realized from the internship period is that Computer
Science is vast field like ocean that I will not ever be able to learn everything and be an
expert. Only that will be effective is learning basics of everything that will give an
understanding in overall system and be an expert in one sub-field I am passionate about.
30 | P a g e
3.3 Satisfaction
It was a nice experience for whole life that I got to work in an industrial environment
totally different from university environment. Different people from different expertise
and different attitudes working towards one goal as a team while having more
responsibilities. Some of them having family responsibilities and managing lot of
personal matters with the career life.
During my time period of training I got the opportunity to gain a better understanding of
operations & practices of organization in the IT industry. First of all I was able to
experience how an organization performs its main functions within real life. Being
Metatechno Lanka is a global company I understood how several departments are
interconnected with each other’s, how the coordination happens and how clients are
attracted to the company products etc. So I got knowledge about the company
environment and how changes happen in the business processes according to the client
requirements.
I understood how the theories I learnt at university were applied in to making the output.
Most of the knowledge I gained from university was helpful for me during my project
tasks especially the object oriented concepts, data base concepts etc.
One of the key values added to my professional carrier from the training period of
Metatechno Lanka was the knowledge obtained from contributing to the projects. I was
able to work several projects during my training period. And I got experience about how
real systems are developing practically using version controls. And I could learn lots of
new things from all these projects because of differences of them.
Another important thing is we can celebrate our success if we perform our assigned tasks
in fine tune. A good product is a result of a good team effort. So we could learn how
project teams must be arranged and which tasks should assign for a particular person of
the team. I was able to work several projects because I perform well in every project I
worked. My supervisor asked me to check the progress of other team member’s work &
31 | P a g e
if they stuck somewhere help them to complete that task. It was a very good opportunity
for me to teach & guide the peer developers. It is very difficult to teach & make
understandable someone about technologies new to them.
I was able to get the practical experience of coding in C, C++, C#, Python, method
implementation, applying of object oriented concepts, database structures, database
designing, query and stored procedures writing & so many other things. In addition to
writing codes, I was able to lean writing quality codes, adding standard comments, reduce
repeating codes, technical writing & test cases writing etc.
I was able develop my interpersonal skills as well. I became a more capable person. I felt
more matured in developing and thinking, because every day I had to come up with some
kind of problem solving, analyzing, designing & innovative thinking. I could do lot of
researches during time period of internship which will help me to carry my further
education.
Finally I got better insight in to what my career plans should be after my degree &
altogether the internship period gave me an invaluable experience to my IT life & my
further academic work as well as in my future planning.
3.4 Metatechno Lanka as a Training Establishment
When we focus on training provided by the Metatechno Lanka, it was great place to get
trained. I was trained to work in different situations. Metatechno Lanka considers interns
as part of their company. So interns have to get used to the organization’s environment
quickly. The Human Resource department of the Metatechno Lanka always helps interns
to get used to the environment and release the tension of them. So undergraduates who
supposed to take their internship in Metatechno Lanka are very lucky to have huge
knowledge after the completion of relevant time period.
We were assigned to various projects according to our capabilities. Metatechno Lanka
knows exactly what the needs of trainees are and they are very much capability of
32 | P a g e
providing suitable training for interns. According to my opinion Metatechno Lanka was
capable for providing best training experiences. Metatechno Lanka allocates lot of time to
do researches on any area interns are interesting on. They are encouraging us to do lots of
researches on database side and upcoming technologies
The facilities available for the trainees were excellent. We have given suitable incentives
according to our contribution and equipment and other materials were provided at the
very first day in Metatechno Lanka. A tea was supplied in every morning and evening.
Supervisors and other senior employees of the company let us to take knowledge alone
and if something goes wrong they always correct and guide us to find the best way. So
they gave their maximum support for us to complete our training very successfully.
Another very important thing in this training period was the support that the interns got
from the university and the lecturers. We received their help throughout the internship.
Especially our training coordinators helped us to find placements for all our badge mates.
Also our staff of the faculty very much focused on the training program and took a great
effort to find some placements for us. NAITA is only one institute that interacts with this
training program of undergraduates. They contributed to manage agreements with our
training establishments and the faculty. So undergraduates’ services cannot be terminated
except reasonable matter until the contract is over.
3.5 Suggestions
I would like to suggest to the university training coordinates and lecturers, please find the
industry standard, upcoming technologies and new trends of technologies and prepare
undergraduates before the commencement of training to facing interviews. So they can
show their knowledge in the interviews and take their chances. So I suggest if they can
conduct some sessions about facing interviews and familiarize to such situations it would
be a great help for us.
33 | P a g e
Finally I’m very happy about the knowledge & skills that I gained during my internship
and the technical and non-technical experience that I gained from Metatechno Lanka
during my training period.
34 | P a g e
Abbreviation
RnD – Research and Development
VS – Visual Studio
IDE – Integrated Development Environment
PM – Project Manager
PC – Project Coordinator
BP – Break Point
NAL - Network Abstraction Layer
GUI – Graphical User Interface
XML – Extensible Markup Language
PPS - Picture Parameter Set
SPS - Sequence Parameter Set
API – Application Programming Interface
CLI – Command Line Interface
SRS – Software Requirement Specification
VC++ - Visual C++
MFC – Microsoft Foundation Class
MBCS – Multi Byte Character Set
IO – Input / Output
35 | P a g e
Annex A – Configuration to enable VS macros
Open the following three files in any text editor available and add the line
<AllowDComReflection enabled="true"/> right after the <runtime> span.
"C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsmsvr10.exe.config"
"C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsaenv10.exe.config"
"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe.config"
Annex B – Sample macro to manipulate the variables
Figure 12: Smaple macro to manipulate the variables
When this macro ‘twist()’ is executed, the variable ‘age’ in the context will be assigned to
a new value of 30.
36 | P a g e
Annex C – Macros to calculate the time difference between two
break points
Figure 13: Macros to calculate the time difference
The macro ‘start()’ should be started in the 1st break point and the ‘finish()’ should me
started in the final break point. It will assign the millisecond value of time difference in
between those two break points to the integer variable ‘time’.
37 | P a g e
Annex D – OutputPaneWindow
Figure 14: Macro to publish the variables in a OutputPaneWindow
Figure 15: Add-On to publish the variables in a OutputPaneWindow
38 | P a g e
Annex E – A NUnit test (Access Unit Delimeter NAL unit)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using H264Parser;
using NUnit.Framework;
using Rhino.Mocks;
namespace UnitTests
{
class AccessUnitDelimiterUnitTests
{
[Test, Description("Access unit delimiter のデータを解析し、primary_pic_typeの値を正しく設定
する。")]
public void UnitTest01()
{
var customNal = MockRepository.GenerateMock<NalUnit>();
customNal.Stub(x => x.GetRbsp()).Return(new byte[1] {0x21});
AccessUnitDelimiter obj = new AccessUnitDelimiter();
obj.ParseSyntaxElements(customNal);
Assert.AreEqual(1, obj.primary_pic_type);
}
[Test, Description("Access unit delimeter の全データをXMLドキュメントに追加する")]
public void UnitTest02()
{
var customBsr = MockRepository.GenerateStub<BitStreamReader>(new byte[1]);
customBsr.Stub(x => x.ReadUInt(3)).Return(1);
var customRpspTrailing = MockRepository.GenerateStub<RbspTrailingBits>();
39 | P a g e
customRpspTrailing.Stub(x => x.Parse(new BitStreamReader(new byte[1])));
var customNalUnit = MockRepository.GenerateStub<NalUnit>();
AccessUnitDelimiter obj = new AccessUnitDelimiter();
obj.AccessUnitDelimiterRbsp(customBsr);
XmlDocument xDoc = new XmlDocument();
XmlNode xmlNode = xDoc.CreateElement("rootNode");
xDoc.AppendChild(xmlNode);
obj.AppendToXml(xDoc, new NalUnitHeader(new byte()), customNalUnit);
Assert.AreEqual(1, xDoc.SelectSingleNode("rootNode/NAL-Unit-" + NalUnit.SequenceNumber +
"-AUD/AUD-Data").ChildNodes.Count);
}
}
}
40 | P a g e
Annex F – Flow of EventWatchingSystem
Succeeds
Fails
Fails
Succeeds
Yes
No
User Starts a Camera
Load CameraList.xml and
initialize each camera
Start
Succeed
Queries Camera’s
IO Status
Start an external process
CameraCtrlViewer.exe
User requires for sound IO in camera
Queries camera’s
sound IO status
Sound IO in either way
End
Error Message
Error message and change the
camera’s state
Figure 16: Flow chart of EventWatchingSystem
41 | P a g e
References
[1] http://visualstudioextensions.vlasovstudio.com/2014/02/13/visual-studio-2010-
macros-stop-working-after-february-2014-windows-update/
[2] http://support.microsoft.com/kb/2934830
[3] http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC
[4] http://en.wikipedia.org/wiki/Network_Abstraction_Layer#NAL_units
[5] http://www.itu.int/rec/T-REC-H.264-201106-S
[6] http://en.wikipedia.org/wiki/NUnit