Telegram Web
Новый malware под Android "FakeApp.AFZ" мало того, что нужно установить самому - чтобы он украл деньги, нужно их ему послать тоже самостоятельно.

Малварь мотивирует это сделать, обещая прибыли от криптовалют. Многие верят.
Делаю OAuth2 вход

- Google: works
- Github: works
- Microsoft: unknown error

unknown, Карл!
Немец из города Квикборн получил за один раз 1700 заказных писем из налоговой. 27 октября в 2 часа ночи он обнаружил, что забыл пароль от личного кабинета и отправил заявку на восстановление.

Из-за перевода времени, скрипт отработал 1700 раз. Потому что в Германии ночью лучше спать.
Выросло поколение, через гпт переводили.

А вы ещё пользуетесь Огайе?
В последнем BUS/RT у клиентов появился "странный" для pub/sub метод publish_for. Зачем нужно писать "приватные" сообщения в топики? Рассмотрим ситуацию.

Алиса имеет значение сенсора и публикует его в топик при изменениях или с некторым интервалом.

Боб хочет при запуске клиента получить значения сенсора как можно быстрее. Он высылает запрос и Алиса публикует значение специально для него, не заставляя других подписчиков процессить значение, которое у них уже есть.

Боб мог бы использовать RPC-вызов и получить значение сенсора в нем. Но в реальности существует несколько факторов:

- Бобу лень вызывать RPC. У него уже настроена логика процессинга данных из топиков и городить еще один велосипед не имеет смысла.

- Бобу лень разбираться с data races, в случае если pull некоторого старого значения и push нового придут примерно одновременно. В случае запроса на publish_for, Алиса может временно залочить изменения сенсора, пока Бобу не уйдет анонс по каналу и датарейса не возникнет.

Лень - двигатель прогресса. Как всегда.
Forwarded from Блог*
#prog #amazingopensource

ripgrep-allripgrep, but also search in PDFs, E-Books, Office documents, zip, tar.gz, etc.

Поддерживает добавление пользовательских адаптеров для поиска внутри файлов других типов.
На данный момент WebTransport (вещь over HTTP/3) выглядит самым перспективным протоколом для новых проектов. Уже довольно неплохо гоняется в продакшне.

Из плюсов:

- У вас есть UDP. Как только клиент и сервер создают соединение, датаграммы могут гоняться в обе стороны, не важно что клиент сидит за тремя натами. Натопробивалка в комплекте.

- У вас есть потоки, которые внутри тоже UDP, но по API очень похожи на TCP. Кто в HTTP/2 игрался с потоками, тот в курсе, кто нет - можно разделять один TCP (в данном случае reliable UDP) сокет на несколько виртуальных. Основное отличие WT - потоки работают независимо, и если один остановился/оборвался - другие продолжают работу.

- У этого всего довольно минимальный overhead, если делать свое решение по любому пункту на коленке, скорее всего выйдет явно хуже.

- У вас сразу из коробки шифрование.

Из минусов:

- Шифрование принудительное. Микросервисы на локалхосте будут тоже шифроваться от админа и друг от друга.

- Пока что это - draft, со всеми вытекающими. в Chromium-based работает более-менее стабильно, в Firefox могут быть сюрпризы (вплоть до креша процесса)

- Оттуда же - под Rust-std оно работает вполне прекрасно. Под Rust-wasm - очень похоже на то, как выглядел embedded-hal или Tokio 5 лет назад - ад, пиздец и исключительно для энтузиастов. Под всякий bare-metal embed - просто не существует.
Криптография в Rust и кровавый ентерпрайз. Поскольку rustls - библа без сертификаций, люди годами мучались с openssl, а на винде дёргали системное криптоапи напрямую или через кривые прокладки.

К счастью, с февраля этого года rustls позволяет использовать амазоновское libcrypto как бекенд, а оно, в свою очередь, сертифицировано на FIPS-140-3.

В этом месяце начали новый проект уже с rustls а не openssl и я по этому поводу весьма счастлив. Из нюансов - на винде libcrypto в fips-режиме для сборки требует nasm.
Страшные сказки на ночь. Если что у меня ещё есть дипломы электрика и повара-кондитера.

А у вас?
Пишем свой OPC-UA сервер с ChatGPT
Вчера вспомнил внезапно про Master of Orion (1993), решил сыграть партейку, в результате воевал до утра. Вот был же баланс нормальный в играх, и был интерес.

Кстати права на MOO прямо с первого выкупила внезапно Wargaming. А как вы играете в DOS-игры?
Anonymous Poll
27%
Dosbox
3%
Комп с DOS на bare-metal
3%
VMWare/VirtualBox/etc.
4%
Веб-эмулятор
62%
Дед, таблетки...
Ехал сегодня на убере, водила рассказал, что Трамп опять разрешит писать критические приложения на C++
Лайфхаки. В Университете Токио не хотели, чтоб научные материалы читали китайские студенты и препады, поэтому накидали на сайте надписи "tiananmen square" со style="display: none"

