Обновить
1276.42

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

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

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

Тёмная сторона Си: трюки, хаки, магия и алгоритмы

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

Доброго времени суток, господа и дамы! Иногда у некоторых людей возникает желание заняться откровенным непотребством в программировании — то, что не несет практической пользы напрямую, но помогает развлечься. И я — не исключение. В этой статье я хочу рассказать вам о лайфхаках, трюках (магических и не очень), алгоритмах на языке C!

Идея написать эту статью зародилась из моего поста, после него я написал статью «Математика, биты, магия и немного ненормального программирования на C» и «Фокусы, хаки, магия и прочее ненормальное программирование на C», которые раскрывали много интересных моментов. Увидев, что многим понравилась, я задумался: почему бы не изучить еще какие-нибудь трюки, заодно практикуясь в программировании на C?

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

Всех, кто заинтересовался — прошу под кат.

Читать далее

Как Rust думает о памяти: &mut, provenance и noalias

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

Мы знаем, что Rust славится безопасностью и строгим контролем за доступом к данным, но за этими правилами стоит целая философия и формальная модель.

Сегодня с вами посмотрим изнанки модели памяти Rust. Поговорим о том, кто имеет право на доступ к памяти, что такое provenance указателей, почему &mut T считается эксклюзивным и как все это добралось до уровня оптимизатора LLVM через атрибут noalias.

Читать далее

Раз-два-три tmux: запускаем несколько окон одним скриптом

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

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

Бывало, открываешь десяток терминалов, чтобы мониторить систему: в одном htop, в другом делаешь tail логов, в третьем запускаешь отладку. Через пару минут такой работы голова идет кругом от мельтешащих окон. Для того, чтобы как-то разобраться с этим, помогут терминальные мультиплексоры, старый добрый GNU Screen и его более крутой товарищ tmux.

Читать далее

Что нового в PyCharm 2025.3

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

Команда Python for Devs подготовила краткий разбор нового релиза PyCharm 2025.3. В этой версии JetBrains объединяет пользователей Community с основным дистрибутивом, полностью поддерживает Jupyter при удалённой разработке, делает uv менеджером окружений по умолчанию, внедряет упреждающий анализ данных и расширяет поддержку LSP-инструментов — от Ruff и Pyright до Pyrefly.

Читать далее

Что нового в WebStorm 2025.3

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

Команда JavaScript for Devs подготовила перевод статьи о нововведениях WebStorm 2025.3. В обновлении — новая тема интерфейса Islands, серьёзные улучшения для монорепозиториев, поддержка удалённой отладки и интеграция умных ИИ-агентов прямо в IDE.

Читать далее

Что нового в GoLand 2025.3

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

Команда Go for Devs подготовила краткий разбор новинок GoLand 2025.3. В этот раз IDE получила анализатор утечек ресурсов, встроенный Terraform, улучшенную работу с Kubernetes, поддержку нескольких ИИ-агентов и заметный прирост производительности.

Читать далее

Помогите, мой Java-объект исчез (и GC тут ни при чём)

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

Команда Spring АйО подготовила перевод разбора реального бага в HotSpot от разработчика OpenJDK. Во время работы над Project Valhalla его Java-объекты и классы начали «исчезать» без участия сборщика мусора — и поиск причины привёл к одному неверному биту в заголовке объекта, miscompilation в C2 и очень нетривиальному отладочному квесту. Этот текст показывает, как устроены mark word и Compact Object Headers, чем живёт Valhalla и как системное мышление плюс флаги JVM помогают выловить самые коварные ошибки.

Читать далее

Почему хорошие разработчики пишут плохой код в больших компаниях

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

Каждую пару лет кто-нибудь замечает, что крупные технологические компании иногда пишут на удивление мусорный код. Если вы не работали в большой компании, то вам может быть сложно понять, почему это происходит. Уровень зарплат в крупных технологических компаниях позволяет привлекать многих компетентных разработчиков. Они работают довольно неспешно, поэтому создаётся впечатление, что у них достаточно времени, чтобы выполнять работу качественно. Как же появляется плохой код?

Читать далее

Прогресс разработки TypeScript 7: что уже работает и чего ждать

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

Команда JavaScript for Devs подготовила перевод большого апдейта от команды TypeScript. Разработчики рассказали, как идёт переписывание компилятора на нативный код, что уже работает в превью TypeScript 7, какие ограничения остаются и почему версия 6.0 станет последним релизом на JavaScript. Новый TypeScript обещает серьёзный рывок в скорости и стабильности — самое время понять, что нас ждёт.

Читать далее

Гибридный подход к контексту: как сделать LLM-агентов быстрее и дешевле

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

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

Читать далее

Как куётся опенсорс (часть 1)

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

