Обновить
1024K+

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

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

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

Clean Architecture + DDD в Go: как не превратить проект в 200 файлов ни о чём

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

Прежде чем погружаться в архитектуру, давайте посмотрим на контекст, в котором всё это происходит.

По данным исследования McKinsey 2022 года, технический долг составляет до 40% всего технологического портфеля компаний. И это не просто цифра в отчёте. Согласно опросу 2024 года среди технических руководителей, у более чем 50% компаний технический долг занимает свыше четверти всего IT-бюджета, блокируя внедрение новых функций. (Источник: vFunction, 2025)

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

Теперь о Go. По данным Go Developer Survey 2024, главной проблемой команд, работающих с Go, названо поддержание единых стандартов кода — в том числе из-за разного уровня опыта участников и привнесения не-идиоматических паттернов из других языков. (Источник: go.dev/blog/survey2024-h2-results)

Это напрямую про нашу тему: люди приходят из Java, Python, C# и приносят с собой архитектурные привычки, которые в Go не работают. Clean Architecture и DDD — не исключение. Их часто реализуют "как в Java", а потом жалуются, что Go — многословный и неудобный язык.

Давайте разберёмся, как делать это правильно.

Как мы сюда попали?

Представьте: вы начинаете новый Go‑сервис. Читаете статьи, смотрите видео, решаете «делать по‑взрослому». Создаёте структуру:

Читать далее

Как сделать SEO для телеграмм-канала и бесплатный кросспостинг в VK и MAX

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

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

Простой и бесплатный кросспостинг из телеграмм в VK и MAX.

Читать далее

Как я тестировал локально новый Qwen 3.6 и Gemma 4

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

Всем привет
! Текст полностью написан человеком !

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

Оборудование на котором тестировал (Ноутбук Asus TUF AMD Ryzen + дискретная Nvidia rtx 4070 8GB):

Читать далее

Opus 4.7 использует на 45% больше токенов. Реальные замеры против обещаний Anthropic

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

В гайде по миграции для Claude Opus 4.7 написано: новый токенайзер использует «примерно в 1.0–1.35 раза больше токенов», чем 4.6. Я замерил и получил 1.47x на технической документации, и 1.45x на реальном CLAUDE.md-файле.

Цены те же. Квоты те же. Токенов в промпте больше. Max-план сгорает быстрее. Кешированный префикс стоит дороже за каждую итерацию. Рейтлимит наступает раньше.

Значит, Anthropic что-то получили в обмен. Что именно — и стоит ли оно того?

Я провёл два эксперимента: первый измерил стоимость, второй проверил заявленные преимущества. Вот что получилось.

Читать далее

Немного про AI для догоняющих

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

Если вы слышите слова «промт», «токены» и «MCP‑сервер» и чувствуете лёгкую панику — расслабьтесь, вы не одиноки. Полгода назад мой коллега спросил меня: «А ChatGPT и искусственный интеллект — это одно и то же?». Я начал объяснять, он слушал минуту, потом сказал: «Ладно, просто покажи куда нажимать». Эта статья — для него и для всех, кто чувствует, что мир вокруг уже вовсю использует AI, а ты как‑то пропустил момент, когда это стало нормой.

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

Не хватает контекста

Пробуем использовать локальные LLM для написания кода

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

Рассмотрим альтернативу облачным моделям — локальный запуск LLM на своём компьютере.

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

Читать далее

Почему ваш AI-агент тратит 80% токенов на файлы, которые уже читал вчера — и как это починить тремя markdown-файлами

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

В прошлой статье я разобрал почему Claude Code ломает проекты (context drift, отсутствие CLAUDE.md, нет хуков на тесты) и как выстроить защиту от регрессий. Статья попала в топ-5 Хабра за сутки — видимо, проблема задела нерв.

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

Я работаю с 20+ проектами на нескольких VPS-серверах. После того как я замерил, куда реально уходит контекст — картина оказалась неприятной.

Читать далее

Деконструкция GO: CPU, RAM и что там происходит. Многозадачность, многопоточность, кэши, проблемы. Часть 1.2

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

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

В части 1.1 мы рассмотрели базовые инструкции, которые выполняет наш CPU и которыми в конечном счете и являются наши прекрасные строчки на Go. Но возникает закономерный вопрос: “Окей, мы поняли как работает на одном ядре, но Go у нас во многом про многопоточку, соответственно как это будет работать на нескольких потоках?”

Если что, то это часть большого цикла по разбору Go! Данная статья – это подводка уже к тому, с чем мы имеем дело в Go достаточно часто(барьеры памяти, атомики, сисколы)

В этот раз будет без Go Assembler, но с +- реальными примерами, если что-то непонятно будет, то на Хабре есть классный ИИ-помощник.

Читать далее

Что меня бесит в IT после 3 лет в профессии

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

После трех лет в IT меня меньше всего бесит код. Код хотя бы честная сущность. Если он сломан, он обычно не делает вид, что это часть командной культуры.

Гораздо сильнее меня начали бесить вещи вокруг разработки.

Читать далее

Кастомные WPF-контролы, часть 3: ListBox с поддержкой drag’n’drop, масштабирования и различной сортировкой содержимого

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

часть 1: стили, кнопки и переключатели

часть 2: ComboBox с фильтрацией содержимого, TimePicker, DateTimePicker

В этой статье я расскажу про разработку панели с поддержкой анимированного переноса элементов и какстомной сортировкой содержимого. Это, пожалуй, была одна из самых сложных задач, связанных с WPF контролами. Достаточно долго я не знал, с какой стороны к ней подступиться, пока не нашел несколько примеров: один на github, другой на  codeproject (оставлю ссылку, хотя сейчас сайт недоступен). В них было реализовано примерно то, что мне было нужно. Так же я нашел неплохую  статью на professorweb. Этой информации хватило, чтобы написать свой контрол с функционалом, который меня устроил.

Для реализации необходимой функциональности потребуется не один, а два контрола:

1.     ExtendedListBox - наследник от ListBox с поддержкой масштабирования

2.     DragAnimatedPanel - панель с поддержкой различных типов сортировки и drag’n’drop 

Читать далее

Rust 1.95.0: макрос cfg_select!, if-let guards в match-выражениях

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

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

Если у вас уже установлена предыдущая версия Rust через rustup, вы можете получить 1.95.0 командой:

$ rustup update stable

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

Если вы хотите помочь нам, тестируя будущие релизы, попробуйте локально переключиться на beta-канал (rustup default beta) или nightly-канал (rustup default nightly). Пожалуйста, сообщайте о любых найденных ошибках!

Что вошло в стабильный 1.95.0

Rust 1.94.0: метод array_windows у массива, ключ include в конфигурационных файлах, поддержка TOML 1.1

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

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

Если у вас уже установлена предыдущая версия Rust через rustup, вы можете получить 1.94.0 командой:

$ rustup update stable

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

Если вы хотите помочь нам, тестируя будущие релизы, попробуйте локально переключиться на beta-канал (rustup default beta) или nightly-канал (rustup default nightly). Пожалуйста, сообщайте о любых найденных ошибках!

Что вошло в стабильный 1.94.0

Axios и проблема зависимостей

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

Как взлом одного npm-аккаунта за 3 часа распространил RAT на 174 000 пакетов и почему стандартные инструменты вроде NPM Audit это не поймали. Разбираем инцидент с Axios: механику атаки, слепые пятна в CI/CD и то, что реально работает.

Читать далее

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

Зачем нужны языки квантового программирования и какие открытые проекты развиваются в этой области уже сейчас

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

ИТ-компании продолжают выпускать чипы со все большим количеством кубитов в надежде прийти к полнофункциональному квантовому компьютеру. Однако работа с таким железом требует особого подхода, поэтому появляются специализированные языки квантового программирования. Сегодня мы в Beeline Cloud расскажем о нескольких таких проектах: Qrisp, Silq, Qutes, cQASM и Quantica — и зачем они нужны.

Читать далее

Руководство по анализу и настройке производительности для современных процессоров. Анонс книги

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

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

