Общие термины

Проработать

  1. API Pagination: Making Billions of Products Scrolling Possible
  2. Разработка API
  3. КАК РАБОТАЮТ КОДИРОВКИ | ОСНОВЫ ПРОГРАММИРОВАНИЯ
  4. Що таке Domain-Driven Design та на якому етапі варто його впроваджувати в продукт
  5. How Search Really Works
  6. Что такое API? Простыми Словами Для Начинающих

Масштабирование(Scaling)

Масштабирование — это процесс добавления ресурсов, направленный на возможность информационной системы справляться с растущими объемами данных и их обработкой.

Вертикальное масштабирование(Vertical scaling)

Вертикальное масштабирование предполагает увеличение мощностей за счет добавления ресурсов: процессоров, памяти, дисков и т.д.

Горизонтальное масштабирование(Horizontal scaling)

Горизонтальное масштабирование реализуется за счет добавления дополнительных узлов инфраструктуры, каждый из которых может взять на себя часть нагрузки остальных. Главные преимущества такого подхода: возможность использовать стандартное недорогое оборудование, достаточное количество ресурсов для рабочих нагрузок и отсутствие необходимости в миграции инфраструктуры.

Multithreading(Многопоточность)

Асинхронное программирование - это средство написания неблокирующего кода путём выполнения задачи в отдельном, отличном от главного, потоке, а также уведомление главного потока о ходе выполнения, завершении или сбое. Таким образом, основной поток не блокируется и не ждёт завершения задачи, а значит может параллельно выполнять и другие задания.

Атомарный - значит "неделимый" - в том смысле, что операция должна быть выполнена полностью или отменена.

Блокировка

Блокировки – это меры по предотвращению модификации данных между временем их чтения, и временем их использования.

Пессимистическая блокировка

Пессимистичная стратегия подразумевает, что параллельные транзакции будут конфликтовать каждая друг с другом, и требует блокировки ресурсов после их чтения, а также ее снятия только после того, как приложение завершило использование данных. Когда применять: при критической необходимости точности данных.

Оптимистическая блокировка

Множество транзакций могут завершиться без влияния друг на друга, и таким образом могут выполняться без блокировок тех ресурсов, на которые они влияют. Перед изменением(commit), каждая транзакция проверяет, что ни одна другая транзакция не модифицировала ее данные(проверяя версию). Если проверка выявила конфликтующие модификации, транзакция, находящаяся в состоянии коммита, откатывается. Когда применять: при большом количестве чтений и низкой вероятности конфликтов.

Сигнатура

moveTo(int x, int y) - сигнатура

Контракт

public void moveTo(int x, int y) throws IOException - контракт

UI

Drag and drop(тащи и бросай) - способ оперирования элементами интерфейса при помощи мыши.

Виды окон UI:

  1. Drop-down box(выпадающее окно/блок) - список дополнительных возможностей. Обычно при клике на mouse2.
  2. Modal - окно, которое блокирует работу пользователя с родительским приложением до тех пор, пока пользователь это окно не закроет.
  3. Popup - выпадающее информативное окно, не требующее действий.

Side effect

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.

Ограничения(Bound)

  1. CPU Bound - скорость выполнения процесса ограничена скоростью процессора.
  2. I/O Bound - скорость выполнения процесса ограничена скоростью подсистемы ввода/вывода. Запись/чтение.
  3. Memory bound - скорость выполнения процесса ограничена объемом доступной памяти и скоростью доступа к этой памяти.
  4. Cache bound - скорость, с которой прогресс процесса ограничивается объемом и скоростью доступного кэша.

Часто разделяют CPU Bound и I/O Bound задачи, для того чтобы не блокировали потоки другого типа. К примеру разделения HTTP запросов и работа с базой. Это значит что любой тип асинхронных запросов необходим разный thread pool.

Алгоритмы

Дихотомия(Dichotomy) - поиск делением пополам.

Детерминированность(Determinism) - для одних и тех же входных аргументов возвращается один и тот же результат.

Рекурсия(Recursion) - вызов функции (процедуры) из неё же самой.

Хвостовая рекурсия(Tail recursion) - это особый случай рекурсии, когда вызывающая функция больше не выполняет вычисления после выполнения рекурсивного вызова. Поэтому мы можем пропустить всю цепочку возвращения рекурсивных функций и возвращающихся прямо к исходному вызывающему, не используя стек вызовов.

Договоры

NDA(Non-Disclosure Agreement) - юридический договор, заключённый двумя сторонами с целью взаимного обмена материалами, знаниями или другой информацией с ограничением к ней доступа третьим лицам.

Notice period - срок который необходимо отработать после объявление про увольнение. Обговаривается в договоре.

Разработка

Жизненный цикл ПО(Life cycle SOFT):

  1. Idea
  2. Analysis
  3. Architecture
  4. Verification
  5. Development
  6. Testing
  7. Bug fixing
  8. Acceptance testing
  9. Release
  10. Support
  11. Dead

Компиляция

Компиляция — трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду (байт-код, ассемблер и т.д.).

Интерпретация

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

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

Boilerplate code - общая часть кода, которая необходима для начала работы команды. Часто генерируется плагинами.

Reverse engineering - метод исследования устройств или программного обеспечения с целью понять принцип его работы или обнаружить недокументированные возможности.

MVP(Minimum Viable Product)

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

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

Документация проекта

Версионирование - управление версиями продукта. Major.Minor.Patch

Uniform Resource

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

Стандарты:

Date and Time Formats(ISO 8601)

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)

Cases of naming

  1. camelCase
  2. PascalCase
  3. snake_case
  4. kebab-case

Вариантность