Как стать автором
Обновить
135
0
Алексей @UA3MQJ

Инженер программист

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

Безопасный доступ к умному дому при отсутствии публичного IP (часть 1)

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

Вступление


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

Есть «умный дом». В моем случае это безвентиляторный домашний сервер с ioBroker, хотя это не принципиально. Помимо домашних штучек хочется к нему цеплять датчики извне (например, на ESP32 из удаленной теплицы). Это решил делать через mqtt. Доступ к интерфейсу из Интернета.

Обычное дело. Но есть нюансы:

  • У провайдера нет возможности дать мне публичный IP адрес. И других провайдеров нет.
  • Не люблю привязку к конкретным облачным сервисам. Внешний сервис и закрыться может (как недавно gbridge уведомление прислал). И просто в случае отказа не понятно, что делать. Предпочитаю свое, что можно в случае чего перенести, переделать малой кровью.
  • Безопасность важна. Не паранойя, но выставить ioBroker в Интернет, особенно с учетом, что там выставляется несколько сервисов (flot…). Нет уж.

Дальше хочу показать не сразу результат, а процесс. Как шел, как трансформировались хотелки, менялись решения. Вполне возможно, что некоторые моменты можно решить более правильно/эффективно (я не сисадмин, не разработчик). А может кто-то не пойдет так далеко, и воспользуется промежуточным решением, которое я, к примеру, счел недостаточно для себя безопасным или удобным. Собственно, описанное в этой части — вполне рабочий вариант, но для меня «промежуточный».
Читать дальше →
Всего голосов 14: ↑12 и ↓2+10
Комментарии19

LabVIEW NXG — простые типы данных и приведение типов

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

Это третья статья из цикла о LabVIEW NXG, в которой мы рассмотрим простые типы данных и несложные преобразования между ними.



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

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

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

Время на прочтение9 мин
Количество просмотров4.2K
В прошлой нашей публикации — тексте доклада Алексея Щербакова «Уроки электронного голосования в Московскую Городскую Думу 2019 года» на конференции AnalogBytes Conf 2020, проходившей 5 марта — был разобран один из свежих примеров проведения дистанционного электронного голосования (ДЭГ) и показано, почему оснований доверять его результатам не было.

Материалы цикла:

  1. Алексей Щербаков — «Уроки электронного голосования в Московскую Городскую Думу 2019 года»
  2. Олег Артамонов — «Дистанционные электронные голосования: архитектура доверенной электоральной системы»
  3. Круглый стол «Нажми на кнопку: теория и практика электронных голосований»

Подчеркнём: то, что оснований доверять системе нет, не означает, что результаты обязательно фальсифицировались. Это означает, что они могли быть фальсифицированы.

Тема ДЭГ в последние месяцы обрела второе дыхание — в связи с коронавирусом и повсеместными каратинами, при этом сохранились и прежние аргументы, в первую очередь, простота и дешевизна проведения таких голосований. Оффлайновая работа с голосами избирателей стоит настолько дорого, что накладна даже для государства — а для большинства отдельных партий просто невозможна в силу отсутствия ресурсов на её организация.



Другой вопрос, сугубо технический — можно ли вообще сделать ДЭГ устойчивым к фальсификациям в сравнимой с «бумажным» голосованием степени.

«Из коробки» классическое бумажное голосование обеспечивает нам, как минимум:

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

Давайте разбираться, можно ли это всё реализовать в ДЭГ (ответ для нетерпеливых: да).
Читать дальше →
Всего голосов 14: ↑12 и ↓2+10
Комментарии68

Хиральность, космические лучи и эволюция

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


