Обновить
3
0
Michael Elin@vanelm

Consulting Network Engineer

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

VPN для админа, а не админ для VPN: Как мы убили OpenVPN и построили всё на WireGuard

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

Да, я знаю. «Опять статья про WireGuard». Но это не очередное «how-to» на 5 строк. Это — история боли, паранойи и, наконец, автоматизации. Это история о том, как мы перестали «обслуживать» VPN и заставили его работать на нас...

Настроить и забыть

Веб. К черту фреймворки! Пишем свой starter-kit с роутером и сторами. Часть 3

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

Последняя часть по созданию своего starter-kit.

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

Читать далее

Интернет радио, продолжение

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

Всем привет! Приемник интернет-радио, собранный в предыдущей статье Интернет-радио на базе ESP32 и ЦАП UDA1334A , имел некоторые недостатки. А именно: были частые потери сигнала wifi, медленная и глючная работа в целом, случайные перезагрузки. Короче, он перестал меня устраивать и я решил продолжить тему проигрывателя интернет радио, но на базе другой аппаратной платформы.

Читать далее

Пишем свою мобильную ОС с нуля на Rust

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

Почему бы не запустить своё ядро прямо на смартфоне? Без Android, без Linux — только Rust, загрузчик и паяльник. В этой статье расскажу о результатах своего эксперимента, как оживить голое ARM-железо, увидеть первые символы в UART и даже вывести что-нибудь на экран.

Читать далее

Gradle для QA-инженера

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

Статья посвящена использованию Gradle в автоматизации тестирования. Рассматриваются настройка проекта, управление зависимостями, запуск тестов и лучшие практики для QA-инженеров. Приведены готовые примеры конфигураций и сравнение с Maven.

Читать далее

Подстраиваемся под новые требования Google: переходим на 16 KB memory page (гайд для разработчиков React Native)

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

Ну как, вы уже обновили свои приложения для поддержки новых требований Google? Если нет, то эта статья будет вам особенно полезна =) Напомню, что с 1 ноября 2025 года приложения, таргетирующиеся Android 15 и выше, должны поддерживать 16-килобайтные страницы памяти.

Как вы помните по предыдущим статьям, я работаю в МойОфис в команде разработки мобильной версии высоконагруженного корпоративного мессенджера Squadus (бэкенд на Node.js, NestJS и Meteor, а веб-интерфейс на React). Мы уже успешно перестроились на новые стандарты Google, и поэтому могу компетентно рассказать, что именно требуется, как адаптировать под это React Native-приложение и что делать, если используемая библиотека ещё не успела обновиться.

Читать далее

OpenAPI/Swagger для начинающих

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

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

Читать далее

Один Swagger вместо сотни страниц Confluence: как в Рунити навели порядок в API-документации

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

Привет, Хабр! На связи Маргарита Сорочинская, технический писатель отдела архитектуры в Рунити. Хочу рассказать, как мы в компании подошли к описанию API в Swagger — и почему решили перенести туда всё, что раньше жило в Confluence. А еще поделюсь с вами стартерпаком для описания API в Swagger, пошаговой инструкцией и всеми ссылками, чтобы для вас этот путь был уже более простым.

Читать далее

Как и зачем мы делали свое браузерное расширение для мокирования API

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

Понедельник, утро, открываешь проект, а авторизация на dev-стенде снова сломана. Или же надо поторопиться с релизом фичи, а бэк еще не готов, и разрабатывать нужно параллельно, и тут без моков не обойтись. Ну или классика: в командировке лежит интернет, и вся работа встала колом. Знакомо?

Что тут можно поделать? Можно подождать, пока починят стенд. Можно залезть в код и что-нибудь там нахардкодить, переполнив его ненужной логикой моков. Можно поставить Postman, Insomnia или другие популярные решения. Но у каждого подхода есть подводные камни: простои и сорванные дедлайны, забытые хардкоды в продакшене, необходимость согласований с инфобезом (особенно если вы работаете в банке) и зависимость от внешних серверов.

Мы попробовали существующие решения и поняли: ни одно из них не закрывает наши потребности полностью. Нужно было что-то свое: простое в установке, работающее офлайн, не требующее дополнительных приложений и аккаунтов. Что-то, что можно быстро настроить под себя и не зависеть от внешних решений вендора. Так появился наш велосипед — браузерное расширение Req-Saver. 

Да, представимся. Мы — Александр Битько и Дмитрий Панфилов, фронтенд-разработчики в ПСБ. Сегодня расскажем, как превратили мокирование запросов из головной боли в простую и понятную работу.

Читать далее

IPv6, Wi-Fi и ситуации в сфере ИБ — что почитать о беспроводных технологиях и сетевой инфраструктуре [подборка]

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

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

Читать далее

Мы живем хорошо

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

Бытует мнение, что с каждым годом мы живём всё хуже и хуже. Это совершенно не так. За ворохом ужасных событий, происходящих в России в последнее время, мы стали забывать, в какое прекрасное время живём. Во многом это связано с тем, как меняется наше восприятие мира. Люди скролят бесконечные ленты чужого успеха, потом сравнивают их со своей жизнью — и ужасаются. Не надо так! Давайте замечать и радоваться положительным изменениям, которые улучшают нашу жизнь здесь и сейчас.

