Обновить
1059.15

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

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

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

Gossip-оператор для Kubernetes вместо централизованных контроллеров

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

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

Все мы привыкли к операторам Kubernetes с их паттерном leader election. Один под становится лидером, остальные молча ждут своей участи в тени, обрабатывая события только через его призму. Надежная схема? Безусловно. Но что, если я скажу, что можно создать оператор вообще без единой точки отказа, где каждый под равен друг другу, а координация действий происходит через механизм слухов, gossip-протокол? Звучит как ересь? Возможно. Но это работает.

Подробнее о реализации

ДРАКОН + ИИ: быстрый путь от идеи до работающего кода

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

Дружелюбный русский алгоритмический язык, который обеспечивает наглядность сокращенно ДРАКОН — визуальный язык, созданный в СССР для космической программы «Буран». Его разработали для задач высокой ответственности, где ошибка недопустима. Основная цель ДРАКОН — сделать логику однозначной и понятной. Сегодня мне кажется, что ДРАКОН может обрести новую жизнь благодаря искусственному интеллекту. Я не встречал статей о его применении с ИИ, и поэтому решил написать об этом.

В этой статье я разберу практический кейс: от простого алгоритма до готового кода через JSON-представление и проверку логики. Задача будет элементарной, но цель — показать смысл такого подхода. В конце статьи приведу пример из сферы, не связанной с программированием и мы разберём его на примере работы с ДРАКОН.

Читать далее

Регулярная катастрофа и как её избежать. Подход к регулярным выражениям

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

Салют, Хабр!

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

Читать далее

Разбираемся с DDD: как проектировать доменный агрегат, чтобы он не стал безразмерным

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

Последние 4 года я занимаюсь реализациейпроектов на PHP по DDD, используя слоистую архитектуру. Каждый раз я сталкиваюсь с одной из самых насущных проблем DDD: определение границ агрегата. Ведя разработку «как удобно», очень легко не заметить, как вся бизнес логика сосредоточилась в один «божий класс».

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

Читать далее

QUIC наконец-то приходит в Node.js: не прошло и 5 лет

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

Команда JavaScript for Devs подготовила перевод статьи о долгом пути протокола QUIC в Node.js. Четыре года сообщество ждало, пока OpenSSL откроет нужные API — и вот, с выходом версии 3.5, это наконец случилось. Уже в Node.js 25 ожидается первая реализация QUIC — шаг, к которому проект шёл почти полдесятилетия.

Читать далее

Топ-10 лучших бесплатных нейросетей, которые сильно упростят вашу жизнь

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

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

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

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

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

Приятного чтения!

Читать далее

Как LLM помогают ученым

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

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

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

Под катом ― о том, как AI4Science выглядит сегодня, почему всю науку нельзя отдать на откуп LLM и в какой форме они наиболее полезны.

Читать далее

Платформа конструктора продуктов для страховой компании — как автоматизировать процессы при запуске

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

Всем привет, на связи Дмитрий Иванов, технический директор ВебРайз. В последнее время несколько раз сталкивались с типовой задачей в страховом секторе – необходимо разработать продуктовый каталог для страховой компании, с возможностью быстрого создания продуктов - конструктор продуктов, каталог справочников НСИ, калькулятор расчетов и страховой премии, фронт для онлайн продаж и, желательно, постпродажное обслуживание.

Читать далее

Группировка сабтестов в Go: от простого к сложному

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

Команда Go for Devs подготовила перевод статьи о том, как правильно группировать сабтесты в Go. Автор показывает, что в большинстве случаев достаточно держать тесты плоскими, а когда нужна разная инициализация и очистка — добавить лишь один уровень вложенности. В статье разбираются плюсы и минусы разных подходов: от ручных t.Run до reflection-хаков и сторонних библиотек.

Читать далее

Виртуальные потоки в Java: эволюция, практика, подводные камни

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

Привет! Меня зовут Денис, я руковожу группой R&D в Naumen Service Management Platform. В этой статье — разбор виртуальных потоков (VT) в Java: почему исторически обычные потоки упирались в I/O, как и зачем появились виртуальные потоки, что пошло не так в Java 21, что исправили в JDK 24–25, а также когда виртуальные потоки необходимы, а когда — лучше от них отказаться.

Читать далее

Function Object — как основа бизнес логики приложения

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

В предыдущей статье "Адаптированный паттерн Command с использованием Dependency Injection", я описывал как инкапсуляция логики приложений в отдельные объекты-функции позволяет получить преимущества в архитектуре приложений.

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

Эта статья пытается исправиль допущенную автором ошибку.

Статья является дополнением к предыдущей.

Читать далее

Chonkie: революция в RAG-чанкинге — скорость, лёгкость, удобство

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

В эпоху, когда большие языковые модели (LLM) становятся всё более мощными и применяются во многих задачах, одна из ключевых проблем остаётся прежней — как эффективно снабжать их релевантным контекстом. Одним из популярных решений является подход RAG, где качество итогового ответа зависит от целого ряда факторов, одним из которых является качественное чанкирование исходных текстов. Сегодня мы рассмотрим одно из новых и интересных решений.

