Обновить
512K+

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

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

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

Помогаем малышке стать сильной: локальная Qwen против облачных флагманов на 16 ГБ видеопамяти

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

В двух предыдущих статьях мы проверяли языковые модели на наших повседневных задачах: работе с данными в электронном лабораторном журнале и исправлении ошибок в трёх закрытых проектах на Delphi — от программы рентгеновской рефлектометрии X‑Ray Calc до нашей системы управления лабораторией.

В обоих тестах локальные модели на моей рабочей станции (одна карта RTX 5080 на 16 ГБ и 62 ГБ оперативной памяти) заметно отставали от облачных лидеров. На вопросах по журналу ранняя сборка Qwen 3.8 IQ2_XS набрала жалкие 33% (8 из 24), а gpt‑oss-20b — 40%. На задачах Delphi специализированная Qwen 3.8 Coder IQ1_M взяла 16 задач из 20 (80%). Результат уже вполне рабочий, но до Claude Sonnet 5.5 (19/20) она всё‑таки не дотянула.

Конечно, можно было на этом успокоиться и списать отставание на скромные 16 гигабайт видеопамяти. Но мне не давал покоя вопрос: модель действительно упёрлась в свой потолок или мы сами подрезали ей крылья настройками и капризными инструментами? Сели разбираться — и довольно быстро нашли узкие места. Поменяли урезанную сборку весов на полную, поправили конфигурацию сервера, научили инструменты спокойно относиться к мелким огрехам сериализации — и на том же самом железе локальная Qwen 3.8 взяла реванш!

Читать далее

Новости

Как мы приручили SIGSEGV и освободили память фоновых вкладок

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

Браузеры традиционно относятся к самым крупным потребителям памяти на персональных компьютерах. Иногда кажется, что разработчики просто забили на оптимизацию, но реальность куда прозаичнее: пользователи открывают всё больше вкладок, сайты обрастают медиа и JavaScript, новые веб‑стандарты требуют хранить больше данных, а ради безопасности браузер изолирует сайты в отдельных процессах.

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

Просто так закрыть её нельзя: страница потеряет состояние, а музыка, видео или фоновая задача могут прерваться. В Chromium уже есть сборка мусора, очистка кешей и другие способы оптимизации — однако память всё равно не всегда возвращается операционной системе надолго.

Чтобы разобраться, почему так происходит, мы в команде Яндекс Браузера собрали собственный профайлер обращений к страницам памяти. Под катом — устройство виртуальной памяти, lock‑free‑структуры внутри обработчика сигнала, профилирование через управляемый SIGSEGV, борьба с kevent64, mach_msg и libdispatch, а также переход от эксперимента на macOS к оптимизации, которая сильнее всего проявила себя на Windows.

Читать далее

Торвальдс: «Не доверяете ИИ — пишите на ассемблере»

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

13 октября 2026 года Линус Торвальдс ответил в рабочей переписке разработчику, который хотел ограничить ИИ в работе над ядром Linux. Ответ был довольно резким и саркастическим: Торвальдс предложил оппоненту отказаться не только от ИИ, но и от компиляторов.

Читать далее

Вам понадобятся железные нервы для работы с ИИ-агентами

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

В этой статье я собрал проблемы, которые обнаружил за 100+ часов работы с Composer 2.5 в Cursor. Многие из них встречаются и в других моделях этой ценовой категории.

Читать далее

Находки в опенсорсе: доклады с большой встречи сообщества, конец опенсорса и питон 3.15; октябрь 2026

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

Всем привет! Очень большой получился дайжест: было очень много событий. Но тем будет интереснее!

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

Еще поговорим про Python 3.15 и его фичи, ведь он как раз был релизнут в октябре 2026. Посмотрим, что нам уже готовит Python 3.16.

Поговорим про проекты сообщества. Очень много крутых (и очень красивых!) штук подобралось.

С меня как всегда статья без нейрослопа и ИИ, с вас как всегда интересные комментарии и лайки! А вот тут ссылка на прошлый дайджест за сентябрь.

Погнали смотреть, что у нас в питоне происходило!

Читать далее

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

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

Порассуждаем о том, на чём мы будем писать код в ближайшие годы. Появятся ли ещё новые языки, если нейронка умеет хорошо писать только на тех, что видела при обучении? Кто платит за Rust, Python и Zig? Переживут ли PHP и 1С эпоху агентов? И чем будут заниматься те, кто продолжит программировать?

Читать далее

Можно ли отказаться от Opus и Codex? Проверил MacBook, игровой ноутбук и DGX Spark на одной задаче с ловушками

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

В моём пет-проекте open-daimon давно есть роутинг между локальными моделями и облаком.

Сразу оговорюсь: публично open-daimon не обновляется, потому что разработку я веду локально, так быстрее. А на его основе у меня уже есть отдельный закрытый проект, который расширяет его возможности, — студия управления агентами. В ней я всё это и тестировал.

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

