Обновить
0
Сергей Жуков@devalineread⁠-⁠only

Программист

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

Reset — прохождение сложной машины от Tryhackme

Уровень сложностиСложный
Время на прочтение7 мин
Охват и читатели12K

Годная машина на тему Windows AD, Kerberos. В начале разведки получаем доступ к гостевой шаре. Оттуда достаем файл с паролем, но не знаем от какой учетной записи. Проводим разведку юзеров, получаем список и находим 1 пользователя к которому подходит этот пароль. Далее проводим разведку с помощью BloodHound и по цепочке получаем доступ к нескольким аккаунтам у последнего есть права Unconstrained Delegation Privilege на доменный компьютер. С помощью механизма S4U2self, запрашиваем билет на имя администратора и захватываем компьютер.

Читать далее

Юнит-тестирование на уровне базы данных PostgreSQL

Время на прочтение9 мин
Охват и читатели8.7K

Юнит-тесты в PostgreSQL, как и в других базах данных, не являются обязательными для CI/CD, но они крайне важны и фактически становятся стандартом. С помощью этих юнит-тестов мы уже нашли и исправили много ошибок в функциях на уровне БД, а также сократили загрузку ручных тестировщиков.

Привет, Хабр! В этой статье мы, старший разработчик Анастасия Цацкина и старший инженер-тестировщик Владимир Белинский из IBS, расскажем о нашем опыте внедрения юнит-тестирования на уровне БД.

Читать далее

Production‑стек для мессенджера на 10к пользователей: FastAPI, SQLite в проде и почему монолит

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели9.8K

Это восьмая статья из моей серии про инженерные решения в ONEMIX. До этого было про клиентскую часть мессенджера: кэш сообщений, E2E, WebRTC звонки, Electron, outbox‑паттерн. Параллельно про AI‑агента Лиру и мнение про вайб‑кодинг.

Сегодня про серверную сторону. Backend ONEMIX — это один файл main.py на 19 603 строки, 379 эндпоинтов, FastAPI + SQLite, держит мессенджер с регистрацией через SMS, звонками через LiveKit, E2E через Double Ratchet, push‑нотификациями на iOS и Android. Этот файл я пишу больше года. За это время он эволюционировал из прототипа на 800 строк в production монолит.

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

Сразу важная оговорка. У меня не было требования держать 100к одновременных пользователей или 10к RPS. Это бэкенд под мобильное приложение с трафиком который для соло‑разработчика разумно поддерживать одному. Если у вас задачи другого масштаба, мой опыт может не подойти.

Читать далее

Почему ваш Go‑сервис ломается под 1000 RPS и как найти узкое место за полчаса

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

Go-сервис может идеально проходить функциональные тесты и уверенно отвечать на локальных прогонах, а потом внезапно развалиться под 1000 RPS: p99 улетает в секунды, в логах появляются таймауты, throughput проседает, а часть запросов вообще не получает HTTP-ответа.

В статье разберём, как подойти к такой деградации без гадания: прогнать нагрузку через vegeta и wrk2, правильно прочитать p50/p99 и status codes, проверить пул соединений к базе, настройки HTTP-клиента, горутины, GC, таймауты и быстро понять, где именно сервис начинает терять устойчивость.

Читать далее

Как руководители используют Obsidian

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

Полтора года назад выступал на конференции TeamLead Conf с докладом «Второй мозг для руководителя» (YouTube, VK). Позже несколько коллег признались, что ведение заметок в Obsidian помогло им разгрузить голову и упорядочить работу. Попросил их поделиться своим опытом.

Читать далее

Проектируем сервис HTTP-запросов: Kafka, PostgreSQL, Redis-очередь и миллионы логических партиций

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

Ни одна «одна технология» не закрывает это без слоёв. Сначала — почему в стеке именно Kafka, PostgreSQL и Redis; дальше — как мы спроектировали сервис Requester: контекст, движение данных, внутренние воркеры, graceful shutdown, детали rate limit / retry / cache / отложенных задач, wake-up, тестирование и узкое место с большими payload в Redis.

