Search
Write a publication
Pull to refresh
@resetmeread⁠-⁠only

Скромный пастух нулей и единиц…

Send message

Учим Xiaomi Mi Band 9 ходить в сауну

Level of difficultyMedium
Reading time13 min
Views10K

Сегодня у меня в работе самый популярный продукт линейки часов Xiaomi - Mi Band 9.
В данных моделях есть специальный режим мониторинга температуры, который, в случае перегрева выключает часы, сегодня мы посмотрим как это работает и я покажу как изменить поведение системы даже не меняя прошивку, создадим циферблат для управления функционалом на языке LUA

Читать далее

Применение языка Python в инженерной практике. Точность измерений и вычислений. Погрешности и неопределённости

Level of difficultyMedium
Reading time5 min
Views4K

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

Погрешность измерения — это отклонение измеренного значения величины от её истинного (действительного) значения. Погрешность измерения является характеристикой точности измерения. Выяснить с абсолютной точностью истинное значение измеряемой величины, как правило, невозможно, поэтому невозможно и указать величину отклонения измеренного значения от истинного. Это отклонение принято называть ошибкой измерения. Возможно лишь оценить величину этого отклонения, например, при помощи статистических методов. На практике вместо истинного значения используют действительное значение величины x_Д, то есть значение физической величины, полученное экспериментальным путём и настолько близкое к истинному значению, что в поставленной измерительной задаче может быть использовано вместо него. Такое значение обычно вычисляется как среднестатистическое значение, полученное при статистической обработке результатов серии измерений. Это полученное значение не является точным, а лишь наиболее вероятным. Поэтому при записи результатов измерений необходимо указывать их точность. Например, запись T = 2.8 \plusminus 0.1 \; s \\; \; P = 0.95 означает, что истинное значение величины T лежит в интервале от 2.7 s до 2.9 s с доверительной вероятностью 95%. Количественная оценка величины погрешности измерения — мера сомнения в измеряемой величине — приводит к такому понятию, как неопределённость измерения. Синонимом термина "погрешность измерения" (англ. measurement error) является "неопределённость измерения" (англ. measurement uncertainty). Таким образом мы плавно и ненавязчиво подошли к названию модуля языка Питон, которому посвящён настоящий туториал - uncertainties (неопределённости).

Читать далее

Всё об устройстве FT8/FT4 с примерами на Python

Level of difficultyMedium
Reading time40 min
Views4.5K

FT8 — цифровой радиолюбительский протокол, разработанный Джо Тейлором (K1JT) и Стивом Франке (K9AN) в 2017 году. В этой статье будут рассмотрены подробности работы протокола.
Статья может быть интересна радиолюбителям, как знакомым, так и не знакомым с протоколами FT8 и FT4, а также тем, кто хочет в подробностях понять устройство этих протоколов.

Читать далее

Делаем приватный монитор из старого LCD монитора

Reading time2 min
Views983K


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

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

Читать дальше →

Пишем простой драйвер Linux для устройства, ничего не зная о драйверах и о USB

Level of difficultyEasy
Reading time12 min
Views13K

Пару месяцев назад я купил Nanoleaf Pegboard Desk Dock — последнее слово в технологиях USB-хабов с RGB-светодиодами и крючками для устройств. К сожалению, это чудо инженерной мысли поддерживает только гейминговые операционные системы — Windows и macOS, поэтому возникла необходимость в драйвере для Linux.

В своих постах я уже настраивал Windows VM с пробросом USB и пытался выполнить реверс-инжиниринг официальных драйверов. При этом я задумался, а нельзя ли написать производителю и попросить у него спецификации или документацию его протокола. К моему удивлению, техподдержка Nanoleaf ответила мне всего через четыре часа, предоставив полное описание протокола, используемого Desk Dock, а также полосами RGB-светодиодов. Документация по большей мере подтвердила то, что я обнаружил самостоятельно, но также я нашёл в ней пару других мелких подробностей (например, управление питанием и яркостью), которые были мне неизвестны.

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

Читать далее

Как я проектирую и разрабатываю реальные расширения для Python на Rust

Reading time14 min
Views4.4K

Вы, вероятно, уже видели немало статей с заголовками вроде «Python, Rust — производительность, бла-бла-бла…». Печально, но почти все эти статьи демонстрируют лишь самые простые примеры уровня «hello world». В отличие от них, в этой статье я хочу поделиться тем, как я проектирую крупные расширения для реальных проектов и почему принимаю при этом те или иные решения.
Читать дальше →

VHS-Decode — новый метод оцифровки видео