Случайности неслучайны, по крайней мере, если более пристально рассмотреть законы природы, управляющие миром вокруг нас. Каждый элемент, каждая молекула подчиняются определенным правилам, нарушив которые они могут попросту перестать существовать. Вся структура мироздания, несмотря на видимый хаос, весьма упорядочена. Правда не всегда удается понять, почему все устроено именно так, и никак иначе. Сегодня мы познакомимся с исследованием, в котором ученые из Стэнфордского университета (США) выдвинули теорию о том, что один из основополагающих элементов нашего мира, хиральность, был сформирован посредством длительного влияния космических лучей. Что такое хиральность, как именно космические лучи повлияли на ее формирование и как это проверить? Ответы ждут в докладе ученых. Поехали.
Читать дальше →
Всего голосов 37: ↑36 и ↓1+35
Комментарии12

Что делает Rust универсальным языком программирования

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

Владей и заимствуй


Долгое время Rust позиционировался исключительно как язык для системного программирования. Попытки использовать Rust для высокоуровневых прикладных задач зачастую вызывали усмешку у значительной части сообщества: зачем использовать инструмент в том качестве, на которое он не рассчитан? Какая польза от возни с типами и анализатором заимствований (borrow checker), если есть Python и Java со сборкой мусора? Но другая часть сообщества всегда видела потенциал Rust именно как языка прикладного, и даже находила его удобным в использовании для быстрого прототипирования — во многом благодаря его особенностям, а не вопреки им.

Читать дальше →
Всего голосов 83: ↑78 и ↓5+73
Комментарии234

Рисуем речь: Software Automatic Mouth

Время на прочтение9 мин
Количество просмотров11K
Прошлогоднюю статью «Рисуем звук» я завершил признанием: «А можно ли нарисовать звук с чистого листа, не обводя спектрограмму аудиозаписи? Скажу честно, у меня не полу­чилось.» Но недавно я узнал про S.A.M. — выпущенный в 1982 г. компанией Don’t Ask Software, он стал первой коммерчески успешной программой для синтеза речи на ПК. В середине 2000-х немецкие демосценщики Tobias Korbmacher и Sebastian Macke взяли ассемблерный листинг S.A.M. для Commodore 64 и сконвертировали его в нечитаемый, но работоспособный код на Си; затем в 2014 г. британец Vidar Hokstad постарался привести код на Си в читаемый вид — вручную давая переменным осмыс­ленные названия и заменяя goto на циклы и ветвления; и наконец, в 2017 г. ещё один немец Christian Schiffler переписал код с Си на JavaScript. Испробовать его в действии как «чёрный ящик» можно на discordier.github.io/sam.

По-моему, примитивный синтезатор речи на JavaScript — самый удобный подопытный образец для тех, кто хочет разобраться, как в целом работает синтез речи. Мой форк S.A.M. с существенно почищенным кодом и комментариями доступен на github.com/tyomitch/sam. К сожалению, у предыдущих авторов интерес к S.A.M. успел угаснуть, и им сейчас не до разбора пулл-реквестов в хобби-проект многолетней давности.

S.A.M. состоит из четырёх функциональных компонентов:

  1. Reciter переводит текст на английском в фонемную запись: например, «A LITTLE TOO LOW» (пример из приложенной к S.A.M. демо-программы) превращается в «AH LIHTUL TUW5 LOW».
  2. Parser превращает фонемную запись в фонетическую: из «AH LIHTUL TUW5 LOW» получается "AH, ,L,IH,DX,AX,LX, ,T,*,*,UX,WX, ,L,OW,WX". Для каждого выводимого фона Parser задаёт также длительность и тон.
  3. Renderer строит по фонетической записи массив частот, амплитуд и прочих акустических характеристик;
  4. Последний, безымянный компонент (функция ProcessFrames) превращает массив частот и амплитуд в PCM-поток для аудиовывода.

В этой статье я разберу все четыре компонента по очереди.
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии0

Cloister → простое управление кластером OTP

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

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


Cloister


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


Передача сообщений между процессами на разных узлах, а также между ссылками и мониторами прозрачна […]
На практике все немного сложнее.
Всего голосов 14: ↑13 и ↓1+12
Комментарии2

C++/Qt: пора валить?.

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

image


