Паттерны для js (обертки), декораторы, они навешиваются на функции, чтобы снизить нагрузку на браузер и dom, чтобы притормозить частоту их выполнения.
Throttle - выполнять что-то не чаще одного раза в указанное n - время.
Debounce - запускает ф-цию не сразу, а через n - время.
описывают способности
soft skills («мягкие навыки» или «гибкие навыки») - умение убеждать, находить подход к людям, лидировать, межличностное общение, ведение переговорных процессов, работа в команде, личностное развитие, управление временем, эрудированность, креативность и т.п. Взаимодействие с людьми.
hard skills («твердые навыки») - делопроизводство, логистика, метод слепой печати, управление автомобилем, программирование и т.п. Профессиональные технические навыки.
непрерывное изменениям программного обеспечения, которые происходят в течении всего процесса разработки ПО.
Continuous deployment ("непрерывное развёртываение") - отвечает за то, чтобы весь новый функционал после тестирования сразу же попал в основную программу без ручного вмешательства инженеров DevOps. Пример Docker
Continuous integration - постоянное попадание кода в центральный репозиторий после успешного запуска тестов (unit – тесты). Agile Development
языковые приемы, позволяют манипулировать количеством аргументов у функций или методов, трансформация ф-ции в другую ф-цию с меньшим к-вом аргументов.
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');
относится к Agile - набор подходов по «гибкой» разработке программного обеспечения. Задачи, требования для проэкта.
user story - короткие пожелание (от заказчика или команды), что нужно реализовать, сделать, мини-задачи.
epic - основное, более общее пожелание, что включает очень много пользовательских историй.
Java - язык ооп со строгой типизацией
JVM - среда, где запускается, выполняется Java
библиотеки, которые добавляют в старые браузеры поддержку возможностей, которые в современных браузерах являются встроенными.
Shim - "прокладка", перехватыват вызовы API и создает абстрактный слой между вызывающим и целевым, используются для обратной совместимости. это библиотека, которая привносит новый API в более старую среду, используя только средства этой среды. В основном пишут на одном языке.
Polyfill - специализированная версия shimming, определяет, отсутствует ли какой-либо "ожидаемый" API (поддерживает ли?) и вручную его реализует. Если это не так, polyfill устанавливает собственные реализации. Использует несколько языковых платформ, чтобы достичь кросс-браузерности.
отступы от блока
Padding - внутренние
Margin - внешние
размеры
clientHeight - css height + padding. Не включает horizontal scrollbar height, border, margin
offsetHeight - включает border элемента + вертикальный padding + horizontal scrollbar(если есть) + css height элемента
scrollHeight - css height + содержимое, которое не отображается на экране (не помещается)
JavaScript скрипт, выполняемый на стороне клиента, а Node.js на сервере.
V8 - виртуальная машина JavaScript, написанная Google, для скорости выполнения js
Node.js - программная платформа, основанная на движке V8 (транслирующем JavaScript в машинный код)
манипуляции с 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]
методологии гибкой разработки ПО
Scrum - «подход структуры». Над каждым проектом работает универсальная команда специалистов, к которой присоединяется еще два человека: владелец продукта и scrum-мастер. Первый соединяет команду с заказчиком и следит за развитием проекта; это не формальный руководитель команды, а скорее куратор. Второй помогает первому организовать бизнес-процесс: проводит общие собрания, решает бытовые проблемы, мотивирует команду и следит за соблюдением scrum-подхода. Scrum-подход делит рабочий процесс на равные спринты – обычно это периоды от недели до месяца, в зависимости от проекта и команды. Перед спринтом формулируются задачи на данный спринт, в конце – обсуждаются результаты, а команда начинает новый спринт. Спринты очень удобно сравнивать между собой, что позволяет управлять эффективностью работы.
Kanban - «подход баланса». Его задача – сбалансировать разных специалистов внутри команды и избежать ситуации, когда дизайнеры работают сутками, а разработчики жалуются на отсутствие новых задач. Вся команда едина – в kanban нет ролей владельца продукта и scrum-мастера. Бизнес-процесс делится не на универсальные спринты, а на стадии выполнения конкретных задач: «Планируется», «Разрабатывается», «Тестируется», «Завершено» и др.
Agile - основной принцип. «Люди и взаимодействие важнее процессов и инструментов. Работающий продукт важнее исчерпывающей документации. Сотрудничество с заказчиком важнее согласования условий контракта. Готовность к изменениям важнее следования первоначальному плану».
- разработка ведется короткими циклами (итерациями), продолжительностью 1-4 недели;
- в конце каждой итерации заказчик получает ценное для него приложение (или его часть), которое можно использовать в бизнесе;
- команда разработки сотрудничает с Заказчиком в ходе всего проекта;
- изменения в проекте приветствуются и быстро включаются в работу.
Machine Language Instruction
bytecode - машинно-независимый код низкого уровня, является формой набора инструкций, предназначенной для эффективного выполнения программным интерпретатором. Дает инструкции, что делать, выполняется в виртуальной машине, used by Software based interpreter like Java or CLR.
opcode - Является типом кода, который предоставляет компьютеру инструкции, указывающие, что делать с предоставленными данными. Дает инструкции для работы с данными, выполняется машиной, used by hardware
параметры для свойства элемента display.
Flexible Box Layout - вывод вдоль главной оси или поперечной(ряд, столбец)
Grid Layout - вывод вдоль главной и поперечной оси одновременно
таски
task - исполняются по порядку и браузер может рендерить в промежутках между ними (setTimeout, setInterval, setImmediate, requestAnimationFrame, I/O, UI rendering)
microtask - исполняются по порядку и исполняются: после каждого колбека, если только это не часть выполнения какого-то другого сценария, в конце каждой задачи (process.nextTick, Promises, Object.observe, MutationObserver)
способ организации асинхронного кода
Promise - для работы с отложенными или асинхронными вычислениями, специальный объект, который содержит своё состояние. Вначале pending («ожидание»), затем – одно из: fulfilled («выполнено успешно») или rejected («выполнено с ошибкой»).
> asyncComputeTheAnswerToEverything()
.then(addTwo)
.then(printResult);
Future - cтандартизация обещаний началась в DOM как “Futures”, позднее была переименована в “Promises”. ???
Deferred - особая конструкция, ответственная за создание нового promise и определение того, когда promise должно быть “resolved”(разрешено) или “rejected”(«отклонено»)
Шаблоны проектирования приложений, набор правил, по которым строится приложение
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 и внешние входные от юзера
управляют состоянием в JS приложениях
Redux - может работать автономно без React, требует неизменяемой имутабильной структуры данных, популяризирует пропорциональные подходы. Redux дает полный контроль над потоком данных. Из за чего приходиться писать много кода.
MobX - раскручен в React, за мутабильность, пропагандирует использование классов, которые ближе к традиционному ООП, MobX напротив, это много магии, реализованной внутри самой библиотеке. Которая позволяет писать в итоге меньше кода.
Cycle - одна из самых быстрых библиотек для реактивного программирования на JS. работает с большими потоками данных, все что нужно — это писать функции, которые оперируют с данными и Cycle.js возьмет на себя все остальное.
разметка, содержимое
element -
This is the content
tag -
Clojure - это функциональный язык программирования, не только позволяющий использовать Java-библиотеки, службы и другие ресурсы JVM, но и соперничающий с другими динамическими языками, такими как Ruby и Python.
Google Closure Compiler - уникальный инструмент, разработанный Google для сжатия и обфускации(«Запутыванию») собственного javascript. Основные его фичи скрываются в продвинутом режиме сжатия, для применения которого нужны соответствующие навыки и стиль программирования. Написан на языке Java.
front end - внешнее представление, интерфейс взаимодействия между пользователем
client-site - любой компонент, управляемый пользователем
back end - внутренняя реализация, основная программно-аппаратная часть
server-side - сторона выполняется на сервере