Пользую ZMI QB826B. Из недостатков - мало емкости, mbp 16" 2019 заряжает только на половину... Можно разобрать и использовать напильник и gpio на rpi чтобы получать информацию о заряде батареи.
При отправке запроса значения будут иметь тип float и datetime.datetime, или вернется HTTP 422 Unprocessable Entity. Единственная оговорка - формат для даты нужно смотреть в документации (используется ISO-8601).
Сколько не сталкивался с gql, столько раз приходил к тому, что "плоское - лучше вложенного". Ибо, вместо написания запросов к бд со стороны бекенда, Вы – отпускаете эту задачу к клиенту, который не обязан вдаватся в оптимизацию и чтение плана запроса, что делает сложным и сверх вариативным набор тест-кейсов для бека и соответственно позволяет декларировать бизнес-логику со стороны клиента.
Это может весьма неплохо работать при агрегации разных API и использовании одного и того же стека со стороны бекенда и клиента, а также при относительно простых API но ИМХО неизбежно ведет к усложнению логики приложения.
Многи библиотеки работающие с REST сегодня предоставят вам автогенерацию эндпоинтов и OIS 3.0 документации. И чаще у них предусмотрены инструменты для ограничения количества полей, связей и набора фильтров.
Можно отказатся от использования HTTPS, если это влияет на производительность сервера. В моём случае, сервер игры и сервер приложения находился в одной изолированной сети за NAT потому было достаточно HTTP.
Приходилось писать интеграции для турнирного оператора к CS:GO и Dota 2. Там много необычных особенностей:
Указанный в статье GSI может отправлять до ~50 Мб JSON и существенно влияет на производительность клиентской части, т.е. от него зависит FPS наблюдателя. Однако каждый такой пакет содержит максимальное количество информации о состоянии игры. Часто используется для интеграций с MIDI-оборудованием что запускает спецэффекты на сцене.
Игровой сервер позволяет добавлять различные плагины, но они работают в том же потоке что и сервер, соответственно влияют на производительность сервера.
Игровой сервер может отправлять логи используя UDP или HTTP. При отправке по HTTP сервер-получатель должен отдавать ответ 200 с пустым телом менее чем за 100 мс, иначе игровой сервер сформирует новый запрос с предыдущей и текущей порцией логов (и продожит это повторять до перезапуска сервера).
Не очень корректно подобрал словосочетание – он хорошо расширяется.
В случае с httpx можно описать клиент (сессию) и присвоить ему общие для запросов параметры, пул коннектов, прокси, заголовки и таймауты. Все за исключением пула можно переопределить при выполнении запроса. В aiohttp для изменения таймаутов нужно создавать ещё один экземпляр ClientSession и передавать в него все куки…
httpx для получения контента. Он гораздо проще чем aiohttp, неплохо масштабируется и поддерживает работу с прокси.
lxml для парсинга. Изучение XMLPath/JSONPath сильно упрощает жизнь с разнородными источниками сериализованных данных независимо от языка программирования. Не стоит писать код привязаный к beautifulsoup в случаях, когда можно ограничится одним запросом.
Наверняка пригодится fake_useragent и умение обращатся с каким-нибудь http/socks-прокси. Для сайтов с динамическим содержимым нужно ещё уметь работать с headless версией браузера.
Можно и без него отправлять в /sys/bus/usb/drivers/usb/unbind сигнал на отключение хаба, или отдельного порта хаба, если модем перестал отвечать "OK" на тестовую команду (вроде бы AT, или AT+).
Отлично работало виде SystemD-юнита на CentOS7 (raspberry pi + d-link hub dub7 v2).
Есть moonlight / sunshine. Оно работает если устройство может отображать стрим при 20-40 мбит/с.
Например, так.
Пользую ZMI QB826B. Из недостатков - мало емкости, mbp 16" 2019 заряжает только на половину... Можно разобрать и использовать напильник и gpio на rpi чтобы получать информацию о заряде батареи.
Проблему автономности rpi можно решить с помощью "небольшого" powerbank на 25~30 Ач, или подключать свитч/роутер через PoE и ставить шилд на pi.
Но у моего провайдера, при отсутствии электроенергии - отключается оборудование и потому ни powerbank, ни ИБП мне не помогает.
Это тоже можно ограничить с помощью rate-limit'a, cors и авторизации для использования лямбды, а еще закрыть все CF сверху…
Кхм... Думаю у AWS должно быть B2B решение. Если настраивать что-то для завода/предприятия – это будет удобным, для дома – overengineering.
За это отвечает pydantic. Он предоставляет typings (тайпинги?), которые в FastAPI будут приведены к конкретному типу:
При отправке запроса значения будут иметь тип float и datetime.datetime, или вернется HTTP 422 Unprocessable Entity. Единственная оговорка - формат для даты нужно смотреть в документации (используется ISO-8601).
Сколько не сталкивался с gql, столько раз приходил к тому, что "плоское - лучше вложенного". Ибо, вместо написания запросов к бд со стороны бекенда, Вы – отпускаете эту задачу к клиенту, который не обязан вдаватся в оптимизацию и чтение плана запроса, что делает сложным и сверх вариативным набор тест-кейсов для бека и соответственно позволяет декларировать бизнес-логику со стороны клиента.
Это может весьма неплохо работать при агрегации разных API и использовании одного и того же стека со стороны бекенда и клиента, а также при относительно простых API но ИМХО неизбежно ведет к усложнению логики приложения.
Многи библиотеки работающие с REST сегодня предоставят вам автогенерацию эндпоинтов и OIS 3.0 документации. И чаще у них предусмотрены инструменты для ограничения количества полей, связей и набора фильтров.
Можно отказатся от использования HTTPS, если это влияет на производительность сервера. В моём случае, сервер игры и сервер приложения находился в одной изолированной сети за NAT потому было достаточно HTTP.
Приходилось писать интеграции для турнирного оператора к CS:GO и Dota 2. Там много необычных особенностей:
Указанный в статье GSI может отправлять до ~50 Мб JSON и существенно влияет на производительность клиентской части, т.е. от него зависит FPS наблюдателя. Однако каждый такой пакет содержит максимальное количество информации о состоянии игры. Часто используется для интеграций с MIDI-оборудованием что запускает спецэффекты на сцене.
Игровой сервер позволяет добавлять различные плагины, но они работают в том же потоке что и сервер, соответственно влияют на производительность сервера.
Игровой сервер может отправлять логи используя UDP или HTTP. При отправке по HTTP сервер-получатель должен отдавать ответ 200 с пустым телом менее чем за 100 мс, иначе игровой сервер сформирует новый запрос с предыдущей и текущей порцией логов (и продожит это повторять до перезапуска сервера).
Дома запущен на RPI4. Но у него и HA по умолчанию отключен, при включении фич - растет использование ОЗУ.
В macOS достаточно "архаичный" ssh. Если обновить – все работает.
Не очень корректно подобрал словосочетание – он хорошо расширяется.
В случае с httpx можно описать клиент (сессию) и присвоить ему общие для запросов параметры, пул коннектов, прокси, заголовки и таймауты. Все за исключением пула можно переопределить при выполнении запроса. В aiohttp для изменения таймаутов нужно создавать ещё один экземпляр ClientSession и передавать в него все куки…
Не спрашивать больше 2 конкурентных запросов в секунду, для большего количества – использовать прокси.
Добавлять referrer с ссылкой на корневую страницу домена, а так же accept-language.
Использовать актуальный и популярный user-agent
httpx для получения контента. Он гораздо проще чем aiohttp, неплохо масштабируется и поддерживает работу с прокси.
lxml для парсинга. Изучение XMLPath/JSONPath сильно упрощает жизнь с разнородными источниками сериализованных данных независимо от языка программирования. Не стоит писать код привязаный к beautifulsoup в случаях, когда можно ограничится одним запросом.
Наверняка пригодится
fake_useragent
и умение обращатся с каким-нибудь http/socks-прокси. Для сайтов с динамическим содержимым нужно ещё уметь работать с headless версией браузера.Находил, ставил в банкомат банка которому она принадлежит, вводил n-раз 0000 вместо пина, чтобы банкомат забрал и заблокировал карту.
Менее читаемо, но будет работать во всех версиях:
Иногда, достаточно использовать MappingProxyType для доступа к объединению словарей.
Да.
Ну, киллер фича есть — NUC'и не запитываются по Type-C…
Можно и без него отправлять в
/sys/bus/usb/drivers/usb/unbind
сигнал на отключение хаба, или отдельного порта хаба, если модем перестал отвечать "OK" на тестовую команду (вроде быAT
, илиAT+
).Отлично работало виде SystemD-юнита на CentOS7 (raspberry pi + d-link hub dub7 v2).