Читать далее

Проектирование микросервисов на Go: типичные сложности и лучшие практики

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели9.7K

Баланс между производительностью, читаемостью и поддерживаемостью — ключевая задача при разработке микросервисов на Go. На практике всё сложнее из-за неочевидных факторов: от влияния частоты вызовов GC на время отклика до последствий избыточной вложенности в контрактах API. Если не учесть эти нюансы, даже грамотно спроектированный сервис может просаживаться по RPS (requests per second) — или его может быть сложно обновлять и дорабатывать.

Меня зовут Артём Кущ. Я Go-разработчик в команде VK Видео. В статье поделюсь подходами к оптимизации микросервисов и расскажу, как балансировать между скоростью и простотой.

Читать далее

obabot: пишем бота один раз — запускаем в Telegram и Max

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели9.1K

Max запустили как полноценную альтернативу Telegram для российского рынка, с открытым Bot API. Разработчики оказались перед классической дилеммой: поддерживать двойную кодовую базу или выбрать одну платформу, теряя аудиторию второй.

Типичная ситуация выглядит так: есть готовый Telegram-бот на aiogram, и нужно запустить его ещё в Max. Варианты неприятные — либо дублировать код, либо писать тонну адаптеров вручную, либо мириться с расхождением фич между платформами.

Библиотека obabot предлагает другой путь: один код — два мессенджера.

Один Код - Два Бота

Go и искусство ставить подножку разработчику: разоблачение

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

Язык проектировался простым, лёгким в освоении, готовым для написания сервисов с первого дня. Он мог бы таким и остаться, если бы не одна проблема. Проблема отбора.

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

Явно ставилась задача — сделать язык достаточно простым, но не настолько, чтобы собеседование мог пройти любой новичок.

Узнай тайны

Headless CMS на Go — самая минималистичная система управления сайтом

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

Когда очередной лендинг требует «просто принимать заявки и показывать новости», разработчик оказывается перед выбором: поднять Laravel/Django с кучей зависимостей, купить SaaS-подписку, или написать что-то своё. Я выбрал третий путь — и это оказалось интереснее, чем я ожидал.

В этой статье разбираю архитектурные решения, которые принял при написании LightHeadless — минималистичного headless CMS на Go.

Читать далее

«Ну вроде едет». Мой самописный мессенджер готов к публичной порке. Начнём?

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

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

Мне эта модель быстро наскучила.

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

Читать далее

Как я пришел от architecture as code к живой архитектурной модели

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели12K

Привет, меня зовут Владимир Голубев, я системный архитектор. Последние несколько лет я занимался системной архитектурой в финтехе. За это время у меня накопилось много опыта и понимание того, чтобы я хотел изменить в работе архитекторов. Я хочу рассказать, как я пришёл к подходу "архитектура как код" и почему в итоге начал создавать свой инструмент для работы с живой архитектурной моделью.

Читать далее

Полный деплой Strapi CMS + Nuxt.js на Ubuntu

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

Пошаговое руководство по развёртыванию блога с нуля: Strapi CMS (админка и API) и Nuxt.js (фронтенд) на VPS Ubuntu. В итоге — работающий блог за Nginx с возможностью включить SSL по отдельной инструкции.

Узнать подробнее

Как я искал замену MinIO S3 и написал свой S4 на Rust

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

В начале 2025 года компания MinIO в лице сооснователя Harshavardhana начала поэтапно сворачивать свою версию Community Edition. В феврале из open-source версии был вырезан веб-интерфейс администрирования - управление политиками, мониторинг, репликация, IAM - всё это переехало в коммерческий продукт AIStor с ценником от $96 000 в год. Пользователям оставили лишь базовый object browser и CLI-утилиту mc. В мае последовало удаление поддержки OIDC-аутентификации. В октябре MinIO прекратил публикацию Docker-образов и готовых бинарников - причём аккурат в момент раскрытия критической CVE-уязвимости. А в декабре 2025-го проект официально перешёл в режим maintenance mode: никаких новых фич, pull request'ы не принимаются, только точечные security-фиксы по усмотрению компании.

