Задать вопрос
  • Как сделать InlineKeyboardMarkup в одну линию?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Вы же сами установили кол-во кнопок в ряду равными 1

    row_width=1


    Ну и добавили по одной кнопке в ряд

    keyboard.add(url_button)
    keyboard.add(url_buttons)
    keyboard.add(url_buttons1)


    keyboard = types.InlineKeyboardMarkup(row_width=3)
    keyboard.add(url_button, url_buttons, url_buttons1)
    Ответ написан
    3 комментария
  • С чем связанна проблема кодировки?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Ответ.
    Это может быть связано с неправильной работой с кодировками.
    А именно перекодирование происходит:
    - не в ту кодировку
    - не из той кодировки.
    Обычно неопытные программисты не хотят разбираться с тем как правильно работать с кодировками и что такое юникод, а все проблемы решают методом тыка меняя код пока проблема не исчезнет. Из-за этого у них часто присходят преобразования по умолчанию, которые ломаются при смене операционной системы, при запуске другим спообом (из терминала, от имени другого пользователя, через крон...), при смене умолчаний (локали, настроек терминала, настроек БД).
    А ещё такие неопытные программисты до жути боятся сообщений об ошибках, но решать настоящие пролемы не хотят и гасят их в бесшумном режиме, отчего реальные проблемы маскируются под глобальныйми молчаливыми пустыми обработчиками ошибок. Это приводит к усложнению внутреннего поведения программы и вот таки вот случаям, как у вас.
    Когда у таких программистов возникают проблемы (а за ними дело не встанет), то эти программисты не описывают проблему детально, не показывают исходный код, не обрисовывают архитектуру своей системы, а просто спрашивают в чем может быть проблема.
    Исчерпывающий ответ на такой вопрос дать несложно. Вот он.
    Ответ написан
    Комментировать
  • Как безопасно отправлять пользовательский текст в базу POST запросом?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Перед тем как что-то куда-то добавлять надо сначала разобраться что ты делаешь.
    В частности понять что браузер, веб-сервер, и база данных - это разные вещи, и для каждой нужна своя обработка данных.

    В-первых, POST запросом ничего добавить в базу нельзя.
    База вообще ничего не знает про пост запросы. POST запросом можно отправить текст только в РНР.
    А РНР уже будет добавлять в БД.

    Про HTML база данных тоже ничего не знает. Поэтому "htmlspecialchars" к базе данных не имеет никакого отношения. И делать это для добавления в БД не нужно. Это функцию надо применять при выводе данных в браузер, а не при сохранении в базу данных.

    Вот теперь, когда мы разобрались что у нас где, можно наконец ответить на твой вопрос

    Для безопасного добавления данных в БД из РНР, надо отправлять их отдельно от самого запроса. Это непреложное правило, которое надо соблюдать всегда.
    И не важно - пользовательский у тебя текст, или какой-то другой, POST у тебя запрос, или вообще никакого запроса не было - все эти вещи к работе с БД из РНР не имеют никакого отношения. Важно только то, что данные всегда отправляются в БД отдельно от запроса.
    Для этого надо
    • Заменить все переменные в запросе на специальные маркеры, которые называются плейсхолдеры или параметры, а по сути - просто знаки вопроса
    • Подготовить запрос к исполнению с помощью функции prepare(). Эта функция принимает строку запроса и возвращает экземпляр специального класса stmt, с которым в дальнейшем и производятся все манипуляции
    • Привязать переменные к запросу.
    • Выполнить подготовленный ранее запрос с помощью с помощью execute()

    В mysqli это будет так
    $sql = "INSERT INTO  table (name, text, message, date, rating) VALUES (?,?,?,?)";
    $stmt = $link->prepare($sql);
    $stmt->bind_param("sssss", $name, $text, $message, $date);
    $stmt->execute();

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

    Но по-хорошему для работы с БД в РНР лучше использовать PDO, Тем более что там колупаться с bind_param не нужно, а можно сразу отправить все данные в execute
    $sql = "INSERT INTO  table (name, text, message, date, rating) VALUES (?,?,?,?)";
    $stmt = $link->prepare($sql);
    $stmt->execute([$name, $text, $message, $date]);

    А дураков, которые сами не знают, как текст в базу сохранить, слушать не надо.
    Ответ написан
    Комментировать
  • Как удалить пакет в Линукс?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    Данная штуковина написана на python. Поэтому, скорее всего она установлена через pip.
    Попробуйте удалить одним из способов:
    pip uninstall ansible
    sudo pip uninstall ansible
    pip3 uninstall ansible
    sudo pip3 uninstall ansible
    Ответ написан
    Комментировать
  • Как вытащить данные из таблицы старого сайта где в html нет классов и засунуть в список?

    adugin
    @adugin Куратор тега Python
    "Старый сайт" = эталонный кейс для использования pandas:
    5fbcb51100cec009334585.png
    Чтобы узнать номер нужной таблицы на странице, можно сделать что-то типа такого:
    for i, table in enumerate(pd.read_html('http://www.statdata.ru/nasel_regions')):
        print('-' * 100, f'>>>{i}', table, sep='\n')
    Ответ написан
    2 комментария
  • Как скачать файл с помощью Powershell с сайта с авторизацией?

    @azarij
    В меру опытный никто
    в хром дев тулз перехватываете все запросы к сайту во время авторизации и скачивания файла. дев тулз даже скопируют для вас запросы в повершеловском формате.
    повторяете их в powershell сохраняя сессию, как указал MaxKozlov, через -sessionvariable/-websession.
    PROFIT!!!
    Ответ написан
    2 комментария
  • Прилетело задание и никак не могуего испольнить на cmd и ps сможет кто помочь?

    @azarij
    В меру опытный никто
    $files = Get-ChildItem c:\test\test\*.log -File
    foreach ($file in $files){
        $folder_name = "$($file.Name -replace "\D")folder"
        Move-Item $file.FullName -Destination "$($file.FullName | Split-Path)\$folder_name"
    }
    Ответ написан
    Комментировать
  • Как сделать через powershell открытие программы по нажатию клавиши?

    @azarij
    В меру опытный никто
    Вот тут похожее делают https://github.com/pldmgg/misc-powershell/blob/mas...
    Ответ написан
    Комментировать
  • Почему у php и mysql разное время?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Установить часовой пояс для РНР
    • Глобально - в php.ini: date.timezone = Europe/Moscow
    • Локально - в едином для сайта скрипте настроек: date_default_timezone_set('Europe/Moscow');

    Установить часовой пояс для Mysql
    • Глобально - в my.cnf: default-time-zone='+03:00'
    • Локально - запросом после коннекта: SET @@session.time_zone = '+03:00';
    Ответ написан
    Комментировать
  • Как отобразить пользователей у которых истекает пароль?

    @AAT666
    Get-ADUser -Filter * -SearchBase "DC=lala,DC=local" -Properties msDS-UserPasswordExpiryTimeComputed | ?{ (Get-Date).adddays(2) -gt [datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")} | select name | sort name
    Ответ написан
  • Как в ансибле использовать тег как переменную?

    alfss
    @alfss
    https://career.habr.com/alfss
    Гугол говорит такой ответ. https://serverfault.com/questions/623634/ansible-e...
    Ответ написан
    Комментировать
  • Как обжать экранированные RJ-45 коннекторы?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Выход у коннектора слишком широкий. Я согласен с @vreitech, что для этого коннектора должны идти пластиковые вставки. Провода вставляются в вставку, вставка с ними в коннектор и уже тогда зажимается.

    Раньше такое часто встречалось.
    5ed91a753a295237319064.jpeg
    Ответ написан
    Комментировать
  • Python как перебрать значение по ключу в список?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Вот так, например.

    from itertools import groupby
    
    [
        dict(
            name=name, 
            id=id, 
            pos=[subitem['pos'] for subitem in subitems]
        ) 
        for (name, id), subitems in 
        groupby(
            dic, 
            lambda item: (item['name'], item['id'])
        )
    ]

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

    Не забудьте предварительную сортировку, если группируемые элементы могут быть не рядом.
    Ответ написан
    Комментировать
  • Синтаксическая ошибка в Playbook Ansible. Что не так?

    @mihasyo
    become: yes
    Пробела у вас не хватает перед yes
    Ответ написан
    2 комментария
  • Ansible выдает ошибку при выполнение команды Ad-Hock, в чем проблема?

    @q2digger
    никого не трогаю, починяю примус
    Добавить в команду -K

    из man ansible
    -K, --ask-become-pass
    Ответ написан
    2 комментария
  • Как запустить консольную команду с аргументами?

    command должно быть слайсом аргументов, а у вас это просто строка

    Нужно так:
    pwsh = "pwsh"
    command = []string{"-Command", "Send-MailMessage -SMTPServer localhost -Port 25 -To " + recipient + " -From " + user.Email + ` -Subject "` + subject + `" -Body "` + message + `"`
    output, err := exec.Command(pwsh, command...).Output()

    надеюсь, я верно понял синтаксис пауэршелла, основной принцип, думаю, понятен.

    P.S. Использовать powershell в Линуксе, это мсье, конечно, знает толк.
    Ответ написан
    Комментировать
  • Как получить список владельцев сайтов со всех сайтов с помощь Power Shell?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Я бы озвучил проблемы.
    Ответ написан
    Комментировать