Как стать автором
Обновить
24
0
Антон Зубарев @aszubarev

Пользователь

Отправить сообщение

Взламываем игры с помощью Python

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров22K

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

А на днях мне вдруг захотелось вспомнить молодость и поиграть в бумерский диаблойд под названием Titan Quest, выпущенный аж в 2006 году. Да вот только времени на беготню, прокачку, и вот это вот всё, у меня нет. И ArtMoney нет. Зато есть определенные знания программирования. Вот я и решил совместить приятное с полезным, написав аналог ArtMoney на Python, а заодно стать супербогатым, хотя бы в Titan Quest.

Читать далее
Всего голосов 34: ↑31 и ↓3+31
Комментарии37

7 основных способов оптимизировать кеширование в Spring Boot

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров8.2K

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

В новом переводе от команды Spring АйО вы узнаете про 7 основных техник оптимизации кеширования в Spring Boot, которые могут помочь значительно улучшить производительность. От выбора идеальных кандидатов для кеширования до реализации асинхронного кеша и мониторинга метрик кеша.

Читать далее
Всего голосов 21: ↑20 и ↓1+22
Комментарии3

Что, если выкинуть все лишнее из базы в распределенный кэш – наш опыт использования Hazelcast

Время на прочтение12 мин
Количество просмотров55K


Так как базы данных Яндекс.Денег вынуждены хранить массу второстепенной и временной информации, однажды такое решение перестало быть оптимальным. Поэтому в инфраструктуре появился распределенный Data Grid с функциями in-memory базы данных на базе Hazelcast.


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

Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии17

Исследуем и тестируем очереди от Hazelcast

Время на прочтение5 мин
Количество просмотров43K
Многие из нас слышали о Hazelcast. Это удобный продукт, который реализует различные распределенные объекты. В частности: key-value хранилища, очереди, блокировки и т.д. К нему в целом применяются утверждения о распределенности, масштабируемости, отказоустойчивости и другие положительные свойства.

Так ли это применительно к его реализации очередей? Где границы их использования? Это мы и попытаемся выяснить.
Читать дальше →
Всего голосов 8: ↑7 и ↓1+6
Комментарии5

Сетевые плагины (CNI) в Kubernetes

Уровень сложностиСложный
Время на прочтение14 мин
Количество просмотров4.9K

Сеть Kubernetes — это сложная и увлекательная тема, наполненная множеством подвижных частей. Одним из ключевых компонентов, обеспечивающих сетевую связность и взаимодействие различных элементов кластера, является CNI (Container Networking Interface).

CNI  - это спецификация, разработанная CNCF (Cloud Native Computing Foundation) для стандартизации процесса подключения сетевых интерфейсов к контейнерам. CNI обеспечивает гибкость и адаптивность сетевой инфраструктуры, позволяя интегрировать различные сетевые решения в Kubernetes.

Давайте подробнее разберем, что такое Container Network Interface?

Читать далее
Всего голосов 18: ↑16 и ↓2+17
Комментарии2

Паттерн Outbox: как не растерять сообщения в микросервисной архитектуре

Время на прочтение8 мин
Количество просмотров70K

Привет! Меня зовут Михаил Боровиков, я тимлид команды, которая отвечает за систему процессинга заказов Lamoda — Orders Management. Эта система, словно «сердце» Lamoda, через которое проходит самый важный для бизнеса шаг — оформление заказа.

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

Для решения этой проблемы мы выбрали паттерн Outbox. И в этой статье я расскажу, что он из себя представляет, как мы его применили, почему пошли по пути at-least-once и не положились на работу одного брокера сообщений.

Читать далее
Всего голосов 28: ↑26 и ↓2+27
Комментарии27

PostgreSQL 16. Снимки данных. Часть 4

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров2.7K

Данная статья является продолжением: PostgreSQL 16. Страницы и версии строк. Часть 3.

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

Читать далее
Всего голосов 10: ↑10 и ↓0+12
Комментарии0