Level of difficultyEasy
Reading time16 min
Views19K

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

Зимой 2025 года в мои руки попало 35 кассет формата VHS и VHS-C из семейного архива, и встала задача по их оцифровке. С учетом того, что на каждой кассете было записано приблизительно по 60 минут видео, а средний ценник услуг по захвату сейчас составляет 400 рублей в час, общая стоимость конвертации составила бы около 14 тысяч рублей. Эта сумма показалась мне слишком большой, и было решено сделать все самостоятельно. В данной статье я хочу рассказать об относительно новом методе оцифровки видеокассет, на котором я остановился, и сравнить его с классическими подходами.

Читать далее

Jaeger v2

Reading time7 min
Views2.3K

Появилась у меня задача по мониторингу и оценке производительности проекта на микросервисной архитектуре. Для решения был выбран Jaeger. Он давно на рынке, активно развивается (не так давно вышла версия 2, в которой упростилось развертывание и появилась интеграция OpenTelemetry). На мой взгляд, Jaeger – отличное решение для трейсинга, но документация ощущается как не до конца собранный пазл: важные вещи разбросаны, а для понимания приходится обращаться к исходному коду или искать примеры в GitHub-репозиториях.

Цель данной статьи показать на практике, как внедрить Jaeger в продукт на микросервисах.

Ссылку на код всего, о чем пойдет речь дальше, можно найти в конце статьи.

Читать далее

Мой набор для Django

Level of difficultyEasy
Reading time3 min
Views2.9K

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

Читать далее

Да, этот HTML и CSS старый, но всё ещё полезный

Reading time6 min
Views11K

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

Следя за развитием HTML и CSS, очень сложно запомнить всё. Я заметил это, ведя свой канал и общаясь с коллегами. Многие люди не знают про возможности HTML и CSS, которые были внедрены в браузеры 6 лет назад или раньше.

Только их возраст не является недостатком. Они всё ещё полезны в современной разработке. По этой причине я собрал их в небольшой список и на основе его написал эту статью. Надеюсь, найдёте для себя что-то полезное.

Давайте посмотрим, что я подготовил.

Читать далее

Как работает ingress-nginx: нырнем поглубже. Часть 1 — basics

Level of difficultyMedium
Reading time11 min
Views7.3K

Наверняка вы все работаете с Kubernetes, публикуете сервисы наружу через Ingress-контроллер. Уверен, что большинство из вас использует ingress-nginx. Создаете манифест, деплоите его в k8s, но не всегда получаете именно тот результат, который хотели бы. Или же все работает, но спустя какое-то время что-то идет не так. 

В этой серии статей, созданной по мотивам выступления на DevOpsConf’25, мы подробно разберемся как работает сам ingress-nginx контроллер и почему это не совсем классический nginx. Погрузимся в дебри LUA-кода чтобы понять, как реализована балансировка. А также затронем тему сниппетов, как их включить если они вам очень нужны, и почему этого делать не стоит.

Меня зовут Алексей Колосков, я Lead DevOps из Hilbert Team. Больше 15 лет я в IT: за это время админил, разрабатывал, развивал on-premise инфраструктуру, инфраструктуру в облаках и даже курсы по DevOps, Security и DataTech в Yandex Cloud. Hilbert Team — провайдер IT-решений для крупного и среднего бизнеса в области облачных технологий, DevOps, DevSecOps, DataOps, MLOps и FinOps. Партнёр Yandex Cloud со специализацией Yandex Cloud Professional по направлениям DevOps и Data Platform.

Читать далее

Что такое DX-кластер и при чем тут Telnet

Reading time8 min
Views5.1K

Давно ли вы пользовались протоколом Telnet? Да-да, тем самым, придуманным аж в 1969 году для сети ARPANET. А если я вам скажу, что использую его каждый день и он помогает мне получать актуальные данные от пользователей по всему миру? Давайте обсудим, каким образом древний протокол используется радиолюбителями и как проводить самые редкие радиосвязи на нашей планете. Садитесь в машину времени!

Читать далее

Запускаем Vagrant на MacOS Apple M1/M2

Reading time5 min
Views14K

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

Vagrant остаётся одной из самых популярных утилит для подобных задач, имеет гибкий синтаксис и поддержку базовых алгоритмических структур – можно поднимать N и K машин в цикле, используя заранее вводимые переменные, а потом еще и ansible-inventory генерировать на выходе, разбивая машины по группам.

Долгое время я оставался пользователем MacBook на процессоре Intel, но больше так продолжаться не могло – пришлось сменить компьютер, хотя я и знал о некоторых особенностях работы М1 с виртуальными машинами.