Я уже около года занимаюсь выведением в опенсорс общего кода, который используется у нас, в Gaijin Entertainment — порой, это бывает непросто. Как с точки зрения выбора — у нас около двухсот пакетов которые считаются обобщенными, так и со стороны облагораживания кода до состояния "и людям не стыдно показать". Но, Я сюда не жаловаться пришел, а делиться опытом😉

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

И какие же?

Когда виджетов мало: создаём свой RenderObject во Flutter

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

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

Многие во Flutter привыкли собирать интерфейс из виджетов, не задумываясь, как они вообще устроены. Действительно, стандартных виджетов хватает почти на всё. Почти. Иногда возникает задача, где готовых решений нет или их производительности недостаточно. В такие моменты хочется залезть в движок Flutter и написать что-то своё на уровне рендеринга. Звучит немного страшненько, но я посмотрим, как сделать собственный RenderObject (конкретно RenderBox) с нуля.

Читать далее

Галлюцинации ИИ — это не баг, а фича разработчика. Почему вайб-кодинг не заменит программистов

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

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

Читать далее

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

Разговор о том, как сделать интеграцию умнее: опыт, грабли и рабочие подходы

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

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

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

Читать далее

Почему заказная разработка превращается в лотерею — и что с этим делать

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

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

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

Читать далее

Создаём шахматы с «туманом войны» на JavaScript: от идеи до работающего прототипа

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

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

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

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

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

Читать далее

Стриминг логов Kafka в Elasticsearch с визуализацией в Kibana

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

Привет, меня зовут Иван и я SDET‑специалист в SimbirSoft. Полагаю, каждый программист хотя бы раз слышал про инструмент Kafka, многие работали с ним. Наиболее простое его использование — это настройка взаимодействия между микросервисами. А если попробовать использовать его как инструмент для логирования — связать Kafka и Elasticsearch? И при чём тут вообще Elasticsearch? Все просто: это система, которая позволяет работать с большим объемом данных. В нашем случае также необходимо использовать Kibana, надстройку над эластиком, которая позволит визуализировать данные.

В этой статье мы рассмотрим процесс настройки потоковой передачи логов из Kafka в Elasticsearch:
— как настроить взаимодействие между Kafka и Elasticsearch
— как настроить Kibana для визуализации логов, хранящихся в Elasticsearch.

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

Читать далее

Отправка уведомлений в MAX по номеру телефона

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

Много лет пользовался проектом https://github.com/antirek/alarmo для отправки сообщений с идентификацией по номеру телефона в viber и telegram. Но современные реалии диктуют новые условия и пришлось потратить время чтобы сделать аналогичное решение для нового мессенджера MAX. В текущем моменте регистрация ботов доступна только для корпоративного сегмента, но я думаю это не проблема.
Готового решения я не нашел, поэтому сделал на коленке свое, буду надеяться что кому-нибудь поможет и пригодится. Как поставить Docker и Docker-compose я думаю каждый найдет в интернете, а вот с новинкой в виде MAX пока информации маловато.

Читать далее

Эволюция подходов к написанию корутин от Си до С++20. Часть 3. Использование сопрограмм при обработке событий в Linux

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

В предыдущей статье я рассматривал различные способы организации стековых корутин в языке Си. Эти сопрограммы имели чисто учебное значение так как вряд ли кто-то будет создавать генераторы последовательностей при помощи сопрограмм. Сегодня рассмотрим как писать стектовые корутины на С++ и создадим на их основе tcp сервер, обрабатывающий запросы от клиентов на основе опроса событий с использованием API мультиплексированного ввода-вывода epoll. Данная тема, на мой взгляд, является ключевой для понимания того, как функционируют современные серверные приложения, написанные при помощи таких библиотек как Boost Asio.

Читать далее

Насколько полезны объяснения кода от SourceCraft?

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

Недавно на Хабре появилась функция "Объяснить код с SourceCraft", реакция на которую была неоднозначна из-за довольно странного решения сделать эту функцию обязательной, а не опциональной. Мусолить эту тему особо желания нет, а вот пройтись по существу хотелось бы, потому что как мы все знаем LLMки довольно хороши в коде, который уже миллион раз был выложен в открытый доступ, но вот со всякими редкими штуками есть проблемы, а еще они позвиздеть любят. В этой статье распишу как я прошёлся по сниппетам кода в двух своих статьях на хабре, попросил SourceCraft пояснить сломанные варианты этих сниппетов, и что из этого вышло. Спойлер: результат лучше, чем я предполагал, штука определённо полезная если использовать с умом.

Дисклеймер. За эту статью мне никто не платил, в ней есть сгенерированный контент, он явно обозначен и спрятан под спойлеры, а я вообще скептик относительно AI, но стараюсь трезво и честно оценивать его.

Читать далее

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