Продираемся сквозь сети в Kubernetes: Load-Balance, BGP, IPVS и все такое прочее

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров7K

Привет, Хабр! Мы в команде Nova Container Platform сделали перевод статьи для тех, кто хочет разобраться, как строить сети в Kubernetes. Делюсь им, надеюсь, вам будет полезно.

В мире Kubernetes мы каждый день слышим, как ipvs сравнивают с iptables, или, скажем, pureLB с metalLB, или же виртуальную топологию (overlay) с физической (underlay), или Nodeport с Loadbalance, и т.д. Сейчас я вам все растолкую.

Читать далее
Всего голосов 10: ↑10 и ↓0+14
Комментарии0

[В закладки] 28 фишек Telegram, о которых знают не все

Время на прочтение9 мин
Количество просмотров26K

Telegram продолжает развиваться. Собрали новую подборку интересных и скрытых особенностей мессенджера, которые делают его еще удобнее.

Читать далее
Всего голосов 29: ↑18 и ↓11+14
Комментарии21

Поднимаем динамические окружения для stateless- и stateful-сервисов

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров3.9K

На связи Игорь Латкин, управляющий партнер и системный архитектор в KTS

Мы на своём опыте разобрались в развертывании stateless- и stateful-сервисов, и теперь хотим поделиться с вами. Мы в KTS не раз создавали подобные инфраструктуры, перепробовали разные решения и выясняли, как построить эффективные процессы.

Сегодня мы поговорим о динамических окружениях для stateless- и stateful-сервисов, обсудим особенности и проблемы, которые могут возникнуть и возникали у нас.

Читать далее
Всего голосов 43: ↑42 и ↓1+43
Комментарии2

Создание аналога Google Photos на собственном сервере

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров28K

Создание собственного облачного хранилища с автоматическим менеджером фотографий.

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

Читать далее
Всего голосов 22: ↑20 и ↓2+24
Комментарии80

В сотый раз об эргономике рабочего места (на личном опыте)

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров46K

Это мой субъективный, личный опыт, но я очень хочу им поделиться и может помочь кому-то не обрести типичных болячек из-за работы за компьютером, а может помочь избавиться от тех проблем, что уже начали себя проявлять.

Читать далее
Всего голосов 53: ↑51 и ↓2+58
Комментарии109

Состояние Spring в 2024 году

Уровень сложностиПростой
Время на прочтение17 мин
Количество просмотров11K

Команда Spring АйО перевела важнейший документ для Spring-разработчиков!

В начале июня компания VMWare, владеющая Spring, опубликовала результаты исследования, в котором приняло учатие более 1,500 разработчиков по всему миру. Отчёт получился действительно интересным и всеобъемлющим. Были рассмотрены как базовые темы, такие как выбор архитектурных подходов и типов API, так и продвинутые, такие как компиляция в Native Image и использование Spring вместе с Kubernetes.

Читать далее
Всего голосов 16: ↑16 и ↓0+18
Комментарии5

Двухфакторная аутентификация (OTP) в OpenVPN с использованием FreeRADIUS и LDAP

Уровень сложностиСложный
Время на прочтение15 мин
Количество просмотров3.6K

Существующие варианты реализации 2FA для OpenVPN основываются на модуле google-authenticator-libpam для OTP‑кодов и плагинов аутентификации OpenVPN libpam-radius-auth, openvpn-plugin-auth-pam, openvpn-auth-ldap и имеют ряд недостатков как для пользователя так и для администратора.

Поскольку и OpenVPN, и FreeRADIUS позволяют подключать плагины мы можем, написав собственный плагин, реализовать такую схему, которая позволит нам:

использовать для аутентификации пользователей логин и пароль из LDAP‑каталога.

удобно вводить логин, пароль, OTP в отдельные независимые поля интерфейса, а не после пароля или вместо пароля.

реализовать различные комбинации использования логина, пароля, OTP в зависимости от задач.