В этой статье я расскажу, как настроить и запустить Vagrant на процессорах Apple M1/M2 и вернуться в привычный рабочий режим.

Читать далее

Установка Windows через CMD

Level of difficultyMedium
Reading time6 min
Views18K

Приходилось ли вам устанавливать современные версии Windows? Если да, то вам точно знаком установщик, каждый этап которого прогружается несколько секунд, и который яростно навязывает вам использование аккаунта Microsoft, с каждым обновлением делая использование локального аккаунта всё труднее и труднее.

Но существует альтернативный способ установить Windows — более быстрый, не требующий подключения к интернету и не навязывающий никаких сервисов — ручная установка с использованием CMD.

Читать далее

Как сделать CI-V-кабель для управления приемником Icom IC-R20

Reading time7 min
Views3.5K

Привет, Хабр! Это Антон Комаров, автор команды спецпроектов МТС Диджитал. Мой интерес к радио проснулся очень давно, с тех самых пор, как приятель показал мне, насколько полезно иметь в машине CB-радиостанцию для связи с водителями-дальнобойщиками. Поработав в эфире, я заинтересовался: а что происходит на других диапазонах? Я стал понемногу обзаводиться UHF- и VHF-оборудованием и приобрел не слишком известный RTL-SDR-донгл на базе Elonics e4000.

Но настоящим событием для меня стал подарок хорошего друга, который, видя мое стремление к изучению радио, вручил сканер Icom IC-R20. Это даже по нынешним меркам крутой аппарат на базе супергетеродина с тройным преобразованием частоты. Он позволяет принимать сигналы в диапазоне от 150 кГц до 3 300 МГц, обладая при этом хорошей чувствительностью и избирательностью. Пока я не буду заострять внимание на его технических характеристиках, а расскажу об одной из его возможностей, а именно — удаленном управлении по протоколу CI-V.

Читать далее

Пара слов об алгебре интервалов

Level of difficultyHard
Reading time10 min
Views4K

Интервалы, интервалы,‑ где тут лево, где тут право...

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

На практике однако встречаются и более сложные задачи. Допустим, например, что в некой гостинице есть два свободных номера. Но один свободен со 2-го по 5-е число, а второй - с 6-го по 10-е. Клиент интересуется, есть ли возможность поселения на 8 дней? Правильный ответ - "да, есть, но с переселением (лесенкой)". Для такого ответа программа должна уметь распознать, что интервалы [2, 5] и [6, 10] являются смежными , а значит, их можно сложить, получив общий доступный интервал [2, 10], длина которого (9) превышает запрашиваемый.

Другая более редкая, но и более интересная задача - определить область пересечения двух множеств интервалов. Сложность в том, что количество интервалов в сравниваемых множествах может быть произвольным. Программист, который умеет только в сравнения "на меньше/больше" (или даже в between), столкнется при реализации с трудностями формализации.

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

Поехали!

Что такое NER, зачем он нужен и когда не поможет

Level of difficultyEasy
Reading time7 min
Views2.7K

Про NER написано немало, но этот материал носит прикладной характер. Статья будет полезна тем, кто интересуется NLP и ищет разные подходы для решения узкопрофильных задач, требующих извлечения сущностей из текста.

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

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

Читать далее

Плохие JOIN’ы: приемы, которые (нечаянно) кладут прод

Level of difficultyEasy
Reading time5 min
Views26K

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

В этой статье разбираем один из самых коварных способов убить базу — плохие JOIN'ы. Казалось бы, простое дело: связать пару таблиц — и вперёд. Но если в ON засунуть LOWER(email), забыть про индексы или перепутать LEFT JOIN с INNER — сервер мигом начнет дышать на ладан.

Читать далее

Перепрограммируем заводской Zigbee датчик протечки от компании Tuya

Level of difficultyEasy
Reading time5 min
Views13K

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

Читать далее

Обнаружение аномалий в данных временных рядов с помощью статистического анализа

Level of difficultyEasy
Reading time20 min
Views4.9K

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

Однако что делать, если необходимо отслеживать поведение пользователей на веб‑сайте? Представьте, что вы управляете интернет‑магазином, где продаете товары. Одним из подходов может быть установка минимального порога для ежедневных продаж и проверка его раз в день. Но что, если вам нужно выявить проблему гораздо раньше, в течение нескольких часов или даже минут? Статичный порог не позволит этого сделать, так как активность пользователей может меняться в течение дня. Именно здесь на помощь приходит обнаружение аномалий.

Читать далее
1
23 ...

Information

Rating
Does not participate
Registered
Activity