В октябре снова всплыло, что в потребительских условиях Anthropic для жителей ЕЭЗ и Швейцарии прямо написано: не использовать сервисы «в коммерческих или деловых целях». Под эти условия попадают Claude.ai и подписки Pro и Max. То есть разработчик в Европе, который пишет рабочий код в Claude Code по подписке Max, формально их нарушает. Для работы нужен API, Team или Enterprise, а это уже совсем другие деньги.

Вторая история про то, что тебе разрешат делать со своим же железом. Автор Decrypt попросил Claude Opus 5.5 помочь заново получить root на собственном телевизоре LG. Защита модели оборвала запрос и предложила переключиться на Opus 4.8. А исследователь, известный находкой с постоянно включённым микрофоном в телевизорах Samsung, пишет, что OpenAI заблокировала его аккаунт за «Cyber Abuse» после анализа прошивки через ChatGPT. Вместе с аккаунтом пропали примерно $500 на балансе API. OpenAI это не комментировала, так что пока это только его слова.

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

Читать далее

Подводные камни битовых полей в C++

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

Думаю, вы знаете, что C++ — язык, который разрешает вам вообще всё. А потом молча смотрит, как вы на этом подрываетесь. Обычно мы привыкли мыслить категориями байтов, но что делать, если стандартная сетка типов кажется слишком расточительной? Когда внутренний перфекционист требует компактности, на помощь приходят битовые поля. Зачем отдавать под скромный флаг “да/нет” целый восьмибитный контейнер, если можно ювелирно отрезать ровно один бит? Поставил двоеточие — и ты повелитель памяти. Но там, где начинается экономия, заканчивается порядок и предсказуемость. Программист остается один на один с тонкостями стандартов и поведением конкретных платформ. Предлагаю вместе заглянуть под капот C++ и подробно разобрать, как на самом деле устроены битовые поля.

Читать далее

Думал, дел на пару вечеров… Но демка на Vercel выросла в PWA с собственным CI/CD на Coolify

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

Привет! На связи Никита Шелепин, менеджер поддержки в Selectel. Расскажу о том, как однажды подписался на легкое на первый взгляд задание, предвкушая потратить пару вечеров, а закончилось все собственным CI/CD, Docker’ом и PWA.

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

За моими плечами тогда было около года опыта — я писал инструменты администрирования на Vue с Bootstrap для одной компании в качестве подработки. Затем самостоятельно познакомился с SvelteKit — мне понравились его философия и модульность, а также то, что «из коробки» он дает удобный роутер и простые инструменты для создания fullstack-приложения.

С этим багажом знаний я и приступил к работе.

Читать далее →

Rust круче C++? Часть 1: скорость

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

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

Спор «Rust или C++» идёт с 2015 года, с выхода Rust 1.0, и за одиннадцать лет превратился в отдельный жанр со своими приколами. «В Rust на каждом индексе проверка, вот он и тормозит». «В плюсах проверок нет, значит, быстрее». «Ага, а у Rust ссылки не пересекаются, так что быстрее как раз он». «Паника дорогая», «исключения дорогие», «абстракции бесплатные». Каждая сторона уверена в своём, а в ассемблер почти никто не смотрит, хотя ответ лежит прямо там (и местами он неприятный для обеих сторон).

В одну статью вопрос «круче ли Rust, чем C++» не влез, так что это первая часть, и она про скорость. Безопасность и прочие поводы поругаться ждут своей очереди.

Читать далее

Как немножко обмануть сервер

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

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

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

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

Читать далее

Как я писал свой TCP на чистом Си: надежный протокол доставки данных поверх UDP

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

История о том, как реализовать надежный протокол поверх ненадежного UDP: скользящее окно, SACK, чексумма и почему при потерях сеть внезапно заработала быстрее

Зачем вообще писать свой RDT-протокол? Каждый джун знает, что TCP у нас «надежный, но медленный», а UDP — «быстрый, но ненадежный». Но это очень поверхностные знания, которые не раскрывают всего масштаба происходящего под капотом. И как раз недавно я задался вопросом: а почему бы не попытаться повторить TCP? Амбициозная цель: приблизить своё детище к работе TCP, поработить мир и захватить умы человечества, объединив всех в единый организм… Кхм, ну что-то типа того.

Получилось ли у меня? Захватить мир — пока нет, а вот добиться надежной доставки данных через ненадежную сеть с потерями, порчей данных, дублированием, задержками и так далее — более чем. Так что хочу рассказать свою историю о том, как я писал это чудо, с чего начинал, с какими проблемами столкнулся и как пришел к рабочему варианту протокола: с поддержкой скользящего окна, SACK, таймаутов, флагов и прочих прелестей, которые я подглядел в архитектуре TCP. Протокол прошел краш-тест с 30% потерь в сети и смог передать данные байт-в-байт, правда, с нюансами, о которых расскажу дальше :)

Читать далее

125 токенов в секунду на RTX 4070 Ti SUPER: как я заставил локальную LLM работать полноценным кодинг-агентом

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