обеспечить отказоустойчивость, возможность использования нескольких серверов аутентификации.

использовать LDAP‑каталог для централизованного управления пользователями.

хранить seed‑значения для генератора OTP независимо от того, какой LDAP‑каталог используется (ActiveDirectory, FreeIPA, lldap или другие).

передать функцию создания, обновления seed‑значений для генератора OTP техподдержке без необходимости подключаться к серверам OpenVPN.

использовать на смартфонах любое приложение для генерации OTP (Яндекс.Ключ, FreeOTP Authenticator и др.).

не зависеть от работоспособности облачных провайдеров 2FA.

Система рассчитана на следующие сценарии использования:

доступ пользователей через OpenVPN в инфраструктуру компании.

резервный самодостаточный безопасный удаленный доступ в инфраструктуру для администраторов на случай аварий или сбоев.

В обоих сценариях:

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

для аутентификации используется логин, пароль и OTP.

Читать далее
Всего голосов 2: ↑2 и ↓0+4
Комментарии1

Архитектура Flutter проекта простым языком. Clean Arch (MVVM, DI, Bloc, Inversion of Control)

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров3.8K

Привет! В этой статье я рассказываю о чистой архитектуре и о паттернах для нее простыми словами. Где, когда и как применять тот или иной паттерн?

MVVM
Inversion of Control
Dependency Injection
Service Locator

Так же вы узнаете как можно применять ViewModel вместе со своими стейт менеджерами (Bloc), избавив свой виджет от ненужного.

Читать далее
Всего голосов 3: ↑2 и ↓1+3
Комментарии3

Хранимые процедуры рудимент или еще актуальны?

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров11K

В этой статье я не намерен обидеть DBA-разработчиков, но хочу рассмотреть корректность использования хранимых процедур с точки зрения .NET Backend-разработчика. При работе с ними часто возникает невообразимая боль. Причина этого в том, что в какой-то момент казалось отличной идеей поместить всю бизнес-логику нашего приложения в хранимые процедуры и вызывать их из различных сервисов. Однако с течением времени это решение стало неподдерживаемым и проблемным.

Читать далее
Всего голосов 30: ↑11 и ↓19-4
Комментарии205

Решение задачи с собеседования Middle of the Linked List [+ ВИДЕО]

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров6.9K

Всем салют! Давайте решим задачу "Middle of the Linked List"

Дан указатель head на начало односвязного списка, нужно вернуть средний узел списка.

Если средних узлов два, нужно вернуть второй средний узел.

Читать далее
Всего голосов 13: ↑10 и ↓3+9
Комментарии166

Как расслабиться инженеру на работе при помощи Python?

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров12K

Всем привет! Меня зовут Владимир Ганзюк

Работаю инженером НСИ и изучаю для себя C#, но не сталкиваясь с Python, наткнулся я как-то случайно на одну очень интересную библиотеку Pymorhp.

Pymorph – морфологический анализатор для русского языка, использует словари из OpenCorpora. Исходный код можно получить на github. Документация к библиотеке написана достаточно хорошо.

Читать далее
Всего голосов 8: ↑6 и ↓2+4
Комментарии17

OCSP всё?

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров12K

Google УЦ Let’s Encrypt предупредил, что намерен «как можно скорее» прекратить поддержку протокола проверки статуса TLS-сертификата Online Certificate Status Protocol (OCSP) и впредь поддерживать только Certificate Revocation Lists (CRLs).
Читать дальше →
Всего голосов 12: ↑7 и ↓5+6
Комментарии13

Продвинутые сетевые функции Kubernetes

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров5.7K

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

Читать далее
Всего голосов 21: ↑17 и ↓4+18
Комментарии3

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Работает в
Дата рождения
Зарегистрирован
Активность

Специализация

Backend Developer, Software Architect
Lead
Git
SQL
Docker
Python
Django
RabbitMQ
Kubernetes
Database
Designing application architecture
Creating project architecture