Обновить
1027.62

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

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

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

JVM ещё жива, но уже бесполезна: как Netflix научился убивать её по GC

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

Вместо того чтобы ждать, пока Java-приложение окончательно "зависнет" из-за GC, инженеры Netflix сделали jvmquake — инструмент, который сам определяет, что JVM уже не спасти, вызывает дамп памяти и аккуратно завершает процесс. Меньше тревог, больше аптайма. 

Подробности - в новом переводе от команды Spring АйО

Читать далее

Новости

Как реализовать 5 уровней оптимизации и не сойти с ума

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

В этой статье я подробно опишу 5 стадий принятия неизбежного  уровней оптимизации. В качестве примера рассмотрим, как я пытался оптимизировать функцию для инструмента командной строки, который я сам и написал  I (monorepo-hash).

Примечание

Я не настаиваю на том, что изложенное здесь — 5 священных заповедей инженерии производительноcти, а также не утверждаю, что приведённые здесь приёмы точно соответствуют каким-либо «карьерным уровням». Их можно сравнить просто с вешками на пути.

Это всего лишь тот путь, который проделал я сам. Есть в нём доля эго, пару раз я свернул не туда, бывали и случаи «я знаю, как тут срезать дорогу», за которыми сразу следовало раскаяние.

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

Кликбейтный заголовок? Что ж, даже, если так — вы же открыли статью, значит, он сработал :)

Читать далее

Model Studio CS Технологические схемы. Вывод условного диаметра в инлайн объект типа ответвление

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

Перед тем как приступим к техническому аспекту данной темы… Прежде всего нужно понимать основы самого продукта. Model Studio - продукт достаточно открытый, имеет много степеней свободы и позволяет пользователю, до мельчайших подробностей подготовить основу для формирования схем. Конечно, имеются и свои границы. Элементарная часть условно-графических обозначений (УГО) схемы храниться в БД библиотеке компонентов. И от ее содержимого, от того насколько она подготовлена зависит результат – готовая технологическая схема, выходные документы-отчеты, задания в смежные отделы проектирования.

Читать далее

Атомарные операции против мьютексов в Go: когда скорость становится проблемой

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

Команда Go for Devs подготовила перевод статьи о том, действительно ли атомарные операции всегда быстрее и лучше мьютексов в конкурентном коде. Автор разбирает реальные сценарии, показывает бенчмарки и объясняет, почему рост производительности часто оборачивается ростом сложности и рисков для корректности.

Читать далее

KodaCode для JetBrains IDE [Beta]: AI-помощник разработчика – бесплатно, без VPN, с поддержкой русского языка

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

Плагин KodaCode для IDE от JetBrains — это, пожалуй, самый ожидаемый из наших инструментов, о котором нас спрашивали с первого дня релиза. Мы не спешили: запускали закрытую тестовую группу, собирали обратную связь, дорабатывали UX и теперь готовы открыть доступ всем желающим.

Начиная с сегодняшнего дня KodaCode доступна в любой IDE от JetBrains, а также работает в GigaIDE и OpenIDE. Никаких ограничений по регионам — устанавливаете плагин и начинаете работать в привычной среде разработки.

Читать далее

Конец эры «одноядерного» разума: Почему будущее ИИ — это гонка архитектур, а не параметров

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

Современные ИИ-системы переживают не просто кризис доверия, а настоящий структурный тупик. Большие языковые модели демонстрируют чудеса в спринте, способны написать стихи, объяснить формулу или пошутить. Однако реальный мир не состоит из коротких задач. Проектирование реактора, управление логистикой или помощь хирургу напоминают марафон, где одна ошибка на одном из километров обесценивает всё проделанное.

Мы уперлись в «стену» монолитности. Идея о том, что чем больше параметров, тем умнее модель, заходит в тупик. Исследования OpenAI, Anthropic и многочисленные препринты показывают, что при увеличении длины рассуждений точность падает катастрофически. Условные сто процентов в начале цепочки превращаются в пятьдесят или шестьдесят к её середине. Такой результат указывает не на дефект мощности, а на фундаментальный предел «одноядерного» подхода. Мы пытаемся загрузить всю сложность мира в один «черный ящик», который перегревается от обилия контекста.

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

Читать далее

Как вжарить на С++ 23 или захватываем больницу и переписываем рантайм под Windows 95 и точка

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

Приветствую, Хабравчане!

Предлагаю вам окунуться в чарующий мир С++ 23 на Windows 95. Напишем минимальную стандартную библиотеку. Будем использовать современные фичи в коде.

Расскажу как это все работает и для чего это нужно. Старичок SDL 1.2 ещё многое может. Будем использовать его для написания тонкого слоя для графики.

vector::_M_range_check: __n (which is 10)

