Giter Club home page Giter Club logo

tech-terms-advent-calendar's Introduction

Tech-Terms-Advent-Calendar

1. throttle & debounce

Паттерны для js (обертки), декораторы, они навешиваются на функции, чтобы снизить нагрузку на браузер и dom, чтобы притормозить частоту их выполнения.

Throttle - выполнять что-то не чаще одного раза в указанное n - время.

Debounce - запускает ф-цию не сразу, а через n - время.

2. soft skills & hard skills

описывают способности

soft skills («мягкие навыки» или «гибкие навыки») - умение убеждать, находить подход к людям, лидировать, межличностное общение, ведение переговорных процессов, работа в команде, личностное развитие, управление временем, эрудированность, креативность и т.п. Взаимодействие с людьми.

hard skills («твердые навыки») - делопроизводство, логистика, метод слепой печати, управление автомобилем, программирование и т.п. Профессиональные технические навыки.

3. Continuous integration & Continuous deployment

непрерывное изменениям программного обеспечения, которые происходят в течении всего процесса разработки ПО.

Continuous deployment ("непрерывное развёртываение") - отвечает за то, чтобы весь новый функционал после тестирования сразу же попал в основную программу без ручного вмешательства инженеров DevOps. Пример Docker

Continuous integration - постоянное попадание кода в центральный репозиторий после успешного запуска тестов (unit – тесты). Agile Development

4. Currying vs Partial application

языковые приемы, позволяют манипулировать количеством аргументов у функций или методов, трансформация ф-ции в другую ф-цию с меньшим к-вом аргументов.

Currying ф-ция в ф-ции

before

    function add(x, y) {
        return x + y;
    }

after

    function addC(x) {
        return function (y) {
            return x + y;
        }
    }

Partial application часть аргументов (хоть один, хоть все кроме одного) уже подставлены.

before

const job = 'programmer'
const salary1 = getAverageSalary(job, 'spain');
const salary2 = getAverageSalary(job, 'russia');
const salary3 = getAverageSalary(job, 'usa');

after

const getProgrammersSalaryByCountry =
  country => getAverageSalary('programmer', country);

const salary1 = getProgrammersSalaryByCountry('spain');
const salary2 = getProgrammersSalaryByCountry('russia');
const salary3 = getProgrammersSalaryByCountry('usa');

5. User story vs Epic

относится к Agile - набор подходов по «гибкой» разработке программного обеспечения. Задачи, требования для проэкта.

user story - короткие пожелание (от заказчика или команды), что нужно реализовать, сделать, мини-задачи.

epic - основное, более общее пожелание, что включает очень много пользовательских историй.

6. Java vs JVM

Java - язык ооп со строгой типизацией

JVM - среда, где запускается, выполняется Java

7. Polyfill vs Shim

библиотеки, которые добавляют в старые браузеры поддержку возможностей, которые в современных браузерах являются встроенными.

Shim - "прокладка", перехватыват вызовы API и создает абстрактный слой между вызывающим и целевым, используются для обратной совместимости. это библиотека, которая привносит новый API в более старую среду, используя только средства этой среды. В основном пишут на одном языке.

Polyfill - специализированная версия shimming, определяет, отсутствует ли какой-либо "ожидаемый" API (поддерживает ли?) и вручную его реализует. Если это не так, polyfill устанавливает собственные реализации. Использует несколько языковых платформ, чтобы достичь кросс-браузерности.

8. Padding vs Margin

отступы от блока

Padding - внутренние

Margin - внешние

9. clientHeight vs offsetHeight vs scrollHeight

размеры

clientHeight - css height + padding. Не включает horizontal scrollbar height, border, margin

offsetHeight - включает border элемента + вертикальный padding + horizontal scrollbar(если есть) + css height элемента

scrollHeight - css height + содержимое, которое не отображается на экране (не помещается)

10. V8 vs NodeJS

JavaScript скрипт, выполняемый на стороне клиента, а Node.js на сервере.

V8 - виртуальная машина JavaScript, написанная Google, для скорости выполнения js

Node.js - программная платформа, основанная на движке V8 (транслирующем JavaScript в машинный код)

11. Array.of vs Array.from

манипуляции с array

Array.of - создаёт новый экземпляр массива Array из произвольного числа аргументов, вне зависимости от числа или типа аргумента.

Array.of(7);       // [7] 
Array.of(1, 2, 3); // [1, 2, 3]

Array(7);          // [ , , , , , , ]
Array(1, 2, 3);    // [1, 2, 3]

Array.from - создает массив из чего-угодно

console.log(Array.from('foo'));
// expected output: Array ["f", "o", "o"]

console.log(Array.from([1, 2, 3], x => x + x));
// expected output: Array [2, 4, 6]

12. Scrum vs Kanban vs Agile

методологии гибкой разработки ПО

Scrum - «подход структуры». Над каждым проектом работает универсальная команда специалистов, к которой присоединяется еще два человека: владелец продукта и scrum-мастер. Первый соединяет команду с заказчиком и следит за развитием проекта; это не формальный руководитель команды, а скорее куратор. Второй помогает первому организовать бизнес-процесс: проводит общие собрания, решает бытовые проблемы, мотивирует команду и следит за соблюдением scrum-подхода. Scrum-подход делит рабочий процесс на равные спринты – обычно это периоды от недели до месяца, в зависимости от проекта и команды. Перед спринтом формулируются задачи на данный спринт, в конце – обсуждаются результаты, а команда начинает новый спринт. Спринты очень удобно сравнивать между собой, что позволяет управлять эффективностью работы.

