Обновить

Разработка

Сначала показывать
Порог рейтинга
Уровень сложности

Упрощаем работу с микросервисами при помощи API Gateway на Java

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

Микросервисы легко разрастаются до зоопарка эндпоинтов, где каждый сервис живёт по своим правилам, а клиенту приходится знать обо всех. В статье разберем, как API Gateway превращает этот хаос в единую точку входа: берёт на себя маршрутизацию, аутентификацию, агрегацию запросов и наблюдаемость. На простом примере с Spring Cloud Gateway рассмотрим, как собрать такой слой поверх Java-сервисов и упростить жизнь и разработчикам, и внешним потребителям API.

Разобраться с Gateway

Меня снова спросили за Optional

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

Несмотря на то, что использование Optional самая настоящая рутина для любого iOS-разработчика, в тонкости реализации этого механизма мы погружаемся только при первом знакомстве с языком. Предлагаю чуть углубиться, чтобы уверенно говорить на эту тему с коллегой или интервьюером.

Читать далее

Лень – двигатель прогресса, на примере создания облачной CLI

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

Привет! Я Эмиль Ибрагимов — старший Go-разработчик команды Development Platform в MWS Cloud Platform. В этой статье расскажу о том, как мы создали облачную CLI на Go и что из этого вышло. Спойлер: получилось реализовать утилиту и поддерживать её силами небольшой команды внутри Development Platform.

Читать далее

Большое исследование C#-разработчиков

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

Привет, Хабр. Я Катя Куваева, DevRel C#-разработчиков и инфраструктурных команд в Контуре, а это моя первая статья. 

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

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

Посмотрите, сколько разных эмоций я испытала за время общения с C#-разработчиками — и мы начинаем!

Читать далее

«Фамипия». Венгерские домофоны в подъездах Питера

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

Приветствую всех!
Уверен, многие видели на стенах старых домов эти штуки - довольно большие серебристые или цветные панели с кучей кнопок на них. Сейчас практически все они давно разбиты или выдраны, однако те, кто постарше, возможно, даже успели застать их рабочими. И нет, никаких фамилий там нет: называлась эта панель именно так.

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

Во время разговора кнопку держать нажатой

Marathon OS: экспериментальная мобильная ОС на Qt6 и Wayland с фокусом на производительность

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

Разработчик Патрик Куинн недавно запустил проект Marathon OS. Это мобильная ОС на базе postmarketOS с полностью переработанным интерфейсом под Qt6, QML и собственным Wayland-композитором. Основная идея заключается в полном отказе от виртуальных кнопок в пользу жестового управления, вдохновленного BlackBerry 10, где все действия выполняются свайпами от краев экрана.

Сейчас система тестируется на базе OnePlus 6 и 6T, показывая стабильные 60 кадров в секунду, загрузку за 20–25 секунд и задержку ввода в пределах 10–15 миллисекунд. На устройствах со Snapdragon 845 приложения запускаются за 200–250 миллисекунд, что для чистого Linux выглядит весьма убедительно без каких-либо Android-подложек.

Читать далее

Осваиваем ML WAF: от текстовых правил к машинному обучению

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

Всем привет, меня зовут Семён. Я пишу на С++ и работаю в группе Антиробота. Антиробот — это сервис, который на уровне L7 защищает нас от парсеров и DDoS-атак. Разрабатывать его начали более 10 лет назад — сначала он предназначался только для защиты Поиска, затем был внутренним инструментом, который в онлайн‑режиме анализирует запросы к сервисам Яндекса. Постепенно Антиробот вырос в настоящий highload. Сейчас это часть облачного сервиса Smart Web Security (SWS).

В этой статье я расскажу, как с нашим сервисом мы прошли путь от текстовых правил до машинного обучения. Вы узнаете, зачем вообще нужен Web Application Firewall (WAF) — межсетевой экран для веб-приложений — и разберётесь, как он устроен. А ещё — как работают рулсеты, почему у нас их целых три и какие существуют метрики для оценки качества и быстродействия сервиса.