Если бы раньше я запускал новый долгоживущий проект, в котором основные функции связаны с большим объёмом вычислений при каком-то взаимодействии с пользователем через графический интерфейс, я бы не задумываясь использовал С++/Qt. Это позволяло использовать один фреймворк/язык везде, независимо от структуры проекта и его компонентов, без дополнительных сложностей с зоопарком технологий и зависимостей.

Сейчас, в свете присходящего с Qt, придётся менять подход...


Читать дальше →
Всего голосов 100: ↑74 и ↓26+48
Комментарии306

MNT Reform — Полностью открытый ноутбук для параноиков

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


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

Используется ARM процессор i.MX8 в виде готового SoM (system on module) с полностью пассивным охлаждением и всего 4GB оперативной памяти.
Читать дальше →
Всего голосов 79: ↑76 и ↓3+73
Комментарии129

Разработка и производство троичных микросхем на обычном техпроцессе CMOS

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


Многие утверждали, что строят троичный компьютер из дискретных компонентов, однако некоторые разрабатывают и заказывают троичные микросхемы уже прямо сейчас :)
Читать дальше →
Всего голосов 119: ↑119 и ↓0+119
Комментарии120

Немного про устройство современного радио на примере HackRF One

Время на прочтение11 мин
Количество просмотров75K
Приветствую, Habr!
Некоторое время назад в поле моего зрения очень часто попадало множество статей, видеороликов о теме SDR трансиверов. Тема представляет интерес и сегодня. Большой популярностью среди радиолюбителей и других, разного рода, «технарей» пользуются устройства HackRF One (и по сей день, несмотря на то, что данный трансивер появился на рынке довольно давно, и в настоящее время уже существует масса других вариантов SDR похожего плана, в том числе и более производительных). Практически во всех статьях этой тематики рассматриваются программные инструменты (как правило — работа с GNU Radio, описываются алгоритмы ЦОС и т. п.), приводятся практические примеры по захвату сигналов радиостанций, демонстрируется GPS-спуфинг, приём сигналов с метеоспутников и т. п. Hack-RF One используется как некая универсальная «коробочка», позволяющая делать множество интересных вещей. Достаточно иметь небольшой опыт в программировании и общее понимание о том, что такое цифровой сигнал – в принципе порог вхождения для самых простых экспериментов с SDR преодолен. На самом деле это, конечно, здорово.
Но среди множества статей пока не встречал ни одной, где бы внимательно рассматривалось «железо» этого приемопередатчика, где более или менее подробно анализировалась его схема (если Вы встречали, дайте, пожалуйста, ссылочку в комментариях).
Более того, настораживает некая пренебрежительность к этому вопросу со стороны «пользователей» этого и других подобных модулей-трансиверов. Во многих популярных статьях проскальзывает, что приемник/передатчик SDR – это:

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

Пайка в домашних условиях: запись стрима

Время на прочтение2 мин
Количество просмотров13K
Недавно мы провели двухчасовой стрим «пайки в домашних условиях»: разработчик аппаратной части Яндекс.Станции Геннадий «Крэйл» Круглов продемонстрировал, как он паяет в домашней лаборатории. Гена показал устройства в лаборатории и сам процесс пайки, а в перерывах ответил на десятки вопросов от зрителей. Вот запись стрима:


Гена разрабатывает электронику с 2002 года. За это время он поучаствовал более чем в двухстах железных проектах и начал преподавать в МГТУ им. Баумана. Сейчас он читает там два курса: «Цифровая обработка сигналов» и «Микропроцессоры и цифровые устройства». В Яндексе Гена с 2015-го.

Немного деталей и следующая серия
Всего голосов 37: ↑36 и ↓1+35
Комментарии13

Мы разобрали новую «Капсулу». Знаем, сколько микрофонов, и как она работает

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

В конце января была представлена «Капсула» — умная колонка с ассистентом «Маруся». С 22 апреля ее можно купить. Мы делали полный обзор функционала новинки, но всегда интересно, что внутри. По просьбе Hi-Tech Mail.ru я разобрал «Капсулу» и описал свои впечатления.

