Как стать автором
Обновить
4
1.8

Пользователь

Отправить сообщение

Собираем удобный CAN bus сниффер с интерактивной консолью за $3

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

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

Протокол CAN сейчас широко распространён не только в автомобильной сфере, но и на предприятиях, в различных самоделках, и даже в Средствах Индивидуальной Мобильности (контроллеры VESC, например). В ноябре прошлого года я сделал для себя удобный инструмент для анализа CAN и отправки фреймов, сейчас же хочется сделать код опенсорсным и рассказать о самом проекте.

Читать далее
Всего голосов 34: ↑34 и ↓0+34
Комментарии18

Как вернуть себе потерянные (или украденные из-за санкций?) умные функции стиральной машины Bosch

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

У меня была стиральная машина Bosch последней линейки, купленная ещё в 2022 году, но когда недавно я захотел познакомиться с её умными функциям в мультибрендовом приложении Home Connect от Bosch/Siemens, то обнаружилось, что способ подключения стиралки к приложению, описанный в инструкции, не работает.

После небольшого поиска в интернете узнал, что в апреле 2022 года приложение просто перестало работать в России безо всяких уведомлений. Проблемы настигли обладателей умной бытовой техники Bosch, Siemens и других брендов: Gaggenau, NEFF, Thermador, Balay, Constructa, Pitsos и Profilo.

Я почитал различные эмоциональные отзывы, но это не помогло мне понять как сделать так, чтобы стиралка заработала с моим локальным умным домом Home Assistant с открытым исходным кодом.

Обходим запреты восстанавливаем функционал
Всего голосов 42: ↑28 и ↓14+14
Комментарии227

Некоторые нюансы в настройке профиля в LinkedIn

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

Когда мы говорим о зарубежных клиентах и карьере, то из-за угла выглядывает LinkedIn. Через него проходят все, кто развивает свою карьеру и бизнес за рубежом. Меня зовут Светлана Петровичева, в подборе я уже 12 лет, основатель headz.io, Get.it, спикер, веду канал про рекрутинг, спикер различных международных конференций, с вами поделюсь опытом работы с LinkedIn.

Сегодня поговорим про важность профиля, оформлении профиля, адаптации профиля под ЦА, нетворкинге и, конечно, поиске работы и клиентов.

Читать далее
Всего голосов 29: ↑24 и ↓5+19
Комментарии17

Особенности проксирования через CDN/Websocket/gRPC для обхода блокировок

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

Эта статья — заключительная (наконец‑то!) из моего огромного цикла про недетектируемые инструменты для обхода блокировок. В предыдущих публикациях я упоминал, что клиенты и серверы XRay (форк V2Ray) и Sing‑box при использовании протоколов VLESS/VMess/Trojan могут работать через веб‑сокеты и gRPC, что позволяет подключаться к даже заблокированным Роскомнадзором прокси‑серверам через CDN (content delivery или content distribution network) и дает дополнительные преимущества. Сегодня мы поговорим об этом поподробнее.

Читать далее
Всего голосов 80: ↑78 и ↓2+76
Комментарии148

Оптика в техническом зрении. Лекция 2: Аберрации

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров8.8K

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

Меня зовут Андрей, я – специалист по оптическим системам, оптик и инженер-конструктор в одном лице.

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

Текущая лекция – не обязательная. Она не предлагает конкретных формул и способов решения, но даёт лучшее понимание того, как именно складывается изображение после объектива. Соприкасающимся с оптикой людям рекомендую ей прочитать. Более короткого и наглядного описания аберраций в русскоязычном интернете нет.

Читать далее
Всего голосов 42: ↑41 и ↓1+40
Комментарии39

Множественная кусочно-постоянная регрессия

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров2.6K

Описан алгоритм построения кусочно-постоянной зависимости переменной y от взвешенной суммы x=w_1x_1+\ldots+w_px_p, минимизирующей сумму квадратов отклонений y от средних значений на диапазонах изменения величины x.

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии13

Принцип определения дальности между радио трансиверами

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

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

В этом тексте показан алгоритм определения дальности между радио трансиверами.

Читать далее
Всего голосов 10: ↑5 и ↓50
Комментарии18

Взлёт и падение «Живого Журнала». Часть 1: как ЖЖ родился и стал русскоязычным

Время на прочтение9 мин
Количество просмотров26K

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

Именно там кипели бурные страсти и жуткие ср*чи, рождались мемы и дискурсы, вспыхивали звёзды знаменитых блогеров и афедроны комментаторов. Кащениты тгавили пейсателя, падонки учили олбанскей, аффтарами писались тонны лытдыбров, а с многострадальным головным убором Антона Носика чего только ни происходило.

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

Смахнув скупую слезу ностальгии, попробуем вспомнить некоторые из славных и не очень страниц истории русскоязычного LiveJournal.
Читать дальше →
Всего голосов 168: ↑165 и ↓3+162
Комментарии98

Теперь наш синтез на 20 языках

Время на прочтение7 мин
Количество просмотров12K