Читать далее

Сколько воды в бочке?

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

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

Читать далее

Cloud Native LVM: как автоматизировать поиск и разметку локальных дисков в Kubernetes

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

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

Читать далее

Переезд с Nuxt 2 на Nuxt 3: почему для крупного интернет-магазина мы выбрали рерайт, а не миграцию

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

Пять лет назад мы запустили интернет-магазин на Nuxt 2. За это время он превратился в классический монолит: вносить правки стало дорого, а сайт начал «задыхаться» под нагрузкой. Когда вышел Nuxt 3, перед нами встал выбор: пытаться оживить проект через Nuxt Bridge или переписать всё с нуля.

Мы проанализировали код и поняли: плавная миграция для нас — это путь к созданию «зомби-проекта». Слишком много фундаментальных отличий: Options API против Composition API, Vuex против Pinia, смена логики роутинга и несовместимость ключевых библиотек.

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

Внутри кейса:
4 технических «фаталити», которые делают миграцию легаси-монолита невозможной.
Архитектура FSD + Nuxt 3: как мы подружили фронтенд с бэкендом на Symfony и навели порядок в зависимостях.
Паттерн «Фабрика»: как упростить сложную логику доставки в Composition API.
Бонус: почему благодаря правильному старту недавнее обновление с Nuxt 3 до Nuxt 4 заняло у нас минимум времени, в отличие от мучений с Nuxt 2.

Если вы всё еще поддерживаете проекты на второй версии и боитесь подступиться к обновлению — этот опыт для вас.

Читать далее

CI/CD и непрерывное тестирование (управление рисками в условиях постоянных изменений)

Время на прочтение3 мин
Количество просмотров239

Я уже писал, что всестороннее тестирование является критической необходимостью для обеспечения киберустойчивости. Сейчас хотел бы показать, как этот принцип применяется в условиях, когда ИТ-системы развиваются с беспрецедентной скоростью, а изменения вносятся постоянно. Возникает парадокс: чем быстрее мы внедряем новое, тем выше риск сбоев. Аналитики отмечают, что общее количество инцидентов в критически важных сервисах неуклонно растет. Как же управлять этим "хаосом изменений" и обеспечить стабильность 24/7?

Читать далее

Как не проспать дейли: Реализуем планировщик задач внутри Python-процесса

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

В потоке кода легко пропустить дейли, забыть проверить бэкапы или закоммитить задачи перед уходом. Сторонние планировщики часто избыточны и потребляют лишние ресурсы, а самописные скрипты на while True: time.sleep() — это архитектурный тупик, блокирующий потоки и создающий временной дрейф.

В этом туториале напишем свой легковесный фоновый сервис на Python. Разберем, как отправлять нативные системные уведомления (Windows/Linux/macOS) через библиотеку Plyer, настроим гибкое расписание с помощью Schedule и научимся запускать скрипт в режиме демона без висящего окна терминала.

Читать далее

Как Python помог «разобрать» 10 000 сообщений из Telegram для суда: практическое руководство для юристов

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

Представьте: в вашем деле — 10 000 сообщений в Telegram, и суд просит показать, кто, когда и что именно писал за конкретный период. Вручную это неделя рутинной работы, море скриншотов и высокий риск пропустить важное сообщение или перепутать даты. С помощью Python и библиотеки Telethon ту же задачу можно решить за несколько минут, при этом сразу заложив фундамент для доказательства целостности данных в суде.

В этой статье разберём:

почему суды принимают переписку из мессенджеров как доказательство;

как технически выгрузить чат из Telegram с помощью Telethon;

как отфильтровать данные, рассчитать хеш-суммы и оформить результат для дела;

какие юридические риски нужно учесть и как их минимизировать.

Читать далее

Ближайшие события

Почему ChatGPT не знает ваших внутренних данных и как это исправить: простое объяснение RAG

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

