Изобрел очередной велосипед и написал свой маленький ping. Кроме ICMP умеет еще TCP/UDP, ну и график в консоли, куда без него сегодня.
Можно было поискать готовое, но мне нужны отчёты в определенном формате, проще за вечер накидать своё.
Зарелизил бинарники, может кому тоже пригодится.
https://github.com/alttch/latencymon
Можно было поискать готовое, но мне нужны отчёты в определенном формате, проще за вечер накидать своё.
Зарелизил бинарники, может кому тоже пригодится.
https://github.com/alttch/latencymon
GitHub
GitHub - alttch/latencymon: TCP/UDP/ICMP latency monitoring
TCP/UDP/ICMP latency monitoring. Contribute to alttch/latencymon development by creating an account on GitHub.
👍24
Сначала тысячи лет подгоняли языческие праздники под солнцестояние. Потом подогнали рождество и уже 2000 лет так празднуют.
Вот это я понимаю backward compatibility! А вы всё ноете, когда надо легаси API лишние пару лет посуппортить.
Вот это я понимаю backward compatibility! А вы всё ноете, когда надо легаси API лишние пару лет посуппортить.
😁19👍16
Внезапно пошла мода на рефибы культового Toughbook CF-19, можно найти за ~500$ mk5 (и даже mk6) практически в идеальном состоянии, с апгрейдом до максимума возможностей платы.
В свое время такой себе зажал, по причине 1) жабы 2) нестандартной раскладки. Наверстываю упущенное.
На пол всё же лучше не ронять (сломает пол).
В свое время такой себе зажал, по причине 1) жабы 2) нестандартной раскладки. Наверстываю упущенное.
На пол всё же лучше не ронять (сломает пол).
🔥11👍3💩2
- увидел на фейсбуке рекламу хедж-фонда, который лично курируют Павел Дуров и Илон Маск. как думаешь, стоит попробовать?
- нет. это скам
- откуда ты все знаешь?
- книги читал
- про инвестиции?
- про Буратино
- нет. это скам
- откуда ты все знаешь?
- книги читал
- про инвестиции?
- про Буратино
😁49
Китайской ядерной батарейкой, которая может работать 50 лет я заинтересовался и полез посмотреть оригинальные источники, чтобы точно получить ТТХ. Что мы имеем:
- батарея имеет размер 15x15x5мм
- выдает 3 вольта
- выдает 100 микроватт фиксированно
Интересно, но очень мало. Практического применения - ноль. Производитель обещает 1-ваттные батарейки к 2025 году, что при той же технологии будет являть собой куб примерно 22х22х22 сантиметра. 10 таких батареек могут запитать самый маленький Cortex-A, с гарантией что он не вырубится под нагрузкой.
Лучше ситуация с Cortex-M, там есть модели по 100 милливатт. Питать такой процессор можно ядерным кубом 10х10х10см, примерно как 4 кубика-рубика. Правда зачем питать - непонятно. Периферией не обвешать - не хватит батарейки. А для компактных камер слежения или микрофонов - как-то не слишком компактно.
А вообще дело было так - лаборатория выкатила презентацию, что ядерная батарейка - это в принципе возможно, хоть пока и жутко коряво. А журналисты уже дописали всё остальное. Особенно доставляет, что такие батарейки будут помогать ИИ. Ага, и тогда компьютеры станут опять размером со стадион.
- батарея имеет размер 15x15x5мм
- выдает 3 вольта
- выдает 100 микроватт фиксированно
Интересно, но очень мало. Практического применения - ноль. Производитель обещает 1-ваттные батарейки к 2025 году, что при той же технологии будет являть собой куб примерно 22х22х22 сантиметра. 10 таких батареек могут запитать самый маленький Cortex-A, с гарантией что он не вырубится под нагрузкой.
Лучше ситуация с Cortex-M, там есть модели по 100 милливатт. Питать такой процессор можно ядерным кубом 10х10х10см, примерно как 4 кубика-рубика. Правда зачем питать - непонятно. Периферией не обвешать - не хватит батарейки. А для компактных камер слежения или микрофонов - как-то не слишком компактно.
А вообще дело было так - лаборатория выкатила презентацию, что ядерная батарейка - это в принципе возможно, хоть пока и жутко коряво. А журналисты уже дописали всё остальное. Особенно доставляет, что такие батарейки будут помогать ИИ. Ага, и тогда компьютеры станут опять размером со стадион.
😁26👍10
Читаем работы студентов. "Пользовательская база: пожилые люди возраста 45 лет и выше".
М-да.
М-да.
😁65
- спасибо за предложение, но у нас уже есть облако для наших клиентов
- а чего оно так медленно работает?
- эээ, да там сервер говно сейчас. поменяем
- а чего оно так медленно работает?
- эээ, да там сервер говно сейчас. поменяем
😁26👍6
Я стал меньше хейтить растовский sqlx, после того как сложились некоторые привычки работы с ним. Предметная область: я поддерживаю две СУБД, вернее одну - Postgres и ещё Sqlite. Код должен работать с обеими, ORM не применять.
- забудьте про sqlx::Any. во-первых оно кривое и ущербное, во-вторых сложный/производительный db-agnostic sql - это все равно миф.
- sqlx::Pool нельзя просто кинуть в бокс как dyn, в sqlx слишком много инструментов, привязанных к конкретной СУБД женериком. поэтому есть два подхода - либо строим high-level функционал своей базы через трейты, имплементируем их для Pool и боксируем, либо делаем dynamic dispatch ручками через енум с парой вариантов пула. Второй подход чуть менее удобный зато даёт чуть более читаемый код, потому что операции для разных баз не разнесены по имплам, а находятся в одной функции.
- перестать мучаться с функциями для общих задач и использовать макросы. иначе есть риск потеряться в 10 этажных настройках женериков и лайфтаймов.
- обязательно сделать Encode/Decode для своих типов. у sqlx в целом убогое API для этих вещей, много чего строится приватными методами, но выжить можно. зато потом имеете нормальный bind, а обратно из базы данные через FromRow тянутся почти как в serde (serde курильщика).
- использовать sqlx::QueryBuilder, особенно там где запросы меняются динамически (напр. селекты с фильтрами).
- забудьте про sqlx::Any. во-первых оно кривое и ущербное, во-вторых сложный/производительный db-agnostic sql - это все равно миф.
- sqlx::Pool нельзя просто кинуть в бокс как dyn, в sqlx слишком много инструментов, привязанных к конкретной СУБД женериком. поэтому есть два подхода - либо строим high-level функционал своей базы через трейты, имплементируем их для Pool и боксируем, либо делаем dynamic dispatch ручками через енум с парой вариантов пула. Второй подход чуть менее удобный зато даёт чуть более читаемый код, потому что операции для разных баз не разнесены по имплам, а находятся в одной функции.
- перестать мучаться с функциями для общих задач и использовать макросы. иначе есть риск потеряться в 10 этажных настройках женериков и лайфтаймов.
- обязательно сделать Encode/Decode для своих типов. у sqlx в целом убогое API для этих вещей, много чего строится приватными методами, но выжить можно. зато потом имеете нормальный bind, а обратно из базы данные через FromRow тянутся почти как в serde (serde курильщика).
- использовать sqlx::QueryBuilder, особенно там где запросы меняются динамически (напр. селекты с фильтрами).
👍16
Главная проблема любых оптимизаций работы с СУБД - вовремя остановиться и случайно не написать свой ORM.
👍24😁20
Интересно что Postgres под капотом работает с TIMESTAMP и TIMESTAMPTZ, как с 64-bit integers (в микросекундах). Но разработчики выбрали в качестве Epoch "J2000.0" - 1 января 2000 года 00:00:00. Эта точка отсчёта используется в основном в астрономии.
Понабирали астрономов по объявлениям.
Понабирали астрономов по объявлениям.
😁18👍11🔥3