Обновить
1228.97

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

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

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

Почему Go, Rust и Zig такие разные: ценности, компромиссы и назначение языков

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

Команда Go for Devs подготовила перевод статьи о трёх языках, которые всё чаще оказываются в одном ряду, но на самом деле решают принципиально разные задачи: Go, Rust и Zig. Автор несколько месяцев изучал каждый из них и попытался понять, какие ценности стоят за их устройством. Go выбирает минимализм и корпоративную предсказуемость, Rust — безопасность и максимальную выразительность, Zig — радикальный контроль и отказ от ООП-мышления. Получился честный и местами провокационный разбор того, зачем нужны эти языки и кому из разработчиков они подходят.

Читать далее

Разбираем подводные камни, ошибки и лучшие практики при разработке Kubernetes-операторов

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

Kubernetes-операторы давно стали привычным инструментом автоматизации и управления сложными системами. Однако на практике их поведение далеко не такое предсказуемое, как в примерах из документации. Небольшие отклонения в логике цикла согласования, обработке ошибок или обновлении статуса быстро превращаются в зацикливание, дублирование ресурсов и прочие сюрпризы, которые трудно отладить. Новичкам полезно понимать, почему так происходит, а опытным разработчикам — помнить, какие принципы стоит держать в голове при проектировании оператора.

Меня зовут Стас Иванкевич, я техлид в команде разработки управляющего слоя Platform V DropApp в СберТехе. В управляющий слой входят установщик кластера, консоль, API, другие компоненты и самое релевантное для этой статьи — наши многообразные операторы.

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

Читать далее

Чистим main.go: предсказуемый старт и надежный Graceful Shutdown

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

Сталкивались ли вы с болью при управлении порядком запуска и остановки зависимостей в вашем Go-сервисе?

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

Примерный сценарий жизненного цикла сервиса выглядит так:

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

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

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

Но если вы ищете способ автоматизировать эту рутину, сохранив код чистым - добро пожаловать под кат.

Читать далее

Мой опыт разработки с агентами: советы

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

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

Читать далее

ADSM: практика использования файлов AGENTS.md

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

Всем привет, меня зовут Алекс Гусев. В этой публикации я продолжаю формализовать свой личный опыт взаимодействия с агентом OpenAI Codex при разработке программного обеспечения. Речь пойдёт о практическом использовании файлов AGENTS.md как инструмента организации контекста проекта в долгоживущих и структурно сложных системах.

Читать далее

Упадёт ли стоимость разработки софта на 90%?

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

Команда AI for Devs подготовила перевод статьи о том, как агентные инструменты разработки меняют экономику создания ПО. Автор утверждает: трудозатраты на выпуск продукта стремительно падают, скрытый спрос на софт растёт, а единственным настоящим конкурентным преимуществом становится глубокая экспертиза в предметной области.

Читать далее

Как сериализовать всё состояние C++-программы и пережить обновление бинарника

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

Экспериментальная система сериализации графов объектов с самоописанием, миграциями и живой отладкой — без VM и без JSON

О чём статья:

долгоживущие(сохранение всего runtime-состояния) программы и движки

загрузка старых данных в новую(с обновлённой системой типов) версию бинарника

правка состояния на лету без перезапуска

без виртуальной машины

без замедления в 10–50 раз

Почему стандартные форматы не подходят:

они работают с деревьями, а не с графами

не умеют циклы и самоссылки

ломаются при изменении структуры типов

Что будет показано:

сериализация объектных графов с циклами

самоописание типов прямо в файле

миграция данных при удалении и перестановке полей

какие идеи оказались тупиком, а какие — нет

Читать далее

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

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

Всем привет! Меня зовут Максим Иванков, мне 30 лет, у меня трое детей, и вот уже 9 лет я развиваю школы робототехники и программирования по всей России. Старший сын только пошёл в первый класс, и я вижу, как школа в провинции рушится на глазах: учителя бегут из-за копеечных ставок, бюрократии и беспомощности перед хулиганами, физику и информатику ведут кто попало, а дети теряют интерес к учёбе. За годы экспериментов я создал формат, где дети идут на занятия с радостью и учатся годами. Нет лекций — только самообучение в своём темпе: собирай роботов (колонка, сигнализация, микроконтроллеры), программируй Python прямо в Minecraft.

Читать далее

Rust, mmap и 10 миллионов пикселей: делаем производительный Log Viewer для VS Code

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

Наверняка у каждого бэкендера или девопса была такая ситуация:
Нужно срочно посмотреть, что случилось на проде. Вы скачиваете server.log, по привычке кликаете на него в VS Code... и всё.
Редактор зависает, кулеры ноутбука взлетают, интерфейс не отвечает. Файл весит всего-то 2-3 ГБ, но для редактора на базе Electron/DOM это приговор.

Обычно в этот момент мы убиваем процесс VS Code и идём в терминал писать less или tail -f. Это работает, но лишает нас комфорта: нормального поиска, копипаста мышкой, подсветки синтаксиса.

Я перепробовал кучу расширений, но все они либо пытались загрузить файл в память (и падали), либо работали слишком медленно. Поэтому я решил написать своё решение — с Rust на бэкенде, memory-mapping и виртуализацией всего, что только можно.

