Обновить
1024K+

Программирование *

Искусство создания компьютерных программ

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

WebSocket на Go: от эксперимента до production-ready решения

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

Когда речь заходит о WebSocket, многие думают: «Ну это же просто протокол для real-time связи, что там сложного?»

А потом начинаются вопросы:

Почему соединения рвутся через минуту?
Как настроить таймауты между клиентом, прокси и сервером?
Какую библиотеку выбрать — и почему это вообще важно?
Как масштабировать и балансировать stateful-соединения?

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

В этой статье - практический эксперимент: как создать и протестировать WebSocket-сервис на Go, Nginx и Docker, способный держать десятки тысяч одновременных соединений.

Читать далее

Детские книги про данные, логику и визуализацию

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

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

Давайте покажу вам самые занятные мои находки, сгруппирую их по темам и отсортирую по рекомендуемым возрастам.

Читать далее

История одного безальтернативного переезда. Почему мы выбрали OpenIDE

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

Всем привет! Сегодня я расскажу, как мы переводили наши Java-команды на новые рельсы.

Проблема:

В прошлом год стало ясно, что покупать лицензии Intellij IDEA проблематично. Предложения с ресурсов вроде «Авито»выглядели сомнительно и небезопасно. И российский рынок разработки очень плотно занялся переездом на свои решения, заказчики требовали использовать сертифицированное по местным реалиям ПО и все такое прочее. О переезде на новую среду не говорил разве что кто-то совсем уж ленивый.

С чего мы начали:

Изучив заново рынок, мы (я и другие лиды, которым на плечи легла эта ноша) стали анализировать доступные решения. Пишем мы чаще всего, используя Spring Framework и технологии около него, хотя иногда и вынуждены адаптироваться к конкретным пожеланиям заказчика и рекомендуемым им технологиям. Но фокус-группа акцентировала внимание вокруг Spring.

Читать далее

Open source — это про людей. Как из зернышка прорастает дерево

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

Привет, Хабр! Я Максим Коробов, 12 лет работаю в Т-Банке и занимаюсь клиентскими интерфейсами для физических лиц. Все, что фронт, желтое приложение или интернет-банк, — в моей зоне ответственности.

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

Читать далее

AI-агенты, управляемые BPMN, убьют веб-формы

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

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

В статье предлагается решение: не отпускать ИИ в свободное плавание, а поставить его на службу и направить с помощью BPMN (Business Process Model and Notation).

Читать далее

Ускоряем инференс в Python с ONNX

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

Привет! Если у вас когда‑либо был опыт деплоя нейросетки, вы знаете, что обучение — это полдела, а вот добиться шустрого инференса — целое искусство. Часто обученная в PyTorch модель дает замечательные метрики, но стоит попытаться запустить её в приложении начинаются всякие проблемки.

Одно из решений, которое часто выручает — ONNX и ONNX Runtime. Если эти буквы для вас пока ничего не значат — не беда, сейчас разберёмся что к чему. А если вы уже слышали про ONNX, то, возможно, задавались вопросом: «А реально ли ускорить инференс, заморочившись с этой технологией?» Еще как!

Ускорить инференс

Chrome DevTools — не панацея. Что умеет Firefox

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

Бьюсь об заклад вы привыкли к инструментам разработчика в Chrome. Ежедневная проверка вёрстки, просмотр логов или анализ загрузку страницы делается на автопилоте. Но что если есть альтернатива, которая в некоторых моментах работает иначе и часто даже лучше?

Инструменты разработчика в Firefox создавались отдельно и имеют свою историю. Их команда не ставила задачу сделать копию Chrome. Вместо этого они сфокусировались на своих идеях о том, как сделать отладку более наглядной. В результате некоторые вещи там реализованы более прямолинейно и понятно. Конечно, не всё идеально, и у Chrome есть свои преимущества. Об этом сегодня и поговорим.

В этой статье мы посмотрим на Firefox DevTools в деталях. Отойдем от банальных соревнований в стиле «у кого DevTools длиннее». Вместо этого разберем, в каких ситуациях панель Firefox может сэкономить вам время, а в каких всё же удобнее остаться в Chrome. Откроем для себя несколько приёмов, которые можно добавить в свою ежедневную работу, независимо от браузера.

Читать далее

XDP + Jenkins: высокоскоростной фильтр по TLS-отпечаткам

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