Мне всегда было интересно узнать, как сделано то или иное устройство, не только по отзывам и обзорам, а на своем опыте. И это значит для меня не просто опробовать его в работе, но увидеть, как оно устроено внутри. Как спроектировано, продумано, собрано, какие компоненты при этом использовались, какой запас прочности у изделия и есть ли какие-то интересные или редко встречающиеся решения.
Читать дальше →
Всего голосов 65: ↑44 и ↓21+23
Комментарии13

Легкий способ защитить свой Mikrotik от атак

Время на прочтение4 мин
Количество просмотров123K
upd-2020-03-16. В свете последних событий метод остается актуальным, вырезал из статьи все лишнее, оставил только про honeypot и port-scanners.

Хочу поделиться с сообществом простым и рабочим способом, как при помощи Mikrotik защитить свою сеть и «выглядывающие» из-за него сервисы от внешних атак. А именно всего тремя правилами организовать на Микротике honeypot.

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

Другая ситуация, у Вас за Mikrotik спрятан asterisk, естественно не на 5060 udp порту, и через пару дней также начинается перебор паролей… да да, знаю, fail2ban наше вcё, но над ним еще попыхтеть придется… вот я например недавно поднял его на ubuntu 18.04 и с удивлением обнаружил, что из коробки fail2ban не содержит актуальных настроек для asterisk из той же коробки того же ubuntu дистрибутива… а гуглить быстрые настройки готовых «рецептов» уже не получается, цифры у релизов с годами растут, а статьи с «рецептами» для старых версий уже не работают, а новых почти не появляется… Но что-то я отвлекся…
Читать дальше →
Всего голосов 30: ↑28 и ↓2+26
Комментарии85

ZX Spectrum из коронавируса и палок (на самом деле, не совсем)

Время на прочтение19 мин
Количество просмотров30K
Вторая часть здесь

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

Днем, на удаленке, не так и плохо. Как и вечером, пока не уснут дети. Как и в первые несколько дней, пока не кончатся книги и не надоедят сериалы. Но проходит месяц, за ним другой. Душа требует старого железа. Но не просто, а чтоб с извратом. И я порылся в ящиках с мусором и обнаружил там процессор Zilog Z80:

image
Всего голосов 80: ↑78 и ↓2+76
Комментарии135

Внутри многокристального секционного микропроцессора Am2901 от AMD 1970-х годов

Время на прочтение13 мин
Количество просмотров18K
Внутри многокристального секционного микропроцессора Am2901 от AMD 1970-х годов

Вы, возможно, знакомы с современными процессорами производства компании Advanced Micro Devices. Но AMD начала производить процессоры ещё в 1975 году, когда впервые представила свой Am2901. Это был т.н. многокристальный секционный процессор: каждый из чипов обрабатывал по 4 бита, а для увеличения размера слова использовалась работа нескольких чипов одновременно. Такой подход использовали в 1970-х и 1980-х годах, чтобы создавать процессоры на 16, 32 или 64 бит (к примеру), когда не могли разместить целый процессор на одном быстром чипе. Существовали процессоры и на одном чипе, однако их МОП-транзисторы работали медленнее. Со временем процессоры на КМОП стали быстрее процессоров на биполярных транзисторах, и когда их скорость достаточно выросла, на них перешли почти все производители.


Фото кристалла с чипом Am2901. Видны металлические слои чипа; кремний находится внизу. По краям кристалла крохотные проводники соединяют чип с внешними контактами.
Читать дальше →
Всего голосов 26: ↑25 и ↓1+24
Комментарии3

SARS нерукотворный? Генеалогия уханьского коронавируса

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

Не, ну какая рукотворность? Что за бред? Думал я, когда впервые услышал гипотезу о том, что Ковид-19 вызван то ли лабораторной утечкой, то ли вообще целенаправленной биоатакой. И каждый раз просто отмахивался от этих домыслов, когда они в очередной раз доплывали до меня в бурном потоке коронавирусного инфошума. Ну подумаешь, есть в Ухане институт вирусологии, мало ли.

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

