• Как вывести данные из бесконечного subprocess в python?

    Vindicar
    @Vindicar
    RTFM!
    output = proc.stdout.read()
    У read() есть параметр, сколько максимум данных принимать. Просто принимай данные в буфер по 1 КБ (или сколько удобно), режь на строки по разделителю (\n), обрабатывай принятые полные строки, но последнюю неполную строку сохраняй и добавляй в начало следующей порции.
    Ответ написан
    1 комментарий
  • Как создать траекторию, пространство, координаты?

    hint000
    @hint000
    у админа три руки
    Просто представьте шахматную доску , где плывут два корабля
    Так у вас задание как сформулировано? Одно дело на шахматной доске моделировать (нужны чёткие правила. судно занимает одну клетку? если по соседним клеткам суда разошлись - это не считается за столкновение?), совсем другое дело - на реалистичной местности, но тогда будет непонятно, к чему упомянута шахматная доска.
    Движение судов почти везде правостороннее. Когда вы едете на автомобиле по дороге без разметки, у вас не возникает вопрсов, как не столкнуться? А дорога обычно гораздо более узкая, чем река или канал. Простейшая стратегия: заметили встречное судно - держите курс посередине между этим судном и границей фарватера, оставляя встречное судно слева от себя, только-то и всего. Но это предполагает, что и встречное судно соблюдает правила. Если же судно идёт наперерез, правым бортом к вам, тогда нужно наплевать на правила и уклоняться в противоположную сторону (полагаю, в рамках учебного задания можно не рассматривать такой случай).

    Помните, что структура данных не менее важна, чем алгоритм. Вы уже представляете себе, как у вас будут храниться исходные данные? Если нет, то вот прямо с этого и начинайте, а не с алгоритма.

    Какие данные у вас есть о встречном судне? Только пеленг (азимут) и расстояние? Или ещё курс и скорость? Габариты вашего судна и габариты встречного судна известны и их нужно учитывать? Конечно, для упрощения задачи все суда можно считать шариками одинакового размера. И вернуться к этому вопросу, когда всё получится с таким упрощенным вариантом.

    нужно просто рассчитать , может ли быть опасное сближение двух кораблей - моего и чужого.
    И я пока понятия не имею , по какой методике это можно сделать.
    Сильно зависит от характеристик вашего судна (можно предположить что на встречном судне вас не заметили и не пытаются уйти от столкновения, всё зависит только от вас). Одно дело, если вы на крохотном катерке (вы просыпаетесь, когда до столкновения осталось 10 метров, и успеваете ещё отрулить в сторону, одновременно давая полный вперёд); другое дело, если вы на океанском лайнере, танкере, сухогрузе (вы можете не успеть отрулить, даже если до встречного судна ещё 100 метров). Так что "опасность" сближения зависит не только от расстояния и курсов, но и от размеров и массы вашего судна и встречного судна.
    Ответ написан
    1 комментарий
  • Как создать траекторию, пространство, координаты?

    @kr_ilya
    Тут требуется определить нужную структура данных.
    Самый простой вариант - двумерный массив, в котором значения 0 - ничего нет, 1 - есть корабль, при желании можно не ограничиваться на 0 и 1 и добавить другие значения, напр. 2 - для обозначения берега.
    Для лучшего понимания можно представить себе лабиринт, в котором 0 - нет стены, 1 - есть стена.
    Ответ написан
    1 комментарий
  • Почему ORDER BY DESC в mysql работает не в 100% случаев?

    @o5a
    Лелуш Ламперуш,
    И дальнейших непотребствах с полученными данными

    Так может причинах в этих ваших непотребствах, а не том, что сортировка не работает. Вы производите эти манипуляции с данными, которые сортировку и сбивают? Сама по себе ORDER BY не будет сбоить, по крайней мере в таком виде, как привели в вопросе.

    И есть ли какой-то аналог со стороны python , чтобы сортировку производил он по базе , а не сама база , т.к. как сказано выше , она даёт сбои.

    Есть
    Ответ написан
    1 комментарий
  • Как лучше всего парсить базу данных?

    @galaxy
    25000 - это ни о чем. Заргужаете JSON, делаете set из идентификаторов и делаете разницу со своим set'ом (хранить, в общем, неважно где)
    Ответ написан
    1 комментарий
  • Как удалить item из QListWidget?

    @bbkmzzzz
    А где та часть кода, которая отвечает за удаление? Как она вызывается?
    takeItem(row) - takeItem удаляет итем с виджетом из списка и возвращает его

    import sys
    # import requests
    from PyQt5 import QtCore, QtWidgets, QtGui
    from PyQt5.Qt import *
    
    # Картинка для заполнения
    IMAGE = b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x04\x00\x00\x00\xb5\xfa7\xea\x00\x00\x00\x02sBIT\x08\x08U\xecF\x04\x00\x00\x00\tpHYs\x00\x00\x00v\x00\x00\x00v\x01N{&\x08\x00\x00\x00\x19tEXtSoftware\x00www.inkscape.org\x9b\xee<\x1a\x00\x00\x01\x03IDAT(S}\xd1\xb1jS\x01\x14\xc6\xf1\x1fvi\xda\xc5*\x18\x93!\t\x82\x98-\x84\xd6\xe2\xe0+\xd8\xa1\x04\xbd\x08\xc1\'s0f\x11|\x02!q\xb8\xd0\xa1\xc1L\x9dj\xbaT\xe2\x94w\xf8:\xdc\xf4\xb6\x0e\x96\xb3}\xfc\xf9\xce\x9fs\xc4\xdd(\xac\xfdq\xf2O\x16\xa1\xe1\xbd\x83p\xa1\xe9\x85\xb3p\xe0\x83\xbd-`O\xe9\xbb\x95\x85Yx\xe4\xa7s\xbf}UjT\xc0[_B\xdfq];\xf02L\xbc\xa9\x80\xa6+\x9d\x08mcc\xed\x08=+\xcfn\x1d~9\x0c\xa76\xa6\xa66N\xc3\xd0"\x82w\xce\x94\xa1e\xb3\xed\xe9\xd8h\x87\xb9\xa5\x11\xd7^\xd9\t\x85i\xed05\x8e\xd0\xb5\xe6\xaff<\x04|t\xe1\xc7\x03+",\xbc\xfe\xafdxl\xa5\x1f\xa1\xa5PhE\xe8\xb9\xf4\xa4\x02\x86\xbe\x85\x8eA\xed0\xd4\x0b\x13G\x15\xb0\xab\xf4\xd9\x95\xa5Y\x84\xb9\x85K\x93\xfa\xd4a\xdf\'\xcf\xc3RW\xd72<U\xd4\xcf\xba\x1b#kk\xa3\xfb\xd9\ru"\xad\xb2\x11\xa2\xcfy\x00\x00\x00\x00IEND\xaeB`\x82'
    
    
    class Widget(QWidget):
        def __init__(self, urls):
            super().__init__()
    
            self.grid = QGridLayout(self)
    
            for i, url in enumerate(urls):
                lbl = QLabel()
                image = QImage()
                image.loadFromData(IMAGE)
    
                if i == 0:
                    lbl.setPixmap(QPixmap(image).scaled(210, 210))
                    self.grid.addWidget(lbl, i + 1, 0, 4, 1)
                else:
                    lbl.setPixmap(QPixmap(image).scaled(70, 70))
                    self.grid.addWidget(lbl, i, 1, 1, 1)
    
    
    class ListWidget(QListWidget):
        def __init__(self, *args, **kwargs):
            super(ListWidget, self).__init__(*args, **kwargs)
            self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
            self.setEditTriggers(self.NoEditTriggers)
            self.setFlow(self.LeftToRight)
            self.setWrapping(True)
            self.setResizeMode(self.Adjust)
            self.setSpacing(10)
            # Резиновая лента (для эффекта выбора рамки)
            self._rubberPos = None
            self._rubberBand = QRubberBand(QRubberBand.Rectangle, self)
    
        def makeItem(self, lb):
            item = QtWidgets.QListWidgetItem(self)
            item.setSizeHint(QtCore.QSize(300, 300))
            self.setItemWidget(item, lb)
    
    
    class MyWindow(QtWidgets.QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle('ListWidget')
            self.resize(1100, 670)
            self.show()
    
            self.listWidget = ListWidget()
    
            # кнопка
            self.push_button = QPushButton('del 0 item')
    
            box = QtWidgets.QVBoxLayout(self)
    
            # добавляем кнопку
            box.addWidget(self.push_button)
    
            box.addWidget(self.listWidget)
    
            self.urls = [
                "https://img.icons8.com/ios/452/phone.png",
                "https://img.icons8.com/ios/452/phone.png",
                "http://www.google.com/favicon.ico",
                "https://www.imgonline.com.ua/examples/random-pixels-wallpaper-big.jpg",
                "https://laguna-akul.ru/upload/003/u379/f4/61/8f68d93a.jpg",
            ]
    
            num = 5
            for i in range(num):
                art = Widget(self.urls)
                self.listWidget.makeItem(art)
    
            # связываем сигнал нажатия на кнопку с методом
            self.push_button.clicked.connect(self._on_push_button_clicked)
    
        # метод-обработчик кнопки
        def _on_push_button_clicked(self):
            # takeItem удаляет итем с виджетом из списка и возвращает его
            removed = self.listWidget.takeItem(0)
            print(removed)
    
    
    if __name__ == '__main__':
        app = QtWidgets.QApplication(sys.argv)
        w = MyWindow()
        sys.exit(app.exec_())
    Ответ написан
    1 комментарий
  • Как авторизоваться на YouTube с помощью Python (Request)?

    ScriptKiddo
    @ScriptKiddo
    Алгоритм прост.
    Определяете, возможно ли получить данные, отключив JS. Например, с помощью этой инструкции
    https://developers.google.com/web/tools/chrome-dev...

    Если с отключенным JS нужных данных не появляется, тогда у вас остается два варианта:
    - Разбираться в логике получения данных, ковыряя JS скрипты, которые обрабатывают данные. Найти их можно, на вкладке Sources
    Вкладка Sources

    5f46c1453c6f9427816125.png

    - Использовать Selenium, имитируя действия пользователя
    Для выбора элементов на странице вам пригодится язык запросов XPath Тутор
    Расширение для отладки Xpath Helper

    Кнопки ищутся примерно по такому селектору:

    IMG
    5f46c263ee5d2373188117.png
    Ответ написан
    2 комментария
  • Telebot как назначить пользователя админом группы?

    SoreMix
    @SoreMix
    yellow
    bot.promote_chat_member()
    Ответ написан
    Комментировать
  • Proxifier и Steam SDA - Почему закрывается соединение?

    @DanKud
    Все нормально. Так и должно быть. Proxifier не будет держать соединение бесконечно если оно не требуется. Если у вас SDA работает просто в режиме отображения кода для двухфакторной аутентификации, то он никаких данных не отправляет. Но в таком случае вопрос - зачем вам вообще через прокси прогонять SDA? Затем когда SDA будет требоваться новое соединение оно так же пойдет через Proxifier. Можете проверить это например обновив сессию в SDA (если не ошибаюсь пункт меню "Force session refresh"). После нажатия у вас снова будет коннект к API Steam.
    Ответ написан
    1 комментарий