Вы думаете, ChatGPT стал идеальным? Может «загуглить» любой факт, анализировать документы, даже писать код? Попробуйте спросить его про внутренние API вашей компании, корпоративные гайдлайны или правила код-ревью. Он молчит — и не зря. Ведь около 80 % рабочего времени программист тратит на поиск информации во внутренних системах.

Сегодня расскажу о технологии, которая решает эту проблему — Retrieval Augmented Generation (RAG).

Читать далее

Рецензия на книгу «Инжиниринг платформ: техническое и управленческое руководство»

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

На календаре 2025 год, и термин platform engineering прочно вошел в лексикон всех инженеров и менеджеров, занимающихся вопросами ИТ-инфраструктуры предприятий — примерно так же, как когда-то «DevOps», а еще раньше «Agile». К слову, предыдущие тренды порой превращались в модный хайп, под которым каждая компания понимала свое видение процессов разработки и развертывания. Но платформенная инженерия сегодня — это не просто набор практик, а системный ответ на тот уровень сложности, к которому индустрию привели облака, микросервисы, CI/CD, SRE и бесконечный поток обновлений в экосистемах OSS (Open Source Software, мир open-source инструментов).

Читать далее

Продуктовые метрики для аналитика данных: памятка для собеседований

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

Бывало ли, что для решения бизнес-кейса на собеседовании вам не хватило знания какой-нибудь метрики из предметной области? Это частая ситуация — например, в маркетплейсах всюду говорят про GMV, а в маркетинговой аналитике не обойтись без LTV.

Привет, Хабр! Меня зовут Рафаэль Сайфутдинов, но обычно меня зовут просто Раф. Я работаю аналитиком ценообразования в Авито (а раньше — в Яндекс Лавке), преподаю машинное обучение в Центральном университете, окончил факультет компьютерных наук в НИУ ВШЭ и прошёл курс «Специалист по Data Science» в Яндекс Практикуме. Делюсь памяткой для аналитиков — сохраните, чтобы не провалить собеседование из-за незнания продуктовых метрик.

Читать далее

StructPadding

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

Представляю свою библиотеку для обнуления байт выравнивания (padding) в unmanaged структурах.

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

Читать далее

Превратили PVS-Studio в город

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

Вы когда-нибудь хотели взглянуть на свой код под новым углом? Например, увидеть, как бы выглядела ваша кодовая база, будь она городом? Звучит как что-то невероятное. Давайте вместе заглянем в город PVS-Studio и просмотрим, какие тайны он в себе хранит :).

Читать далее

Go profiling lifecycle: от разработки до прода. Инструменты и практики

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

Ваш Go-сервис жрёт память в проде, а на тестовом стенде всё идеально?

Разбираем пошагово: как находить и диагностировать утечки ресурсов в Go-приложениях.

Что внутри:

Теория: GC, планировщик, модель памяти - минимум для понимания проблемы

Практика: pprof профили всех типов (heap, goroutine, allocs, block)

Инструментарий: как читать дампы горутин и системную диагностику

Готовые скрипты для воспроизведения и анализа утечек

Runtime tracing для сложных случаев

Реальный пример из статьи:
Зависшие горутины в одном месте -> stw паузы выросли с 1ms до 50ms -> api деградировал.

Статья построена как практическое руководство с минимумом теории и максимумом применимых техник. Во второй части - конкретные примеры утечек с кодом, production-кейс и настройка мониторинга.

Для тех, кто хочет научиться находить утечки ДО того, как они попадут в prod.

Читать далее

Чтение на выходные: «Как построить машину. Автобиография величайшего конструктора “Формулы-1”» Эдриана Ньюи

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

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

Эдриан Ньюи сейчас — управляющий технический партнер Aston Martin и акционер гоночного коллектива. Однако его путь — это уникальная хроника триумфов с командами, приведших к множеству чемпионских титулов. На протяжении своей инженерной карьеры он работал в Fittipaldi Automotive, March Engineering, Leyton House, Williams, McLaren и Red Bull Racing. О том, что сопровождало его на пути к славе, пожалуй, никто не расскажет лучше, чем он сам.

Читать далее