После чего сайт университета автоматически был надежно забанен в Китае и японцам не пришлось конфигурить собственные фаерволы.
В 1976 году доктор Байер из Kodak запатентовал новый фильтр для цифровых камер, принцип которого заключался в том, что за красный и синий цвета отвечает по одному сенсору, а за зелёный - два. Исходное изображение, соответственно, кодируется как RGGB, BGGR или в другой комбинации, в которой зелёный получает в 2 раза больше бит, чем остальные.

Смысл в том, что человек - существо, привыкшее жить на деревьях (кто не верит в эволюцию - все равно в саду Эдема), и наш глаз различает намного больше оттенков зелёного, чем любого другого цвета.

В результате изобретения Байера, цвета на цифровой фотографии резко стали куда более "живыми" и естественными. Сегодня фильтр Байера или десятки его производных вариантов, используются как в профессиональных камерах, так и в обычных мобильных телефонах. Один из секретов "крутой" камеры iPhone 10 лет назад - как раз фильтр "Quad Bayer" разработки Sony, начиная с 6й модели. Впрочем, конкуренты тоже быстро это выяснили и внедрили похожее в своих матрицах. Samsung, например, "сидят" на Nonacell SFA, с тем же принципом - 9 синих, 9 красных и 18 зелёных сенсоров на группу из 3*3 пикселей.
Типичный диалог в наше время

- ты же в крипте шаришь?
- ну, я, пишу на расте смарт контракты...
- о! сколько будет стоить биток через пол года??
Немного о веб-плагинах.

Представьте что у вас есть React-CSR-приложение и вы хотите разрешить юзерам писать под него плагины.

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

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

import * as React from "react";
window.React = React;


для каждого интересующего нас модуля.

Второй этап - научиться собирать плагин-модули незаметно для санитаров. Дело в том, что современные бандлеры - слишком умные и пытаются запаковать всё что можно, не смотря на объявленные externals, причем логику часто не понимает сам производитель.

Для начала, советую взять webpack - он самый предсказуемый. vite, например, начиная с 5й версии, срал на externals и пытается вам насильно запаковать React во всех случаях, кроме "jsx": "preserve" в tsconfig.json. Имеются и другие нюансы, например umd default export у webpack - window.ModuleName.default, а у vite - window.ModuleName. Такие ситуации должен уметь разруливать уже ваш загрузчик.

Современные веб-плагины - ебля увлекательная занятие интересное. Неудивительно, что нормально они реализованы в полторы приложениях, а CSR все вообще стараются избегать. Тем не менее, стабильная реализация оказывается возможна.
CVE-2024-49071 - Windows Defender индексирует файлы в папках юзеров. После чего любой юзер имеет доступ к базе дефендера.

Я говорил, Шиндовс очень сложная система. Все против тебя.
У V4L был фатальный недостаток, ну вы понимаете. Поэтому энтузиасты собрались и создали стильную, модную и молодежную libcamera.

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

- libcamera - написана через жопу динамически развивающийся проект. Поэтому вам, скорее всего, придётся собирать её с нуля.

- у libcamera есть mainstream-ветка а также форки от производителей железа, которые не согласны с разработкой mainstream, поэтому есть шанс, что вам нужен будет именно форк

- выберете вы форк или mainstream, есть большой шанс, что без патчей оно всё равно не соберется

- билд-система libcamera построена на meson, причем на свежих версиях, так что вам придётся тянуть везде питон

- раст-крейты под libcamera по качеству не уступают самой библиотеке
По работе часто встречаю железки с SNMP. К сожалению, в Rust с ними вменяемо работает только один крейт, собственно snmp, но автор забил на него 7 лет назад окончательно. Я же годами бегал вокруг-около и дописывал внутренние патчи и внешние микромодули.

Внезапно попалась железка, опрос которой нужно перетащить с питона на раст, которая поддерживает только SNMPv1, а в крейте, опять же внезапно, оказалось поддержки первой версии нету (хотя очень удивительно, v1 отличается от v2 по сути только тем, что в v2 добавили 64-битные counters, а в v1 их нет). В оригинальном крейте валялся PR, чуть менее старый чем сам крейт, где автор зачем-то вместе с v1 притащил tokio.

В общем, поскольку в Европах выходные, а я не пью, решил наконец этот крейт форкнуть. Из чего появился мой красивый и современный snmp2.

Из основого, что изменилось:

- собственно поддержка SNMPv1
- немного поменялось PDU API и теперь им можно прекрасно обрабатывать любые TRAPs (добавил пример)
- MIBs (под фичей, требует libnetsnmp)
- привел более-менее весь код к современному виду
- главное - смигрировал велосипедный Object Identificator на Oid из крейта asn, который давно стандарт во всей растовской X.690-экосистеме
- добавил async (под фичей)

Оно работает и даже хорошо. Будем в январе наконец запиливать туда и SNMPv3.

p.s. Пользуясь случаем, всех с наступающими и наступившими.
2025/03/27 10:59:25
Back to Top
HTML Embed Code: