Обновить
1024K+

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

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

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

GIN‑индексы для JSONB в PostgreSQL: jsonb_ops vs jsonb_path_ops

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

С JSONB в PostgreSQL есть одна довольно коварная ловушка: GIN‑индекс вроде бы поставили, запросы вроде бы работают, EXPLAIN не пугает — и на этом многие успокаиваются. Но как только данных становится действительно много, выясняется, что выбор между jsonb_ops и jsonb_path_ops — это не нюанс из документации, а вполне ощутимая разница в размере индекса, количестве лишних проверок и времени выполнения запросов. В этой статье разберём, как устроены оба оператор‑класса, почему один считается универсальным, а второй часто оказывается выгоднее на практике, и в каких случаях дефолтный выбор в PostgreSQL оказывается далеко не лучшим.

Читать далее

Особенности и ловушки модели памяти в Go: тайны синхронизации. Часть 1

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

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

Привет, Хабр! Меня зовут Игорь Панасюк, я работаю в Яндекс. В этой статье по мотивам моего доклада для Golang Conf я расскажу про Go Memory Model, понятным языком объясню отношение happens before, затрону формализм и разберу его на практических примерах.

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

Читать далее

Мы прожили с Copilot год, и вот что из этого вышло

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

Я год экспериментировал с on-premise Copilot — прямо над нашими разработчиками, — чтобы проверить: а правда ли эта штука разгоняет разработку на десятки процентов? Делюсь реальными метриками скорости и точности, разбираю, как оно работает на примере нашей инсталляции, и показываю результаты. По пути расскажу про все подводные камни: где ИИ стал турбоускорителем, а где подставил подножку и превратился в скрытую ловушку.

Читать далее

OpenAI собрала 122 миллиарда долларов на последнем раунде

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

OpenAI недавно закрыла раунд на 122 миллиарда долларов. Оценка компании после раунда — 852 миллиарда. Это самый большой частный раунд в истории Силиконовой долины. И впервые больше трёх миллиардов пришло от обычных людей через банки. 

Читать далее

ИИ-агент — не программист: пять наблюдений и три следствия

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

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

Начну со случая, после которого исчезли последние иллюзии.

Читать далее

Мотивация, оптимизация, коробочка, жабочка и «налог на усталость»

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

Я не программист. Я архитектор, проектирую дома, а полгода назад не знала, где живут скрипты и питоны. Но когда важный для меня чат в Telegram собрались удалять, я попросила нейросеть написать парсер – и пропала. С тех пор прошло полгода. Я всё ещё доделываю приложение. У него есть имя – Розитта, розовая робожаба на иконке. И оно пожирает мои ночи, деньги на такси и остатки семейного спокойствия. Это не история успеха за 4 дня. Это история о том, как взрослый человек с семьёй, работой и падающим забором ушёл в вайбкодинговый запой – и что из этого вышло. Все совпадения с реальными нейросетями не случайны, а промпты – настоящие.

Заглянуть в цифровое болото

Как Rust реализует трейт-объекты и почему dyn Trait медленнее дженериков

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

Спросите разработчика: «Почему dyn Trait медленнее дженериков?», в 9 из 10 случаях услышите: «Потому что косвенный вызов через vtable». Один дополнительный переход по указателю, промах по кешу, вот и вся разница. Звучит убедительно, и кстати процентов на десять правда.

Настоящая цена динамической диспетчеризации не в самом прыжке через vtable, а в том, что этот прыжок прячет от оптимизатора. LLVM видит непрозрачный call по указателю и пасует. Не может встроить тело, не может раскрутить цикл, не может протащить константу через границу вызова. Один косвенный вызов и целый каскад оптимизаций становится невозможным.

Но чтобы понять, почему так происходит, нужно сначала разобраться, как dyn Trait устроен внутри. Что лежит в этом толстяке, как выглядит vtable в памяти, и чем всё это отличается от того, что делает компилятор с дженериками.

Читать далее

dc.send(file) не существует: что на самом деле нужно для передачи файла в браузере

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

dc.send(file) не означает, что файл уже доставлен. Между отправкой и реальной доставкой – буфер, relay, запись на диск, ACK, reconnect и потерянный после refresh File. Разбираю шесть production-проблем WebRTC-файлообмена, которые обычно остаются за пределами туториалов.

Читать далее

Моё путешествие в трёхмерное пространство: история о «программном» Франкенштейне и множестве открытий

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

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

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

Бывает так: с какой то технологией уже разобрался, а вот перейти к новой боязно. Учить новые движки непросто, да и текущий инструмент уже не справляется с задумкой… Сомнения часто мешают двигаться вперёд, но народная мудрость «глаза боятся, а руки делают» никогда не подводит.

В итоге я решился и попробовал FXGL для 3D‑рендеринга. Но не для того, чтобы сделать полноценную игру(хотя она и получилась), а чтобы соединить расчёты по системному моделированию с элементами геймификации. Уточню: я не призываю использовать FXGL во всех случаях. Для серьёзных 3D‑проектов есть отличные инструменты — Unigine, jMonkeyEngine, Godot, Unreal Engine. Я попытался собрать и упорядочить знания, которые получил в ходе своего небольшого эксперимента.

 

Читать далее

Мой CLAUDE.md — 582 строки. Вот зачем

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

Каждый новый чат с Claude Code начинается с нуля. Агент не знает ваш проект, не помнит что вы обсуждали час назад, и на шестой раз всё равно полезет “чинить” конфиг который работал нормально. А ещё каждую неделю в r/ClaudeAI новая история про удалённую базу или запушенные секреты.

Типичный CLAUDE.md на 5-10 строк не решает ни одну из этих проблем. У меня это выросло в 582 строки и 6 слоёв - rules, memory, handoffs, chronicles, hooks, skills. За каждым правилом стоит конкретный инцидент. В статье - три истории которые всё изменили, и открытый репозиторий с 17 принципами из 37 arxiv papers.

Читать далее

Запускаю Gemma 4 локально в LM Studio: 51 токен/с и Claude Code без интернета

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

Ещё вчера для запуска 26-миллиардной нейросети нужен был дата-центр. Сегодня достаточно ноутбука и одной консольной команды.

Встречайте: Google Gemma 4 26B-A4B. Модель, которая ломает старые правила. Архитектура mixture-of-experts (128 экспертов, 8 активных на токен) позволяет ей работать на скромных 48 ГБ объединённой памяти, выдавая при этом качество, сопоставимое с гигантами вроде Qwen 3.5 на 397B параметров.

А LM Studio 0.4.0 только что сделала локальный запуск таких моделей по-настоящему удобным. Фоновый демон llmster, консольная утилита lms, непрерывный батчинг и – внимание! – эндпойнт, совместимый с Anthropic. Это значит, что вы можете направить Claude Code на свою локальную Gemma 4.

Хотите узнать, как заставить эту связку летать? Как правильно рассчитать память под контекст в 256K токенов и почему спекулятивное декодирование — плохая идея для MoE? А главное — сколько это всё жрёт энергии и греет ли ваш Mac?

Поехали!

Читать далее

Как мы строим OLTP-ядро: от API-контрактов до eBPF-проб

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

В статье показываем контракты будущей OLTP-СУБД: как разделены слои ядра, зачем нужен per-tablespace page size, почему конфигурация уходит в adaptive tuning и как мы встраиваем USDT/eBPF-наблюдаемость прямо в бинарник.

Читать далее

История компьютеризации ставок на спорт

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

Майк Кент, вероятно, первый человек, который делал ставки на спорт с помощью компьютера, начал свою карьеру с тестирования сверхсекретных проектов ядерных реакторов на предприятии Westinghouse в Уэст-Миффлине, штат Пенсильвания.

Читать далее

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

