Skype for Linux теперь доступен только через snap
Прошла эпоха
Прошла эпоха
💩14👍2😁2🔥1
Из дешёвых китайских осцилографов могу посоветовать ChipQuik CQ-702S.
Вообще мне с портативными как-то постоянно не везло, всё в итоге не нравилось. Этот купил совершенно случайно - заказывал на digikey мелочь и жаба давила платить 20$ за доставку до Европы.
Поэтому кинул в корзину на пробу и внезапно не разочаровался. Свои 200$ отрабатывает на ура. Имеется также мультиметр и прозвонка. Внутри 18650, которая заряжается по usbc снаружи. Имеется подключение и к компу, но ещё не пробовал.
(отзыв мой реальный, рекламы на канале нет и не было).
Вообще мне с портативными как-то постоянно не везло, всё в итоге не нравилось. Этот купил совершенно случайно - заказывал на digikey мелочь и жаба давила платить 20$ за доставку до Европы.
Поэтому кинул в корзину на пробу и внезапно не разочаровался. Свои 200$ отрабатывает на ура. Имеется также мультиметр и прозвонка. Внутри 18650, которая заряжается по usbc снаружи. Имеется подключение и к компу, но ещё не пробовал.
(отзыв мой реальный, рекламы на канале нет и не было).
👍23🔥2
Разбираем с ChatGPT очередной IEC протокол, пол часа, полет нормальный
- в этом байте в биты 0-6 впишите старшие 8 бит sequence number
- wait, говорю, как же я тебе 8 бит впишу в 7?
- извините, произошла ошибка, нужно вот так...
Полез проверять в спецификацию, оказалось эта гпт-шная сука выдумала 90% ответов.
Бля!
- в этом байте в биты 0-6 впишите старшие 8 бит sequence number
- wait, говорю, как же я тебе 8 бит впишу в 7?
- извините, произошла ошибка, нужно вот так...
Полез проверять в спецификацию, оказалось эта гпт-шная сука выдумала 90% ответов.
Бля!
😁80👍6💩1
"Крейт хаскелисты писали" - выучил сегодня новое ругательство от коллег.
😁44👍2👎2
Сначала требовали Cargo.lock для библиотек не коммитить. Теперь требуют коммитить.
Причем требуют одни и те же!
Причем требуют одни и те же!
😁29👍4💩2
Из прекрасного мира фронт-енда
Клиент: жалуется что его приложение работает везде, кроме случаев, если приложение в девелопмент-режиме (как выяснилось, только если бек платформы на localhost)
Мы: не верим. После долгих переговоров получаем все данные
Оказывается
- наше API поднимает вебсокет на /ws
- клиент ставит какой-то очередной ебнутый девелопмент-плагин под webpack, который этот /ws на локалхосте перехватывает
- веб-приложение от всего этого тихо охуевает
- плагин свой /ws конфигурировать не дает
Трясутся руки, кружится голова. Бегу обратно в Rust, а потом на пиво. Много пива.
Клиент: жалуется что его приложение работает везде, кроме случаев, если приложение в девелопмент-режиме (как выяснилось, только если бек платформы на localhost)
Мы: не верим. После долгих переговоров получаем все данные
Оказывается
- наше API поднимает вебсокет на /ws
- клиент ставит какой-то очередной ебнутый девелопмент-плагин под webpack, который этот /ws на локалхосте перехватывает
- веб-приложение от всего этого тихо охуевает
- плагин свой /ws конфигурировать не дает
Трясутся руки, кружится голова. Бегу обратно в Rust, а потом на пиво. Много пива.
👍20😁16👎1
Наши типичные клиенты
- а вот такой софт знаете?
- вообще мы продаём и интегрируем свой... ну ещё некоторые от партнёров
- я хочу тот
- тогда обратитесь к их интеграторам
- я хочу к вам
- это будет поставить дороже
- я не хочу дороже! я хочу как за ваш. кстати, вы же допишете недостающие фичи?...
- а вот такой софт знаете?
- вообще мы продаём и интегрируем свой... ну ещё некоторые от партнёров
- я хочу тот
- тогда обратитесь к их интеграторам
- я хочу к вам
- это будет поставить дороже
- я не хочу дороже! я хочу как за ваш. кстати, вы же допишете недостающие фичи?...
😁44💩5👍1
Когда протоколы пишут не программисты, а эффективные менеджеры от энергетики.
В IEC 60870-5 значения регистров устройств могут иметь время, когда это значение было выставлено или замеряно. Чтобы передать время, предполагая что часы синхронизированы с клиентом, обычно используется три байта (формат CP24Time2a).
u16 для передачи миллисекунд (как раз 60к влазит) и u8 для передачи минут. Далее клиент берет свое системное время и заменяет минуты, секунды на полученное значение. Если значение получилось в будущем - значит это на грани конца-начала нового часа и отнимите час.
Поскольку минут 60, а в u8 бит 8 - старшие два бита используются для дела следующим образом: один зарезервирован, а второй показывает что время invalid, потому что давно не было синхронизации часов, например.
В IEC 60870-5 значения регистров устройств могут иметь время, когда это значение было выставлено или замеряно. Чтобы передать время, предполагая что часы синхронизированы с клиентом, обычно используется три байта (формат CP24Time2a).
u16 для передачи миллисекунд (как раз 60к влазит) и u8 для передачи минут. Далее клиент берет свое системное время и заменяет минуты, секунды на полученное значение. Если значение получилось в будущем - значит это на грани конца-начала нового часа и отнимите час.
Поскольку минут 60, а в u8 бит 8 - старшие два бита используются для дела следующим образом: один зарезервирован, а второй показывает что время invalid, потому что давно не было синхронизации часов, например.
😁31👍3🔥1
Насчёт времени. Одной из самых моих интересных задач, на моё огромное удивление, стала задача по чтению логов с плк и прочего ембеда, где время сбито просто наглухо, без возможности синхронизации или с синхронизацией в непредсказуемые моменты.
При этом юзер должен иметь возможность задать конкретный промежуток в реальном земном времени, за который он хочет получить записи.
Записи скидывать с устройства на устройство с нормальными часами, само собой нельзя.
При этом юзер должен иметь возможность задать конкретный промежуток в реальном земном времени, за который он хочет получить записи.
Записи скидывать с устройства на устройство с нормальными часами, само собой нельзя.
👍11🔥1
Вот эти люди, которые программируют на вебсайтах формы, в которые запрещено копи-пастать емейлы, номера кредиток и пароли, только набирать от руки.
Вы понимаете, что вас рано или поздно найдут?
Вы понимаете, что вас рано или поздно найдут?
😁76👍28🔥2
- сначала вас не замечают
- потом над вами смеются
- потом с вами спорят
- потом перестают понимать, что вы говорите
Делал доклад по компонентам синхронизации в Rust, тема сложная, аудитория молчала. Чтобы разрядить обстановку, сказал что Axum лучше чем Actix.
Сразу стало веселее. Будьте ближе к народу.
- потом над вами смеются
- потом с вами спорят
- потом перестают понимать, что вы говорите
Делал доклад по компонентам синхронизации в Rust, тема сложная, аудитория молчала. Чтобы разрядить обстановку, сказал что Axum лучше чем Actix.
Сразу стало веселее. Будьте ближе к народу.
👍30😁25🔥5
Чем не люблю рабочие дни - в рабочие никогда не дадут спокойно поработать.
👍50😁28🔥4
Ну что, свершилось, я докатился по наклонной до того что сделал свой Mutex.
Конечно для реалтайм-систем. Меня в целом устраивал мой клон parking-lot с частично убранными busy-loops, но коллеги периодически ныли про пресловутую priority inversion problem. Сказать чтобы я этот problem имел в проде - это соврать, потому что не имел, мне при всём опыте ее даже смоделировать нужно пол-часа, как минимум (подтверждено экспериментом). Тем не менее, мне понравилась идея решать priority inversion через priority inheritance, которая уже встроена в Linux-ядро, как опция для futex.
Идея использовать pi-futex для Mutex не нова, даже не нова в Расте, но я пошел чуть дальше и имплементировал для него и Condvar. Тоже исключительно на futex-функционале.
Вообще, futex-функционал в Linux очень неплохой и использовать его только для парковки тредов - это как купить микроскоп, чтобы только забивать гвозди. Но не хватает очевидных вещей. Но об этом в другой раз.
p.s. весь мой RTSC-пак уже на новом мьютексе. Тестировал долго, пока не дохнет. Но при паниках отсутствие яда не гарантирую (сам я, если паникую, то это всегда завершение процесса).
Конечно для реалтайм-систем. Меня в целом устраивал мой клон parking-lot с частично убранными busy-loops, но коллеги периодически ныли про пресловутую priority inversion problem. Сказать чтобы я этот problem имел в проде - это соврать, потому что не имел, мне при всём опыте ее даже смоделировать нужно пол-часа, как минимум (подтверждено экспериментом). Тем не менее, мне понравилась идея решать priority inversion через priority inheritance, которая уже встроена в Linux-ядро, как опция для futex.
Идея использовать pi-futex для Mutex не нова, даже не нова в Расте, но я пошел чуть дальше и имплементировал для него и Condvar. Тоже исключительно на futex-функционале.
Вообще, futex-функционал в Linux очень неплохой и использовать его только для парковки тредов - это как купить микроскоп, чтобы только забивать гвозди. Но не хватает очевидных вещей. Но об этом в другой раз.
p.s. весь мой RTSC-пак уже на новом мьютексе. Тестировал долго, пока не дохнет. Но при паниках отсутствие яда не гарантирую (сам я, если паникую, то это всегда завершение процесса).
🔥22👍11😁1💩1
Для нормальных игр с фьютексами нужно ядро 5.14+. Но у меня проблема на ноуте - 465й драйвер NVidia собирается только на 5.13 и ниже, а в старших убили backlight (рукожопые "оптимизаторы" выносили его из основного модуля в nvidia-modeset и в процессе немного сломали). Проблема решена в unstable 555, но там сломали suspend.
Пришлось портировать 465й на старшие ядра вручную. Так вот. После того, что я там увидел внутри, пожалуй NVidia я больше не куплю...
Пришлось портировать 465й на старшие ядра вручную. Так вот. После того, что я там увидел внутри, пожалуй NVidia я больше не куплю...
😁43👍5💩2🔥1