Обновить
1024K+

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

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

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

Как я делал компактную библиотеку для создания приложений с графическим интерфейсом на языке C++. Часть 4

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

Это четвертая статья из цикла статей о создании компактной кросс‑платформенной библиотеки для разработки приложений с графическим интерфейсом на языке C++ — Frenchie. Для тех, кто привык изучать исходный код самостоятельно, репозиторий с исходным кодом библиотеки можно найти по ссылке. В данном материале я начну рассказывать про ту часть библиотеки, которая отвечает за rendering - rendering backend.

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

Читать далее

Спустя 5 лет я снова пишу Всерос — часть 1

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

Привет, Хабр! На связи финалист ICPC и гроссмейстер codeforces MachineSolution. В прошлой своей статье я писал о том, как подготовиться к соревнованию. Но что делать, если время подготовки прошло, как писать саму олимпиаду? “Просто бери и решай задачи” - скажет кто-то, но будет прав лишь отчасти. У некоторых соревнований есть свои особенности и, как следствие, особые стратегии написания. И заключительный этап всероссийской олимпиады школьников по информатике не лишён своих отличительных черт.

Всероссийская олимпиада школьников по праву считается мерилом олимпиадных способностей школьников и, хотя взять диплом даже регионального этапа ВсОШ дано не каждому, всероссом называют именно заключительный этап и готовятся к нему. Мало кто из сильных олимпиадников не хочет “взять всеросс” - то есть выиграть диплом призёра заключительного этапа. Помимо поступления в любой ВУЗ без экзаменов он сам по себе является ценной наградой и подтверждением своих способностей и признания результата долгих тренировок. Более того, не так много людей стремятся к диплому победителя - настолько сложно и почётно в этой олимпиаде стать хотя бы призёром! Заветные дипломы по информатике каждый год получают всего 200-300 человек из миллионов школьников. Моя история с этой олимпиадой не самая сказочная - в свои школьные годы я пожертвовал подготовкой к информатике ради подготовки к математике. Да, в итоге я занял 7 место на финале математики и почти стал победителем, но на информатике выступил, мягко говоря, ужасно - даже не близко к призёрам. Поэтому мне стало интересно написать зеркало ВсОШ по информатике за 2026 год, чтобы проверить, как сильно я вырос в олимпиадах и на что способен.

Читать далее

Протестировал Vibecraft от Яндекса. Один вопрос остался без ответа

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

Всем привет. На связи Сергей Игнатенко, основатель ИИ-платформы VibePilot. C недавнего времени партнер Яндекс, у меня грант AI Studio Boost, платформа работает на их моделях.

Недавно мне пришло письмо от Yandex Cloud о том, что они запустили сервис вайбкодинга VibeCraft. Моя платформа также является сервисом вайбкодинга, и конечно же мне было интересно попробовать в работе этот новый сервис.

Читать далее

Как мы перенесли ответственность за поддержку мапперов моделей на KSP

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

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

Читать далее

Генерация кода: сокращаем рутину в разработке

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

Привет, Хабр! Меня зовут Иван, я DevOps‑инженер в ИТ‑холдинге Т1. В современной разработке автоматизация — это давно не «роскошь», а «базовый минимум». Однако многие команды до сих пор ограничиваются лишь простыми возможностями IDE (Integrated Development Environment), упуская потенциал генерации кода. В прошлом году я выступал с этой темой на конференции Импульс Т1. В статье расскажу подробнее, как перейти к генерации кода в масштабах проекта и зачем разбираться в синтаксических деревьях.

Читать далее

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

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

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

Читать далее

Как не проиграть свою голову в битве с AI

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

Битва уже идёт, даже если ты этого не замечаешь. Более того, AI уже побеждает!

Старые фильмы про битву против искусственного интеллекта, обычно, рисовали нам классическое поле боя. «И восстали машины из пепла ядерного огня. И пошла война на уничтожение человечества. И шла она десятилетиями…» — наверняка почти все, кто смотрел «Терминатор 2: Судный день» помнят это вступление. Тогда войну с искусственным интеллектом воспринимали как что-то, что будет похоже на то, что мы уже знаем. Но так как «интеллект» искусственный, война идёт по искусственным правилам.

В бой!

Пишем нативные аддоны для Node.js на Rust: что умеет NAPI-RS и где он правда нужен

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

