Django-аутентификация: просто о сложном

Аутентификация является фундаментальной частью любого веб-приложения. Мы рассмотрим различные способы реализации аутентификации в Django, начиная от стандартных методов и заканчивая более крутыми техниками, например как 2FA и OAuth2.

Читать далее


Триггеры в PostgreSQL: основы

В этой статье поговорим про триггеры в PostgreSQL. Начнём с базы: триггер в PostgreSQL — это такая функция, которая запускается автоматически при определённом событии в таблице. С триггерами можно автоматизировать массу рутины и освободить приложение от сложных проверок и вычислений, но это палка о двух концах.

Читать далее


Где PostgreSQL выигрывает у Oracle DB

Если вы стоите перед выбором между PostgreSQL и Oracle DB, то эта статья для вас. Разберем где PostgreSQL побеждает Oracle. Будет код и примеры — всё, что нужно для практического сравнения.

P.S: эта статья не про то, какой PSQL хороший в отличии от Oracle, а про то, в чем PSQL по мнению автора лучше.

Читать далее


cgroups и namespaces в Linux: как это работает?

В этой статье рассмотрим изоляции процессов и управления ресурсами в Linux, изучив возможности cgroups и namespaces. Разберёмся, как работают контейнеры изнутри и научимся создавать собственное изолированное окружение без Docker.

Читать далее


Стартер-пак книг для продуктового аналитика (и не только)

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

Читать далее


Прогреваем k8s cache: оптимизация загрузки образов размером 3 ГБ и запуск 1000 POD’ов за секунды

Проблема: при обновлении k8s кластера не менее половины POD’в застряли в состоянии ContainerCreating из-за длительной загрузки и распаковки образов размером примерно 3 ГБ.

Для решения этой проблемы в корне (не только кейс с обновлением) предложена стратегия предварительного прогрева узлов кластера:

  1. Создание отдельной группы узлов для каждой feature-ветки (FB): Это обеспечило изоляцию и гибкость, позволяя легко изменять тип узлов.
  2. Загрузка базовых образов через cloud-init: При запуске новых узлов с помощью скрипта cloud-init автоматически загружаются необходимые базовые образы, что снижало нагрузку при последующем развертывании.
  3. Использование DaemonSet с initContainers: Перед основным развертыванием запускался DaemonSet с initContainers, которые последовательно загружали необходимые образы на узлы, предотвращая проблемы с сверхутилизацией дисков и ускоряя запуск POD’ов.

Читать далее


Статистические критерии и доверительные интервалы

В этой статье поговорим о том, как понять, работает ли ваша новая фича или это просто случайный всплеск. Разберемся, что такое статистические критерии, доверительные интервалы, и как их использовать, чтобы принимать обоснованные решения.

Читать далее


Ваш первый A/B-тест: гайд для тех, кто ещё ничего не пробовал

Если вы слышите «AB‑тесты» и у вас в голове возникает что‑то вроде «да, я это где‑то видел, но понятия не имею, как работает», то эта статья — для вас. Я объясню, что такое AB‑тесты, зачем они нужны, какие инструменты использовать и как их настроить, чтобы результат был не просто для галочки, а действительно полезным.

Читать далее


Препарируем слои образов Docker

Технологии контейнеризации сейчас являются неотъемлемой частью процессов DevOps. Контейнеры активно используются в микросервисных архитектурах для изоляции отдельных микросервисов. Наиболее распространенным решением по контейнеризации на сегодняшний день является Docker, и именно о небезопасной работе с контейнерами Docker мы и будем сегодня говорить.

Читать далее


Ускоряем PostgreSQL с помощью Tuned

Администраторам баз данных всегда хочется, чтобы их СУБД работали быстрее. Всегда кажется, что можно прооптимизировать определенные настройки, и запросы начнут отрабатывать быстрее.

Есть множество различных параметров и настроек, которые позволяют оптимизировать работу БД PostgreSQL. В этой статье мы не будем пытаться охватить их все и поговорим об оптимизации параметров операционной и файловой систем, а также памяти на самом сервере СУБД.

Читать далее


Хороший рефакторинг vs плохой рефакторинг

За последние годы я нанял многих разработчиков. И не раз случалось, что новички сразу заявляли, что наш код требует серьёзного рефакторинга. Но вот в чём дело: во многих случаях их «улучшенный» код оказывался сложнее для понимания и сопровождения. Более того, он обычно становился медленнее и содержал больше багов.

Не поймите меня неправильно. Рефакторинг — это не что-то плохое само по себе. Это важная часть поддержания кода в хорошем состоянии. Проблема в том, что плохой рефакторинг это действительно плохо. И, к сожалению, попасть в ловушку «хотели как лучше, а получилось как всегда» проще, чем кажется.

Давайте разберёмся, что отличает хороший рефакторинг от плохого и как не стать тем разработчиком, которого коллеги боятся подпускать к коду.

Читать далее


Пара слов о вредоносном ПО для Linux и способах защиты вашей системы

Если вы следите за последними новостями в области IT‑безопасности, то, возможно, заметили рост числа атак на сетевую инфраструктуру Linux‑систем. Среди основных разновидностей вредоносного ПО, о которых вы должны знать, можно выделить Cloud Snooper, EvilGnome, HiddenWasp, QNAPCrypt, GonnaCry, FBOT и Tycoon.

Linux считается очень безопасной операционной системой, но эти угрозы безопасности облачной инфраструктуры могут заставить пользователей сомневаться в защищенности вашей компании как таковой. В этой статье мы хотим поговорить о текущей ситуации с Linux‑угрозами, дать краткий экскурс в историю вредоносного ПО для Linux и пролить свет на другие связанные проблемы, которые могут возникнуть у пользователей.

Читать далее


Как awk заменяет 10 команд Bash

Когда только автор начинал работать с Linux, каждую задачу обрабатывал через кучку пайпов. Потом его коллега сказал ему: «Завязывай с этим, попробуй awk». И автор попробовал. И это действительно удобно. В этой статье он рассказывает, как awk может заменить несколько привычных команд bash.

Читать далее


Task изнутри: управление потоками в .NET и создание своих планировщиков

В этой статье поговорим о том, как работают задачи в .NET, зачем может понадобиться собственный TaskScheduler и как его реализовать.

Читать далее


Динамические SQL-запросы в PostgreSQL: когда, зачем и как

В этой статье поговорим о мощной штуке в PostgreSQL, которая одновременно помогает и открывает портал в ад: динамические SQL‑запросы. Динамика — это когда SQL собирается на лету, а не пишется заранее статичным текстом. Звучит неплохо, но при неправильном подходе легко превращается в катастрофу.

Читать далее


Мастерство работы с Java Stream

В этой статье рассмотрим, как использовать Stream для написания более элегантного кода на Java на основе нескольких примеров, а также кратко описали фактическую роль каждого API. 

Читать далее


Что такое переобучение и как его избежать: основы

Если вы только начинаете свой путь в машинном обучении или уже успели столкнуться с его непредсказуемыми сюрпризами, то эта статья для тех, кто хочет понять и победить переобучение (оно же overfitting).

Читать далее

OTUS на Хабр: лучшие статьи за ноябрь