hero_image


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


В этот раз мы добавили:


  • 1 высококачественный голос на русском языке (eugeny);
  • Синтез на 20 языках, 174 голоса;
  • В список языков входят 5 языков народов СНГ: калмыцкий, русский, татарский, узбекский и украинский;
  • В список языков входят 5 вариаций на тему романо-германских языков: английский, индийский английский, испанский, немецкий, французский;
  • Также в список языков входят 10 языков народов Индии;
  • Новую значительно улучшенную модель для простановки ударений и буквы ё со словарем в 4 миллиона слов и точностью 100% (но естественно с рядом оговорок);
  • Все модели наследуют все "фишки" прошлого релиза, кроме автоматической простановки ударений для языков отличных от русского;

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


Попробовать модель как обычно можно в нашем репозитории и в колабе.

Читать дальше →
Всего голосов 65: ↑63 и ↓2+61
Комментарии24

Разглядывая JTAG: идентификация

Время на прочтение19 мин
Количество просмотров16K

Каждый электронщик, работающий (или отдыхающий) с цифровыми микросхемами рано или поздно обязательно сталкивается с протоколом JTAG. Значительное количество материалов о данном протоколе содержит три раздела:
1) Обширный экскурс в историю и рассказ о том, как стенд с летающими щупами и рентгеновская установка легко могут быть заменены отладчиком на 2-3 порядка дешевле их.
2) Достаточно сжатое описание протокола JTAG (с картинкой его конечного автомата).
3) Рассказ о том, что фирменный отладчик, а также программное обеспечение компании <COMPANY NAME> позволят почти без усилий протестировать почти любое устройство почти любой сложности и конфигурации.

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

Идентифицировать микросхему
Всего голосов 52: ↑52 и ↓0+52
Комментарии31

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

Время на прочтение7 мин
Количество просмотров13K

Недавно я купил себе клавиатуру от Corsair модели K55 RGB Pro. У нее есть модная нынче RGB-подсветка, а чтобы ее настраивать, производитель предлагает скачать программу iCUE. На сайте написано, что некоторые игры могут управлять подсветкой совместимых устройств. Я заинтересовался, как они это делают. Гугл обнаружил официальный SDK с примерами, а также документацию. Я решил сделать что-то полезное для себя, а заодно посмотреть, как создаются приложения под Windows.

Мой код (для Visual Studio) можно найти здесь.

Подробнее о том, как я это сделал, примеры кода и как это выглядит - под катом.

Читать далее
Всего голосов 38: ↑37 и ↓1+36
Комментарии29

Как распутать уроборос роутинга в Linux

Время на прочтение7 мин
Количество просмотров13K
image

Описание проблемы


Ситуация: у нас имеется один интерфейс eth0, «смотрящий» в интернет, с IP-адресом 192.168.11.11/24 и шлюзом 192.168.11.1. Нам нужно организовать интерфейс vpn0, который будет через VPN соединяться с неким сервером, и весь исходящий с этой машины трафик должен идти через этот интерфейс vpn0.

Примечание: я оставляю за скобками детали работы с IPv6, поскольку там хватает своих особенностей. Рассматривается только ситуация с IPv4.

Итак, мы берём в руки программу для подключения в VPN-у — она соединяется с неким VPN-сервером по адресу 10.10.10.10 и поднимает нам интерфейс vpn0 например с таким адресом: 192.168.120.10/24, шлюз 192.168.120.1. Казалось бы, всё хорошо, пинги через vpn0 ходят, коннект есть, он стабильный, осталось только прописать нечто вроде

ip route add default dev vpn0 metric 1000

чтобы перенаправить все соединения через новый интерфейс и…

И всё благополучно падает. Пропадает интернет, отваливается VPN, отключается ssh (если вы по нему подключены к хосту). Если приложение VPN-а не выключит интерфейс при потере соединения, то извне вы до этого хоста до ребута больше не подсоединитесь.

Что случилось?
Всего голосов 22: ↑22 и ↓0+22
Комментарии15

Domain-driven design, Hexagonal architecture of ports and adapters, Dependency injection и Python

Время на прочтение23 мин
Количество просмотров19K

Пролог

- Глянь, статью на Хабр подготовил.
- Эм... а почему заголовок на английском?
- "Предметно-ориентированное проектирование, Гексагональная архитектура портов и адаптеров, Внедрение зависимостей и Пайто..."

С пронзительным хлопком в воздухе материализуется обалдевший Сатана в обличии сине-жёлтого питона.

--

Эта техническая статья о применении практик гексагональной архитектуры и всего остального вышеперечисленного в разработке приложений. На примере рассматривается как элегантно вплести гексагональную архитектуру в устоявшуюся, консервативную и казалось бы совершенно безкомпромиссную структуру веб-приложений на Django

Читать далее
Всего голосов 8: ↑7 и ↓1+6
Комментарии10

По зубам: гигиена, часть 1

Время на прочтение7 мин
Количество просмотров17K

