Офигенная история про бытовой кибертерроризм.
Я уже вам рассказывал пару раз о вредоносных закладках в OpenSource коде — описывал, например, борьбу одиночек с корпорациями таким способом, хотя последнее время больше внимания к антироссийским закладкам по политическим мотивам.
Обычно мы понимаем работу софта, как что-то в компьютере, а вот тут случай из мира Internet Of Things. Baza написала об этом без технических подробностей, поэтому мне пришлось порыться самому.
В интернете есть куча проектов "умной гирлянды" для украшения окон к новому году. Как правило, это прямоугольная матрица из адресных светодиодов: ей завешивается окно целиком, а микроконтроллер позволяет (путём изменения цвета каждого диода) выводить любой рисунок, надпись, анимацию. Как работает и выглядит можно посмотреть вот тут. В очередной такой версии один из участников форума AlexGyver'а (не сам Алекс) выложил форк прошивки для управления адресными диодами. Прошивка подключается по вайфай к роутеру, чтобы с телефона можно было через удобный UI настраивать эти самые тексты и анимации.
Так вот, оказалось, что автор изначальной версии — украинец. В свою версию кода три месяца назад он добавил закладку: устройство, пользуясь подключением к ВайФай, определяет по IP местоположение, откуда оно запущено. Если это Россия, то из постоянной памяти считывается последовательность кодов символов так, чтобы в полночь первого января устройство отключало все внешние кнопки и выводило на окно надпись, прославляющую Украину. Такая надпись в итоге появилась, по видимому, у нескольких людей, использовавших эту гирлянду. И как минимум одного из них заметили соседи и настучали, вроде как дело завели даже.
Морали лично для меня две:
— Компьютерное уже давно не только в компьютере, а вполне влияет на физический мир. Это очевидно, но не во всех случаях эту мысль просто принять.
— IoT должен быть только из источников, которым вы полностью доверяете, либо написан самостоятельно.
P.S. Кстати, забавно видеть, что комментарии к коду у этого разработчика до определённого времени все по-русски, а в новых правках исключительно по-украински. То есть вроде как от вражеского языка отказался, но отредактировать всё предыдущее лень.
#dev
Попробовал, наконец, разработку на Blazor. Это такой фреймворк под .NET, который позволяет писать фронтенд на C#. Работает он двумя способами: либо собирает весь проект в WebAssembly, и бедный пользователь грузит себе мегабайтную dll, либо устанавливает клиент-серверное соединение через SignalR и шлёт клиенту информацию об обновлённых DOM-элементах.
Вот вторую то я и пробовал. Казалось бы — каждое нажатие кнопки требует отправить на сервер запрос и получить ответ. Никогда такого не было! Но субъективно разницы во времени отклика нет (потому что веб и так достаточно медленный, хаха).
Фронтенд-часть пишется очень похоже на JSX: вёрстка реактивно вперемешку с кодом. Когда-то я очень ругал React за такой подход, потому что каша. Но нетипизированный JS по-умолчанию каша, а здесь же по факту получается очень удобно: статический анализ не даёт тебе делать ошибки и писать ерунду.
Но приятный полноценный язык программирования вместо JavaScript это лишь вишенка на торте. Самое крутое — вся сила серверного кода с полноценной возможностью обращения к базе данных, шеринг моделей данных между сервером и клиентом, и, наконец, Dependency Injection любого серверного модуля в «клиент»! То есть вы не просто пишете одно приложение вместо двух, вы ещё и получаете отсутствие ошибок при каком-нибудь изменении моделей API, когда сервер стал отдавать не то, что ожидает клиент. Вам вообще теперь не нужен API, достаточно закодить нужную функцию на серваке и инжектировать её в нужный фронтенд-модуль.
Это супер удобно, супер быстро, супер устойчиво к ошибкам. Теперь не хочется возвращаться даже на вполне крутой Vue 3. Но, система пока новая, она не обросла решениями от комьюнити, а браузерный API всё равно придётся дергать через JavaScript Interop. Для совсем кайфа нужно подождать годик, поскольку развитие идёт довольно быстро. Например, там нет очень нужного в таком деле hot reload, но в .NET 6 он уже анонсирован, и вроде как есть в превью, а релиз в ноябре.
#dev
Ben Edgington | 𝕏🧵
Slides omit to mention "pissed off a large section of the community with arrogant plans to capture 100% of the stake".
Focusing on community staking and governance reform were *absolutely* the Right Things To Do and in no way a mistake. Respect.
I am much less concerned about Lido now than I was a couple of years ago, and I am glad we held their feet to the fire over this. https://twitter.com/tomwanhh/status/1956000751873851473
~
₿izFeed#⃣:#dev#ETH
Ben Edgington | 𝕏🧵
RT @TimBeiko: The @ethereumfndn is hiring a developer tooling coordinator 🛠️
You'll help us decide what to build, fund and support across the ecosystem!
Ideal candidate has technical experience across the Ethereum stack, an intuition for how dev tooling should evolve, and some ops chops 👇
~
₿izFeed#⃣:#dev#ETH