Написал свой медицинский сервис и дал Claude Opus посмотреть на данные семьи целиком. Он нашёл 11 ошибок врачей

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

У сына задержка речевого развития — за два года мы прошли 14 врачей, и ни один не видел полную картину. Я за неделю написал свой медицинский сервис на Node.js + SQLite, подключил Claude Opus как аналитика и скормил ему всю медицинскую историю семьи целиком. Нейросеть нашла 11 врачебных ошибок, анализы которые не назначали годами, и составила мне план чекапа на 35 пунктов — который полностью покрылся ДМС.

Внутри: архитектура без единого вызова API нейросети, граф здоровья на Cytoscape.js, почему связи между данными важнее самих данных, и сколько стоит весь этот AI-анализ ($0.60). Код будет открыт.

Как устроен сервис

Идеальный Outline в Unity 6: Пишем эффект обводки под новый URP Render Graph

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

Если вы недавно обновились до Unity 6 (или URP 17+) и попытались перенести свои старые пост-эффекты, то наверняка столкнулись с красной консолью и предупреждениями об устаревших методах.

Старые туториалы по созданию эффекта обводки (Outline) через ScriptableRendererFeature больше не работают "из коробки". Unity полностью изменила архитектуру рендера, внедрив Render Graph. Старый добрый метод Execute канул в Лету, а fullscreenMesh заменили на Blitter.

В этой статье мы не просто перепишем классический эффект Outline под новые реалии Unity 6. Мы решим две главные проблемы подобных шейдеров, о которых часто умалчивают в гайдах.

Читать далее

DevGlossary: инженерный словарь терминов программирования в Markdown

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

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

Это особенно заметно в тех темах, где термины похожи по звучанию, но расходятся по смыслу. Например, где проходит граница между composition и aggregation, чем concurrency отличается от parallelism, как на практике воспринимать idempotency, optimistic locking или bounded context.

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

Читать далее

Галлюцинация продуктивности

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

PR утвердили за четыре минуты. Авторизация легла через три дня. 84% разработчиков используют AI-инструменты - 29% доверяют тому, что выкатывают в прод. Разницу между этими числами я назвал «галлюцинация продуктивности».

Читать далее

Генерация видео с помощью Wan2.2: установка и первые впечатления

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

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

В этой статье разберемся, как запустить Wan2.2 на своем облачном сервере, сколько ей нужно памяти и какие конфиги прописать, чтобы все запустилось с первого раза. Подробности под катом!

Смотреть видео :)

Semantic terminal: AI-генератор однострочников по описанию на естественном языке

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

Эта заметка вдохновлена статьей Я заменил Google на 50 строк Python. Через месяц я забыл, как пишется tar -xzf. В какой-то момент, в очередной раз после нажатия Alt+Tab для переключения в браузер, чтобы быстро найти какой-то линуксовый однострочник, я подумал, что хватит это терпеть, и полез искать упомянутую статью. Перечитав её и прошерстив комментарии, я понял, что некоторые нужные мне вещи сделаны не совсем так, как хотелось бы, поэтому пошёл пилить свой велосипед. Итак, представляю вам semantic-terminal:

Ставится через pip: pip install semantic-terminal

Unix-style утилита sem, которая прокидывает аргументы в LLM с промтом: “Сделей однострочник”

Опционально предоставляет подробное описание однострочника на языке запроса

Опциональная утилита sem-run, запускающая сгенерированную команду с сохранением в истории терминала

Задержка генерации меньше 1с при условии … кхм хм … стабильного интернета

Читать далее

Мой фреймворк для агентной разработки с Claude Code

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

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

В итоге собрал свой фреймворк агентной разработки и выложил его на Гитхаб. Это набор скиллов и команд для Claude Code, которые учат его уму-разуму.

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

Фреймворк заточен под таких же людей, как я. С техническим складом ума, но без реального опыта в настоящем программировании. Наш разработчик — это Claude Code. Он же devops, он же специалист по безопасности, он же технический писатель.

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

Читать далее