Обновить
1024K+

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

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

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

time.ticks_ms() в MicroPython: как не блокировать код и выполнять задачи конкурентно на ESP

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

Очень часто в программировании микроконтроллеров используются блокирующие задержки: delay() для Arduino, time.sleep() для MicroPython. Эти функции просты и понятны, но у них есть фундаментальный недостаток: они останавливают выполнение программы на заданное время, делая систему нечувствительной к внешним событиям. В этот промежуток времени процессор не выполняет никакой код, не проверяет таймеры, не обрабатывает события и не реагирует на прерывания. Это как повар в ресторане, который ставит суп на плиту и говорит: «Я ничего не буду делать 10 минут, пока он варится». За это время мимо проходят голодные посетители, другие кастрюли перекипают, а он просто сидит и смотрит на таймер.

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

В MicroPython есть, на мой взгляд, элегантное решение — time.ticks_ms(). Это способ заставить микроконтроллер ESP делать несколько дел одновременно — без прерываний, без Timer, без asyncio и сложных планировщиков. Достаточно просто… посмотреть на часы.

Это как повар, который включает плиту, смотрит на настенные часы, запоминает время и идёт готовить салат. Каждые пару минут он поглядывает на часы: «Прошло 5 минут — помешаю суп. Прошло 30 минут — выключу огонь». Он успевает управлять десятью кастрюлями одновременно, потому что у него есть часы на стене и система проверок.

В этой статье мы рассмотрим,

как с помощью функции time.ticks_ms() создать систему неблокирующих таймеров. Она позволит управлять реле, опрашивать датчики и отправлять SMS одновременно, без остановки основного цикла;

Читать далее

Новости

7 месяцев вайбкодинга: как в одиночку делать то, что раньше требовало команду

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

примерное содержание:

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

Читать далее

Стохастический клеточный автомат на системе типов

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

Давайте разберёмся, как алгорифмы Маркова и pattern matching в WL позволяют генерировать лабиринты, реки, падающий песок и другие клеточные автоматы с помощью системы типов

Читать далее

Как не потерять себя в эпоху ИИ

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

Обещание, что скоро код не придется писать руками, звучит далеко не первый раз. COBOL делали похожим на английский, чтобы программы были понятны не только программистам. Предшественник SQL назывался SEQUEL, то есть буквально Structured English Query Language. Потом появились ноукод-платформы. Ручной работы действительно становилось меньше, но программисты никуда не исчезли. Наоборот, их становилось только больше.

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

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

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

И все же полноценной заменой программиста они пока не стали. Значит, наша ценность не только в знаниях, есть что-то еще.

Читать далее

07.2026 Тренды агентной разработки за июль и подборка полезных статей на эту тему

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

По сути, тренды июля те же, что и в июне (описание июня здесь): как создать лучший harness, как настроить автономные или полуавтономные процессы, управление контекстом, повышение качества и повторяемости результатов, оптимизация, безопасность. Но заметен другой сдвиг. Если в июне основной фокус статей был из серии “мы пробуем, мы попробовали”, то сейчас фокус “мы решаем вопрос как именно сделать лучшую реализацию на основе всех кейсов, которые мы собрали”. То есть мы подходим к моменту, когда количество переходит в качество.

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

Читать далее

Торговля по паттернам с точки зрения алгоритмов

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

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

Читать далее

ИграКОД: Генератор судоку на TypeScript: почему найти решение проще, чем доказать единственность

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

Главная ошибка наивного генератора судоку — проверять, что решение существует, но не проверять, что оно единственное.

Вот почти заполненное поле:

534..8912 672195348 198342567 859..1423 426853791 713924856 961537284 287419635 345286179

solve() быстро заполнит четыре пропуска. Только завершений здесь два: цифры 6 и 7 можно переставить, не нарушив ни строку, ни столбец, ни блок.

countSolutions(puzzle, 2) останавливается после второго решения и возвращает 2.

Это не демонстрационная картинка. Та же строка из 81 символа лежит в solver.spec.ts, тест так и называется: «контрпример из лида действительно имеет два решения».

Я реализовал три стратегии поиска, а MRV и propagation дополнительно сравнил на наборах задач. Ещё измерил две операции: получение первого решения и доказательство того, что второго решения нет. Вторая вызывается после каждой попытки убрать подсказку, поэтому она в основном определяет цену генерации. React, Web Worker и тесты появятся дальше как обвязка этого поиска, а не как отдельные темы.

