Обновить
1024K+

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

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

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

От Qt5Multimedia до QtAVPlayer

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

Во времена, когда Nokia владела Qt, инженеры были отважнее. Они разработали и релизнули QMediaPlayer в Qt5Multimedia для проигрывания медиа файлов на основе подгружаемых плагинов. Архитектура позволяла сначала выпустить API, а реализацию конкретного бекенда добавить позже. Поэтому API уже существовал даже там, где полноценного воспроизведения видео ещё не было.

С учётом того, что публичный API нельзя изменить или удалить в мажорной версии, кто готов проделать такое еще раз?

Этот подход породил интерфейсы, часть функционала которых не так работала или полностью отсутствовала на некоторых платформах.

Читать далее

Новости

Мощный ИИ агент в 16гб VRAM

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

Недавно я обновил свою видеокарту до RTX-5060-TI 16GB. Получив новую карту я решил исследовать, что можно на ней запустить из нейросетей. Традиционно пишут, что нормальные ИИ модели начинаются с rtx3090 и выше, что ниже 24GB VRAM жизни нет. В этой статье я постараюсь развеять этот миф.

Читать далее

Книга: «Предметно-ориентированное проектирование. Модернизация легаси-систем и снижение рисков с помощью DDD»

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

Привет, Хаброжители! В мире, где большинство компаний вынуждены поддерживать сложные легаси-системы, главная проблема — не написать новое ПО, а превратить запутанный «большой комок грязи» в устойчивую, гибкую и понятную архитектуру.

Книга «Предметно-ориентированное проектирование» Каролы Лилиенталь и Хеннинга Швентнера — практическое руководство по предметно-ориентированной трансформации легаси-систем. Авторы предлагают проверенный метод, сочетающий DDD, совместное моделирование, оценку архитектуры и пошаговые рефакторинги.

Читать далее

Что КОМПАС-API может рассказать о 3D-модели: от данных к классификации

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

Мы привыкли, что человек распознаёт тип детали почти мгновенно — вал, плита, корпус. Но можно ли передать это умение алгоритму, не загружая его тяжёлыми нейросетями и не превращая модель в картинку?
CAD-система уже хранит внутри модели множество числовых характеристик: от объёма до моментов инерции. И если правильно их извлечь и осмыслить, они становятся тем самым «цифровым отпечатком», который позволяет ускорить, классификацию и искать аналоги без сложного машинного зрения. В этой статье разберём, какие данные даёт КОМПАС-API, что физически стоит за каждой цифрой и как из сырых чисел рождается основа для инженерных решений.

Читать далее

А чё, так можно было? Порядок полей = 1,8× к скорости

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

Класс без единого поля занимает 24 байта, с двумя полями int — те же 24, а с тремя — уже 32.

В структуре достаточно поменять местами два поля, и её размер уменьшится с 24 байт до 16, а обход массива ускорится в 1,8 раза.

Читать далее

Велосипед для покрытия: когда стандартные инструменты не справляются

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

Что делать, когда есть вполне стандартная задача, но популярные инструменты не могут ее решить? Правильно, время - изобретать свой велосипед.

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

Видим, что нам необходимо проверять на покрытие именно сущности, а не ветвление, сценарии или код, как это делают, допустим, coverage.py или pytest-cov

Читать далее

Маршрутизация электромобилей с учётом внешних условий и зарядных станций

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

Всем привет!

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

Читать далее

Обвязка вокруг модели даёт столько же, сколько сама модель: разбираю харнесс по слоям

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

Каждую неделю выходит новая модель, и каждую неделю кто-то пишет «наконец-то пишет код как сеньор-помидор». Потом ставишь её себе, и через день она удаляет тест, который мешал, или трижды переписывает один файл, не заметив, что уже сделала. Модель та же, что в обзоре. Отличается всё остальное.

Это остальное называется harness, обвязка: контекст, инструменты, песочница, проверки, память, правила. На неё редко смотрят, потому что она не выходит релизами и не попадает в заголовки. А зря: один и тот же GPT-5.5 в двух обвязках даёт 61,5% и 87,2% на одном бенчмарке, а на Claw-SWE-Bench смена обвязки двигает результат почти так же, как смена модели: 29,4 п.п. против 27,4.

Разобрать обвязку по слоям

Как можно плохо сделать маленький тест если ты — большая компания? А вот же:)

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

Когда рекламный баннер «Пройди Тест по Go от Selectel» всплыл уже четвертый раз за день — я сдался. Нажал и пошёл проходить тест — несмотря на аннотацию уровень оказался очень «базовым» так что через несколько минут я завершил его всего с одной ошибкой.

Это событие не стоило бы упоминать — но «впечатлило» оформление и воплощение теста — как можно видеть ниже — из‑за неаккуратности составителей даже и ответ где‑то иной подходит. Попытался об этом написать приватно, почтой — но, кажется, безуспешно. Может заметку на Хабре заметят быстрее?

Читать далее - тут не много...

Больше инструментов богу инструментов. И меньше времени на саму работу?

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

Что мы увидим, если посмотрим на монитор разработчика в разгар рабочего дня? Там наверняка будет открыта IDE, Git, таск-трекер, документация, корпоративный мессенджер. И еще какая-нибудь мелочевка — в зависимости от того, что принято в команде.

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

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

В Stack Overflow Developer Survey 2025 разработчиков впервые попросили посчитать, сколько отдельных инструментов они используют в работе. Из 27 378 ответивших 54% назвали шесть и более приложений или платформ. Операционная система и браузер в этот подсчет не входили. Для сайд-проектов картина оказалась несколько другой —  65% из 25 391 разработчика используют пять инструментов или меньше.