Хотим поделиться с вами новостью о том, что завершаем более чем годичный фундаментальный проект - готовимся к выпуску русского издания знаменитой книги Дениса Бахвалова "Performance Analysis and Tuning on Modern CPUs: Learn to write fast software like a pro". Денис теснейшим образом взаимодействовал с нашими редакторами, мы составили глоссарий к русскому изданию и уверены, что книга на долгие годы станет де-факто главным пособием по оптимизации производительности CPU. Книга выросла из многочисленных практических исследований, которыми Денис занимается в компании "Intel", и в качестве анонса мы хотим предложить вам перевод статьи автора, которая вышла ещё в 2019 году и может считаться рассказом о том, как зародилась идея будущей книги. В тексте под катом содержатся многочисленные ссылки на статьи Дениса из блога https://easyperf.net/notes/, который также рекомендуем пристально изучить. Русскую книгу ждите в мае. Далее - от автора.

Читать далее

Управление агентом с телефона через Telegram теперь в KodaCode

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

Все популярные агенты движутся в одну сторону: управление ими должно быть максимально удобным и естественным. Голосовой ввод появился в ведущих зарубежных решениях, как и remote control, который несколько недель назад стал доступен в Codex и Claude Code. В этом релизе мы добавили обе возможности в KodaCode. Разберём по порядку.

Читать далее

Вайбдебаггинг — уже реальность? Мы дали ИИ-агенту отладчик и проверили

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

В конце прошлого года Cursor выпустил Debug Mode — режим, в котором агент может собирать логи из рантайма, чтобы лучше понимать причины багов. Судя по реакции на Reddit, идею приняли с интересом.

Но что, если пойти более прямым путём? Дать агенту «руки», чтобы он отлаживался так же, как это делает разработчик: ставил брейкпоинты, ходил по ним, выполнял evaluate expression? Этим вопросом недавно задались исследователи из Microsoft Research и сделали экспериментальный фреймворк Debug2Fix. Субагент, оснащённый инструментами для взаимодействия с отладчиком, разбирался с багами из датасетов GitBug-Java и SWE-Bench-Live на 20% лучше, чем обычный агент без таких инструментов.

Если агент уже интегрирован с IDE, естественно дать ему доступ к полноценному дебаггеру, когда он так близко. Тем более что этим занимаются даже в Microsoft. Поэтому в недавнем релизе своего ассистента для IntelliJ мы добавили Debug Agent, позволяющий агенту взаимодействовать с дебаггером в среде разработки.

Сегодня попробуем починить реальный баг с помощью агента с инструментами дебаггера в IDE и Cursor в Debug Mode и проверим, действительно ли ИИ нужен полный доступ к отладчику или достаточно и хорошего логгирования.

Читать далее

50% пишу и удаляю код, 40% объясняю, что таблица – это не эксель, 10% жду логи

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

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

Читать далее

JUnit 5 Extensions (часть 2): пишем умные data-провайдеры и DI-контейнер на Kotlin

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

"Скоро сказка сказывается, да не скоро дело делается" - говорится в народной пословице. Вот и мы решили не спешить со второй частью статьи по Junit 5 Extensions, а подойти к ней более основательно! Статья будет полезна QA-автоматизаторам, которые хотят глубже понимать работу с расширениями и выжать чуть больше из связки Kotlin + Junit5. Мы пройдем путь от простой реализации condition-выполнения тестов и источников данных для параметризованных тестов до реализации расширения Микро-DI с рекурсивной инъекцией зависимостей.

Как и в прошлой статье, сделаем акцент на практической части реализации расширений для JUnit 5. В качестве языка - Kotlin. Поэтому, достаем бутерброды, наливаем пиво кофе и приступаем!

Читать далее

Почему твой Open Source проект не замечают?

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

Вы сделали open source проект. Потратили на него недели или даже месяцы: продумали архитектуру, аккуратно написали код, добавили нужные фичи. Даже сами начали им пользоваться.
А потом открыли GitHub… и ничего не произошло. Ни пользователей. Ни обсуждений. Ни pull request’ов. Иногда даже звёзды не появляются.

И в этот момент возникает вполне логичный вопрос:
“Что не так?”

Разбираем, что мешает проектам получать пользователей и контрибьюторов, и как это изменить.

Читать далее