Это первый выпуск рубрики «ИграКОД» — про алгоритмы через запускаемые мини-игры. Ранее в цикле выходили материалы про useEffect, any, перенос TypeScript на Go, варианты архитектуры React-магазина и мы собирали и разбирали комбайн.

Читать далее

Разработчик 2.0. Следующий уровень абстракции

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

Вы открываете задачу и пишете одну строку:

Добавь идемпотентность в API создания заказа.

Через некоторое время перед вами diff в незнакомом репозитории. Изменены обработчик API, модель данных, тесты и документация. Все проверки проходят. При этом вы не написали ни одной строки кода.

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

Так кто же автор этого изменения?

Читать далее

Как успеть поступить в онлайн-магистратуру НИЯУ МИФИ по кибербезопасности в 2026 году: правила и сроки приёма

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

Привет, это команда Яндекс Практикума. До окончания приёмной кампании в онлайн-магистратуру МИФИ «Кибербезопасность» осталось меньше месяца. Если вы планируете поступать в 2026 году, сейчас самое время разобраться, как устроена программа, что входит в обучение и как проходит поступление.

Читать далее

«У вас в резюме указаны навыки ИИ. Что вы имели в виду?» Что отвечать, кроме количества потраченных токенов

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

Всё началось с чата с однокурсниками. Кто‑то обронил фразу «сейчас без ИИ никуда, это уже базовый навык», и следующие два дня мы выясняли, что каждый понимает под этим что‑то своё.

Один говорил, что весь навык сводится к умению нормально сформулировать запрос, всё остальное сделает модель. Другой доказывал, что настоящее умение это как раз не пускать ИИ туда, где он навредит, и что главный навык это дисциплина отказа. Третий считал, что тема надутая, а через год всё устаканится само и учиться нечему. Четвёртый прислал скриншот своего CLAUDE.md на двести строк и сказал, что вот она, настоящая работа.

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

А потом выяснилось, что вопрос не академический. У половины из нас в резюме стоит строчка про навыки работы с ИИ, и на собеседованиях за неё уже начали цепляться. «У вас тут указаны навыки ИИ. Что вы имели в виду?» И вот тут начинается неловкое. Потому что честный ответ большинства звучит примерно так: пользуюсь Claude Code каждый день, беру модель посильнее, когда задача сложная, в прошлом месяце сжёг столько то токенов. Всё это правда, и всё это ничего не говорит о вас как об инженере. Количество потраченных токенов характеризует вас ровно так же, как количество написанных строк кода: то есть никак, а иногда и в минус.

Проблема в том, что альтернативной формулировки у нас просто нет. Мы умеем называть инструменты и не умеем называть умения. Поэтому я сел и попробовал собрать перечень. Не «топ 10 промптов», а честный список умений, каждое из которых можно проверить, показать в работе и внятно описать словами, когда спросят.

Читать далее

Бенчмаркая ArrayPool: подстава при копировании потоков — 131 072 байта в LOH

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

ArrayPool используют ради экономии на аллокациях. Но есть размеры, где он делает обратное: массив уходит в LOH, а через new остаётся в нулевом поколении.

Один такой размер зашит в .NET по умолчанию — им копируются потоки. Проверил на четырёх машинах и трёх рантаймах.

Читать далее

CONTRACT: одна схема вместо N×M сериализаторов

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

Одна C++ схема — protobuf, binary, JSON, YAML и structured logging без ручных маппингов. В статье разбираю, как CONTRACT отделяет стабильный контракт типа от конкретных форматов, зачем нужны BASE, PROPERTY и REFERENCE и как атрибуты полей задают общую политику для разных адаптеров. Всё - на реальном коде из репозитория: YAML-конфиг, структурированный лог и сравнение производительности с libprotobuf. GitHub.

Читать далее

Как облегчить переезд бота из Telegram в MAX

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

В связи с тем, что Павел Дуров теперь террорист, Telegram скоро признают экстремистской сетью, что окончательно выведет бизнес в черную зону. Несмотря на то, что мы видим, как до сих пор всё прекрасно работает в соц.сети с картинками, важно перестраховаться. Поэтому сейчас, чтобы “обелиться”, многие бизнесы и эксперты переезжают или будут переезжать в другие соц.сети, в том числе в тот, который ловит даже на парковке

Если вам кажется, что для перевода бота с Telegram на МАХ достаточно пары кликов: получить токен, поменять адрес API и подключить прежние обработчики, то, к сожалению, все не совсем так. Обычно это намного сложнее, ведь у платформ отличаются события, кнопки, медиа, работа с мини-приложениями и идентификаторами.

А если вам не повезло и в проекте намешаны бизнес-логика и код конкретной платформы, то скорее всего, надо будет написать практически нового бота

