Масштабирование — это процесс добавления ресурсов, направленный на возможность информационной системы справляться с растущими объемами данных и их обработкой.
Вертикальное масштабирование предполагает увеличение мощностей за счет добавления ресурсов: процессоров, памяти, дисков и т.д.
Горизонтальное масштабирование реализуется за счет добавления дополнительных узлов инфраструктуры, каждый из которых может взять на себя часть нагрузки остальных. Главные преимущества такого подхода: возможность использовать стандартное недорогое оборудование, достаточное количество ресурсов для рабочих нагрузок и отсутствие необходимости в миграции инфраструктуры.
Асинхронное программирование - это средство написания неблокирующего кода путём выполнения задачи в отдельном, отличном от главного, потоке, а также уведомление главного потока о ходе выполнения, завершении или сбое. Таким образом, основной поток не блокируется и не ждёт завершения задачи, а значит может параллельно выполнять и другие задания.
Атомарный - значит "неделимый" - в том смысле, что операция должна быть выполнена полностью или отменена.
Блокировки – это меры по предотвращению модификации данных между временем их чтения, и временем их использования.
Пессимистичная стратегия подразумевает, что параллельные транзакции будут конфликтовать каждая друг с другом, и требует блокировки ресурсов после их чтения, а также ее снятия только после того, как приложение завершило использование данных. Когда применять: при критической необходимости точности данных.
Множество транзакций могут завершиться без влияния друг на друга, и таким образом могут выполняться без блокировок тех ресурсов, на которые они влияют. Перед изменением(commit), каждая транзакция проверяет, что ни одна другая транзакция не модифицировала ее данные(проверяя версию). Если проверка выявила конфликтующие модификации, транзакция, находящаяся в состоянии коммита, откатывается. Когда применять: при большом количестве чтений и низкой вероятности конфликтов.
moveTo(int x, int y) - сигнатура
public void moveTo(int x, int y) throws IOException - контракт
Drag and drop(тащи и бросай) - способ оперирования элементами интерфейса при помощи мыши.
Side effect - побочные эффекты. Действие, которое выходит за границы функции.
Standalone - это программное обеспечение (ПО), которое не нуждается в каких-либо дополнительных программах и зависимостях для его установки и функционирования.
Vanilla(ванильный) - использование языка программирования без сторонних библиотек.
Системный администратор - отвечает за запуск и поддержание в рабочем состоянии сервера.
DevOps(Development Operations) - отвечает за процесс между разработкой и эксплуатацией. Между разработчиком и сис админом, предполагает базовые знания этих ролей.
SRE(site reliability engineering) - develop + DevOps.
Buddy - роль программиста который помогает новичку освоиться в проекте.
cli - command line interface.
API(Application Programming Interface) - описание способов (набор классов, процедур, функций, структур или констант), которыми одна компьютерная программа может взаимодействовать с другой программой.
CTR(Click-through rate) - кликабельность элемента в процентах от всех отображаемых раз. (количество кликов/количество показов) * 100.
SLA(Service Level Agreement) - содержит цели уровня обслуживания SLO которые контролируются путем измерения показателей уровня обслуживания SLI. Это соглашение между компанией и клиентами по определённому сервису. Например, обеспечение определенного количество пользователей/запросов в секунду или время работы сервиса и тд.
SLO(Service Level Objective) - это конкретные цели, которым должен соответствовать сервис. Часто так определяется самый низкий уровень надежности, на который клиент согласен. Должны быть четкими и измеримыми.
SLI(Service Level Indicator) - индикатор уровня обслуживания необходимое для определения статуса сервиса. Значение SLI должно соответствовать или превышать значение, определенное SLO.
Часто разделяют CPU Bound и I/O Bound задачи, для того чтобы не блокировали потоки другого типа. К примеру разделения HTTP запросов и работа с базой. Это значит что любой тип асинхронных запросов необходим разный thread pool.
Дихотомия(Dichotomy) - поиск делением пополам.
Детерминированность(Determinism) - для одних и тех же входных аргументов возвращается один и тот же результат.
Рекурсия(Recursion) - вызов функции (процедуры) из неё же самой.
Хвостовая рекурсия(Tail recursion) - это особый случай рекурсии, когда вызывающая функция больше не выполняет вычисления после выполнения рекурсивного вызова. Поэтому мы можем пропустить всю цепочку возвращения рекурсивных функций и возвращающихся прямо к исходному вызывающему, не используя стек вызовов.
NDA(Non-Disclosure Agreement) - юридический договор, заключённый двумя сторонами с целью взаимного обмена материалами, знаниями или другой информацией с ограничением к ней доступа третьим лицам.
Notice period - срок который необходимо отработать после объявление про увольнение. Обговаривается в договоре.
Компиляция — трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду (байт-код, ассемблер и т.д.).
Интерпретация — построчный анализ, обработка и выполнение исходного кода программы или запроса. По форме байт-код похож на машинный код, но предназначен для исполнения не реальным процессором, а виртуальной машиной.
Компонент - это единица ПО, код которой может быть независимо заменен или обновлен.
Boilerplate code - общая часть кода, которая необходима для начала работы команды. Часто генерируется плагинами.
Reverse engineering - метод исследования устройств или программного обеспечения с целью понять принцип его работы или обнаружить недокументированные возможности.
MVP - продукт, обладающий минимальными, но достаточными для удовлетворения первых потребителей функциями. Обычно используется для предоставления первичной демонстрации нового функционала клиенту.
MVP - продукт, обладающий минимальными, но достаточными для удовлетворения первых потребителей функциями. Обычно используется для предоставления первичной демонстрации нового функционала клиенту.
URI — Uniform Resource Identifier (унифицированный идентификатор ресурса)
Пример:URI = http://handynotes.ru/2009/09/uri-url-urn.html
URL — Uniform Resource Locator (унифицированный определитель местонахождения ресурса)
Пример:URL = http://handynotes.ru
URN — Uniform Resource Name (унифицированное имя ресурса)
Пример:URN = /2009/09/uri-url-urn.html
ISO 8601
YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45+01:00)
Для файлов
YYYY-MM-DD hh-mm-ss (eg 1997-07-16 19-20-30)