Telegram Web Link
При использовании асинхронного кода, необходимо всегда помнить про синхронную нагрузку и запускать такие задачи в отдельных потоках, чтобы не блокировать async runtime. Особенно это важно при разработке real-time приложений, где блокировка рантайма уже на пару миллисекунд может сломать всю вашу low-latency конструкцию.

Кроме традиционных синхронных задач (шифрование, сериализация, компрессия и т.д.) часто забывается, что malloc - тоже очень неприятная штука. Например, 10 мегабайт на вектор может выделяться до пары миллисекунд на приличном процессоре уровня AMD 5950X, ембед же уровня Cortex A-72 может на таком застрять и на 10ms. В случае невозможности использования re-use буфера (например он уже пошел отправляться клиентам, а мы читаем следующий), аллокацию памяти необходимо выносить в синхронные задачи.

В последней BUS/RT мы добавили брокеру опцию direct_alloc_limit, позволяющую вынести аллокации выше лимита (это делается, когда sender прислал большой блок данных) на отдельный вспомогательный аллокатор. Который, в зависимости от структуры проекта, может просто создавать векторы в spawn_blocking, либо общаться с отдельным, отвечающим за это потоком, который находится на отдельной группе CPU. Также, аллокатор может вообще запретить выделение блока, руководствуясь собственной логикой относительно идентификатора клиента, либо общей.

Таким образом, в нашем IPC-брокере появилась крутая возможность безопасно совмещать low-latency (<100us) клиентов с high-load, читающими гигабайты из баз. В одной системе и без ущерба друг для друга.
🔥25👍12
жиза
😁48👍10🔥3
Небольшой юбилей, на меня подписалось 1500+ человек.

Канал, напоминаю, задумывался как место для записок, пока в телеге не было Saved messages. А потом я привык, что их комментируют.
😁46👍12🔥9
Сейчас по телеге ходит "вирус", присылают apk, требуют запустить "или аккаунт удалится". Пару дней назад сломали бота украинского резерв+, тоже слали какой-то zip (там вроде ехе под шиндовс).

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

Кстати, apk ещё надо умудриться запустить. В Android в настройках все заблокировано по-умолчанию, кроме магазина. А если у вас Apple - сами не запускайте, просто перешлите друзьям.

Как-то так и живём.
😁46👍6
Опять пересрались с HR в LinkedIn. HR сейчас деградировали как и все остальное и 99% стали синонимом спамера. Естественно, на этот спам в соцсетях ведутся полтора джуна и выхлоп почти нулевой.

А как было раньше? Помню HRы конкурента вычисляли нашу курилку и ходили туда с нашим персоналом. Учитывая, что курить нужно было почти с каждым, а HRов было мало, в среднем один HR выкуривал несколько пачек за рабочий день. Одного даже забрала скорая. Ещё их вычисляли и били. Тогда они ротировались.

В другой раз HR устроился к нам админом на RedHat и *BSD и успешно работал месяца три. HR'а хвалили, обещали премию. Но внезапно он пропал. С ним пропали два наших админа и главный джавист, который писал подключение к биллингам.

Мы злились, конкурент торжествовал.
😁116🔥17👍7👎2
Смотрю как сейчас младшее поколение учится в контру играть - какие-то йотубы смотрят, дискорд читают. Читы ищут.

Помню в 7 классе мы с Андрюхой пришли к Витьке, посмотреть первый раз на Денди (для зумеров - такой клон NES). Витька включил нам контру, бросил "А - прыгать, Б - стрелять, остальное разберетесь" и ушел за пивом.

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

Чтоб картинка меньше фонила.
👍37😁28💩4🔥1
"ИИ заменит программистов, а вот людям творческих профессий бояться нечего"

OFF Radio Kraków увольняет всех ведущих, теперь вместо них программы будут вести несколько голосовых моделей
😁51👍10👎3🔥3
Текущее состояние PLCOpenXML.

PLCOpen были основаны еще в 1992 году, как организация открытых стандартов для PLC. Самый популярный - PLCOpenXML, формат, позволяющий мигрировать код между разными платформами автоматизации. Между прочим входит в IEC 61131-10. Честно говоря, никогда им не интересовался, но сейчас нужно выбрать какой-то формат для хранения Ladder Logic и решил посмотреть.

Ради эксперимента поигрался в TwinCAT 3.1.4026.10 (последний), попробовал сохранить XML, который он сгенерит для LD, а потом считать им же обратно.

Результат:

- Простой LD "как у дидов" - более-менее открывает
- Более новомодный, с edge detection - теряет edges полностью (в XML у всех элементов записывает edge="none").
- Современный, с функциональными блоками - не может прочитать обратно, говорит в XML ничего нет. Достаточно поставить один блок, чтобы перестал читаться полностью.

Примеры с сайта PLCOpen - ни TwinCAT, ни CodeSYS открывать не желают. Интересно, а как у Сименса и прочих? Похоже, очередной стандарт поддерживают "для галочки", как всегда.
👍5🔥3💩3😁2
.
👍31😁19
back in my days
😁42👍3
Мужчина из Усти-над-Лабем (Чехия) поверил ИИ-аналазитору грибов и набрал зеленых мухоморов. Сейчас лежит в реанимации с отравлением.

Очередная атака киборгов-убийц.
😁33👍4🔥1
А говорили в Rust нет наследования. Врут, все есть!
😁78🔥5👎3👍1
Новый malware под Android "FakeApp.AFZ" мало того, что нужно установить самому - чтобы он украл деньги, нужно их ему послать тоже самостоятельно.

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

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

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

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

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

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

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

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

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

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

Лень - двигатель прогресса. Как всегда.
👍22
.
😁32👍5🔥2
Forwarded from Блог*
#prog #amazingopensource

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

Поддерживает добавление пользовательских адаптеров для поиска внутри файлов других типов.
🔥27
На данный момент 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 - просто не существует.
👍34
2025/09/15 18:12:24
Back to Top
HTML Embed Code: