Задать вопрос
  • Как в Python "красиво/правильно" преобразовать "число" в байты и обратно?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Для целых можно так (число должно быть неотрицательным):

    (1).to_bytes(2, byteorder='little')
    (-1+2**16).to_bytes(2, byteorder='little')

    Для произвольных следует использовать struct.pack

    struct.pack("i", -1)
    struct.pack("f", math.pi)
    Ответ написан
    Комментировать
  • Как озвучить скрипт для голос. помощника?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    engine.say('Сейчас ' + moment.strftime('%H:%M'))
    Ответ написан
    5 комментариев
  • Зачем нужно распространять бесплатное ПО?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Следует начать с того, что не все и не всегда мыслят в терминах монетизации продукта. Многие искрене хотят приносить пользу. Даже мегакорпорации могут часть своей деятельности осуществлять на благотворительных началах не только в порядке повышения рекламы и известности, но и как выражение идеи своего социального долга перед человечеством, ответственности более обеспеченных перед менее обеспеченными.
    Ответ написан
    Комментировать
  • Почему в ESRGAN не меняется модель?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Потому что внутри скрипта зашит путь к файлу:

    model_path = 'models/RRDB_ESRGAN_x4.pth'

    Чтобы это можно было передавать параметром, нужно поменять примерно так:

    import sys
    model_path = sys.argv[1]


    И надо бы всё-таки учить язык, которым пользуешься, а не пытаться запускать что попало в надежде на успех. Я вот не уверен, что этот тестовый скрипт расчитан на произвольную модель, а не только на указанную.
    Ответ написан
    Комментировать
  • Как закрыть все действующие соединения в sqlite3?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Указанный код с django работает потому что django имеет сведения обо всех открытых средствами django коннектах и может их закрыть.

    При прямом открытии баз, конечно же, никуда сведения о них не складываются. Чтобы получить подобное своими силами, можно при каждом открытии sqlite-базы класть коннект в list, а в нужный момент перебрать его и закрыть всё:

    db_connections = []
    
    db1 = sqlite3.connect('baza1.db')
    db_connections.append(db1)
    db2 = sqlite3.connect('area51.db')
    db_connections.append(db2)
    
    ...
    
    for db in db_connections:
      db.close()


    PS: Некоторое время назад я написал скрипт, который генерирует sqlite-файлы пачками (кэш для САС.Планеты), и там есть специальный класс, который открывает новые файлы и закрывает лишние при достижении некоторого лимита: https://github.com/shurshur/tms2sqlite/blob/master...
    Ответ написан
    1 комментарий
  • Как и где найти единомышленников, чтобы писать свой проект?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Если нет мотивации работать одному, то единомышленники не помогут её получить. Да и не будут какие-то ранее незнакомые тебе люди всерьёз пытаться тебя мотивировать, у них есть сколько угодно способов потратить своё время более продуктивно.

    Гораздо правильнее не ждать у моря погоды, а просто взять и начать что-то делать. Тяжело делать что-то продолжительное во времени и сложное по структуре? Можно выбрать что-то попроще, ну или разделить сложную задачу на более простые с более предсказуемыми шансами на реализацию, а дальше как пойдёт.
    Ответ написан
    Комментировать
  • Русскоязычные сайты в других доменных зонах, как найти?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Есть огромное количество сайтов в доменах третьего уровня, которых нет в доступных списках доменов. И в целом далеко не всякий сайт даже в поисковиках находится, не говоря уже о том, чтобы их кто-то каталогизировал. Задача в общем случае неразрешимая.

    Но можно пытаться бороться за эффективность охвата аудитории при неполном наборе сайтов. Понятно, что большинство популярных сайтов имеют домен первого уровня в русских зонах, туда можно добавить популярные сайты из всяких рейтингов типа alexa. В целом уже будет немало информации.
    Ответ написан
    Комментировать
  • Создание бота в мессенджере, как правильно начать?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Начинать определённо стоит с телеграма, потому что по нему просто океан документации и примеров, API бесплатен, а создание бота у BotFather происходит моментально.

    В случае с WhatsApp легальный API стоит денег и времени на получение доступа, а с нелегальным ещё повозиться придётся, либо взяв бесплатно и потратив кучу времени на освоение, либо купив за некоторую сумму денег у предприимчивых дельцов.
    Ответ написан
    Комментировать
  • Куда вписывать код для рассылки сообщений в telebot?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    И что тут сложного?

    bot = telebot.TeleBot(TOKEN)
    
    for news in array_of_parsed_news_to_send:
      bot.send_message(YOUR_USER_CHAT_ID, news)
    Ответ написан
  • Программа сама отключается без ошибок, как заставить работать вечно?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    python3 main.py & disown & exit

    А ещё лучше логгировать что она пишет:

    python3 main.py > main.log 2>&1 & disown & exit
    Ответ написан
    Комментировать
  • Прерывание рекурсии python 3?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Можно сделать свой exception, в нужном месте сделать raise этого exception и снаружи его словить.

    import random
    
    class StopRecursion(Exception):
      pass
    
    def some_recursive_function(depth=0):
      print ("depth=%d" % depth)
      # играем в русскую рулетку
      if random.randint(1,6) == 4:
        raise StopRecursion
      some_recursive_function(depth+1)
    
    try:
      some_recursive_function()
    except StopRecursion:
      print ("Recursion stopped")
    Ответ написан
    Комментировать
  • Безопасны ли аналоги программ Windows под Android?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Если есть сомнения, что Keepass2Android в маркете собран из тех же самых исходников, то можно собрать его самостоятельно.
    Ответ написан
    Комментировать
  • Как убрать лишнее в split?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Нужно использовать плейсхолдеры:

    cur.execute("UPDATE chats SET "+str(settings_massive[massnum])+"=? WHERE chat_id=?", (str(text_chat), peid))
    Ответ написан
    Комментировать
  • Зависает tasks.loop в cogs, что делать?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    А зачем делать в Cog? Просто создаём функцию с декоратором @tasks.loop, а потом её запускаем:

    @task.loop(seconds=10)
    async def cool_task():
      do_something_awesome
    
    cool_task.start()
    bot.run(TOKEN)
    Ответ написан
  • Как сделать боту команду рандом страниц сайта?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Ну так дискорд закэшировал один раз то, что получил на странице /random при первом обращении, и больше ничего нового не получает. Надо либо давать ссылку на что-то конкретное (тогда в preview будет то же, что и по ссылке), либо пытаться обмануть кэширование передачей параметра со случайным значением, что-нить типа /random?fake_arg=some_random_value (в превью будет не то же, что по ссылке, но хотя бы разное).
    Ответ написан
    Комментировать
  • Должно ли быть так?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Как пишут в этих ваших интернетах, PyGame работает как обёртка вокруг SDL и сам не умеет в аппаратное ускорение графики. Источник: https://gamedev.stackexchange.com/questions/73328/... (и там же ссылки на подробности-примеры). Ещё одна ссылка с картинками и примерами кода https://stackabuse.com/advanced-opengl-in-python-w...

    Да, не все форматы изображений поддерживают прозрачный фон и альфаканал. bmp - это по сути просто массив RGB-цветов каждой точки, в RGB нет прозрачности, как в RGBA.
    Ответ написан
  • Смена дефолтного порта portainer(9000) в docker-compose?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    ports:
          - 9001:9000


    Порт внутри контейнера не меняется.
    Ответ написан
    2 комментария
  • Возможно ли посредством input передавать арифметические операторы?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    https://pypi.org/project/simpleeval/

    from simpleeval import simple_eval
    
    print (simple_eval('6*7'))


    upd: как в комментарии правильно указали, есть встроенный eval
    Ответ написан
  • Как написать бота для whatsapp?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Официально WhatsApp Business API предоставляется только бизнесу за денюжку. Причём напрямую с WhatsApp может договориться разве что крупная транснациональная корпорация, остальным же приходится работать через партнёров, которые вместо API WhatsApp обычно дают собственный API.

    Кроме того, есть всякие деятели, которые разбирают работу веб-клиента WhatsApp и имитируют его. Но это рискованно, так как является нарушением правил WhatsApp, так что на живых нужных номерах лучше с таким не связываться - в любой момент могут и забанить безвозвратно.
    Ответ написан
    Комментировать
  • Стоит ли переходить с win 10 на linux debian?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Все указанные программы под Linux производителем не выпускаются, так что тебе переходить точно не имеет смысла, ты не сможешь в нём работу работать.

    Можешь ради интересу и первичного освоения поставить на домашний компьютер, где будешь смотреть кино и рассматривать котиков в инстаграме, но не работать.
    Ответ написан
    Комментировать