Конечно, я не призываю игнорировать негатив. Просто напоминаю: одновременно с плохими явлениями, с которыми нужно бороться, существуют и хорошие, которым стоит радоваться. Несмотря на локальные ухудшения и ошибки отдельных политиков, человечество движется в правильном направлении. Объективное качество жизни сегодня выше, чем когда-либо в истории. Даже лучше, чем в восьмидесятые, которые многим кажутся «золотым веком».

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

Читать далее

Агент на Kotlin без фреймворков

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

Статья является продолжением Пишем агента на Kotlin: KOSMOS, но может читаться независимо. Мотивация к написанию — сохранить читателю время на возьню с фреймворками для решения относительно простой задачи.

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

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

Читать далее

Кейс: как мы беспроводные датчики температуры сделали

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

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

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

Читать далее

Разработка MCP-сервера на примере CRUD операций

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

Model Context Protocol (MCP) — это единый стандарт разработки API для сервисов, с которыми могут взаимодействовать LLM.

В этой статье на простом примере разберем, как создать свой MCP-сервер и как использовать его в связке с LLM.

Мои курсы: Разработка LLM с нуля | Алгоритмы Машинного обучения с нуля

Читать далее

Как я в одиночку спроектировал API-шлюз на FastAPI, который держит 200к+ запросов в сутки

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

Привет, Хабр!

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

Статья будет полезна тем, кто работает с FastAPI, микросервисами и думает о надежности и масштабируемости своих систем.

Читать далее

Как создать кастомную OpenWRT-прошивку без ImageBuilder за 1 вечер

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

Привет, Хабр! Меня зовут Алексей, и я занимаюсь беспроводными технологиями. В последнее время в организацию, в которой я работаю, часто поступают запросы от продавцов на маркетплейсах, которые торгуют китайскими роутерами, — кастомизировать для них прошивку OpenWRT. Ситуация осложняется тем, что для моделей, которые их интересуют, часто нет ImageBuilder, и это заметно затрудняет задачу. Сразу хочу сказать, что организация, в которой я работаю, такие услуги не оказывает, и данная статья не в коем случае не реклама, но раз уж запрос есть, я решил написать небольшой гайд, как модифицировать и собрать прошивку, имея в наличии только роутер с уже установленным OpenWRT и без использования Image Builder.

Читать далее

Телеграмм бот на Python aiogram 3. Часть 4

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

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

В Telegram существует два принципиально разных типа клавиатур, каждый из которых служит своей цели:

ReplyKeyboardMarkup: Постоянные кнопки, заменяющие стандартную клавиатуру.

InlineKeyboardMarkup: Встроенные в сообщение кнопки, которые отправляют боту "сигналы" (callback) и позволяют редактировать уже отправленный контент.

Читать далее

Нас минусили, блокировали и копировали – но мы только лучше. 5 лет Amnezia

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

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

Сегодня нам исполнилось 5 лет, и мы хотели бы поблагодарить вас – аудиторию Хабра – за тёплый приём нашего проекта на старте и по сей день. Благодаря вам мы понимали, что наше приложение действительно нужно, и это давало нам сил и мотивацию двигаться дальше.

Читать далее

Как ускорить render приложения в 68 раз, и при чём тут Signals

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

Фронтенд давно упёрся в потолок оптимизаций. Мы научились грамотно мемоизировать, батчить обновления, выносить тяжёлые вычисления в воркеры, но каждый раз упираемся в одну и ту же проблему: компоненты всё ещё перерисовываются чаще, чем нужно.

React стал символом этой модели. Благодаря Fiber и Concurrent Mode он действительно стал быстрее, но его архитектура по‑прежнему опирается на дерево компонентов и диффинг виртуального DOM. Даже с умным планировщиком React всё ещё «пересчитывает дерево», а не конкретные зависимости данных.

И вот на этом фоне появилась Signals — архитектура, которая предлагает другой путь.
Не оптимизировать старую модель, а избавиться от неё, сделав обновления атомарными и точечными. Без VDOM, ререндеров и догадок.

В этой статье мы разберём, чем «сигнальная реактивность» отличается от компонентной, и на реальных примерах из Solid.js и Angular Signals посмотрим, где именно проходит граница между «умным диффом» и «fine‑grained реактивностью».

Читать далее

Декларативное программирование на Python

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

Рассматриваются встроенные в Python возможности декларативного программирования и их развитие в библиотеках SQLAlchemy, NumPy, Pandas. Показывается применение трех видов декларативного программирования с помощью библиотеки DecPy: аналогов SQL, QBE и Prolog. В том числе приводятся рекурсивные запросы.

Краткое содержание:

Читать далее

Информация

В рейтинге
Не участвует
Откуда
Praha, Hlavni Mesto Praha, Чехия
Зарегистрирован
Активность