По статистике, среди рядовых пользователей настольных компов самая распространенная видеокарта имеет 16 ГБ видеопамяти. По опросам GaugeDB, такие карты занимают 27,21% рынка. У меня как раз видеокарта NVIDIA GeForce RTX 4070 Ti SUPER с 16 ГБ видеопамяти GDDR6X, которая на текущий момент стоит 900$. До сего момента главной проблемой было то, что на видеокарте такого класса невозможно было запустить LLM-агента, который будет достаточно умным и достаточно быстрым. Если запускаешь умную модель типа Qwen 3.8 27B (Dense архитектура), то на выходе получаешь 10-20 токенов в секунду. А для комфортной работы кодинг-агента надо 100-150 токенов в секунду.

Читать далее

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

Как я 2,5 года никому не нужный софт вайбкодил

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

По моим прошлым статьям «Искусство цифрового мазохизма: как я потратил сотни часов на обложки для сериалов, которые даже не смотрю» и «Как я сделал ремастер «Том и Джерри» в 4K за два года» многим стало очевидно, что я умею находить себе самые нерациональные и специфичные занятия на пару месяцев, а то и лет.

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

Читать далее

ИИ ошибается и это хорошо

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

Любой писатель или ученый прошлых веков хотя бы раз задумывался о будущем. Как будут жить люди? Как изменится мир и какую роль обретут в нем технологии? Станут ли машины незаменимыми помощниками человека или его новыми хозяевами? Предположений было много, но совсем мало из них «попадали в яблочко». От большинства описаний предполагаемого будущего, в котором живем мы сейчас, становится забавно или откровенно смешно. Крылатые пожарные и почтальоны, ролики на бензине или атомные пылесосы, увы и ах, не стали частью современного быта. Зато искусственный интеллект стал.

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

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

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

Читать далее

NoDPI v2.3: они научились собирать фрагментированный ClientHello, а мы научились это исправлять

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

Салют, Хабр!

Я думаю многие из вас слышали про NoDPI — open-source инструмент на Python для... кхм... изменения сетевого трафика (ну вы поняли). В последний месяц мне стали массово жаловаться (раз, два и еще в личке), что некоторые сайты перестали открываться. К сожалению, у меня долго не доходили руки разобраться с этим, но в эти выходные я наконец взялся за дело.

Под катом расскажу, что случилось и как получилось это побороть.

Читать далее

Открываем секретный файл с диска «Лучшие игры для IBM PC #1» 1994 года

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

Всё произошло очень быстро: какая‑то ностальгическая статья про сборники Classic Fond — и вот я уже качаю образы «Лучшие игры для IBM PC» с Internet Archive. Первым скачался 25-й диск. Открыл и вспомнил всё: школу, переход рядом с ВДНХ, палатки. Ешь беляш, смотришь, какие альбомы вышли, ну и, конечно, сборники Classic Fond.

В статье будем пытаться открыть секретный файл с дисков Classic Fond.

Читать далее

Почему BigDecimal считает 1.0 и 1.00 разными числами — и к чему это приводит в Java

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

Цена в базе осталась прежней, но приложение считает, что она изменилась, и повторно отправляет событие. Причина может скрываться в масштабе BigDecimal: equals() сравнивает не только числовое значение, но и количество знаков после запятой, поэтому 1.0 и 1.00 для него не равны. Разберём, как эта особенность влияет на коллекции, денежные расчёты и сравнение данных из разных источников, а также как нормализовать суммы и избежать подобных ошибок.

Разобрать BigDecimal

HabrExporter: сохраняем статьи и целые блоги Хабра в офлайн

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

Салют, Хабр!

Не так давно мне захотелось сохранить себе подборку статей одного автора: несколько десятков публикаций вместе с комментариями (которые зачастую не менее ценны, чем сами статьи). Конечно, будь статья одна, я, не задумываясь, нажал бы Ctrl+S или Ctrl+P. Но жать их полсотни раз — удовольствие сомнительное. Готовые решения нашлись, но меня ни одно не устроило (о них ниже). Поэтому я, как истинный программист, озадачился написанием собственного инструмента. А как истинный ленивый программист — поручил часть этой задачи Claude Code.

Так появился HabrExporter — приложение с графическим интерфейсом и CLI, которое сохраняет статьи, блоги авторов и закладки Хабра в PDF, EPUB, Markdown и ещё нескольких форматах. PDF при этом выглядит точь‑в‑точь как на сайте, вместе с деревом комментариев, а данные программа берёт не парсингом HTML, а из внутреннего API Хабра.

О том, как это устроено, что умеет программа, я и расскажу.

Save as...

Как 4 байта выравнивания ускоряют очистку массива на 49%

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

«П‑с-с‑с, хочешь, чтобы функция очистки массива была на 49% быстрее? Сдвинь массив на 4 байта».

Рассмотрим следующий код на Go:

const words = 1 << 19

type block struct {
n uint32
data [words]uint32
}
func (b *block) reset() {
b.data = [words]uint32{}
}

Что, если я скажу вам, что всего лишь добавив 4 байта заполнения (padding) между n и data, вы ускорите функцию reset на 49% (по крайней мере, на машинах с Intel)? Звучит безумно?

Читать далее
1
23 ...