Pull to refresh
4
0
Иван Тищенко @Tihon_V

Веб-разработчик

Send message

Пользую 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 будут приведены к конкретному типу:

def some_form(a: 'float', b: 'datetime.datetime'):
    ...

При отправке запроса значения будут иметь тип 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. Если обновить – все работает.

brew install openssh

"неплохо масштабируется"

Не очень корректно подобрал словосочетание – он хорошо расширяется.

В случае с httpx можно описать клиент (сессию) и присвоить ему общие для запросов параметры, пул коннектов, прокси, заголовки и таймауты. Все за исключением пула можно переопределить при выполнении запроса. В aiohttp для изменения таймаутов нужно создавать ещё один экземпляр ClientSession и передавать в него все куки…

  1. Не спрашивать больше 2 конкурентных запросов в секунду, для большего количества – использовать прокси.

  2. Добавлять referrer с ссылкой на корневую страницу домена, а так же accept-language.

  3. Использовать актуальный и популярный user-agent

httpx для получения контента. Он гораздо проще чем aiohttp, неплохо масштабируется и поддерживает работу с прокси.

lxml для парсинга. Изучение XMLPath/JSONPath сильно упрощает жизнь с разнородными источниками сериализованных данных независимо от языка программирования. Не стоит писать код привязаный к beautifulsoup в случаях, когда можно ограничится одним запросом.

Наверняка пригодится fake_useragent и умение обращатся с каким-нибудь http/socks-прокси. Для сайтов с динамическим содержимым нужно ещё уметь работать с headless версией браузера.

Находил, ставил в банкомат банка которому она принадлежит, вводил n-раз 0000 вместо пина, чтобы банкомат забрал и заблокировал карту.

Менее читаемо, но будет работать во всех версиях:

{**d1, **d2}

Иногда, достаточно использовать MappingProxyType для доступа к объединению словарей.

Ну, киллер фича есть — NUC'и не запитываются по Type-C…

Можно и без него отправлять в /sys/bus/usb/drivers/usb/unbind сигнал на отключение хаба, или отдельного порта хаба, если модем перестал отвечать "OK" на тестовую команду (вроде бы AT, или AT+).
Отлично работало виде SystemD-юнита на CentOS7 (raspberry pi + d-link hub dub7 v2).


Собсно, команда
echo '2-1.1' > /sys/bus/usb/drivers/usb/unbind
sleep 1
echo '2-1.1' > /sys/bus/usb/drivers/usb/bind
один из мини-десктопов (модель Meerkat)

Искал отличия с Intel NUC и не нашел…

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity