Laravel implementing Google drive stylesheet theory

I'm thinking of implementing Google drive stylesheet turn in to json an option to the drive and then make that as API implementing it to laravel or android without wasting another penny it free and free 15 gigabytes if I am thinking and implementing it to laravel crud ( createsl, read, update, and delete) or android using retrofit square product

Learning vuejs

Vuejs is minimal javascript that handle web applications its increasing adoptable stack  (vue resources, vue router, vuex, ) that incrementally add stack or library,  if you need, vue is capable of single page apps that without refresh , if you use vue router to exchange any view the user want,  here the example of code of vuejs from their website

straightforward template syntax:

<div id="app">

{{ message }}

</div>

var app = new Vue({

el: '#app',

data: {

message: 'Hello Vue!'

}

})

the output of code

Hello Vue!

Now I'm learning Underscore js

To summarize it all here the sample snippet of code to review how it works to ease your job, numerous repeats code are  thrown to the memory to maximize the usage of memory without wasting the amount of memory,

http://underscorejs.org

/* ExampleSnippets.txt
**
** Example code snippets for Up and Running with Underscore.js
*/

----------------------------------------------------------

CHAPTER 2: COLLECTIONS

--- Iterating data sets

    function getStudentInfo(elem, indx, list) {
    var container = document.getElementById("container");
    var student = "<p>" + elem.firstname + " " + elem.lastname + ", Grade: " + elem.grade + "</p>";
    container.innerHTML = container.innerHTML + student;
    }

    /* use the "size" property to get number of elements */
      numStudentElem = document.getElementById("numstudents");
    numStudentElem.innerHTML = numStudentElem.innerHTML + _.size(students);

  /* use the each() function to iterate over every element */
    _.each(students, getStudentInfo);

--- Filtering data

    function getPassingStudents(elem) {
    return ((elem.midterm_score + elem.final_score) / 2 > 65);
    }

    // check to see if a student did better on their final than on their midterm
    function checkImprovement(item) {
        return item.final_score > item.midterm_score;
    }

    /* use the filter() function to narrow down the list */
    var result = _.filter(students, getPassingStudents);

  /* use the where() function to select items */
  //var result = _.where(students, {"school" : "Thoreau", "grade" : 10});
 
  /* the reject() function is the opposite of filter() */
      /* this invocation will return the failing students */
    //var result = _.reject(students, getPassingStudents);

      // use the every() function to ensure that all of a set of criteria have been met
      alert(_.every(students, checkImprovement));
      // use the some() function to see if any elements pass the criteria
      alert(_.some(students, checkImprovement));

    /* now use each() to populate the list */
    _.each(result, function(elem, indx, list) {
var container = document.getElementById("container");
var student = "<p>" + elem.firstname + " " + elem.lastname + ", Grade: " + elem.grade + "</p>";
container.innerHTML = container.innerHTML + student;
    });   

--- Searching

    function searchStudents(item) {
      // return true if the student goes to Franklin
      if (item.school === "Franklin")
        return true;
    }

      /* Test the find() function */
      // find the first student that goes to Franklin
      var elem = _.find(students, searchStudents);

      var container = document.getElementById("container");
      var student = "<p>" + elem.firstname + " " + elem.lastname + ", Grade: " + elem.grade + "</p>";
      container.innerHTML = container.innerHTML + student;

      /* Test the findWhere() function */
      // return the first Thoreau student who is a junior
      elem = _.findWhere(students, {school : "Thoreau", grade: 11});
      var container = document.getElementById("container");
      var student = "<p>" + elem.firstname + " " + elem.lastname + ", Grade: " + elem.grade + "</p>";
      container.innerHTML = container.innerHTML + student;
     
      // contains() searches a list of values for a value
      // pluck() retrieves the values for a given property name
      var grades = _.pluck(students,"final_score");
      // did anyone get a perfect final?
      if (_.contains(grades, 100))
        alert("Found a perfect final score!");

--- Sorting and Grouping

    function sortStudentsByGrade(item) {
        return item.grade;
    }
   
    function groupStudentsBySchool(item) {
        return item.school;
    }

    function countStudentsByGrade(item) {
        if (item.grade == 9)
            return "freshmen";
        else if (item.grade == 10)
            return "sophomores";
        else if (item.grade == 11)
            return "juniors";
        else return "seniors";
    }

        /* Sorting by grade */
        var sorted = _.sortBy(students, sortStudentsByGrade);
        _.each(sorted, getStudentInfo);

        /* grouping students by school */
        var grouped = _.groupBy(students, groupStudentsBySchool);
        for (i in grouped) {
            var container = document.getElementById("container");
            var school = "<p style='font-weight:bold'>Students that go to: " + i + "</p>";
            container.innerHTML = container.innerHTML + school;
            _.each(grouped[i], getStudentInfo);
        }

        /* Counting the number of students in each grade */
        var counts = _.countBy(students, countStudentsByGrade);
        for (i in counts) {
            var container = document.getElementById("container");
            var groups = "<p style='font-weight:bold'>" + i + ": " + counts[i] + "</p>";
            container.innerHTML = container.innerHTML + groups;
        }

--- Manipulating
    function listGrades(finalGrades) {
    _.each(finalGrades, function(elem,indx,list) {
    var container = document.getElementById("container");
    container.innerHTML = container.innerHTML + elem;
    });
    }
    function assignGrades(item) {
        var grade = (item.midterm_score + item.final_score) / 2;
        var letterGrade;

        if (grade <=64)
            letterGrade = "F";
        else if (grade > 64 && grade <=69)
            letterGrade = "D";
        else if (grade >= 70 && grade <= 79)
            letterGrade = "C";
        else if (grade >= 80 && grade <= 89)
            letterGrade = "B";
        else if (grade >= 90)
            letterGrade = "A";

        return "<p>" + item.firstname + " " + item.lastname + ": " + letterGrade + "</p>";
    }

        // The shuffle() function randomizes the contents of the list
        // using an algorithm called the Fisher-Yates shuffle
        students = _.shuffle(students);
        _.each(students, getStudentInfo);

        // the map() function creates a new array based upon each item in the list
        // Let's assign letter grades to each one of the students:
        var finalGrades = _.map(students, assignGrades);
        listGrades(finalGrades);

CHAPTER 3: ARRAYS AND OBJECTS

--- Array Data

        // begin by plucking the midterm scores data from the students list
        var midScores = _.pluck(students, "midterm_score");
        midScores.sort(); // sort the array

        // use the first() and last() functions to extract array data
        var container = document.getElementById("container");
        var data = "<p>First score is " + _.first(midScores) + "</p>";
        data += "<p>Last score is " + _.last(midScores) + "</p>";
        container.innerHTML = container.innerHTML + data;
       
        // initial() and rest() can also be used to get data
        data = "<p>Initial scores, minus the last 3: " + _.initial(midScores,3) + "</p>";
        data += "<p>Rest of the scores, minus the first 3: " + _.rest(midScores,3) + "</p>";
        container.innerHTML = container.innerHTML + data;

--- Array Operations

        // Use without() to remove unwanted values from the array
        var result = "<p>without(): " + _.without(array1,0,2,3) + "</p>";
        container.innerHTML = container.innerHTML + result;
        result = "<p>" + _.without(array2,"A","E","I","O","U") + "</p>";
        container.innerHTML = container.innerHTML + result;
       
        // Use the union() function to join two arrays together
        result = "<p>union(): " + _.union(array1, array2) + "</p>";
        container.innerHTML = container.innerHTML + result;
       
        // Use the intersection() function to see what's common to both
        result = "<p>intersection(): " + _.intersection(array1, array3) + "</p>";
        container.innerHTML = container.innerHTML + result;
       
        // The difference() function shows values not present in other array
        result = "<p>difference(): " + _.difference(array1, array3) + "</p>";
        container.innerHTML = container.innerHTML + result;