Kanban - «подход баланса». Его задача – сбалансировать разных специалистов внутри команды и избежать ситуации, когда дизайнеры работают сутками, а разработчики жалуются на отсутствие новых задач. Вся команда едина – в kanban нет ролей владельца продукта и scrum-мастера. Бизнес-процесс делится не на универсальные спринты, а на стадии выполнения конкретных задач: «Планируется», «Разрабатывается», «Тестируется», «Завершено» и др.

Agile - основной принцип. «Люди и взаимодействие важнее процессов и инструментов. Работающий продукт важнее исчерпывающей документации. Сотрудничество с заказчиком важнее согласования условий контракта. Готовность к изменениям важнее следования первоначальному плану».

  • разработка ведется короткими циклами (итерациями), продолжительностью 1-4 недели;
  • в конце каждой итерации заказчик получает ценное для него приложение (или его часть), которое можно использовать в бизнесе;
  • команда разработки сотрудничает с Заказчиком в ходе всего проекта;
  • изменения в проекте приветствуются и быстро включаются в работу.

13. bytecode vs opcode

Machine Language Instruction

bytecode - машинно-независимый код низкого уровня, является формой набора инструкций, предназначенной для эффективного выполнения программным интерпретатором. Дает инструкции, что делать, выполняется в виртуальной машине, used by Software based interpreter like Java or CLR.

opcode - Является типом кода, который предоставляет компьютеру инструкции, указывающие, что делать с предоставленными данными. Дает инструкции для работы с данными, выполняется машиной, used by hardware

14. Flexible Box Layout vs Grid Layout

параметры для свойства элемента display.

Flexible Box Layout - вывод вдоль главной оси или поперечной(ряд, столбец)

Grid Layout - вывод вдоль главной и поперечной оси одновременно

15. task vs microtask (in event loop context)

таски

task - исполняются по порядку и браузер может рендерить в промежутках между ними (setTimeout, setInterval, setImmediate, requestAnimationFrame, I/O, UI rendering)

microtask - исполняются по порядку и исполняются: после каждого колбека, если только это не часть выполнения какого-то другого сценария, в конце каждой задачи (process.nextTick, Promises, Object.observe, MutationObserver)

16. Promise vs Future vs Deferred ????

способ организации асинхронного кода

Promise - для работы с отложенными или асинхронными вычислениями, специальный объект, который содержит своё состояние. Вначале pending («ожидание»), затем – одно из: fulfilled («выполнено успешно») или rejected («выполнено с ошибкой»).

> asyncComputeTheAnswerToEverything()
    .then(addTwo)
    .then(printResult);

Future - cтандартизация обещаний началась в DOM как “Futures”, позднее была переименована в “Promises”. ???

Deferred - особая конструкция, ответственная за создание нового promise и определение того, когда promise должно быть “resolved”(разрешено) или “rejected”(«отклонено»)

17. Flux vs MVC

Шаблоны проектирования приложений, набор правил, по которым строится приложение

Flux - от Facebook

  • Actions: являются вспомогательными методами, которые передают информацию dispatcher.
  • Stores: похоже на models in MVC, за исключением того, что они действуют как контейнеры для состояния приложения и логики для определенного домена внутри приложения.
  • Dispatcher: получает Actions и действует как единый реестр обратных вызовов для всех stores в приложении. Также управляет зависимостью между stores
  • Views: тоже что и view in MVC, за исключением React and Flux, также включают Controller-Views, которые отслеживают события изменений и извлекают статус приложения с stores если надо.

MVC - Model View Controller, важно:

  • Model: данные или состояние приложения, которые не зависят от View или Controller
  • View: логика UI, которая представляет и отображает data (model).
  • Controller: логика, которая связывает model c view и внешние входные от юзера

18. Redux vs. MobX vs. Cycle

управляют состоянием в JS приложениях

Redux - может работать автономно без React, требует неизменяемой имутабильной структуры данных, популяризирует пропорциональные подходы. Redux дает полный контроль над потоком данных. Из за чего приходиться писать много кода.

MobX - раскручен в React, за мутабильность, пропагандирует использование классов, которые ближе к традиционному ООП, MobX напротив, это много магии, реализованной внутри самой библиотеке. Которая позволяет писать в итоге меньше кода.

Cycle - одна из самых быстрых библиотек для реактивного программирования на JS. работает с большими потоками данных, все что нужно — это писать функции, которые оперируют с данными и Cycle.js возьмет на себя все остальное.

19. element vs tag (in HTML context)

разметка, содержимое

element -

This is the content

tag -

20. Clojure & Google Closure Compiler

Clojure - это функциональный язык программирования, не только позволяющий использовать Java-библиотеки, службы и другие ресурсы JVM, но и соперничающий с другими динамическими языками, такими как Ruby и Python.

Google Closure Compiler - уникальный инструмент, разработанный Google для сжатия и обфускации(«Запутыванию») собственного javascript. Основные его фичи скрываются в продвинутом режиме сжатия, для применения которого нужны соответствующие навыки и стиль программирования. Написан на языке Java.

21. front end vs client-side & back end vs server-side

front end - внешнее представление, интерфейс взаимодействия между пользователем

client-site - любой компонент, управляемый пользователем

back end - внутренняя реализация, основная программно-аппаратная часть

server-side - сторона выполняется на сервере

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.