Date: prev next · Thread: first prev next last
2016 Archives by date, by thread · List index


Reference: to the mail on 25th of March 2016

This is to bring to your notice that I have applied for GSOC 2016 with
Project Title*-*Output-Device use a Compilation Firewall for Libreoffice for
ORG:Libreoffice, under your Mentorship.

Kindly provide with the technologies to be used and a brief description of
the work to be done.So that I could start working on the Project right away
and showcase you the basic layout and some constructive work for the
Project.With this you will be able to decide whether you would consider
opting me for the Project.

We can have a Skype session if you would feel suitable for an interactive
session.

Link to Application:
https://docs.google.com/document/d/1H3BfMBfTh8yHVpaGKfdfXtm_ZD6Mnd7impXOiRfpka4/edit?usp=sharing

On Fri, Mar 25, 2016 at 1:31 PM, Mohit Kumra (via Google Docs) <
mohitkumra95@gmail.com> wrote:

Mohit Kumra <mohitkumra95@gmail.com> has invited you to *comment on* the
following document:
GSOC_2016_proposal_Compilation_Firewall
<https://docs.google.com/document/d/1H3BfMBfTh8yHVpaGKfdfXtm_ZD6Mnd7impXOiRfpka4/edit?usp=sharing_eid&ts=56f4f059>
[image: Sender's profile photo]I am extremely interested in working for
the OutputDevice class Compilation Firewall project I have
C,C++,Java,scripting,Python,and have working proficiency of STL.

It is requested to review the Proposal for Output-Device use a Compilation
Firewall for Libreoffice.

Thank you for the consideration.A quick reply is appreciated!!
Open in Docs
<https://docs.google.com/document/d/1H3BfMBfTh8yHVpaGKfdfXtm_ZD6Mnd7impXOiRfpka4/edit?usp=sharing_eid&ts=56f4f059>
Snapshot of the item below:
Output-Device use a Compilation Firewall for LibreofficeMOHIT KUMRAMARCH
23rd 2016

MENTOR: Chris Sherlock
Student Name: MOHIT KUMRA

DATE: MARCH 23rd  2016

TITLE: Compilation firewall for Libreoffice and Modularizing the
Output-Device class.

SYNOPSIS:

Data abstraction refers to, providing only essential information to the
outside world and hiding their background details.With the introduction of
this concept programs and developers now could easily write the code and
had lesser chances of depiction of all the features to all thus minimizing
the threat of code corruption.

I would recommend to make the compilation firewall for the Output-Device
class and to split the functionality of the Output-Device class. This would
minimize the massive load due to functionality being encapsulated into a
dense form in the Output-Device class, thereby enabling programs to run
faster with inclusion of the Compilation Firewall.

The Project:

In any programming language writing code does not imply that it is in
alignment with the guidelines but one needs to ensure that the code is
protected and secure against corruption/malwares thereby having zero or
minimal code smells.

The concept of Data abstraction provides us with the feature of hiding the
details and depicting only the essential details to the end user. For this
we use the PIMPL Idiom (Pointer to IMPLementation) is a technique for
implementation hiding in which a public class wraps a structure or class
that cannot be seen outside the library the public class is part of. This
hides internal implementation details and data from the user of the library
.

These are the Benefits of using PIMPL Idiom:

Benefits:

   1. Changing private member variables of a class does not require
   recompiling classes that depend on it, thus make times are faster, and
   the well known Fragile Binary Interface Problem() is reduced.
   2. The header file does not need to #include classes that are used 'by
   value' in private member variables, thus compile times are faster.
   3. This is sort of like the way Small Talk (a well known unusual
   syntax based language) automatically handles classes... more pure
   encapsulation.

The Implementation of making the Compilation Firewall file with the help
of the pmlpl idom format is as follows:

How to do it:

   1. Put all the private member variables into a struct.
   2. Put the struct definition in the .cpp file.
   3. In the header file, put only the Forward Declaration of the struct.
   4. In the class definition, declare a (smart) pointer to the struct as
   the only private member variable.
   5. The constructors for the class need to create the struct.
   6. The destructor of the class needs to destroy the struct (possibly
   implicitly due to use of a smart pointer).
   7. The assignment operator and Copy Constructor need to copy the
   struct appropriately or else be disabled.

To study for Compilation file links are:

   1. http://c2.com/cgi/wiki?PimplIdiom
   
<https://www.google.com/url?q=http://c2.com/cgi/wiki?PimplIdiom&sa=D&ust=1458896488814000&usg=AFQjCNF92l549sJWoCrSXIdcjzGOWKYZ9A>
   2.
   http://stackoverflow.com/questions/60570/why-should-the-pimpl-idiom-be-used
   
<https://www.google.com/url?q=http://stackoverflow.com/questions/60570/why-should-the-pimpl-idiom-be-used&sa=D&ust=1458896488815000&usg=AFQjCNGbw8lwAK_xGSfz8PQkt_iL0k8GOg>
   3. http://herbsutter.com/gotw/_100/
   
<https://www.google.com/url?q=http://herbsutter.com/gotw/_100/&sa=D&ust=1458896488816000&usg=AFQjCNF8I_uyZuyRssarUN-e7p4gzM98DQ>

Example:

#include <iostream>

using namespace std;

class Adder1{

   public:

      // constructor

      Adder1(int i = 0)

      {

        total1 = i;

      }

      // interface to outside world

      void addNum1(int number)

      {

          total1 += number;

      }

      // interface to outside world

      int getTotal1()

      {

          return total1;

      };

   private:

      // hidden data from outside world

      int total1;

};

int main( )

{

   Adder1 a;



   a.addNum1(10);

   a.addNum1(20);

   a.addNum1(30);

   cout << "Total " << a.getTotal1() <<endl;

 system("pause");

   return 0;

}

The Output is : Total 60

Above class adds numbers together, and returns the sum. The public members
addNum1 and getTotal1 are the interfaces to the outside world and a user
needs to know them to use the class. The private member total1 is
something that the user doesn't need to know about, but is needed for the
class to operate properly.

Road-Map:

For Project Development, following steps would be followed:

1. Review: On acceptance of the proposal for the project I would review
the code provided by the Mentors and try to analyse and familiarize with
the Data members and Data functions being used in the code. (May 23rd -
May 30th 2016)

2. Refactor: After reviewing the code, I will use my skillset for
refactoring the code. Thus making the code more effective and efficient in
terms of complexity( Time + Space ) and would modularize the code as much
as possible. This would take less than a week to complete.(June 2016)

3. Step 2 would help in achieving the goal of reducing the massive
Output-Device class code into modules and subclasses.

4. Develop: Parallel to modularizing the Output-Device class code I would
deduce and implement a methodology for making the compilation firewall for
the Output-Device class of the LibreOffice.(June 20th - July 20th 2016 )

Design Strategy:

Abstraction separates code into interface and implementation. So while
designing the component, I will keep interface independent of the
implementation so that if I change underlying implementation the interface
would remain intact.

Steps to be followed would include:

a. Put all the private member variables into a struct.

b. Put the struct definition in the .cpp file.

c. In the header file, put only the Forward Declaration of the struct.

d. In the class definition, declare a pointer to the struct as the only
private member variable.

e. The constructors for the class need to create the struct.

f. The destructor of the class needs to destroy the struct (possibly
implicitly due to use of a smart pointer).

g. The assignment operator and Copy Constructor need to copy the struct
appropriately or else be disabled.

5. Reconcile:On achieving the goal of the project would Reconcile the
work and provide the Mentor with all possible updates and features of the
development with the help of DFD (Data flow Diagrams) and all the
documentation required by the Mentor.(Last week of July- August 2016)

Conclusion:

When the Project would achieve the goals it would be suitable for
implementation to the system. The Output-Device class would then be
modularized and its compilation firewall would also be implemented
effectively.

Proficiency:

   - I am proficient in C,C++,JAVA and have worked on developmental
   projects undertaking these languages.
   - Resume link:
   https://drive.google.com/file/d/0B7RrMabDB-4FU3VURDBMUlprU3M/view?usp=sharing
   
<https://www.google.com/url?q=https://drive.google.com/file/d/0B7RrMabDB-4FU3VURDBMUlprU3M/view?usp%3Dsharing&sa=D&ust=1458896488834000&usg=AFQjCNGCsIQTt1B3q22MvUy1UsNT4Wuq8g>

University Information:

   - University Name: JAYPEE INSTITUTE OF INFORMATION TECHNOLOGY
   - Major:COMPUTER SCIENCE ENGINEERING
   - Current Year and Expected Graduation date: 3rd YEAR & 31-06-2017
   - Degree (e.g. BSc, PhD):B.Tech

This is a courtesy copy of an email for your record only. It's not the
same email your collaborators received. Click here
<https://support.google.com/drive/?p=courtesy_copy> to learn more. [image:
Logo for Google Docs] <https://drive.google.com>


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.