Читать далее

Готовим Android к пентесту — WSA edition

Время на прочтение7 мин
Охват и читатели14K

Мы в Digital Security часто проводим анализ Android-приложений, поэтому пришло время поделиться некоторыми накопленными знаниями и сделать обзор по тому окружению, который мы используем каждый день.

Существует множество вариантов для настройки пентестерского окружения, которые можно выделить в две группы - виртуальные девайсы и физические.

У нас есть некоторое количество рутованных девайсов с одним и тем же окружением, однако иногда приходится использовать виртуальные устройства, в основном это Android Studio AVD.

Не так давно компания Microsoft зарелизила Windows Subsystem for Android (TM). Меня заинтересовал данный инструмент на столько, что я бросил своё рабочее окружение на Fedora Linux и поставил Windows 11.

Можно было бы писать эту статью в контексте реального устройства или виртуального девайста Android Studio, но мне кажется интереснее будет разобрать Windows Subsystem For Android ?

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

Читать далее

Пишем свой TCP-чат на Go: пошаговый гайд на пальцах

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

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

Цель — создание простого tcp сервера для обмена сообщениями.

Читать далее

Сайты от ИИ выглядят как сайты от ИИ — попробуем это исправить

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели13K

Продолжаю серию статей про вайб кодинг для чайников (это я). Сегодня про главную боль: почему всё, что генерирует ИИ в плане веб-дизайна, выглядит одинаково пластиково, и что с этим делать на практике.

Хотелось бы свалить на конкретную модель и сказать - "надо просто выбрать вот эту и всё будет тип топ". Но на самом деле - это проблема подхода: по умолчанию ИИ пишет и оптимизирует код подходом "работает и не ломается", а не "выглядит как лучшие примеры с Awwwards". У него нет контекста вашего бренда, нет визуального фидбека на результат, нет источника вдохновения. Он берёт самый частотный паттерн из обучающей выборки, и вы получаете среднее арифметическое всех шаблонов интернета (стоит признать - иногда и так нормально). Давайте это починим в этой статье.

Читать далее

CDC своими руками: Kafka + Debezium в домашней лаборатории

Время на прочтение9 мин
Охват и читатели12K

Третья статья цикла о построении CDC-пайплайна с нуля. Сегодня — самое интересное: захватываем изменения из PostgreSQL и отправляем в Kafka. И разбираемся, почему WAL может съесть весь диск, даже если данные не меняются.

Читать далее

DeepSeek-OCR + LLama4 + RAG = Революция в мире агентного OCR

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

В выходные я просматривал Твиттер, чтобы узнать, что происходит в сфере ИИ. И снова DeepSeek привлек внимание всего мира.

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

Любой, кто пользовался большой языковой моделью (LLM), сталкивался с такой проблемой:

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

Это происходит потому, что квадратичная сложность длины последовательности по своей сути ограничивает GPT, Gemini и Claude - чем длиннее входные данные, тем больше вычислительной мощности требуется.

Читать далее

Как пройти секцию по System Design на Senior: не проектируй системы — проектируй компромиссы

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

Многие инженеры годами работают над реальными системами, но теряются на собеседованиях, когда их просят спроектировать архитектуру с нуля. Причина проста: System Design — это не про технологии. Это про умение видеть контекст, задавать правильные вопросы, взвешивать последствия решений и находить обоснованные компромиссы.

В этой статье мы расскажем, как развить именно эти навыки — те самые, которые отличают Senior‑инженера от Middle, и которые ценятся в топовых компаниях. Это не просто руководство к прохождению собеседований. Это приглашение освоить фундаментальный профессиональный навык, который пригодится вам каждый день на работе.

Перейти к разбору
1
23 ...

Информация

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

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

Специалист
Средний
Python
Docker
Django
FastAPI
Blockchain
Solidity
JavaScript
Nuxt.js
Безопасность сетей