Как работать с Claude Code, Antigravity и Codex в 2026: база вайбкодинга

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

Сейчас все обсуждают Claude Code, Antigravity, Codex, спорят, коллекционируют “скиллы” для агентов. Но на практике у большинства всё ломается на первом шаге: люди пишут “сделай мне приложение” — и получают либо кашу, либо минус лимиты.

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

спецификация → план → маленькие итерации → тесты/ревью → фиксация изменений (git)

Ниже - тот самый “скелет”, который можно повторить почти для любого проекта.

Читать далее

Книга: «Go на практике. 2-е изд.»

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

Привет, Хаброжители!

И так, вы освоили азы Go, что дальше? Чтобы создавать надежные и готовые к эксплуатации Go-приложения, вам нужно научиться реализовывать конкурентность, налаживать сетевые взаимодействия, получать доступ к файлам, использовать такие нативные протоколы передачи данных, как gRPC и TCP/REST, а также разбираться во множестве практических нюансов. В этой книге приводятся готовые решения, которые можно незамедлительно применить в повседневной работе.

Читать далее

Ловушка туториалов: почему просмотр видео не сделает вас программистом

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

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

Читать далее

Синтаксический сахар или технический деготь: классы в JavaScript

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

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

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

Читать далее

Coreness: от одного бота к сотням — self-hosted open-source платформа для AI-агентов

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

Каждый новый Telegram-бот — снова код, конфиги, деплой. Хочется self-hosted решение, где логика в конфигах, а не в коде, и можно развернуть хоть десяток ботов на одном сервере.

Coreness — open-source платформа на Python с YAML-сценариями, RAG через PostgreSQL и плагинной архитектурой. Внутри статьи — разбор event-driven архитектуры без воды, пошаговый пример (от git clone до работающего бота с оплатами) и взгляд на то, как расширять платформу через плагины под свои задачи.

Читать далее

«Лучшие» практики Rust, которые вас подведут

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

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

Знаете, что общего между документацией Rust и советами бабушки? И то, и другое звучит разумно, пока не начнёшь применять буквально ко всему. «Используй дженерики для переиспользования кода», «оборачивай общие данные в Arc<Mutex>», «создавай типизированные ошибки» — всё это написано в книгах, статьях и туториалах. И всё это может превратить ваш проект в нечто, от чего хочется плакать.

Читать далее

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

CPython — Сборка мусора изнутри, ч.3

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

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

Если вам интересно, давайте попробуем разобраться.

Читать далее

Что читать и смотреть в 2026. Эпичная подборка для разрабов, лидов, CTO и архитекторов

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

По просьбе подписчика моего ТГ-канала публикую список источников для самоподготовки. Легендарные вещи, полностью изменившие мои взгляды на индустрию.

Читать далее

Plain text serialization

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

Я люблю простые костыли.

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

// Name/Value item
public class NVItem {
public string? Name;
public object? Value;
public IEnumerable? SubItems;

public NVItem(string? name, object? value) {
Name = name;
if (value==null) return;
SubItems = value as IEnumerable;
if (SubItems != null) return;

// Упс!
Value = value as string;
if (Value != null) return;

var num = value as IEnumerable;
if (num==null) {
Value = value;
} else {
SubItems = num.Cast<object>().Select(t => new NVItem(null, t));
}
}
}

Читать далее

Всего одна строка кода, из-за которой 24-ядерный сервер стал работать медленнее ноутбука

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

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

Читать далее

Об ассемблере EuroAssembler, о котором вы, возможно, не слышали

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

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

Читать далее

Удалил сервер из мессенджера. Как общаться по P2P в 2026 году без метаданных и Google Services. Личный опыт и KMP

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

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

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

В чем реальная уязвимость сигнальных серверов

Многие мессенджеры гордятся стойкостью шифрования - AES-ключи, обфускация трафика и борьба с DPI выглядят солидно. Но остается один критический нюанс: у них всё равно есть сервер.

Даже если его называют «сигнальным» и говорят, что он нужен только для установления связи, это всё равно точка сбора данных. Если данные где-то собираются, за ними рано или поздно придут. Будь то хакерская атака или официальный запрос - метаданные (кто, когда и с кем общался) могут рассказать о вас больше, чем само содержание сообщений.

Ну и наконец в серверную могут просто прийти уполномоченные люди которые потребуют предоставить доступ ко всему.

Читать далее

Почему свой игровой движок — это проще, чем кажется

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

Команда JavaScript for Devs подготовила перевод большой практической статьи о создании игрового движка с нуля — без шейдеров, GPU-магии и «взрослых» фреймворков. Автор шаг за шагом показывает, как из простых веб-примитивов вырастает полноценная игра, а затем — универсальный движок, и почему такой подход даёт больше свободы и выразительности, чем готовые решения.

Читать далее

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