--- Object Information

      // given a student object, retrieve the object's keys
      var keys = _.keys(students[0]);
      container.innerHTML += "<p>The student object contains the keys: " + keys;
     
      // now get the object's values
      var values = _.values(students[0]);
      container.innerHTML += "<p>The student object contains the values: " + values;
     
      // use the pick() function to get just specific properties
      var subsetStudent = _.pick(students[0], "lastname", "grade");
      container.innerHTML += "<p>pick() on lastname, grade: " + subsetStudent.lastname + ", " + subsetStudent.grade;
     
      // use the omit() function to filter out properties
      var filteredStudent = _.omit(students[0], "midterm_score", "final_score");
      container.innerHTML += "<p>omit() on midterm_score, final_score: ";
      container.innerHTML += "<blockquote>" + _.keys(filteredStudent) + "</blockquote>";
      container.innerHTML += "<blockquote>" + _.values(filteredStudent) + "</blockquote>";

--- Object Operations

      // extend each student object with a new property, their average score
      container.innerHTML += "<h2>Extending student objects with average_score</h2>";
      _.each(students, function(elem, indx, list) {
        avg = (elem.midterm_score + elem.final_score) / 2;
        _.extend(elem, {"average_score" : avg});
      });
      _.each(students,getStudentInfo);

      // use the defaults() method to assign default values to an object
      container.innerHTML += "<h2>Assigning default values to a new object</h2>";
      var defaultValues = {final_score: 0, midterm_score: 0, grade: 9};
      var newStudent = {firstname: "John", lastname: "Doe"};
      _.defaults(newStudent, defaultValues);
      container.innerHTML += "<p>" + newStudent.firstname + " " + newStudent.lastname +
            ", Midterm: " + newStudent.midterm_score + ", Final: " + newStudent.final_score + "</p>";
     
      // clone() makes a shallow-copy of the object (in other words, properties that
      // are arrays or objects will be copied by reference, and not duplicated themselves)
      container.innerHTML += "<h2>Cloning an existing object</h2>";
      var copyStudent = _.clone(students[0]);
      container.innerHTML += "<p>" + copyStudent.firstname + " " + copyStudent.lastname +
            ", Midterm: " + copyStudent.midterm_score + ", Final: " + copyStudent.final_score + "</p>";

CHAPTER 4: MISCELLANEOUS


--- Miscellaneous

      // create a unique ID, with and without a prefix
      log("Using uniqueId() to generate an ID for use in the DOM");
      var sID = _.uniqueId();
      log("ID with no prefix: " + sID);
      var sID = _.uniqueId("prefix_");
      log("ID with prefix: " + sID);

      // generate a random number
      var rand1 = _.random(25); // one argument means between 0 and value
      log("random number up to 25: " + rand1);

      var rand2 = _.random(100, 200); // generates value within range
      log("random number within 100 and 200: " + rand2);

      // use the times() function to execute a counter loop
      log("using _.times():");
      _.times(5, function(n) {log("time " + n)});

      // extend Underscore itself using the mixin() function
      log("extending Underscore with a capitalize() function:");
      _.mixin({
            capitalize: function(string) {
                return string.charAt(0).toUpperCase() + string.substring(1).toLowerCase();
            }
      });
      log(_("capitalize").capitalize());
      log(_("CAPITALIZE").capitalize());

--- Functions

    function doInitialize() {
      log("Initialize function! Don't call me more than once!");
    }

      // create a function that can't be called more than one time
      log("Initialize the app multiple times:")
      var initfunc = _.once(doInitialize);
      initfunc();
      initfunc();
      initfunc();

      // the throttle() function can be used to limit the number of
      // times that a function is executed when called repeatedly
      function updateCharCount() {
        var elem = document.querySelector("#text1");
        document.querySelector("#charcount").textContent = (elem.value).length
      }
      updater = _.throttle(updateCharCount,1000);
      document.querySelector("#text1").addEventListener("keydown", updater);

      // the bind() function binds a function to a given object, which becomes the
      // value of the "this" keyword inside the function.
      var myObj = {
        firstname: "Joe",
        lastname: "Marini"
      }
      function dumpData1() {
        log(this.firstname + " " + this.lastname)
      }
      function dumpData2() {
        log(this.lastname + ", " + this.firstname)
      }

      var func = _.bind(dumpData1, myObj);
      func();
      func = _.bind(dumpData2, myObj);
      func();

