Задать вопрос
  • В терминале Git Bash вылазит какой-то END и другое. Как убрать?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Git хочет показать вам более одного экрана с информацией, для этого он вызывает стандартную программу пейджера Unix less. Просто введите q, чтобы вернуться в терминал, когда вы больше не хотите перемещаться по выходным данным.

    j перейти на одну строку вниз
    k переместиться на одну строку вверх
    space перейти на одну страницу вниз
    b перейти на одну страницу вверх
    h показать помощь
    / поиск вперёд
    ? поиск назад

    Если вы не хотите less, просто замените его другим пейджером в конфигурации. Если вам вообще не нужен пейджер, просто используйте cat:

    git config --global --add core.pager cat
    Ответ написан
    4 комментария
  • Какой сервис использовать для бесплатного хранения видео для бэкенда на Django?

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

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Либо в кавычки, либо
    async def say(ctx, *, arg):
    Ответ написан
    Комментировать
  • Как сделать нормальный калькулятор?

    Ну для начала нужно сформулировать, что такое "нормальный калькулятор" и какие примеры он должен решать)
    Потом исходя из этого выбирать конкретный подход.
    По нормальному тебе придётся как-то парсить математическое выражение и как-то его интерпретировать.
    Для решения этой задачи вот тебе несколько тем, которые ты можешь покопать:
    1. Префиксная, постфиксная, и инфиксная нотация. Для постфиксной очень легко написать калькулятор
    2. Алгоритм сортировочной станции. Это про то как можно из инфиксной нотации сделать постфиксную
    3. Абстрактные синтаксические деревья. Это про то как можно сделать что-то более сложное.
    Ответ написан
    Комментировать
  • Как исправить SyntaxError: positional argument follows keyword argument?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    0.Не пытаться писать ботов.
    1. Изучить, что такое аргументы, какие они бывают.
    2.Открыть гугл.переводчик, вставить текст ошибки и применить только-что полученные знания.
    Ответ написан
    7 комментариев
  • Python в чем ошибка? Почему SyntaxError?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Открыть учебник и читать заново. У вас там не одна ошибка, а целая куча в нескольких несчастных строках примитивного кода. И все ошибки - элементарны.. . И к тому же код не оформлен как положено.
    Ответ написан
    5 комментариев
  • Как вывести данные из одной таблицы для каждого ряда в другой?

    tumbler
    @tumbler Куратор тега Python
    бекенд-разработчик на python
    select user_id, count(*) from table1 inner join table2 using (user_id) group by user_id

    Примерно так. Список литературы: JOIN, GROUP BY
    Ответ написан
    2 комментария
  • Как покинуть discord сервер по его идентификатору в discord.py?

    1. Не используйте устаревшую документацию.
      59mQYWj.png
      Метода bot.leave_guild нет в приведенной библиотеке уже два года.

    2. Используйте конвертер объекта discord.Guild:
      5Udu5yr.png

    3. Зачем использовать псевдонимы команды для названия команды? Декоратор команды имеет аргумент name.

    4. Для проверки выполняющего команду в discord.py существуют проверки (checks).


    DEV_LIST = [...]
    
    def check_dev(ctx):
        """Check if command caller is dev"""
        return ctx.author.id in DEV_LIST
    
    @bot.command(name="server-leave")
    @commands.check(check_dev)
    async def __leave_from_server(ctx, server: discord.Guild = None):
        """Leave from selected server"""
        if server:
            await server.leave()
        else:
            await ctx.send("You need to specify server")
    Ответ написан
    Комментировать
  • Как сделать чтобы sql не выдавала синтаксическую ошибку?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Не использовать форматирование строк для формирования запросов.
    Ответ написан
    Комментировать
  • Динамически добавить elif ветки в функцию?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Именно "динамически добавить elif ветки в функцию" никак, а альтернатив вы просите не предлагать.
    Ответ написан
    Комментировать
  • Найдите перестановку по её номеру в лексикографическом порядке. Total - кол-во элементов, К - номер перестановки. Как сократить время программы?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Вы генерируете перестановки по одной, пока не отсчитаете k. Это медленно, потому что k может быть очень большим. Перестановок-то n! - это дофига много.

    Надо генерировать ее сразу по номеру.

    Посмотрите на первый элемент. У первых (n-1)! перестановок там 1, у следующих (n-1)! - там 2, потом идет группа, начинающихся с 3 и т.д.

    Уже вы можете понять в какой группе искомая k-ая перестановка. Тупо floor(k/(n-1)!) (если нумерация с 0 и перестановок и групп). Фактически, формула для первого элемента - a[0] = (k-1)/(n-1)! + 1.

    Дальше вы можете выкинуть из рассмотрения первый элемент. Сфокусируйтесь на группе с заданным известным первым элементом. Какой номер искомая перестановка имеет среди этих (n-1)!? Надо из k вычесть количество перестановок c меньшими первыми элементами (их (a[0]-1)*(n-1)!. Потом задача сводится к преведущей - сгенерировать k-ую перестановку среди оставшихся n-1 элементов.

    Если использовать какое-нибудь дерево отрезков, чтобы быстро искать j-ый пока не занятый элемент, то все решение будет за O(n log n). Если делать совсем просто - двумя циклами - то будет O(n^2). Гораздо быстрее вашего O(n!).

    Надо только аккуратно обработать случаи, когда (n-1)! слишком большое. Фактически, вам надо найти максимальный факториал, который меньше k. Пока не спуститесь до этого момента нужно сразу брать первый незанятый элемент и не считать факториал вообще.
    Ответ написан
    Комментировать
  • Почему MySQL не может запуститься?

    Предполагаю что не хватает оперативки для запуска, попробуйте увеличить значение innodb_buffer_pool_size
    в файле /etc/my.cnf

    Должно помочь

    А так посмотрите что говорит лог ошибок Mysql /var/log/mysql/error.log
    Ответ написан
    3 комментария
  • Зачем указывать в скобках родительский класс при определении дочерного класса?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Чтобы унаследовать свойства родительского класса. Добавьте в A поля и методы, разница станет заметна.
    Ответ написан
    Комментировать
  • Как в Python вывести таблицу как в примере?

    @Drill
    Вообще-то, Prettytable понимает multirow

    data = [
        {'ip':'192.168.0.2', 'model':'DES-3200-26', 'uptime': '3d 12:03:05', 'uplink state': '25: up\n26: up', 'uplink err': '0\n11', 'uplink mcast': '24560\n113'},
        {'ip':'192.168.0.3', 'model':'DES-3200-52', 'uptime': '1d 04:00:15', 'uplink state': '49: up\n50: up\n51: down\n52: down', 'uplink err': '10\n1133\n0\n0', 'uplink mcast': '5497812\n3145\n0\n0'},
    ]
    
    def set_data_for_PrettyTable(data):
        field_names = data[0].keys()
        rows = []
        for row in data:
            rows.append(row.values())
        return field_names, rows
    
    field_names, rows = set_data_for_PrettyTable(data)
    
    table = PrettyTable()
    table.hrules = 1
    table.field_names = field_names
    table.add_rows(rows)
    table.align["uplink state"] = "l"
    print(table)


    +-------------+-------------+-------------+--------------+------------+--------------+
    |      ip     |    model    |    uptime   | uplink state | uplink err | uplink mcast |
    +-------------+-------------+-------------+--------------+------------+--------------+
    | 192.168.0.2 | DES-3200-26 | 3d 12:03:05 | 25: up       |     0      |    24560     |
    |             |             |             | 26: up       |     11     |     113      |
    +-------------+-------------+-------------+--------------+------------+--------------+
    | 192.168.0.3 | DES-3200-52 | 1d 04:00:15 | 49: up       |     10     |   5497812    |
    |             |             |             | 50: up       |    1133    |     3145     |
    |             |             |             | 51: down     |     0      |      0       |
    |             |             |             | 52: down     |     0      |      0       |
    +-------------+-------------+-------------+--------------+------------+--------------+
    Ответ написан
    Комментировать
  • Для чего используется "@" перед переменными в Python?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Для того, чтобы вы задали себе этот вопрос и открыли для себя пользу учебников. 61a0da3259ddf867054068.jpeg Целая глава посвящена вопросу!
    spoiler
    Эти жулики в роликах про ботов сами этот вопрос изучили, а вас не учат, а заставляют как обезьянок повторять тупые действия. Так вам и надо, неучи.
    Ответ написан
    Комментировать
  • Существует ли зрение для робота без программирования?

    @calculator212
    ну это ж бред в наше время, тратить ресурсы на такие базовые, по моему, вещи. Сам я, если что, хеловорлд на питоне или баше, ну может чуть больше.
    как по мне бред так рассуждать с знаниями "хеловорлд на питоне или баше", что-то +/- готовое есть на гитхабе.
    "робот, та херня, которую ты объехал заехав в комнату называется мяч, прикати его мне"
    Конечно люди добавят возможность распознавания речи, понимания смысла слов на русском языке, а потом отдадут это в свободный доступ в скомпилированном виде и с открытыми исходниками.
    каждый производитель робота пылесоса заново изобретает велосипед
    Они могут покупать ПО у компании специализирующейся на этом.
    Ответ написан
    5 комментариев
  • Как sys.stdin, который выглядит как словарь превратить в словарь?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Так делать нельзя:
    dict = json.loads(str(sys.stdin))
    Нужно либо так:
    dict = json.load(sys.stdin)
    либо так:
    dict = json.loads(sys.stdin.read())
    Приведите остальной код тоже. Там наверняка такие же ошибки.
    Ответ написан
    Комментировать
  • В чем идея и как работают шаблоны?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Вопрос очень хороший.
    А ответ на него очень простой.

    Шаблоны нужны для отделения логики приложения от логики отображения.
    Разделив их, мы получим сразу кучу выгод:
    • Нормальную структуру приложения, когда вывод начинается только после того, как отработала вся логика. То есть у нас никогда не будет проблем с ошибкой headers already sent, с возвратом json-а вместо html, с выводом в page header-е тех данных, которые появляются только в процессе работы скрипта
    • Мобильность - один и тот же движок можно будет использовать на нескольких сайтах, меняя только шаблоны, но весь код оставляя одинаковым. Что поможет, в частности, вносить обновления в движок и исправлять ошибки на всех сайтах разом.
    • Разделение труда - сейчас обычно над отображением работают фронтендеры, то есть, когда бизнес-логика отделена от шаблонов, то любой фронт сможет с ней работать


    Соответственно, главное, что надо знать про шаблоны - это то, что любой вывод в РНР скрипте начинается только после того, как отработала вся бизнес-логика.
    Также важно понимать, что в самом по себе смешивании "кода и разметки" ничего ужасного нет. В шаблоне всегда будет код. Без него невозможно выводить динамический контент. Важно только - какой это код, к чему он относится? Код в шаблоне должен относиться только к самому шаблону. На первых порах новичку сложно это отличить. И это еще один плюс специализированных шаблонизаторов.

    После этого есть варианты, которые отличаются в основном удобством работы с кодом шаблона.
    Править HTML код записанный в виде РНР строки - это САМЫЙ неудобный .

    Дальше идут всякие наколенные решения, типа
    бизнес-логика
    include header
    ?>
    хтмл конкретной страницы
    <?php include footer ?>

    или чуть более продвинутый, когда шаблоны хранятся отдельно и могут вкладывться друг в друга. Сначала пишем функцию,
    function render_template($filename, array $data = [])
    {
        ob_start();
        extract($data);
        require __DIR__ . '/' . $filename;
        return ob_get_clean();
    }

    а потом в коде страницы пишем
    бизнес-логика
    ...
    $page_html = render_template('page.tpl.php', [
        'data' => $data,
    ]);
    echo render_template('main.tpl.php', [
        'navigaton' => $nav_list,
        'title' => $title,
        'page' => $page_html,
    ];

    где сами шаблоны это
    ...
            <?php foreach ($navigation as $item): ?>
                <li>
                    <a href="<?= e($item['href']); ?>"><?= e($item['title']); ?></a>
                </li>
            <?php endforeach ?>
    Важно! Любой вывод в этих шаблонах должен экранироваться в обязательном порядке (кроме очевидных случаев, когда мы выводим результат рендера).

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

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    А может лучше не заниматься извращением, а использовать библиотеки для парсинга html, например, bs4.
    Ответ написан
    2 комментария
  • Почему выдаёт ошибку 406?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    1. content-type: application/json;, так что
    r = requests.post("https://vto.pe/webapi/new/register", json={'email': email, 'password': pass1})

    2. Не все тело запроса передали, есть еще параметры
    Ответ написан
    Комментировать