Привет, Хабр! Меня зовут Сергей Маркизов и я бэкенд-разработчик в Далее

Периодически я сталкиваюсь с задачами, где привычного JavaScript недостаточно: нужно быстрее считать, вручную управлять памятью или подключить существующую нативную библиотеку.

Node.js отлично чувствует себя в I/O-bound задачах (API, микросервисы, работа с базами данных и очередями), но как только в приложение попадает тяжелая CPU-bound логика (хеширование больших файлов, обработка изображений, видео, криптография) event loop может стать узким местом.

Один из способов решить эту проблему — вынести тяжелую часть в нативный аддон. В статье разберемся, как делать такие аддоны на Rust с помощью NAPI-RS: посмотрим на базовые типы, классы, асинхронные задачи, работу с JavaScript-объектами и управление ресурсами через Reference и External. 

Материал будет полезен Node.js-разработчикам, backend-инженерам и всем, кто хочет понять, когда Rust можно встроить в JavaScript-проект без боли для пользователей библиотеки.

Читать далее

Вайбкодинг и философский камень

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

В начале было слово. И слово было в чате. Вы задавали вопросы, ИИ генерил код. Этот код то работал, то не работал. Но чтобы это проверить, надо было вручную копипастить и запускать его. Было не очень удобно, но все равно круто! А потом кто-то приделал чату руки — tools —и появились ИИ-агенты.

Это выглядело уже совсем магически: ты говоришь агенту, что нужно, а он выкатывает тебе готовое приложение. С легкой руки Андрея Карпатого такой стиль программирования стали называть вайбкодингом. И развелось этих вайбкодеров видимо-невидимо. На первых порах все были счастливы: «Вы только посмотрите, что я вчера навайбкодил! И оно работает! Разве это не чудо?»

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

Читать далее

Как мы превратили API-контракт в отдельный артефакт и сократили генерацию клиента с 15 минут до нескольких секунд

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

Привет! Я Дмитрий, старший Angular-разработчик в команде Klecks — платформы для разметки данных AI-Центра Т-Банка.

Последние годы мы жили с NSwag: один api.ts на 13 000 строк, Docker-сборка бэкенда и ожидание по 15—17 минут каждый раз, когда менялся контракт. В рамках одной из задач мы решили перейти к модели, где OpenAPI-файлы лежат в репозитории, а клиент генерируется через ng-openapi-gen. Расскажу, какие проблемы мы пытались решить, что пробовали на стороне ASP.NET Core и какой workflow получился в итоге.

Читать далее

Разработка через «ИИ» отбирает у программистов состояние потока?

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

Хочу обсудить с коллегами разработчиками один вопрос, чтобы понять — это лично моя проблема или нет, и если да — нашёл ли кто-то для неё решение?

Эти руки пишут код...

Flutter 3.47 — Что нового во Flutter?

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

Вышла версия Flutter 3.47, и вместе с ней мы получили несколько интересных нововведений.

Сегодня мы приветствуем выпуск версии 1.0 автономного приложения material_uiи cupertino_uiпакетов. Это важная веха, которая отделяет системы проектирования от основного SDK.

Мы также повышаем производительность и улучшаем инструменты во всех областях. В этом релизе Impeller по умолчанию доступен для настольных компьютеров, наши конвейеры подготовлены для iOS, macOS и Xcode 27, а предварительные версии виджетов Flutter переведены в стабильную версию.

Итак, flutter upgradeдля начала выполните команду в терминале или прочитайте дальше, чтобы узнать больше о главных изменениях в этом релизе.

Читать далее

Что такое Harness и с какими моделями его едят?

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

Сегодня, 13 августа DeepSeek выложил DeepSeek Harness v0.1 в Developer Preview. Открытый код, MIT, пакет @deepseek-ai/dsh в npm, запуск в одну строку.

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

Выбрать свой молоток

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

От спанов к сценарию агента: зачем мы добавили GenAI-представление трейса

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

Трейс ИИ-агента можно открыть в обычном "дереве" и найти медленный вызов или спан с ошибкой. Но по дереву трудно восстановить логику запуска: сколько раз агент обращался к модели, какие инструменты вызывал, где повторил шаг и какой ответ в итоге увидел пользователь.