Всем привет! Меня зовут Вадим, я Data Scientist в компании Raft. В этой статье я расскажу о Chonkie — библиотеке для простого и быстрого чанкирования документов, а также на практике применю её и сравню с другими популярными решениями: LangChain и LlamaIndex.

Читать далее

Слёзы, баги и C++: как Isaac стал легендарной игрой

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

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

Помню, как впервые запустил The Binding of Isaac: стартовая комната без подсказок, закрытые двери, на миникарте пусто. Пара забегов и у меня уже список технических вопросов по генерации этажей, приоритетам предметов, поведению врагов, рендеру и производительности. В тот момент я решил написать эту статью.

Сегодня я расскажу о разработке культовой инди-игры The Binding of Isaac и разберу технические нюансы: путь от Flash к C++, как собирается план этажа, как устроены большие комнаты и секретки, по каким правилам живут эффекты предметов и их синергии, как Lua-скрипты встраиваются в движок для модов, где в архитектуре сделаны осознанные компромиссы.

Читать полную историю

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

Как я искал работу бэкенд разработчика с одним годом опыта. Мысли, эмоции, статистика

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

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

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

Читать далее

Много спрашиваю и откладываю встречи на последний момент: мой опыт прохождения собеседований

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

Любое собеседование — это стресс, особенно если ты джун без опыта в небольшом городе. Никто не застрахован от неудачных интервью, токсичных работодателей и собственных провалов. К счастью, всё это можно пережить.

Привет! Меня зовут Ярослав, я бэкенд-разработчик в компании «Синимекс» и ревьюер на курсе «Java-разработчик» в Яндекс Практикуме. Я расскажу, как проходил первые собеседования и что помогло мне получить офферы после двух интервью из трёх.

Читать далее

Плагины на C# без рантайма: NativeAOT-экспорт и вызов из Rust/Python

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

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

Наткнулись на задачу: нужен плагин на C#, который можно грузить как обычную C-библиотеку без CLR и JIT, а вызывать из Rust и Python. Без обвязок, без CoreCLR-хостинга и прочего. Чистый C ABI, нормальные строки, предсказуемые структуры, обработка ошибок и нулевой JIT-прогрев. Это как раз случай для NativeAOT: компилируем библиотеку в нативный .dll/.so/.dylib, экспортируем функции через [UnmanagedCallersOnly], а дальше живём как с любой C-библиотекой. Нюансов хватает: что экспортируется и как назвать символ, как договориться по ABI, что делать со строками UTF-8, как возвращать ошибку, как освобождать память снаружи, почему исключения нельзя проталкивать за границу, и в каком месте «cdecl» реально что-то значит.

Ознакомиться с примером NativeAOT

Что нового в JUnit 6: ключевые изменения и улучшения

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

Спустя восемь лет после JUnit 5 выходит новая версия популярного фреймворка. JUnit 6 — это не просто обновление, а переход к современной экосистеме Java и Kotlin. В новом переводе от команды Spring АйО узнаем, что новая версия требует Java 17+, унифицирует версии компонентов, удаляет deprecated API и внедряет поддержку JSpecify для строгого null-safety.

Читать далее

std::simd: шаблоны векторизации без intrinsics в C++

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

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

Векторизация в C++ давно живёт на двух этажах. Внизу автоворожбы компилятора: достаточно аккуратно написать цикл, и при нужных флагах он соберёт SIMD-инструкции сам. Наверху низкоуровневые intrinsics, где вы контролируете каждый shuffle и predication, но платите за это портируемостью и временем на поддержку. Между ними появился удобный этаж: std::simd. Он даёт вам явные векторные типы и операции без прыжков по AVX/NEON-интринсикам и при этом остаётся переносимым. В 2025 году картина такая: полноценный std::simd принят в стандарт C++26, а использовать в проде уже сейчас можно std::experimental::simd из Parallelism TS v2, которая есть в libstdc++ (GCC 11+) и постепенно доезжает до остальных реализаций. Для чтателя это означает простую вещь: сегодня пишем под <experimental/simd>, а миграция на <simd> будет механической.

Посмотреть разбор

В поисках идеального стека для Enterprise проектов: почему Java плюс MACH

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

На протяжении многих лет команда Compo Soft успешно создавала eCommerce‑решения, клиентские порталы, PIM‑системы и другие решения малого и среднего бизнеса. Для этих задач было достаточно привычного стека на PHP и связанных с ним технологий. Когда в 2018 компания приняла стратегическое решение о выходе в сегмент Enterprise — встал вопрос о новом стеке. Им стала Java. В этой статье решили поделиться своим пониманием и опытом — почему сделан такой выбор, и почему PHP «не вывозит» Enterprise‑решения.

Читать далее

Эволюция языков программирования

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

История о том, как стремление человека управлять сложностью меняло сами основы программирования.

Перед тем как перейти непосредственно к языкам программирования, мне очень хочется осветить одно событие.

Итак, перенесёмся в далёкий 1843 год.

Читать далее

Вклад авторов