- А давайте настраивать log::LevelFilter через YAML
- А давайте!
- info
- passed
- warn
- passed
- error
- passed
- off
- SchemaValidationError: false is not one of ["trace","debug","info","warn","error","off"]
- А давайте!
- info
- passed
- warn
- passed
- error
- passed
- off
- SchemaValidationError: false is not one of ["trace","debug","info","warn","error","off"]
За неимением аналогового секвенсера, заинтересовался, играют ли вообще MIDI с ПЛК. Оказалось, конечно же очень даже играют. У тех же Beckhoff есть целый отдел, который занимается автоматизацией с мультимедией, внезапно они же разрабатывают под ПЛК и MIDI-интерфейсы.
Оно в принципе неудивительно - ПЛК с джиттером на 50-100нс справится с проигрыванием нот куда лучше, чем обычный DAW "на писюке", а точность воспроизведения вполне на уровне дорогих аналоговых моделей. Что касается цифровых секвенсеров - скорее всего в наши дни под капотом там и крутится какой-нибудь Linux. И довольно часто оно даже играет совсем не с Rust и C++, а с какого-нибудь, простите, питона.
Оно в принципе неудивительно - ПЛК с джиттером на 50-100нс справится с проигрыванием нот куда лучше, чем обычный DAW "на писюке", а точность воспроизведения вполне на уровне дорогих аналоговых моделей. Что касается цифровых секвенсеров - скорее всего в наши дни под капотом там и крутится какой-нибудь Linux. И довольно часто оно даже играет совсем не с Rust и C++, а с какого-нибудь, простите, питона.
This media is not supported in your browser
VIEW IN TELEGRAM
Если вы пропустили сегодняшний GoogleIO, TechCrunch сделали короткую версию о самом главном
Следующая статья по Rust, наконец нашлось время, ура.
https://medium.com/@disserman/data-synchronization-in-rust-8681ccf97d94
https://medium.com/@disserman/data-synchronization-in-rust-8681ccf97d94
Medium
Data synchronization in Rust
The article continues my series of articles about Rust programming language. In this one I will cover synchronization in Rust, focusing on…
VMware изменила лицензию на Workstation Pro и Fusion Pro. Теперь для личного пользования эти продукты можно брать бесплатно.
Segment@tion fault
Вышел Rust 1.78. Из основных нововведений - стабильные diagnostic атрибуты, тоесть кастомнизация compile errors. Уже вижу как зумеры покрывают все ошибки красивыми unicode-глифами и ломают совместимость крейтов со всем, кроме 1.78+ (закончил ворчать)
И шо я говорил. в Trunk уже вставили diagnostics. Ниже 1.78 ничего не собирается.
Остальные на очереди.
Остальные на очереди.
А что это за мода у молодёжи в ембеде пошла ставить UART при загрузке на 1.5 mbps?
Тикток в терминале смотреть?
Тикток в терминале смотреть?
Я тянул в наших продуктах совместимость pub/sub-топиков со стандартом MQTT 6 лет, но на прошлой неделе функционал был расширен.
Pub/Sub-топики MQTT хорошо справляются с большинством задач, но есть задачи, которые простыми wildcards решить невозможно.
Например, есть алярм-система, с топиками
alarm/10/alarm1
alarm/20/alarm2
alarm/30/alarm3
и т.д., где второй сабтопик - уровень алярма. Если в MQTT или MQTT-совместимой системе пользователь хочет подписаться или отобрать данные, например "для алярмов уровня 20 и выше", в MQTT это можно сделать, только явно подписавшись на все возможные уровни. Если уровней 10 - проблема как-то решается, путем подписки на все необходимые, если же 10-20 тысяч - вы немножко приехали.
Предлагаемое API подписок выглядит так: "alarm/!ge(20)/#", где второй сабтопик - это формула, которая распознается по заранее договоренному между клиентом и сервером префиксу.
Функционал предварительно включен в мой базовый крейт для pub/sub систем submap с версии 0.3 и тайно включен в некоторый наш прод, для обкатки. Формулы пока простые и только для i64, по мере надобности будет расширяться.
Pub/Sub-топики MQTT хорошо справляются с большинством задач, но есть задачи, которые простыми wildcards решить невозможно.
Например, есть алярм-система, с топиками
alarm/10/alarm1
alarm/20/alarm2
alarm/30/alarm3
и т.д., где второй сабтопик - уровень алярма. Если в MQTT или MQTT-совместимой системе пользователь хочет подписаться или отобрать данные, например "для алярмов уровня 20 и выше", в MQTT это можно сделать, только явно подписавшись на все возможные уровни. Если уровней 10 - проблема как-то решается, путем подписки на все необходимые, если же 10-20 тысяч - вы немножко приехали.
Предлагаемое API подписок выглядит так: "alarm/!ge(20)/#", где второй сабтопик - это формула, которая распознается по заранее договоренному между клиентом и сервером префиксу.
Функционал предварительно включен в мой базовый крейт для pub/sub систем submap с версии 0.3 и тайно включен в некоторый наш прод, для обкатки. Формулы пока простые и только для i64, по мере надобности будет расширяться.
Шанс у мешков с костями быть полезными ещё есть. Но кости придётся вынуть.
https://www.tomshardware.com/pc-components/cpus/worlds-first-bioprocessor-uses-16-human-brain-organoids-for-a-million-times-less-power-consumption-than-a-digital-chip
https://www.tomshardware.com/pc-components/cpus/worlds-first-bioprocessor-uses-16-human-brain-organoids-for-a-million-times-less-power-consumption-than-a-digital-chip
Tom's Hardware
World's first bioprocessor uses 16 human brain organoids for ‘a million times less power’ consumption than a digital chip
Swiss startup claims its Neuroplatform is a first for biocomputing.
Сегодня еще немного про внутренности React.
const [state, setState] = useState(initialState)
типичная конструкция реакта, которую знают все, кто хоть раз реакт щупал, где state: T, а setState: React.Dispatch<React.SetStateAction<T>>.
Проблем с этим в принципе никаких, пока мы не хотим использовать setState в качестве хендлера в дополнительных фреймворках приложения. Результат может быть довольно непредсказуем.
Почему? setState - это не обязательно уникальная функция, которую генерит хук, внутренние оптимизации реакта могут вполне шарить её указатель между разными копиями компонента и даже между разными компонентами. Соответственно, если 3rd party handler dispatcher работает по логике, сравнивая handler1 == handler2, никто нормальную работу не гарантирует. А мы, поскольку JS/TS - убогое нечто, ничего этого не замечаем.
Решение проблемы - оборачивать setState в промежуточную уникальную функцию.
Или наконец переехать на leptos, если позволяет стек. Или материться дальше, если не позволяет.
const [state, setState] = useState(initialState)
типичная конструкция реакта, которую знают все, кто хоть раз реакт щупал, где state: T, а setState: React.Dispatch<React.SetStateAction<T>>.
Проблем с этим в принципе никаких, пока мы не хотим использовать setState в качестве хендлера в дополнительных фреймворках приложения. Результат может быть довольно непредсказуем.
Почему? setState - это не обязательно уникальная функция, которую генерит хук, внутренние оптимизации реакта могут вполне шарить её указатель между разными копиями компонента и даже между разными компонентами. Соответственно, если 3rd party handler dispatcher работает по логике, сравнивая handler1 == handler2, никто нормальную работу не гарантирует. А мы, поскольку JS/TS - убогое нечто, ничего этого не замечаем.
Решение проблемы - оборачивать setState в промежуточную уникальную функцию.
Или наконец переехать на leptos, если позволяет стек. Или материться дальше, если не позволяет.
- IEC 60870-5 очень сложное семейство протоколов, документация по стандарту 900 страниц!
(тем временем, первые 600 страниц занимают сгенеренные скриптами таблицы)
Это было время до изобретения ChatGPT. Извращались, как умели.
(тем временем, первые 600 страниц занимают сгенеренные скриптами таблицы)
Это было время до изобретения ChatGPT. Извращались, как умели.
- почему ваш гироскоп по паспорту 3320hz, а реально на 1000 залипает?
- у нас отличный гироскоп. вы слышали, что в нем есть machine learning?
в удивительное время живём. но иногда хочется обратно
- у нас отличный гироскоп. вы слышали, что в нем есть machine learning?
в удивительное время живём. но иногда хочется обратно
В одном нашем pub/sub был метод unsubsribe_all, которым злоупотребляли клиенты в своих движках, а потом ныли нам
Поэтому мы ввели понятие protected subscription, которая не отписывается, когда клиент дёргает тот метод. Но клиенты стали отписывать все топики через loop
Поэтому мы ввели понятие subscription token, снять подписку можно только зная токен. Но клиенты стали кешировать токены и см. loop.
Борьба продолжается.
Поэтому мы ввели понятие protected subscription, которая не отписывается, когда клиент дёргает тот метод. Но клиенты стали отписывать все топики через loop
Поэтому мы ввели понятие subscription token, снять подписку можно только зная токен. Но клиенты стали кешировать токены и см. loop.
Борьба продолжается.
Где-то в десятых начался опять бум на механические часы, меня это тоже не обошло.
Так вот интересно - в последнее время все чаще слышу от знакомых, что in-house механика глючит и тормозит. При этом ETA, которая у ценителей традиционно почему-то считается "беспонтовой", может пару лет пролежать в ящике, после чего быть заведена и идти примерно как до ящика. Без сервиса, смс и регистрации.
Как это связано с IT - чем меньше делаете in-house велосипеды, тем меньше вероятности, что рано или поздно все возможные глюки придётся разгребать вам (проектов с 10 лайками на гитхабе конечно это не касается, такое тянуть в свой всегда на страх и риск).
Так вот интересно - в последнее время все чаще слышу от знакомых, что in-house механика глючит и тормозит. При этом ETA, которая у ценителей традиционно почему-то считается "беспонтовой", может пару лет пролежать в ящике, после чего быть заведена и идти примерно как до ящика. Без сервиса, смс и регистрации.
Как это связано с IT - чем меньше делаете in-house велосипеды, тем меньше вероятности, что рано или поздно все возможные глюки придётся разгребать вам (проектов с 10 лайками на гитхабе конечно это не касается, такое тянуть в свой всегда на страх и риск).
Я думал дно, когда в топ вышла игра, где птичку надо двигать вверх и вниз.
Но тут снизу постучали хомяки.
Но тут снизу постучали хомяки.
Из дешёвых китайских осцилографов могу посоветовать ChipQuik CQ-702S.
Вообще мне с портативными как-то постоянно не везло, всё в итоге не нравилось. Этот купил совершенно случайно - заказывал на digikey мелочь и жаба давила платить 20$ за доставку до Европы.
Поэтому кинул в корзину на пробу и внезапно не разочаровался. Свои 200$ отрабатывает на ура. Имеется также мультиметр и прозвонка. Внутри 18650, которая заряжается по usbc снаружи. Имеется подключение и к компу, но ещё не пробовал.
(отзыв мой реальный, рекламы на канале нет и не было).
Вообще мне с портативными как-то постоянно не везло, всё в итоге не нравилось. Этот купил совершенно случайно - заказывал на digikey мелочь и жаба давила платить 20$ за доставку до Европы.
Поэтому кинул в корзину на пробу и внезапно не разочаровался. Свои 200$ отрабатывает на ура. Имеется также мультиметр и прозвонка. Внутри 18650, которая заряжается по usbc снаружи. Имеется подключение и к компу, но ещё не пробовал.
(отзыв мой реальный, рекламы на канале нет и не было).