В Proto Observability Platform уже были дерево, граф, флейм-граф и другие представления трейса. Они продолжали решать инфраструктурные задачи, но ответы о поведении агента приходилось собирать вручную из десятков спанов, транспортных вызовов и повторяющихся тел сообщений. Мы увидели это сначала на OpenTelemetry Demo 3.0, затем при отладке собственного «AI-аналитика» в связке с нашим MCP-сервером.

В результате мы добавили отдельное GenAI-представление с четырьмя режимами: лентой, графом шагов, графом вызовов и чатом. Дальше покажем, на какой вопрос отвечает каждый режим, почему одного универсального графа оказалось недостаточно и какие дефекты реальной GenAI-инструментации пришлось учитывать.

Читать далее

Какую онлайн-магистратуру выбрать: рейтинг лучших программ

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

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

Напоминаем, что приёмная кампания 2026 закончится меньше, чем через месяц. Поэтому, если вы планировали поступать в этом году, поторопитесь.

Читать далее

Go SDK для YDB: уменьшаем количество запросов к СУБД для интерактивных транзакций

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

Привет, Хабр! Меня зовут Степан Пестерников, мы с командой делаем Алису и активно используем СУБД Яндекса. Недавно коллеги из YDB провели большой рефакторинг в YDB Go SDK, где по умолчанию теперь используется новый Query Service.

Я воспользовался этим рефакторингом, чтобы уменьшить количество сетевых запросов от SDK к YDB. Клиентские SDK устанавливают к распределённой СУБД Яндекса gRPC-подключения, поверх которых отправляются низкоуровневые команды. Какие-то из этих команд можно объединять: например, команду начала транзакции и выполнения первого запроса.

В статье я покажу фрагменты кода и расскажу, как мы делали улучшения, которые вошли в релизы v3.126.0 и v3.126.5 Go SDK. Фрагменты кода получились небольшие, и на их примере удобно показать, как этими оптимизациями пользоваться.

Читать далее

Пишу русскоязычный ЯП. Помогите выбрать самый читаемый вариант синтаксиса

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

Если честно, я давно планировал написать свой язык. Просто надоело на каждом проекте писать одинаковый бойлерплейт, ловить неожиданные ошибки в рантайме, натыкаться на компоненты аля LoanPreloanInterractNDFL6.2ReportViewComponent - и гадать - что имел ввиду художник...

В итоге получился язык "Марка" — штука статически-типозированная, но в которой типы живут во время выполнения, ошибки обрабатываются сами, а из REPL можно сразу дергать запросы и смотреть, что приходит на клиенте и сервере. Как давно мечтал.

Но раскидав исходники по знакомым, получил неутешительный фидбэк: читать трудно! Встал дурацкий вопрос: как это должно выглядеть в коде, чтобы было удобно? Я набросал 4 варианта синтаксиса — от LISP-стиля до почти Python - нотации. У каждого есть плюсы и минусы, и я уже неделю не могу выбрать.

Какой из вариантов читать было бы удобнее лично вам? Проголосуйте!

P.S. Если заинтересовал проект - уже сейчас доступна playground площадка для экспериментов http://marka-lang.ru/playground.php

Читать далее

Кэш — это холодильник: TTL, инвалидация и cache stampede

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

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

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

Читать далее

Code, Force, Repeat. Олдскульный GUI для олдскульных скриптов. Часть 1. Экспозиция

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

В этот раз я пришёл с двухчастным текстом про F#, тайппровайдеры, скрипты, спортивное программирование, MVU, консольные интерфейсы в стиле FarManager, низкоуровневый интероп с виндой, некоторое количество хаков ХМ и, внезапно, живопись. Причём только консольные интерфейсы с некоторой натяжкой можно назвать центральным элементом повествования, поэтому я понятия не имею, как должен выглядеть потенциальный читатель этой статьи. Будем исходить из предположения, что он либо достаточно опытен, либо у него достаточно времени и усердия, чтобы расковырять всё, что я не счёл должным разобрать детально (я могу, но только за 16 глав).

Сегодня мы изучим небольшой .fsx-скрипт, который я ежедневно запускаю, чтобы получить очередную порцию задачек из архива codeforces.com. Необычно то, что скрипт функционирует как полноценное GUI-приложение, пусть и очень страшное старое. Кажется, что до меня так никто не делал, так что с осторожностью назову это авторской инновацией.

Читать далее

Вы ещё пишете код слева направо? Тогда мы идём к вам

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

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

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

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

Читать далее