Читать далее

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

Находки в опенсорсе: мир питона за июль 2026

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

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

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

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

Читать далее

70 бесплатных уроков августа: от Python и Go до Kubernetes, ML и микросервисной архитектуры

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

Рост в разработке редко определяется только количеством освоенных технологий. Гораздо важнее понимать, какие инструменты действительно применяются в проектах, какие архитектурные решения становятся стандартом и где находятся точки роста — в коде, инфраструктуре, данных или работе с ИИ.

В этом дайджесте собрали 70 открытых уроков месяца — от Python, Go и C# до Kubernetes, Kafka, PostgreSQL, микросервисной архитектуры, ML и ИИ-агентов. Темы разбирают преподаватели-практики: можно погрузиться в новые технологии, обсудить инженерные задачи и проверить свои знания на примерах из реальной разработки.

Расписание августа

«Кнопка бдительности» за 30 000 ₽: как угольный карьер сделал систему антисна без камер и ИИ

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

Карьер. Ночная смена. Самосвал везет уголь, водитель уже несколько часов за рулем. Самый опасный сценарий сейчас – не поломка, а «микросон»: несколько секунд без сознания на скорости, и 45-тонная машина превращается в неуправляемый снаряд.

Готовые системы мониторинга состояния водителя решают эту задачу с помощью видеокамер: следят за глазами, анализируют видеопоток, интегрируются с диспетчерской. Но стоят они соответственно. Сегодня разберем кейс угледобывающего предприятия «Разрез Пермяковский», где пошли инженерным путем и собрали собственную систему «Кнопка бдительности» на базе телематического оборудования. Итоговая стоимость на 10 единиц техники – около 30 000 ₽.

Читать далее

Axelix выходит в общий доступ. Путь в тысячу миль начинается с первого шага

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

От имени основной команды Axelix и всех, кто внёс вклад в сообщество, я хочу заявить: мы наконец это сделали.

Axelix, наконец, выходит в GA (Generally Available — общедоступная версия)!

Для тех, кто не знает - Axelix это продукт с открытым (Open Source) ядром, который позволяет выявлять распространённые проблемы, подводные камни и неэффективности в Java-приложениях.

Ядро продукта лежит на GitHub - можете использовать, это бесплатно.

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

Читать далее

Бенчмаркая ZLinq: один IEnumerable в сигнатуре — и .NET 10 быстрее библиотеки в 3,9 раза

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

ZLinq — замена LINQ без аллокаций. На .NET 8 и .NET 9 время одинаковое. На .NET 10 иначе: массив тот же, но если параметр объявлен как IEnumerable, foreach перебирает его в 2,58–3,89 раза быстрее ZLinq. Причина видна в машинном коде, память замерена отдельно.

Читать далее

Один интерфейс — девять LLM-провайдеров: как мы подружили Kimi K3, GLM-5.2, Claude и Ollama в одном терминальном агенте

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

Привет, Хабр! Я делаю execai — терминальный AI-агент на Go (bubbletea), в духе Claude Code. Он читает файлы, гоняет shell-команды, ходит в kubernetes и стримит ответы в TUI.

В какой-то момент выяснилось, что пользователям нужен не «агент с одной моделью», а мультитул: у кого-то подписка Kimi Code за $19, у кого-то GLM Coding Plan за $18, у кого-то корпоративный ключ Anthropic, а кто-то хочет гонять Ollama локально и не платить вообще. И всё это — в одном чате, с общей историей, с переключением на лету.

Под катом — как устроена мультипровайдерная архитектура: один интерфейс из пяти строк, два несовместимых мира API (Anthropic-compat и OpenAI-compat), SSE-парсеры с аккумуляцией tool calls, динамические каталоги моделей, автодетект тарифа подписки и делегирование в чужие CLI. С реальным кодом и граблями, на которые мы наступили.

Читать далее

Как я делал текстовую игру для веба

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

Привет, Хабр! Меня зовут Костя, я десять лет занимаюсь коммерческой Android-разработкой. Давно хотелось попробовать себя в вебе, а эксперименты с LLM давали некоторую уверенность в том, что по крайней мере есть шанс написать агентами поддерживаемый код и задеплоить.

Что же можно сделать? Конечно тамагочи! Текстовая браузерная игра: герой живёт в мире мрачного будущего. Непрямое управление, возможность предлагать миссии, а также тюнинг предпочтений героя. Эдакий Годвилль, но на новый лад. Как я делал, и что получилось, спустя пару недель, расскажу под катом :)

Читать далее