На это всегда не хватает времени: как вечером хочется поскорее пойти спать, а добраться до зубной щётки сродни подвигу, так и на приёме у стоматолога рассказ о гигиене зачастую ограничивается лаконичным, но явно недостаточным советом: «Купите какую-нибудь щётку средней жёсткости и какую-нибудь пасту с травами и чистите зубы 2 раза в день».



Зубной налёт (макрофото с электронного микроскопа)

Читать дальше →
Всего голосов 18: ↑15 и ↓3+12
Комментарии39

Stm32 + USB на шаблонах C++. Продолжение. Делаем HID

Время на прочтение11 мин
Количество просмотров7.5K

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

Читать далее
Всего голосов 22: ↑21 и ↓1+20
Комментарии13

USB на регистрах: bulk endpoint на примере Mass Storage

Время на прочтение13 мин
Количество просмотров9.2K


Еще более низкий уровень (avr-vusb)
USB на регистрах: STM32L1 / STM32F1
USB на регистрах: interrupt endpoint на примере HID
USB на регистрах: isochronous endpoint на примере Audio device

В прошлый раз мы познакомились с общими принципами организации USB и собрали простое устройство, иллюстрирующее работу конечной точки типа Control. Пришло время изучать следующий тип — Bulk. Конечные точки такого типа предназначены для обмена большими объемами информации, причем чувствительной к надежности, но не скорости обмена.

Классические примеры — запоминающие устройства и переходники вроде USB-COM. Но переходники требуют еще наличия конечной точки типа Interrupt, которую мы пока «не проходили», так что остановимся на эмуляции флешки. Точнее, двух флешек одновременно.
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии37

Синхронные двигатели с постоянными магнитами на роторе: управление (синус и/или трапеция)

Время на прочтение11 мин
Количество просмотров39K

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

От теории к практике, наглядно, понятно и занимательно.

Читать далее
Всего голосов 25: ↑25 и ↓0+25
Комментарии59

3. Частотные характеристики систем автоматического управления (АФЧХ, ЛАХ, ФЧХ) ч. 3.1

Время на прочтение8 мин
Количество просмотров72K

Лекции по курсу «Управление Техническими Системами» читает Козлов Олег Степанович на кафедре «Ядерные реакторы и энергетические установки» факультета «Энергомашиностроения» МГТУ им. Н.Э. Баумана. За что ему огромная благодарность!


Данные лекции готовятся к публикации в виде книги, а поскольку здесь есть специалисты по ТАУ, студенты и просто интересующиеся предметом, то любая критика приветствуется.


В предыдущих сериях:
1. Введение в теорию автоматического управления.
2. Математическое описание систем автоматического управления 2.1 — 2.3, 2.3 — 2.8, 2.9 — 2.13


В следущих сериях:
3.2. Типовые звенья систем автоматического управления (регулирования). Классификация типовых звеньев. Простейшие типовые звенья.
3.3. Апериодическое звено 1–го порядка (инерционное звено). На примере входной камеры ядерного реактора.
3.4. Апериодическое звено 2-го порядка.
3.5. Колебательное звено.
3.6. Инерционно-дифференцирующее звено.
3.7. Форсирующее звено.
3.8. Инерционно-интегрирующее (звено интегрирующее звено с замедлением).


В этом разделе мы будем изучать частотные характеристики. Тема сегодняшней статьи:
3.1. Амплитудно-фазовая частотная характеристика: годограф, АФЧХ, ЛАХ, ФЧХ


Будет интересно, познавательно и жестко.



Читать дальше →
Всего голосов 14: ↑13 и ↓1+12
Комментарии16

C++ template аллокатора с потокобезопасным циклическим буфером

Время на прочтение9 мин
Количество просмотров8.6K
Вашему вниманию простой C++ template аллокатора с потокобезопасным циклическим буфером.

Вся реализация в одном заголовочном .h файле: [fast_mem_pool.h]

Фишки, чем этот аллокатор лучше сотни подобных — под катом.
Читать дальше →
Всего голосов 28: ↑28 и ↓0+28
Комментарии21

Сэмулируй сборку приложения ARM на x86 процессоре на примере Qt

Время на прочтение14 мин
Количество просмотров16K
Мощность современных процессоров растёт, как в стационарных компьютерах, так и в различных embedded устройствах, на борту которых процессоры на базе ARM с операционной системой linux. Сегодня в рамках данной статьи мы запустим эмулятор процессора ARM на x86 компьютере и в нём попробуем собрать Qt из исходников и тестовое приложение, т.е. так сказать сиэмулируем сборку ARM приложения.

В первой части статьи будем использовать эмулятор QEMU для aarch64, во второй части запустим эмулятор Raspberry и проверим работоспособность приложения в нём.

От себя хочу отметить, это все делается не быстро, и если Вы попробуете все это выполнить, то полный цикл займет у вас несколько дней!)


Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии7

Информация

В рейтинге
1 135-й
Зарегистрирован
Активность

Специализация

Embedded Software Engineer, Chief Technology Officer (CTO)
Senior
C++
Qt
Linux
Electronics Development