В период массового импортозамещения средств защиты от DDoS один из провайдеров перевёл свои центры очистки трафика на отечественное решение. Помимо стандартной защиты на уровне L4, провайдер позиционировал его нам как эффективную защиту от L7-атак за счёт механизма фильтрации по TLS-отпечаткам (тогда это был ещё JA3). Однако на практике мы показали, что рандомизация параметров отпечатка (cipher suites, extensions, порядок) позволяет обойти этот механизм и существенно снижает его эффективность против L7-атак. Стоит ли использовать механизмы защиты по отпечаткам JA3/JA4, зная о возможности обхода? Да, стоит. Процесс обхода требует от атакующего значительных ресурсов — кастомного TLS-клиента для генерации уникальных отпечатков. При дополнительной настройке, например, добавлении счётчика с разными лимитами для новых и известных отпечатков (более высокие лимиты для «белых» отпечатков), можно добиться высокой эффективности против ботовых L7-атак (флуд от ботов с повторяющимися отпечатками).

 В этой статье мы реализуем защиту на основе фильтрации TLS-отпечатков, вдохновлённую подходом JA4, но в упрощённой версии FST1 (по отсортированным cipher suites с использованием Jenkins-хэша). Почему не полноценный JA4? Из-за жёстких ограничений eBPF (ограниченный стек, запрет на сложные циклы, отсутствие динамической памяти и строгие правила верификатора ядра) реализация полного JA4 (с учётом всех расширений, ALPN и других параметров) становится крайне сложной.

Читать далее

Интерактивная поздравительная открытка на JavaScript

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

Наверное, каждый из нас ловил себя на мысли: что отправить на день рождения в этот раз? Просто текст, тёплую фотографию или голосовое сообщение? И сразу вспоминается это чувство, когда ищешь или обдумываешь креативный текст, а потом вспоминаешь о милой картинке с котиком, гифке с шампанским или стандартном «С ДР!» — и отправляешь, чисто для галочки.

Со временем я заметил: когда получаешь такое поздравление в Telegram, становится немного грустно, что человек хоть и поздравил, но не потратил время на то, чтобы обдумать и искренне пожелать чего-то хорошего и уникального только про тебя. Хотя понимаешь — это нормально. Поколение постарше привыкло обмениваться этими милыми, но безликими посланиями. Хотя не все делают это из-за нежелания — некоторым просто понравилась картинка, вот и скинули.

Читать далее

Zod: строгая валидация и удобная типизация. Опыт перехода

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

Привет, Хабр! Меня зовут Сергей, я фронтенд-инженер в Банки.ру.

В этой статье расскажу, как Zod помог нам перестать писать валидацию на уровне полей, подружился с React Hook Form и стал единым источником правды о структуре данных.

К Zod мы пришли не сразу. Долгое время типы и валидация у нас жили в разных слоях приложения: TypeScript определял структуру данных во время разработки, а отдельные функции или библиотеки (вроде Yup) проверяли входящие значения в рантайме.

Это классическая проблема: дублирование логики и рассинхрон. Типы в interface поменялись, а валидация осталась прежней (или наоборот). Мы пробовали Yup, но он казался громоздким в связке с TS: типы приходилось выводить вручную или мириться с тем, что схемы выглядят непрозрачно. В какой-то момент стало непонятно: зачем тащить отдельную библиотеку, если проще написать if (typeof x === 'string')?

С переходом на Zod всё стало значительно проще: одна схема одновременно является и валидатором, и источником типа данных.

Читать далее

Ксаверий, Терминус и языковые модели против кодировщиков

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

Оригинал заметки

Прогнозам о вымирании профессии программиста чуть меньше лет, чем самой профессии. Первые смелые предположения появились еще в конце 1950-х, вместе с распространением Кобола и Фортрана. Программисты в машинных кодах постепенно стали программистами на языках высокого уровня. Новый стандарт Фортран-2023 (ISO/IEC 1539-1:2023) был принят сообществом в прошлом году.

Читать далее

Как мы автоматизировали чанкование для RAG в Gramax: от прототипа до 95%+ точности

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

Недавно на Хабре вышла статья про создание RAG-системы для строительных ГОСТов. Команда Цифрового стандарта проделала титаническую работу — полгода вручную разбивали документы на смысловые чанки. Респект за настойчивость и результат.

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

Всем привет, меня зовут Дима, я делаю ИИ-функции в Gramax. Эта статья для тех, кто сейчас воюет с чанками вручную или пытается найти оптимальный подход. Делимся нашим путем от быстрого прототипа до продакшен-решения с метриками 90%+.

Читать далее

Планировщик Go

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

Эта статья посвящена языку программирования Go 1.24, работающему на Linux на архитектуре ARM. Она может не охватывать специфические для других операционных систем (ОС) или аппаратных архитектур детали.