--- Templates

    var templateString = "<div><span>Name: <%= lastname %></span></div>";
    var templateString2 = "<div><span>Name: <% print(lastname.toUpperCase()) %></span></div>";

    var studentInfo1 = "<% _.each(students, function(item) { %>" +
                      "<div class='studentRec " +
                      "<% (item.midterm_score + item.final_score) / 2 > 65 ? print('passingStudent') : print('failingStudent') %>'>" +
                      "<span style='font-weight:bold'>Name:</span> <span><%= item.lastname %>, <%= item.firstname %> </span>" +
                      "<span style='font-weight:bold'>School:</span> <span><%= item.school %></span></div>" +
                      "<% }); %>";

    var studentInfo2 = "<% var grouped = _.groupBy(students, function(item) {return item.school;}); " +
                      "for (i in grouped) { _.each(grouped[i], function(item) { %>" +
                      "<div class='studentRec " +
                      "<% (item.midterm_score + item.final_score) / 2 > 65 ? print('passingStudent') : print('failingStudent') %>'>" +
                      "<span style='font-weight:bold'>Name:</span> <span><%= item.lastname %>, <%= item.firstname %> </span>" +
                      "<span style='font-weight:bold'>School:</span> <span><%= item.school %></span></div>" +
                      "<% })}; %>";

      // compile the template string
      var compiledTemplate = _.template(templateString);
      var compiledTemplate = _.template(templateString2);
     
      // now we can call the template with different data
      var result = compiledTemplate({
        lastname: "Hossenfeffer"
      });
     
      // to perform a one-off template operation, just pass in the data object
      // as the second parameter to the template
      var result = _.template(studentInfo1, students);
      appendTemplateData(result);

CHAPTER 5: PRACTICAL EXAMPLE

    window.addEventListener("load", function(evt) {
      // initialize the event handlers for the navigation controls
      document.querySelector("#schoolSelect").addEventListener("change", updateDisplay);
      document.querySelector("#sortBy").addEventListener("change", updateDisplay);
      document.querySelector("#templateSelect").addEventListener("change", updateDisplay);
      document.querySelector("#gr9").addEventListener("click", updateDisplay);
      document.querySelector("#gr10").addEventListener("click", updateDisplay);
      document.querySelector("#gr11").addEventListener("click", updateDisplay);
      document.querySelector("#gr12").addEventListener("click", updateDisplay);

      // start by extending the data to average the midterm and final scores
      _.each(students, function(elem, indx) {
        _.extend(elem, {overall_score : (elem.midterm_score + elem.final_score) / 2});
      });

      // lay out the initial display
      updateDisplay();
    });

    function updateDisplay() {
      var dataset = updateDataSet();

      var whichTemplate;
      switch (document.querySelector("#templateSelect").selectedIndex) {
        case 0:
          whichTemplate = studentInfoTable;
          break;
        case 1:
          whichTemplate = studentInfoCards;
          break;
      }
      updateLayout(whichTemplate, dataset);
    }

    function updateDataSet() {
      var dataset = students;

      // filter for the school selection
      var ctrl = document.querySelector("#schoolSelect");
      if (ctrl.selectedIndex > 0) {
        dataset = _.filter(dataset, function(elem) {
          return (elem.school == this.options[this.selectedIndex].value);
        }, ctrl);
      }

      // sort the data according to the sort parameter
      ctrl = document.querySelector("#sortBy");
      dataset = _.sortBy(dataset, ctrl.options[ctrl.selectedIndex].value);

      // filter out the various grade levels. This code uses the reject() function
      // to remove certain groups instead of the filter() function to include groups
      if (document.querySelector("#gr9").checked == false) {
        dataset = _.reject(dataset, function (item) {return item.grade == 9});
      }
      if (document.querySelector("#gr10").checked == false) {
        dataset = _.reject(dataset, function (item) {return item.grade == 10});
      }
      if (document.querySelector("#gr11").checked == false) {
        dataset = _.reject(dataset, function (item) {return item.grade == 11});
      }
      if (document.querySelector("#gr12").checked == false) {
        dataset = _.reject(dataset, function (item) {return item.grade == 12});
      }
 
      return dataset;
    }

    // whenever the user changes the controls, updateLayout re-calculates the display
    function updateLayout(useTemplate, newData) {
      var result = _.template(useTemplate, {dataset: newData});
      document.getElementById("contents").innerHTML = result;
    }

        <!-- controls to select the School and Grade levels -->
        <div id="row1">
          <label for="schoolSelect">Select School</label>
          <select id="schoolSelect">
            <option value="all" selected>All</option>
            <option value="Thoreau">Thoreau</option>
            <option value="Franklin">Franklin</option>
          </select>
          <label for="gradeSelect">Select Grade Levels: </label>
          <input type="checkbox" name="9" id="gr9" checked="true"> <label for="9">Grade 9</label>
          <input type="checkbox" name="10" id="gr10" checked="true"> <label for="10">Grade 10</label>
          <input type="checkbox" name="11" id="gr11" checked="true"> <label for="11">Grade 11</label>
          <input type="checkbox" name="12" id="gr12" checked="true"> <label for="12">Grade 12</label>
        </div>
        <div id="row2">
          <label for="templateSelect">Display Data As: </label>
          <select id="templateSelect">
            <option value="studentInfoTable" selected>Table</option>
            <option value="studentInfoCards">Cards</option>
          </select>
          <label for="sortBy">Sort Students By: </label>
          <select id="sortBy">
            <option value="midterm_score" selected>Midterm Score</option>
            <option value="final_score">Final Score</option>
            <option value="overall_score">Overall Score</option>
          </select>
        </div>