Под катом расскажу, как скрестить VS Code с нативным бинарником, обойти лимиты браузера на высоту скролла и сделать grep по гигабайтам текста мгновенным.

Читать далее

Ночь, телескоп, ИИ, комета: анализ спектра 3I/ATLAS с собственным Python-pipeline

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

У вас когда-нибудь была мечта, которая поднимает посреди ночи, и вы на цыпочках идете через спящий дом к компьютеру — посмотреть, что показывает ваш телескоп? Поймал ли он 3I/ATLAS, с джетами или без, как слабую точку или как большой объект с необычно яркой комой? Эти ночи — мои будни уже 3 месяца. И сегодня я расскажу, как любитель-астроном исследует самый необычный межзвездный объект за всю историю человечества:

Читать далее

Новогодний IT-челлендж для разработчиков: сможете расшифровать сообщение?

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

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

Нужно расшифровать сообщение, написав собственное решение, и показать путь к результату. Тот, кто решит эту задачу первым и представит элегантное решение, получит главный приз: годовой Telegram Premium (или ~2500 звёзд)!

Читать далее

Эта музыка будет вечной: микросервисы против монолита, camelCase против snake_case и другие неугасающие споры в ИТ

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

В любой сфере деятельности найдутся неоднозначные решения, время от времени заставляющие полыхнуть ту или иную часть интернета. Разумеется, такие «вечнозеленые споры» есть и в ИТ, и сегодня мы в Beeline Cloud решили вспомнить некоторые из них. Разбираемся, почему даже сейчас находятся поводы для недовольства у сторонников разных регистров, о чем продолжают спорить сторонники и противники low-code и есть ли все-таки будущее у микросервисов.

Читать далее

В GitHub Actions, пожалуй, худший пакетный менеджер

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

Когда я закончил работать над проектом ecosyste-ms/package-manager-resolvers, мне стало интересно, какой алгоритм разрешения зависимостей использует сервис GitHub Actions. Когда вы записываете в файл рабочего потока uses: actions/checkout@v4, то объявляете зависимость. GitHub её разрешает, скачивает и исполняет. Так работает управление пакетами. Я же решил отправится в кодовую базу runner, чтобы увидеть весь этот процесс изнутри. И открытия, скажу я вам, оказались весьма тревожными.

Читать далее

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

Арифметика сверточных слоев. Вычисляем размерность изображения с учетом stride, padding и dilation

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

Одна из проблем при проектировании сверточных сетей (CNN) – несоответствие размеров тензоров. Неправильно заданные padding, stride или dilation могут замедлить разработку модели.

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

Читать далее

Ассемблер для гоферов. Структура и макросы. Часть 2

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

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

Читать далее

Почему xor eax, eax используется так часто?

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

В одном из моих докладов по ассемблеру я показал список из 20 самых часто исполняемых команд на среднем десктопе x86 с Linux. Разумеется, в этом списке были привычные  movaddleasubjmpcall и так далее; неожиданным стало включение в него xor — «eXclusive OR». В эпоху, когда я занимался хакингом на 6502, наличие XOR было почти абсолютно точным указанием на то, что найдена часть кода, связанная с шифрованием, или какая-то подпрограмма обработки спрайтов. Поэтому удивительно, что машина с Linux, просто занимающаяся своими делами, выполняет такое количество этих команд.

Но потом мы вспоминаем о том, что компиляторы любят генерировать xor при присвоении регистру нулевого значения.

Читать далее

Я вернулся в 1999-й и поймал «Чернобыль»

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

Я вернулся в 1999-й и поймал вирус CIH, он же Чернобыль. В новой серии машины времени проверяю: что бы случилось с моим компьютером, если бы я случайно запустил заражённый .exe.

В статье вы узнаете:

• Почему 26 апреля 1999-го мой компьютер превратился в «кирпич»;
• Как CIH перезаписывал BIOS и стирал загрузочные сектора;
• И зачем создавали ранние вирусы в эпоху без денег;

Настоящая интернет-ностальгия 1999-го ждёт.

Читать и отправиться в 2000-й

Ловушки PowerShell: поведение, которое ломает привычные ожидания разработчиков

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

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

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

Читать далее

ООП и Синглтон (на примере простого консольного рендера) в Си

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

Всем привет, это Stalker320. Я вернулся на Хабр, осознав несколько концепций, с интересным подходом к разработке ПО с использованием Си.

Читать далее

ARC-AGI для оценки способностей ИИ и новый релиз ChatGPT 5.2

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

Вчера вышла новая версия модели ChatGPT 5.2. В очередной раз Сэм Альтман и OpenAI удивляют качеством модели (в последний месяц было так много релизов, что они решили не отставать). В целом, все как обычно — топовые результаты на большинстве бенчмарков.

Но хочу уделить внимание одному очень сложному бенчмарку, на котором пока многие спотыкаются — ARC-AGI (Abstract and Reasoning Corpus for Artificial General Intelligence). Именно здесь ChatGPT 5.2 показал значительный скачок.

На сегодня существует две версии этого теста. Так о чем же он?

Читать далее

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