В этой статье подробно рассматриваются следующие вопросы:

Компиляция и среда выполнения Go
Примитивный планировщик
Улучшение планировщика
Модель GMP
Начальная загрузка программы
Создание горутины
Цикл планирования
Поиск готовой к выполнения горутины
Вытеснение горутин
Обработка системных вызовов
Сетевой и файловый ввод-вывод
Работа netpoll
Сборщик мусора
Общие функции
API среды выполнения Go

Читать далее

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

SSR vs CSR vs гибрид. Сравниваем подходы к рендерингу страниц Django-приложения

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

Решил один мой коллега (не разработчик) заняться пет-проектом: создать платформу с элементами соцсети и встроенным картографическим плагином. И вот приходит этот коллега ко мне с вопросом по части фронтенда: «А как бы мне отрендерить страницы: на сервере или на клиенте?», описывая то решение, которое он уже сделал и которое в целом работает.

Что ж. Меня зовут Андрей, я фронтенд-разработчик в Selectel. В этой статье я расскажу и покажу, какие виды рендеринга веб-страниц существуют и в каком случае лучше использовать тот или иной подход. Разберем все это дело на примерах. Сперва пройдемся по теоретическим основам, а затем — по практике. Если так сложилось, что и вас жизнь привела к подобным фронтендерным запросам, но должного опыта еще нет, добро пожаловать под кат.

Читать далее

Приложение на Go шаг за шагом. Часть 4: отправка сообщений об ошибках

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

Привет! Я Владислав Попов, автор курса «Go-разработчик с нуля» в Яндекс Практикуме. В серии статей я хочу помочь начинающим разработчикам упорядочить знания и написать приложение на Go с нуля: мы вместе пройдём каждый шаг и создадим API для получения информации о книгах и управления ими. 

На данном этапе наш API отправляет хорошо отформатированные JSON-ответы на успешные запросы, но если клиент отправляет некорректный запрос или в приложении что-то идёт не так, он получает текстовое сообщение об ошибке из функций http.Error() и http.NotFound(). В этой статье мы исправим это, научив API отправлять все ответы, включая ошибки, в формате JSON.

Читать далее

Посадка на Луну

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

Пилотируемая высадка на Луне, запланированная в миссии Artemis III, увы, официально перенесена на 2028 год. NASA столкнулась с эрозией покрытия в ходе миссии Artemis I. К этому добавились задержки Axiom Space со скафандрами AxEMU и технологическая сложность Starship HLS. Последнему необходимо отработать схему для перекачки криогенного топлива на орбите и выполнить беспилотную тестовую посадку.

В статье я постарался разобрать азы теории оптимального спуска, написал скрипт посадки на PowerShell, проанализировал спуск LM-5 Eagle, пилотируемого Нилом Армстронгом, и применил современный метод оптимизации управления G-Fold.

Читать далее

Как оптимизация промптов превратилась из шаманства в инженерную дисциплину

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

Ещё пару лет назад промпт-инжиниринг выглядел как подбор удачного заклинания: "а давай добавим think step by step, "а давай попросим быть аккуратнее" и о приправим xml-тегами".

Сегодня это типовая задача оптимизации в условиях чёрного ящика.

Уже 2026 год и современные LLM одновременно:

Читать далее

Telegram BOT API 9.4: цветные кнопки и премиум эмодзи

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

Всем привет!

Сегодня Telegram выкатил Bot API версии 9.4. На первый взгляд обновление кажется небольшим, но оно кардинально меняет подход к визуалу ботов. Наконец-то мы получили инструменты для нормального UX/UI дизайна!

Давайте разберем, что нам приготовил Павел Дуров и команда в этот раз.

Если вам интересны подобные материалы, подписывайтесь на Telegram-канал «Код на салфетке». Там я делюсь гайдами для новичков, полезными инструментами и новостями.

Читать далее

Agent Skills vs MCP: разбираемся на примере Antigravity

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

Разбираемся с Agent Skills — подходом, который решает проблему разрастания контекста в агентных IDE. Речь пойдёт о том, почему загрузка всех инструментов сразу вредит качеству рассуждений, как Skills отличаются от MCP, Rules и Workflows, и как использовать их на практике в Google Antigravity, чтобы агент делал ровно то, что нужно, и ничего лишнего.

Читать далее

Тестирование в спортивном программировании: приемы и советы

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

Разберем самые популярные и удобные способы тестирования в спортивном программировании: Стресс-тесты, дебаггеры, проверка граничных условий. Обсудим, что делать, когда вердикт вашего решения WA или TL.

Читать далее