Managing BPO-Related Change



        Change is innate towards the BPO changeover phase. It provides businesses with opportunities that must definitely be maximized and dangers that must definitely be prevented.Consequently,the move should be very carefully handled via a far-reaching project management software strategy along with a technique that values the functions of management and administration;the requirement for truthful conversation with workers; a acknowledgement from the indirect influence BPO might have on non-affected company procedures; an affection from the constant worries and issues that may happen throughout work reduction and administration modifications; and the need for creating and looking after company a continual.

       The outcome of those modifications is additional complex by the appearance of a brand new connection in between BPO purchasers and suppliers. Such as the changeover by itself,this should be very carefully handled,and could be perfected only via an continuing concentrate on company advantages anticipated by both sides.This involves settlement,conversation,and company abilities,and should be seen as a believe in and also the positioning of ideals. By knowing and adopting the basic characteristics of the effective BPO connection,purchasers and suppliers could make the crucial choices essential to attaining task achievement and, possibly, create relationships that last longer than the present effort.

        I found that misconception and distrust can occur whenever a BPO purchaser triggers a task having a merchant in whose business tradition and working design are greatly not the same as its very own. This kind of variations can and frequently are bridged. What issues is whether or not the 2 companies identify the variations and consider positive actions to cope with them. Obviously, it's not possible to discover all social variations throughout merchant variety; many will only turn out to be show itself within the working stage.The work administration strategy will include inducements for every aspect to recognize and identify damage that is a result of social variations.

          BPO contracts should be developed to maintain sufficient versatility to be able to stand up to modifications in the industry atmosphere and also the demands natural to this type of contract arrangement.Usually, agreement contracts are designed on particular crucial presumptions regarding systems, company circumstances, staff, along with other related problems. However these presumptions will probably modify as time passes. Regardless of how comprehensive anything or advantageous the conditions, BPO contracts can't assume all the modifications that exist in an engaged, worldwide company atmosphere.

