-= bot.habr.rss =-
subject:
11.05.2025 20:10
BotHabr (tgi,2)
Опубликовано: Sun, 11 May 2025 16:21:39 GMT
Канал:
В этой статье разбирается решение задачи «Гистограммы» с контеста Route 256 от Ozon с помощью SIMD.Условие задачиГистограммой является массив, каждый элемент которого указывает высоту столбика на соответствующей позиции. Две гистограммы считаются совпадающими, если при совмещении одной гистограммы с другой гистограммой, повёрнутой на угол 180°, получается ровный прямоугольник без наложений и пропусков. Читать далее]]>
https://habr.com/ru/articles/908384/
--------------------------------------------------------------------------------
-= bot.habr.rss =-
subject:
11.05.2025 20:10
BotHabr (tgi,2)
Опубликовано: Sun, 11 May 2025 16:53:19 GMT
Канал:
Существует бесплатные статические анализаторы. Среди низ splint и cppcheck.Статический анализатор это такая консольная программа, которая проверяет исходные коды до компиляции. Своего рода автоматическая инспекция программ. В этом тексте я представил готовый makefile для запуска статического анализа. Читать далее]]>
https://habr.com/ru/articles/770506/
--------------------------------------------------------------------------------
-= bot.habr.rss =-
subject:
11.05.2025 10:10
BotHabr (tgi,2)
Опубликовано: Sun, 11 May 2025 06:30:05 GMT
Канал:
Попалась мне недавно статья Синус, косинус, квадратный корень FixedPoint. Автор размышляет как можно не затратно рассчитывать координаты и углы в микроконтроллере. Попробовал я подсказать автору пару аппроксимаций, но он оказался разговорчив только на тему "упадка автоматизации в РФ", а по делу как то не сложился диалог. Посмотрел, такие статьи не редкость. Например, очень хорошая статья Как посчитать синус быстрее всех на Xабре. В общем разгрузил себе голову на майских праздниках от главного хобби - геометрической алгебры.В процессе изучения всего этого, возник у меня вопрос - а зачем вообще нужно аппроксимировать sin,cos, arctan и еще и в привязке к числу в двоичной системе, если есть декартовы координаты?Из ответа на этот вопрос родилась идея этой статьи. Будет длинно, но если на примере подробно разбираться с работой машинного эпсилон и автоматическим дифференцированием, короче не получится. Следите за мыслью по ходу изложения. Начну с главного тезиса, и разверну по шагам как это работает на примере операций с единичной окружностью.Автоматическим дифференцированием можно назвать любую конечную разность, например dy=(y(x+ε)-y(x-ε))/(2*ε). Разность взята центральная, так как она дает меньшую погрешность. ε это машинный ноль. За счет округления до младшего бита его главное свойство: ε^2=0.Эта статья по сути не более, чем описание основных моментов идеи. И если у кого то появится желание поставить эту идею на строгие математические рельсы, с удовольствием готов поучаствовать. Кто в этом случае опубликует финальную версию мне искренне не важно. Читать далее]]>
https://habr.com/ru/articles/907936/
--------------------------------------------------------------------------------
-= bot.habr.rss =-
subject:
10.05.2025 20:10
BotHabr (tgi,2)
Опубликовано: Sat, 10 May 2025 16:46:01 GMT
Канал:
Если вы системный администратор и занимаетесь обслуживанием пользователей, не только в плане исполнения пожеланий по работе программных комплексов, но закупаете, устанавливаете и заменяете компоненты рабочих мест (мониторы, мышки, клавиатуры, системные блоки), то у вас, как и у меня, наверняка скопилось довольно большое количество сломанных клавиатур, где что-то уже не нажимается или стерты буквы. Плюс ко всему, клавиатура это как предмет личной гигиены, как зубная щетка, она хранит историю своего прошлого хозяина, и эта история новому пользователю будет довольно неприятна. Это и крошки под кнопками, частички кожи, грязи, волосы, наконец. Я встречал пользователей, которые работали за клавиатурами покрытыми черным слоем грязи, причем это их совершенно не беспокоило. А мне хотелось пойти и вымыть руки, поработав пару минут за этими рабочими местами.Таких б/у клавиатур скопилось просто десятки штук, благо в подвале на складе есть место, и они просто лежали в коробке ожидая своей участи. Читать далее]]>
https://habr.com/ru/articles/908258/
--------------------------------------------------------------------------------
-= bot.habr.rss =-
subject:
10.05.2025 18:10
BotHabr (tgi,2)
Опубликовано: Sat, 10 May 2025 14:12:52 GMT
Канал:
Делюсь опытом реализации распознавания показаний стрелочного манометра по фотографии и отправки их в Home Assistant.Давно мучал вопрос передачи показаний давления системы отопления со штатного манометра газового котла. Для этого несколько лет назад была приобретена камера ESP32-CAM и интегрирована в Home Assistant посредством ESPHome. Читать далее]]>
https://habr.com/ru/articles/908238/
--------------------------------------------------------------------------------
-= bot.habr.rss =-
subject:
10.05.2025 14:10
BotHabr (tgi,2)
Опубликовано: Sat, 10 May 2025 11:02:38 GMT
Канал:
В этой части нас ждёт погружение в один из способов организации мультипоточности на базе единственного ядра процессора. Мы научимся принудительно переключать выполнение между полностью зацикленными участками кода, ничего не "знающими" о каком-то другом коде, конкурирующем за процессорное внимание. По ходу повествования будут даны все необходимые пояснения и читателю не придётся обращаться к другим источникам, кроме первой части статьи. Читать далее]]>
https://habr.com/ru/articles/907312/
--------------------------------------------------------------------------------
-= bot.habr.rss =-
subject:
10.05.2025 12:10
BotHabr (tgi,2)
Опубликовано: Sat, 10 May 2025 09:01:31 GMT
Канал:
Привет, Хабр! Несколько лет назад у меня был самодельный 48-вольтовый электромопед на свинцово-кислотных аккумуляторах, переделанный из Риги-12.
Для него был разработан специальный спидометр, смонтированный вместо крышки бензобака, переделанного в отсек для электроники. Во время движения прибор показывал скорость, а на остановке — пройденный путь.
На примере этой несложной поделки я расскажу и покажу вам последовательность разработки и воплощения любительского микроконтроллерного устройства. Читать дальше →]]>
https://habr.com/ru/companies/ruvds/articles/906124/
--------------------------------------------------------------------------------
-= bot.habr.rss =-
subject:
09.05.2025 17:10
BotHabr (tgi,2)
Опубликовано: Fri, 09 May 2025 13:14:43 GMT
Канал:
Odin — это универсальный язык для системного программирования, придуманный Биллом Холлом aka «gingerBill». Odin задумывался как современная альтернатива C, и в нём делается акцент на простоте, производительности и удобочитаемости, но при этом не упускается контроль над низкоуровневыми деталями.На сайте об этом языке Odin охарактеризован как «ориентированный на данные», именно поэтому в нём присутствуют, например, структуры массивов (SOA) и неявная инициализация значения в ноль. Удивительно, что, несмотря на такие приоритеты, в языке есть динамические словари и массивы, встроенные в сам язык. Притом, что памятью всё-таки приходится управлять вручную, такие встроенные вещи встречаются нечасто.Возможно, вот те самые черты, придающие Odin собственный облик: язык задуман как эргономичный, такой, на котором удобно писать, и поэтому многое предоставляет «из коробки». Также в Odin предусмотрен «вендор», в котором содержатся привязки к разнообразным популярным библиотекам. Поэтому вкатываться в язык очень просто. Читать далее]]>
https://habr.com/ru/articles/908100/
--------------------------------------------------------------------------------
-= bot.habr.rss =-
subject:
09.05.2025 17:10
BotHabr (tgi,2)
Опубликовано: Fri, 09 May 2025 13:24:27 GMT
Канал:
Алгоритм сортировочной станции (Shunting Yard) был предложен Дейкстрой ещё в 1961 году и служит для преобразования математических выражений из привычной всем инфиксной записи (где операторы стоят между операндами, как в 1 + 2 * 3) в постфиксную (обратную польскую нотацию, 1 2 3 * +), удобную для дальнейшего вычисления. Однако есть один важный момент, который почти всегда упускается или замалчивается: алгоритм предполагает, что входное выражение уже синтаксически корректно.Ни в Википедии, ни в большинстве обучающих статей вы не встретите слов о том, что выражения вроде + (1 2, 3 * 4 + ) или sin(+) должны вызывать ошибку. В лучшем случае они просто не вычисляются (что будет понятно лишь на этапе обработки в обратной польской записи), в худшем – дают бессмысленный результат. Алгоритм продолжает работать, даже если выражение изначально некорректно – и мало кто задумывается, почему это плохо.Эта статья – попытка исправить эту несправедливую ситуацию, в которой мы не только реализуем алгоритм сортировочной станции «на максималках» с поддержкой констант, переменных, функций, унарных операторов, приоритетов и ассоциативности, но и добавим полноценную проверку корректности выражения по ходу разбора. Читать далее]]>
https://habr.com/ru/articles/908062/
--------------------------------------------------------------------------------
-= bot.habr.rss =-
subject:
09.05.2025 13:10
BotHabr (tgi,2)
Опубликовано: Fri, 09 May 2025 09:40:53 GMT
Канал:
В первой части статьи мы рассмотрели, как можно вручную ускорить Go-код с помощью векторизации и SIMD-инструкций, реализованных через Go-ассемблер. Написали простую, но показательно быструю реализацию sliceContains и увидели, что даже базовая векторизация может дать ускорение в 10–14 раз по сравнению со стандартной реализацией.Во второй части статьи погрузились в практическое применение SIMD в Go-ассемблере, реализовали функцию SliceContainsV1 и изучили, как с помощью VADD, VDUP и других инструкций можно добиться 10–14-кратного ускорения простых задач.Но возможности оптимизации Go-программ на этом не заканчиваются. В этой части мы пойдём дальше: рассмотрим другие техники низкоуровневой оптимизации — от использования C-кода и альтернативных компиляторов с поддержкой векторизации до работы с аппаратными транзакциями памяти на Intel. Поговорим о том, как внедрять ассемблер в продакшен-код, не боясь за его поддержку, и как обойти ограничения стандартного Go-компилятора.Привет, Хабр! Меня зовут Игорь Панасюк, я работаю в Яндекс, преподаю в ИТМО, а также в свободное время выступаю на конференциях, делюсь опытом в соцсетях и помогаю развитию Go-сообщества, веду телеграм-канал и youtube-канал. Если вы уже знакомы с базовыми техниками векторизации, эта часть поможет глубже понять, как устроены продвинутые способы ускорения Go-кода и на что стоит обратить внимание при работе с архитектурно-зависимыми оптимизациями. Читать далее]]>
https://habr.com/ru/companies/oleg-bunin/articles/905972/
--------------------------------------------------------------------------------