Согласитесь, шесть инструментов — не так уж много. Особенно если учесть, что речь, вообще-то, идет про современную разработку.

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

Читать далее

А чё, так можно было? +1 ключ = ×12 к скорости

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

В словарь добавляют 101 ключ — поиск занимает 8 763 наносекунды. Добавляют 102-й — 718.

Ключей стало больше, а времени в 12 раз меньше. Разбираемся, что происходит на 102-й вставке.

Читать далее

А чё, так можно было? new ≠ память

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

В .NET есть метод, который всегда возвращает false. Есть очистка списка, которая ничего не очищает. И есть new, после которого в куче пусто.

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

Читать далее

Красная королева в Core War: как LLM сражался с 317 человеческими воинами

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

Core War — культовая игра, где коды сражаются друг с другом. С приходом LLM она получила новую жизнь: исследователи из Sakana AI и MIT создали эволюционную стратегию для ИИ-воинов. Разбираем, как это работает.

Читать далее

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

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

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

У нас есть скрипт, который каждый день просит Google переиндексировать свежие страницы двух сайтов через Search Console — вручную по одному URL это бы никто не тянул, а сайтов и статей достаточно, чтобы запускать это руками было бы отдельной работой. 3 сентября я посмотрел в лог и увидел: за прогон дошло 59 проверок по доставке и 4 отказа «превышена квота», а адреса avitoma, помеченные как приоритетные в gsc_pinned.txt, за сутки не отправились ни разу. Не «отправились с опозданием» — ни разу, вообще.

Читать далее

Как защитить платежный API от двойных списаний с помощью идемпотентности

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

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

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

Читать гайд

Как я превратил статус-лайн Claude Code в тренажёр ПДД за 60 строк bash

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

Строка внизу терминала Claude Code показывает модель, ветку и проценты контекста. Я на неё смотрю сотни раз в день, пока агент думает. В какой-то момент стало жалко: такое внимание, а тратится на информацию, нужную дай бог раз в час. Заменил их на билеты ПДД и очередь непрочитанных статей. Ниже, как это устроено и что ещё туда кладут люди.

Читать далее

Spring Data JDBC: Укрощение Строптивого

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

Каждый Java разработчик в том или ином виде сталкивается с проблемой выбора инструментария для работы с БД. Если говорить про ORM-ы, то выбор у нас невелик: Spring Data JDBC или Hibernate. И тут часто возникает набор вопросов:

- Когда выбирать Hibernate, а когда Spring Data JDBC?

- Как дизайнить Aggregate-ы в Spring Data JDBC?

- Что из DDD просто теория, а что реально важно на практике? и т.д.

Мы оттекстовали доклад Михаила Поливаха с прошедшего Spring I/O Barcelona. В докладе обсуждаются все эти и многие другие вопросы, с которыми часто сталкиваются люди при проектировании доменной модели в целом.

Будет полезно, если присматриваетесь к Spring Data JDBC или уже используете его и накопили вопросы.

⚠️ А если хочется глубже погрузиться в разработку реальных приложений, у нас в Академии скоро стартует новый поток «Java в продакшене». 

Читать далее

Рантайм показывает ту же память, а под убивают по OOM: пять ошибок под лимитами cgroup

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

Go показывает стабильную память, heap-профиль молчит, а Kubernetes всё равно убивает под по OOM. Разберём, откуда берётся это расхождение, как на поведение под лимитами влияют cgroup, GOMAXPROCS и GOMEMLIMIT и что изменилось в последних версиях Go.

Разобрать причины

Шаблоны против статической рефлексии в C++: пять операций, две реализации и дедупликация, которая не стоит памяти

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

Одна и та же операция — дедупликация списка типов — написана двумя способами: на шаблонах и на статической рефлексии из C++26. Обе реализации живут в одном дереве и проверены на идентичность результата, поэтому их можно честно вычесть друг из друга. Получилось так: шаблонная версия съедает 7,9 ГиБ памяти компилятора там, где рефлексивная не съедает ничего измеримого — ±21 МиБ на 32-кратном диапазоне размеров. А по времени обе квадратичны, и рефлексия выигрывает всего пятую часть. Разбираю, откуда берётся такая асимметрия, и заодно пять компиляторных стен, в которые упираешься по дороге, — включая sizeof…, который молча возвращает неверное число.

Читать далее

Я проанализировал 100 000 постов с Hacker News и вот что хочу сказать

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

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

Но из-за большого потока постов, качественные статьи по нужной теме теряются среди других, и если нужно найти какие-то системные тренды, увидеть как меняется отношения к Rust, AI или Open Source, а не просто “почитать что-то интересное” - это сделать сложно. Можно да, скопировать кучу ссылок и отправить в LLM, попросив отсортировать, но это занимает время и не так удобно, если нужно проанализировать большое количество тем.

И тут мне пришла идея - создать программу на Python, которая будет парсить через официальный API Hacker News, строить эмбеддинги постов с комментариями, кластеризовать посты и при помощи LLM суммаризировать этот кластер по ссылкам.

Сказано - сделано. Я смог спарсить 100 000 постов с Hacker News за последние 693 дня, получив более 1000 кластеров, более 10 миллиона апвоутов, более 27 тысячи авторов и всего 0.1% выбросов. В этой статье мы разберем, какие тренды были активны в мировом IT-сообществе последние два года.

Читать далее