Size of a proper Connection

    Versatility. Identifies a bilateral expectancy from the determination to evolve as conditions alter.

    Info trade. Identifies a bilateral expectancy that purchaser and merchant will actively supply info helpful to one another.

    Unity. Identifies a bilateral expectancy that unparalleled combination is positioned around the connection and recommends actions aimed particularly towards connection upkeep.

Connection Risks:

    Insufficient suitable purchaser manage

    Social variations

    Inflexibility in BPO contracts

    Insufficient SLA specifications and/or analytics

    Insufficient government

    Insufficient objective positioning

    Insufficient plug-in

Identity and Choice of BPO



                I've found that id deciding on a BPO includes a danger to deal with. Choosing the best BPO merchant is really a crucial part of an company's outsourcing effort and the most hard to handle.  When a corporation goes into a BPO partnership, it's setting a 3rd party the obligation of controlling a part of its organization. When this type of a choice is created, the business is presuming extra danger.

I've also learned that there's really an eight-step process for properly choosing the proper outsourced workers companion. Listed here are the actions:

- Appoint a vendor selection team (VST)

- Establish qualifications

- Develop a long list

- Distribute the request for information (RFI)

- Distribute the request for proposals (RFP)

- Evaluate proposals

- Select a short list

- Select a vendor

This is actually the organized procedure for determining a BPO merchant. I found that BPO merchant connection could be tactically vital that you the BPO purchaser in the long run. Obtaining the correct merchant from the beginning can speed up the conclusion of proper potential benefits to a highly effective BPO connection. For instance, the choice about which vendor to pick may ultimately depend simply regarding how nicely the customer and vendor companies associate one to the other. It might be foolish to choose a BPO supplier that's unpleasant or in whose business tradition is really a obvious mismatch using the BPO buyer's tradition.

Identifying and cost of outsourcing

I discovered that expense is one of the three essential components of the choice to outsource alongside efficiency and mission distinguish. Venture cost administration is generally a powerless zone of IT anticipates. IT anticipate supervisors must recognize the significance of cost administration and assume liability for comprehension fundamental cost ideas, cost assessing, planning, and cost control. The different expenses connected with outsourcing are not generally simple to estimate or distinguish. I additionally took in the two sorts of cost which are the Financial expense and Strategic expense. Budgetary expense is about Assessment of the outsourcing activity, propelling the activity, keeping up the activity. While Strategic expense are connected with BPO discuss the potential loss of authoritative discovering that outcomes when an in-house procedure is moved to an outer administration supplier. The major key part of a BPO relationship is the relationship between the purchaser and merchant. The costs that are included in building up and keeping up such a relationship will be relationship fetched. 

There is likewise this "Aggregate Cost Management" which implies the procedure of recognizable proof, estimating and advancement of relieving strategies for the expenses connected with any task. 

I discovered that the BPO life cycle comprises of the accompanying stages: 

- Analysis of the open door 

- Vendor Selection 

- Contract improvement 

- Transition 

- Operation 

Note that the life cycle doesn't just cutoff to five, however could be additionally relying upon the circumstance. 

Selecting a merchant: 

After the BPO opportunity has been distinguished, the association needs to choose whether to procure an outsider to help with the merchant determination. What's more, the formative of agreements though the essential expense of this stage are to do with the arranging an agreement with the seller. It is not fitting to cut expenses here where there is a lot in question since administrations, deliverable and cures must be determined. 

It was likewise said that the accompanying are the normal individuals required in a Business Process Outsourcing organization: 

- BPO Analysis Team (BAT) 

- BPO Consultants 

- Market Research Specialist 

- Change Management Consultant 

- Project Manager 

- Vendor (Third Party) 

- Buyer (The Company)

Outsourcing



http://www.outbounders.tv/wp-content/uploads/2016/03/outsourcing-702x336.jpg

Outsourcing can supplant entire procuring, information systems, promoting, record, and operations division 

How to build deeper, more robust relationships | Carole Robin (Stanford GSB professor, “Touchy Feely”)

Listen now (87 mins) | Brought to you by: • Eppo—Run reliable, impactful experiments • CommandBar—AI-powered user assistance for modern prod...

Contact Form

Name

Email *

Message *