И вот тут, в погоне за доводами против рукотворности вируса, меня и заразил вирус сомнений. В чём, собственно, причина сомнений? В том, что чем глубже погружаешься в деятельность коронавирусологов за последние 15–20 лет, тем лучше понимаешь, что создание ровно таких химер как CoV2 у них было обыденным делом. А CoV2 — это очевидная химера, основанная на летучемышином штамме RaTG13, у которого в шиповидном белке место связывания с рецептором (RBM) заменено с летучемышиного на панголиний, и вдобавок врезан особый участок из 4-х аминокислот, создавший furin cleavage site, который, как ранее выяснили вирусологи, значительно расширяет «репертуар» вируса в плане того, в чьи клетки он может проникать. Скорее всего, именно благодаря этому новому фуриновому сайту, новый мутант и сумел перескочить с исходных носителей на людей.

С учётом тех высот, которых сегодня достигла генная инженерия, синтетически собрать CoV2 по вышеописанной методике не составило бы труда даже начинающему специалисту. Ведь вирусологи, включая руководителя коронавирусного направления в Уханьском институте вирусологии Ши Чжэнли, такими вещами уже неоднократно занимались — как заменой RBM у одного вида вируса на RBM из другого
Всего голосов 421: ↑381 и ↓40+341
Комментарии720

Как отсутствие вычислительных мощностей влияло на морские сражения в мировых войнах

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

Достичь достаточной осведомлённости о ситуации, когда GPS и компьютеров ещё не существовало, было трудной задачей



Подобная перспектива идеальна – но она была недоступной для адмиралов Первой и Второй мировых войн

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

Задолго до того, как концепции интернета вещей заполонили всю планету, эскадры XX века первыми начали использовать систематический подход в ответе на эти вопросы. Паруса уступили место паровым двигателям, и европейские колонии расползлись по всему миру. Военные корабли начали передвигаться ещё быстрее и потребовали координации действий на ещё больших участках морей, чем ранее. Тем временем телеграфы и радио позволяли мгновенно обмениваться сообщениями на немыслимых до этого расстояниях. Всё это вместе совершило революцию в использовании военными флотами информации.
Читать дальше →
Всего голосов 41: ↑41 и ↓0+41
Комментарии22

Была ли жизнь до Audio CD или как ЕЩЁ раньше писали цифровой звук

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


Давным-давно, когда любителей прогревать кабели и ставить “гармонизаторы питания” еще не существовало, а проигрыватели звуковых фонограмм были сплошь аналоговыми, очень шумными и почти всегда монофоническими, суровые японские инженеры из города Токио пришли к выводу, что хватит это терпеть и пора, наконец, осваивать новые горизонты, заодно совместив приятное с полезным — мечтой показать огромный кукиш бака гайдзинам. Так как преимущество в сфере видеозаписи к 60-ым годам уже прочно закрепилось за американцами (дедушка Понятофф ещё в 1956 г. выпустил первый в мире видеомагнитофон Ampex VR-1000, мгновенно похоронивший телекино; чуть позже подтянулись Советы), было принято решение развивать неизведанное тогда ещё направление цифровой звукозаписи.

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

Проект LLHD — универсальный язык описания аппаратуры

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

Буквально на днях на arXiv-е была выложена очень занятная статья швейцарских исследователей, в которой представлены подробности проекта LLHD. Это проект создания многоуровневого промежуточного представления для языков описания аппаратуры, наследующий идеологию и принципы проекта LLVM.


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


Предлагаемая иерархия инструментов (здесь и далее изображения из оригинальной статьи)


У проекта есть все шансы стать тем же, чем GCC и LLVM в свое время стали для мира открытого программного обеспечения. Сложно даже представить, насколько это может изменить ситуацию вокруг разработки железа.


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

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

Информация

В рейтинге
Не участвует
Откуда
Рыбинск, Ярославская обл., Россия
Дата рождения
Зарегистрирован
Активность