-
Event Storming
Как и многим, мне нравятся простые визуальные нотации, с помощью которых можно быстро понять суть дела. Считаю, что за такими инструментами будущее. Поэтому на прошедшей онлайн-конференции NextConf в центре моего внимания был доклад и воркшоп по Event Storming (не путать с Event Sourcing). Сам метод мне знаком, но всегда была интересна практическая часть. Поделюсь своими открытиями.
-
Чего не написано - того нет
Такую фразу неустанно повторял мой преподаватель в университете. Так он учил нас правильно воспринимать требования в задачах по электротехнике. :-) Однако я благополучно применяю этот принцип до сих пор и в разных сферах. В нужный момент позволяет остановить галлюцинирование и пойти за уточнением требований. :-)
-
Lamport Timestamp: генерация целочисленного идентификатора в распределённой БД без ACID-транзакций
В далёком 1978 году Leslie Lamport — американский учёный в области информатики и распределённых систем — предложил простой и эффективный способ определения порядка событий в распределённой системе. Позже этот алгоритм так и назвали: Lamport Timestamp. Давайте разберёмся, как данный алгоритм можно использовать на практике. В качестве примера рассмотрим задачу, более приземлённую к прикладной разработке.
-
Выбор UUID для первичного ключа таблицы
В базах данных, где в качестве алгоритма хранения первичного ключа используется B-tree, отдается предпочтение целочисленным типам данных. Это связано с рядом причин, включая производительность. Но что, если в качестве ключа нужно использовать UUID? Насколько сильно это повлияет на производительность? А можно ли сделать так, чтобы это влияние было сведено к минимуму?
-
Структура, высеченная в камне
Сегодня будет небольшой манифест. :) Часто сталкиваюсь с одним очень интересным фактом. Большинство разработчиков с большей охотой идут на изменения в коде, нежели на изменение в структуре проекта. Даже самые очевидные аргументы в этом вопросе работают плохо.
-
Устранение уязвимостей в коде
Сегодня решил рассказать об одном аспекте в разработке ПО, про который очень часто несправедливо забывают. Это способы изоляции приложения и системы, в которой это приложение исполняется.
-
Утилита изоляции процессов Bubblewrap
Представьте, что вам нужно запустить некоторый процесс Linux в изолированной среде. Так, чтобы он не смог нанести вред системе, на которой запускается. Какие инструменты мы используем в таких случаях? Первое, что приходит в голову, это технологии виртуализации или контейнеризации. Но что если нам нужно что-то более легковесное и простое в использовании? На самом деле такой инструмент есть - это утилита командной строки Bubblewrap, один из проектов сообщества Containers (знаменито авторством таких инструментов, как Podman, Buildah, Skopeo и др.).
-
Безопасное исполнение ненадежного кода
Лучший способ о чем-то рассказать - это сделать доклад. :-) Поэтому я подал заявку на участие в конференции TechLeadConf 2025. Сейчас уже могу сказать, что меня включили в программу конференции, поэтому жду вас 5 июня в Москве. Тема доклада - “Безопасное исполнение ненадежного кода”. Приходите, будет интересно. ;-)
-
Проблемы изоляции транзакций
Конкурентный доступ к данным - одна из основных проблем при реализации изоляции транзакций. Способ решения этой проблемы определяет ключевые характеристики базы данных, на которые мы опираемся при выборе подходящего хранилища для своих проектов. И так повелось, что со времен изобретения SQL-стандарта так и не появилось однозначного определения “уровней изоляции транзакций”, благодаря чему у каждой базы данных своё представление относительно этого вопроса. А разбираться с этим многообразием приходится нам - пользователям этих продуктов.
-
Удаление конфиденциальных данных
Бывает так, что встречаешь описание интересного подхода или алгоритма, а потом про него забываешь, так как теория не была подкреплена практикой или прошло очень много времени. И вот когда наступает момент, где можно блеснуть своими знаниями, приходится тратить время, чтобы вспомнить детали. В очередной раз, когда я поймал себя на подобной мысли, я решил, что было бы неплохо делиться подобными находками. ;-) #tip