Задать вопрос
  • Как обновить docker-compose на prod-сервере, ничего не поломав?

    @vitaly_il1
    DevOps Consulting
    Ответ простой - обновляют docker-compose.
    Варианта два:
    1) если прод. сервер один, то просят время на downtime, обновляют, проверяют, возвращают в продакшен
    2) если серверов несколько, то исключают один сервер из сервиса, обновляют, проверяют, подключают заново, и т.д. со следующими
    Ответ написан
    Комментировать
  • Почему print не выводит все значения переменной в цикле?

    Wispik
    @Wispik
    if k == 10:
        continue

    При выполнении условия, цикл начинает следующею итерацию и принт соответственно не выполняется
    Ответ написан
    1 комментарий
  • Как фрилансеры хостят проекты?

    svob
    @svob
    Фрилансер, текстовик широкого профиля
    У вас должен быть свой "демонстрационный" хостинг, хотя бы из соображений безопасности (показать проект до окончательной оплаты).
    Готовый проект надо отдавать заказчику в полное владение.

    Либо вы ему передаете пакет файлов (и пусть сам их заливает куда хочет), либо вы помогаете с регистрацией хостинга-домена, ПРИЧЕМ составляете отдельный дополнительный документ - вроде инструкции (как пользоваться хостингом), со скринами, с паролями; и отдельно же обращаете внимание заказчика на важность этих паролей, а также объясняете ему важность зарегистрировать все именно на его имя (а не на имя наемного сисадмина/менеджера/...) или на юрлицо. Прямо стандартную рыбу-инструкцию с блоком предупреждений сделайте и всем раздавайте. Можно еще про бэкапы туда добавить - или хотя бы про обязательную резервную "стартовую" копию сделанных вами файлов на компакт-диске.

    *Постоянно всплывают истории, как заказчики спустя несколько лет теряют доступ к своим сайтам и ищут помощи.
    Ответ написан
    Комментировать
  • Что делать при ошибке в Python?

    paran0id
    @paran0id
    Умный, но ленивый
    Ну написано же - отступ. У вас в этой строке отступ в один пробел.
    Кстати, вы не обернули код в тег code, поэтому мы не видим форматирования.
    Ответ написан
    Комментировать
  • Как вычислить среднее число списка?

    Dr_Elvis
    @Dr_Elvis Куратор тега Python
    В гугле забанен
    В-нулевых: пункт правил 3.8. Нужно соблюдать.

    Во-первых: что для вас значит среднее число? среднее-арифметическое? тогда это прям школьная программа. среднее-арифметическое между двумя числами будет равно наименьшее плюс разность между наибольшим и наименьшим деленное на два. То есть 4+(7-4)/2=4+3/2=4+1,5=5,5 а не то что вы высчитываете.

    Во-вторых: вы в конце выводите строку "Конец программы ! ". Так же выведите и результат, только вместо текста в кавычках нужно поставить вашу переменную с результатом вычисления.
    Ответ написан
    9 комментариев
  • Ругается антивирус на безвредную программу, как решить?

    Ternick
    @Ternick
    Ну что же)
    Я внесу тоже свой вклад)

    Антивирусам не очень нравится сам питон, а не ваш код. В своё время этот интерпретатор засветился в разных вспышках вирусной активности, следы этого до сих пор преследуют его)

    Учитывая то, что исполняемый файл, который был упакован какими-то внутренними решениями, по типу (cx_freeze, pyinstaller, py2exe and etc.) по сути является архивом, в котором лежит сам питон, библиотеки и ваш код в формате .pyc(py compiled).

    Если ближе к телу, это ложные срабатывания, их никак не избежать, смиритесь или бегите в другой яп, к слову сама идея, переносить змеиные исходники в виде exe очень плоха, питон не совсем нужен для этого)

    Соглашусь с MichaelMih, как вариант использовать альтернативные питоны(cython, ironpython, jython and etc.).

    Надеюсь вам помог мой ответ)
    Ответ написан
    2 комментария
  • Кто знает, с какого языка эта функция?

    Вероятнее всего - ни из какого. В кино под видом кода может быть что угодно, что выглядит эпично и непонятно. (хотя иногда попадается настоящий код. Например в devs был код на питоне)

    Но под названием CAMEXEC я нашёл упоминания какой-то ОС для PDP-11. Если это код из неё, то никакой пользы вам знание не принесёт.
    Ответ написан
    Комментировать
  • Почему не заходит в цикл for?

    @Richard_N
    Вероятно history.operations пуст
    Ответ написан
    Комментировать
  • Как составить число n из элементов списка?

    @deliro
    Ответ написан
    Комментировать
  • Как составить число n из элементов списка?

    Vindicar
    @Vindicar
    RTFM!
    Я бы решал задачу рекурсивно.
    Найди в списке все числа x, меньшие или равные n, определи их позиции в списке, отсортируй по убыванию числа.
    Если в списке есть x, равное n, ответ найден.
    Иначе перебирай числа по порядку, от больших к меньшим, и для каждого числа x пробуй убрать его из списка, а потом рекурсивно решить задачу для суммы n-x.
    Т.е. что-то типа:
    def compose_sum(numbers: list[int], total: int) -> list[int] | None:
        # ищем индексы потенциальных слагаемых
        indices = [i for i in range(len(numbers)) if numbers[i] <= total] 
        # сортируем по убыванию слагаемых, потом по порядку в списке
        indices.sort(key = lambda i: (numbers[i], i), reverse=True)
        # если нулевой элемент совпадает - мы нашли точную сумму. Прерываем рекурсию.
        if numbers[indices[0]] == total: 
            return [indices[0]]
        for index in indices: # иначе перебираем слагаемые
            numcopy = numbers.copy()
            # копия списка без рассматриваемого слагаемого
            current = numpcopy.pop(index)
            next_indices = compose_sum(numcopy, total - current)
            if next_indices:  # нашли решение, корректируем индексы (так как мы удалили один элемент)
                for i in range(len(next_indices)):
                    if next_indices[i] >= index:
                        next_indices[i] += 1
                return [index] + next_indices # отдаём наше решение "наверх"
            # next_indices пуст/None - решения не нашли, пробуем другой index
        return None # не нашли решения ни для одного index
    Ответ написан
    Комментировать
  • Как убрать скобки?

    Dr_Elvis
    @Dr_Elvis Куратор тега Python
    В гугле забанен
    Почитать про списки. И про то как выдают данные бд. И ещё основы, чтобы наверняка, Марка Лутца хотя бы.
    Ответ написан
    Комментировать
  • Как правильно вести "документацию"/ заметки сис админу?

    Lopar
    @Lopar
    системный администратор
    Раз в несколько лет вы будете кочевать туда сюда. Блокнот, Обсидиан, Ноушен, Докувики, Эксель\Ворд, Блокнот в клеточку. Постоянно мигрируешь туда-сюда потому что задачи меняются, старые записи устаревают и удаляются, новые записи подпадают под новые требования - что-то для себя, что-то на отдел расшарить итд. Были пароли в Кипасс, не хватало шашечек, переехал на битварден, пока переезжал и привыкал, за пару тройку лет шашешчки подъехали и в кипасс, теперь думаешь про обратный переезд.

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

    Стандартную библиотеку си в других языках использовать нельзя, так как это часть языка Си.
    Использовать заголовочные файлы из си тоже не получится (за очень редкими исключениями)

    Но ты можешь практически любую сишную библиотеку, скомпилированную в виде динамической библиотеки
    (.dll на Windows) использовать в практически любом языке средствами ffi.
    Ответ написан
    Комментировать
  • Как правильно построить логику приложения?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Первое, что приходит в голову: если уж классы, то и трэки - класс. Со всеми вытекающими. Но это отдельная история.

    Второе - для списков добавление элемента - метод .append()
    Можно и «плюсовать», но лучше явно, чем неявно.
    Т.е. self.data['tracks'].append({…})
    Но тут мы подходим к третьему: если у тебя класс проигрывателя, зачем внутри него делать вот этот словарь self.data?
    Пусть у класса проигрывателей будут атрибуты «self.tracks: list» и «self.queueloop_status: bool».
    Т.е.
    self.tracks.append({…})
    self.queueloop_status = True

    И, наверное, для управления всем этим классу проигрывателя надо оформить соответствующие методы (add, remove, сеттеры/геттеры и т.д.),
    Ответ написан
    Комментировать
  • Как остановить поток python?

    Vindicar
    @Vindicar
    RTFM!
    Метод join() приостанавливает тот поток, в котором он вызван до момента завершения указанного потока. Он никак не сигнализирует указанному потоку, что пора завершаться, это твоя задача.
    Я не вижу, чтобы ты присваивал True переменной schedule_stop.
    Ответ написан
    2 комментария
  • Как сделать условие в SQLite Python?

    Vindicar
    @Vindicar
    RTFM!
    Ну так у тебя второй запрос запршивает всех пользователей, без условия.
    А вообще приведённый код не имеет смысла и не должен работать вообще никак.
    for i in cursor.fetchone("SELECT ID FROM user_info WHERE RANK = '1'"):

    Ты перебираешь столбцы в первой строке (fetchone), для которой RANK = '1'. Это при том, что запрос возвращает тебе только один столбец - ID. А ещё метод fetchone() не принимает параметров. Ты пропустил вызов execute()?

    Потом ты почему-то берёшь 0й символ этого столбца. Если он равен 1 (а он не будет равен 1, так как это символ, а не число).
    Потом ты перебираешь всех пользователей, и отправляешь им сообщения (при этом у тебя в вызове send_message() две опечатки - в имени переменной и незакрытая скобка).

    А ещё у тебя отступы кривые - почему for i с отступом?

    В общем, по такой бредятине понять, в чём дело, нереально.
    Ответ написан
    4 комментария
  • Как правильно работать с секретами?

    Прокидывай секреты через переменные среды. Благо по умолчанию IConfiguration умеет работать со слоёными конфигами, где по порядку применяются следующие слои:
    1. appsettings.json
    2. appsettings.Environment.json
    3. переменные среды
    4. аргументы командной строки

    Соответственно никакие трансформации не нужны - можно спокойно пушить конфиг в репозиторий, заменяя секреты какими-нибудь заглушками (например мы туда кладём строки, которые похожи на тот секрет, который должен быть)

    Локально (на машине разработчика) переменные среды можно хранить в .env файлах, либо можно продолжать иметь дополнительные appsettings - это тоже ок.

    При разворачивании образа, повторюсь, прокидывай секреты в переменные среды.

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

    shabelski89
    @shabelski89
    engineer
    Проще простого, вот мой ответ на аналогичный вопрос.
    Ответ написан
    Комментировать
  • Объясните/заккоментируйте как работает эта програмка?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    такую программу можно написать в 5 раз короче
    и именно такое решение от вас и ожидается - примитивное, показывающее что вы понимаете самые базовые элементы языка - циклы, работу с переменными, строками.
    Никакие списки тут не нужны.
    От вас требуется продумать в голове алогоритм, и потом реализовать его на Питоне.

    Главное здесь - алгоритм
    Попробуйте для начала изложить его просто словами.
    Ответ написан
    21 комментарий