Задать вопрос
  • Telegram Bot API. Keyboard не работает в группах с темами?

    shurshur
    @shurshur
    Предполагаю, что эти кнопки будут работать только в "классическом" треде группы (тот, куда после этого идут сообшения старых клиентов, а также всякие вступления в группу). Но это надо проверять и уточнять.
  • Как организовать дисковое простраснтво для сервера на 10 человек?

    shurshur
    @shurshur
    В целом zfs работает в Linux довольно хорошо, несмотря на лицензионную несовместимость с ядром и необходимость его подключать через DKMS. В zfs есть и нативные средства для кэширования на SSD, можно отказаться от bcache (и в случае zfs не просто можно, но и нужно). Но придётся собирать массив вручную с нуля и всё на него копировать.
  • Почему функция возвращает None?

    shurshur
    @shurshur
    Onigire, ещё один способ выйти из функции - это когда её исполнение доходит до последней строчки функции. Если там не будет сделан return какого-то значения, то функция вернёт None.
  • Почему функция возвращает None?

    shurshur
    @shurshur
    Onigire, если условие всегда выполняется, что оно делает в коде? Разумеется, оно выполняется не всегда, цикл завершается и функция доходит до конца, где нет return.
  • Можно ли в теории запустить тг бота через сервера дискорда?

    shurshur
    @shurshur
    Zura_aps, если есть желание заниматься этой темой, рано или поздно придётся завести себе хоть какой-то хостинг. И это не такие огромные деньги, на пиво с фисташками больше уходит.
  • Как можно улучшить код отображения даты выпуска новости?

    shurshur
    @shurshur
    ThunderCat, а когда захочется тем же кодом поддерживать узбеков, финнов и каталанцев, то сразу же станет понятно, насколько неудобны рукодельные реализации для решения такиз задач.
  • Как исправить ошибку No module?

    shurshur
    @shurshur
    Mr.Robot, теперь

    current_dir = /home/user/python/flaskr/web/live
    dirname(current_dir) = /home/user/python/flaskr/web

    Нужно ещё один раз на уровень выше взять и получится как надо.
  • Ошибка User not found в aiogram. Как исправить?

    shurshur
    @shurshur
    user_id=callback_query.message.chat.id

    Почему chat.id? id пользователя равен id чата только в приватах с ботом - и то я настоятельно рекомендую на это не ориентироваться, потому что chat_id и user_id прям по своей задумке это разные вещи.
  • Нужно написать загадку используя python. Где я сделал ошибку?

    shurshur
    @shurshur
    Вообще-то условие s != 'близнецы' or s != 'Близнецы' всегда истинно, поэтому цикл никогда не завершится.
  • Как исправить ошибку No module?

    shurshur
    @shurshur
    Mr.Robot, в изначальной версии вопроса было не так.
  • Как увидеть всё значение в поле Pubkey в wireshark?

    shurshur
    @shurshur
    Например, скопировать через ПКМ значение в буфер.
  • Python playwright, как работать с несколькими страницами асинхронно?

    shurshur
    @shurshur
    EnotShow, чтобы асинхронность ускоряла работу приложения, нужно, чтобы в ней было много ввода вывода и как следствие переключений асинхронных задач. Если там много процессорно-ориентированного кода и не происходит ввода-вывода, то это не поможет. Вообще, надо понимать, что в asyncio всё выполняется в один поток, там нет никакого настоящего параллелизма, и "ускорение" заключается в том, что одни задачи могут выполняться в то время, когда другие ожидают ввода-вывода (по сети, в локальные файлы итд). То есть это хороший механизм, но он предназначен лишь для определённого класса задач.

    Если parse_item берёт содержимое страницы и пытается его анализировать, то никакого ввода-вывода в это время не происходит. И если этот процесс упирается в 100% процессора, то даже расставлять внутри asyncio.sleep(0) (который по сути форсирует переключение задач, что иногда помогает) бессмысленно - всё равно в один поток будет работать.
  • Как в ubuntu ext4 узнать размер кластера?

    shurshur
    @shurshur
    pfg21, неправда, tune2fs работает даже с файлами, содержащими внутри файловую систему.
  • Как узнать причину падения monit?

    shurshur
    @shurshur
    WebforSelf, может и не память. Хотя довольно логичное предположение, что обычно ему нет проблем с памятью, а потом вжух! - и за минуту память вся кончается, процесс умирает, появляется много свободной памяти.

    Надо логи читать, возможно там что-нибудь есть о причинах его падения.
  • Как в именах файлов и папок заменить все пробелы на _?

    shurshur
    @shurshur
    Скорее всего на внешнем харде какой-нить exfat, а в проблемном файле например бэкслеш в имени, который там не разрешён. Тут только выяснять, на каком именно файле падает, и его переименовывать.

    Вариант - запаковать файлы в архив и его положить на хард. Но распаковка на винде всё равно вызовет проблемы.
  • Как сделать платную подписку для дискорд бота?

    shurshur
    @shurshur
    xXx_Unity_xXx, когда занимаешься легальным бизнесом, достаточно естественно создавать юрлицо и платить налоги.
  • Как создавать новый image в dockerfile и нужно ли?

    shurshur
    @shurshur
    Владимир, а, прочитал тот вопрос ещё раз и написал туда в комментарии.
  • Как импортировать бэкап в mongo?

    shurshur
    @shurshur
    Владимир,
    в Dockerfile есть два способа передать переменную окружения:

    ARG - переменная передаётся на этапе сборки;
    ENV - переменная передаётся в создаваемый на базе собранного образа контейнер.

    Если надо что-то передать на этапе сборки, то следует использовать ARG.

    Что касается исхождной ошибки, скорее всего, контейнера с id b2fb5a13f4d8 сейчас не существует. Я бы посмотрел в вывод docker ps, возможно у него другой id сейчас. И вообще, часто удобнее обращаться к контейнерам по именам.
  • Как создавать новый image в dockerfile и нужно ли?

    shurshur
    @shurshur
    Владимир, посмотрел, не очень понимаю в js, process.env это переменные окружения текущего процесса? Скорее всего, надо было их передать правильно в контейнер. Самое простое - записать их в файл, а в docker-compose.yml добавить в env_file.

    env_file:
      - path/to/my.env


    Я сам раздаю статику отдельной нодой


    Тем не менее, вряд ли нода раздаёт статику так же быстро и эффективно, как nginx, который 20 лет писали на C и затачивали под самые высоконагруженные проекты.

    В любом случае, если есть 10 приложений, никто не делает 10 отдельных серверов под каждое, это явный перебор, а это значит, что придётся научиться обычным практикам по разруливанию этого хозяйства, а обычная практика это чаще всего nginx в качестве обратного прокси.

    Это если настраивает не такой как я


    Если у вас там серьёзный проект, то настраивать прод будет не js-программист, а опытный админ. Но даже так, обычно почти не нужно ничего менять из дефолтных значений в типовом конфиге, кроме специальных случаев типа вебсокетов. Которые обычно по гуглу настраиваются вполне приемлемо и дальше годами используются без изменений. Я сам никогда этого не помню и лезу в гугл.
  • Как создавать новый image в dockerfile и нужно ли?

    shurshur
    @shurshur
    Владимир, как именно используется process.env?

    То есть я могу собрать проект один раз, изменить докер файл ссылаясь на него, а не на node:16 например и у меня не будет заниматься место?


    Не совсем. Каждый образ имеет "слоёную" файловую систему, где в каждом слое лежат какие-то файлы (или информация об их удалении), итоговый образ составляется из этих слоёв, а конкретный контейнер - это ещё один слой поверх слоёв образа. Поэтому если создать много контейнеров из одного образа, то они по сути будут занимать столько места, сколько в них файлов, отличающихся от базового образа (конечно же, туда добавятся и некоторые небольшие организационные расходы).

    Для реализации слоёной файловой системы изначально в докере использовалась aufs2, файловая система с исторически тяжёлой судьбой и всяческими глюками. Сейчас же по умолчанию используется overlayfs, хотя можно использовать и другие storage driver.

    Если образ делается из node:16, то содержимое node:16 на диске хранится один раз. Если в наших проектах есть ндцать модулей, которые используются во всех приложениях, то можно сделать свой базовый образ как потомок node:16, в который будут заранее установлены основные зависимости, тогда дочерние образы приложений могут занимать меньше места, а их сборка сократится, благодаря тому, что общие модули установлены в базовый образ заранее.

    Вообще, можно на досуге полазать по /var/lib/docker (естественно, ничего трогать там не надо, только смотреть!) и поизучать вывод docker inspect по конкретным образам и контейнерам. Может немножко улучшить понимание того, как это всё устроено. А ещё в выводе команды mount можно увидеть смонтированные слоёные файловые системы...

    Нельзя поднять ноду или докер без него?


    Технически можно. Но практически общепринято проксировать через nginx или какой-либо ещё прокси (haproxy, envoy итд). На то есть несколько соображений:

    1. Можно раскидать запросы по разным приложениям, как для масштабирования/отказоустойчивости, так и для функционального деления (например, запросы /auth обрабатывает одно приложение, а запросы /news другое).

    2. Удобнее обслуживать https с сертификатами.

    3. nginx эффективен для раздачи статики.

    4. nginx очень хорошо написан, его труднее заDOSить или взломать.

    5. Сам по себе nginx требует весьма мало ресурсов, поэтому его использование не даёт практически никаких накладных расходов.