Задать вопрос
  • Опасно ли не закрыть сокет сервера или клиента в Python?

    Vindicar
    @Vindicar
    Ланской Кирилл, при завершении процесса все его ресурсы освобождаются. Речь выше об утечке сокетов, когда процесс работает, но "забыл" про открытый сокет.
    А исключения ловить надо. try-finally в помощь. Также объект-сокет поддерживает оператор with, что позволяет гарантированно вызвать close() при выходе из блока кода.
  • Как сделать отсчёт времени + чтобы он обновлялся каждый день?

    Vindicar
    @Vindicar
    Ты для начала объясни, как ты это себе видишь. Потому что обновляемую инфу в дискорд выводить не очень-то удобно - редактировать сообщения бот может лишь в течении получаса.
  • Можно ли создать бота который действия из LINUX будет перенаправлять в Telegram сообщением?

    Vindicar
    @Vindicar
    fwewefef,
    send "Я выполнил, и получилось вот: $(тут команда)"
    .
    Собственно, с помощью sed можно будет попробовать извлекать нужные куски $line.
  • Можно ли создать бота который действия из LINUX будет перенаправлять в Telegram сообщением?

    Vindicar
    @Vindicar
    fwewefef, это уже сам разбирайся. Всё зависит от способа входа, пользователя, и т.д. Если тебе важен удалённый вход - то смотри, куда sshd пишет лог, и мониторь этот файл (возможно, это будет syslog?) Если локальный - то там другая программа, фз куда она лог пишет. Ну и когда найдёшь нужный лог-файл, надо будет найти, как выглядят нужные строки, и поправить регулярки.
    Готовый код не жди.
  • Как правильно вызвать метод одного класса из другого?

    Vindicar
    @Vindicar
    Only4You, распределение обязанностей - самое важное и самое сложное в ООП, так что не удивительно, что это сразу не понять. Поймёшь ещё, просто практикуйся.
    Можешь сделать так: нарисуй схему, какой класс знает о существовании какого. Например:
    66befee2f3f30056282467.png
    В моём случае Footerbar не знает о классах App и Statusbar. Ему дали какой-то метод, а чей это метод - ему безразлично.
    Соответственно, такого "знания" классами друг друга должен быть необходимый минимум, а каждый класс должен решать один логически связанный круг задач. Тогда классы будут более-менее простыми и внутри, и снаружи, т.е. при использовании.
  • Можно ли создать бота который действия из LINUX будет перенаправлять в Telegram сообщением?

    Vindicar
    @Vindicar
    который действия из LINUX будет перенаправлять в Telegram сообщением

    А теперь ещё раз и по-русски. Какие-такие действия? Чьи действия?
  • Как правильно вызвать метод одного класса из другого?

    Vindicar
    @Vindicar
    Only4You, и снова: в одну сторону - не проблема. А вот "и наоборот" намекает, что у тебя неправильно распределены обязанности по классам. Кто-то из них занимается не своим делом. Может даже оба, такое бывает.
    Если это два разных компонента, то наладить взаимодействие между ними - задача App.
    Если не два компонента, а один, он должен быть оформлен как один класс который внутри себя уже налаживает взаимодействие между своими "подчинёнными".
    Я бы вообще сделал вот так

    from tkinter import *
    from tkinter import ttk
    
    class App(Tk):
        def __init__(self, parent):
            super().__init__()
            self.title('Main window')
            self.geometry('400x350+800+400')
            self.__put_frames()
    
        def __put_frames(self):  # наш, приватный метод - не надо выставлять его наружу
            self.statusbar = Statusbar(self)
            self.statusbar.grid(row=1, column=0, columnspan=3)
            
            self.footerbar = Footterbar(self)
            # передаём метод, который надо вызвать
            # footerbar всё равно не имеет понятия, чей это метод
            # он только знает, что его надо вызвать по клику на кнопку 6
            # мы могли бы создать метод в App и передать его, это бы тоже сработало
            # собственно, задача App - связать два компонента между собой
            self.footerbar.button6_clicked = self.statusbar.refresh  
            self.footerbar.grid(row=2, column=0, columnspan=3)
    
    class Statusbar(Frame):
        """Этот класс реализует строку состояния, которая умеет показывать текст."""
        def __init__(self, parent):
            super().__init__(parent)
            self.__put_widgets()
    
        def __put_widgets(self):  # наш, приватный метод - не надо выставлять его наружу
            self.txt = Text(self, height=15, width=35)
            self.txt.grid(row=1, column=0, columnspan=3)
    
        def refresh(self):
            self.txt.delete(1.0, END)
            self.txt.insert(END, "Updated content")
    
    class Footterbar(Frame):
        """Этот класс реализует панель с нажимаемыми кнопками, и позволяет отреагировать на их нажатие"""
        def __init__(self, parent):  # мы ничего не знаем про статусбар
            super().__init__(parent)
            self.button6_clicked = None  # тут будет храниться ссылка на метод
            self.__put_widgets()
    
        def __button6_click(self):
            if self.button6_clicked is not None:  # у нас есть что вызывать?
                self.button6_clicked()  # да - вызываем
    
        def __put_widgets(self):  # наш, приватный метод - не надо выставлять его наружу
            self.btn4 = ttk.Button(self, text='4')
            self.btn4.grid(row=10, column=0)
            
            self.btn5 = ttk.Button(self, text='5')
            self.btn5.grid(row=10, column=1)
            
            self.btn6 = ttk.Button(self, text='6', command=self.__button6_click)
            self.btn6.grid(row=10, column=2)
    
    app = App(Tk)
    app.mainloop()

  • Как правильно вызвать метод одного класса из другого?

    Vindicar
    @Vindicar
    Only4You, погоди, ты реши, какой объект каким владеет.
    У тебя statusbar внутри footerbar, или наоборот?
    В первом случае footerbar владеет statusbar, и statusbar должен получить ссылку на него как на владельца через параметр __init__(), но не наоборот.
    Ну а если statusbar владеет footerbar, то наоборот.
    Просто представь, что твой интерфейс - дерево. App - ствол. А как дальше от него ветви идут? "Ветка" всегда получает параметром то, к чему она крепится.
  • Что эффективнее: np.array_equal или (A == B).all()?

    Vindicar
    @Vindicar
    Ланской Кирилл, А ты исходник посмотри. array_equal() еще много чего делает: приводит входные коллекции к массиву (для == и A и B уже должны быть массивами), отдельно обрабатывает ситуацию, когда в массиве есть NaN (простое сравнение считает, что NaN не равно ничему, в т.ч. самому себе). Вот и набегает 30% разницы.
  • Как грамотно распределять по websocket данные получаемые из одного источника?

    Vindicar
    @Vindicar
    ALEXU83, тут вообще нужно уточнить, что тебе нужно.
    Просто размножить поток на несколько клиентов, и пусть они сами разбираются? Или иметь какую-то историю? И должна ли история быть персистентной, т.е. переживать перезапуск?

    Потому что в первом случае по идее можно разрулить без БД, достаточно иметь словарь "тикер-вебсокеты". Поступила новая запись, смотрим её тикер, смотрим, кто вот прямо сейчас имеет активный вебсокет и подписан на этот тикер, рассылаем. Как на питоне это соорудить, я примерно могу представить, а вот на пхп, извини, не мой профиль.

    А насчёт мощности, извини, встречный вопрос: сколько клиентов у тебя будет? Потому что единицы записей в секунду - это не сказать чтобы супер много. Если клиентов в пределах сотни, то ИМХО можно оба сервиса на одной vps запустить, и ещё резерв останется.
  • Как исправить: TypeError: bad operand type for unary ~: 'type'?

    Vindicar
    @Vindicar
    smit_emae, для начала - написать, как называется библиотека, на которой ты пишешь бота, и её версию. Эту инфу вообще полезно в вопрос добавлять, а то пока нагуглишь, какая из них при импорте называет себя telegram...
  • Как исправить: TypeError: bad operand type for unary ~: 'type'?

    Vindicar
    @Vindicar
    не прокатит, логическое отрицание кастует аргумент в bool сначала.
  • Почему не работает on_member_join?

    Vindicar
    @Vindicar
    Timurkaaa, а в настройках бота в дискорде этот интент включил? Он привилегированный.
  • Почему питон не видит библиотеку, хотя она есть в окружении?

    Vindicar
    @Vindicar
    Studencheskaya32,
    запускаю оболчку питона

    Какая версия питона в оболочке?
  • Как убрать ошибку кода в exe?

    Vindicar
    @Vindicar
    1parahon, я не загадками говорю, а пытаюсь показать, как и где искать ответ. Чтобы в следующий раз ты мог найти его сам.
    Да, я мог бы сказать "в секции advanced должен быть параметр hidden imports, впиши туда имя модуля, а если его нет - то посмотри внизу, там где приведена полная командная строка для вызова pyinstaller, и попробуй добавить туда --hidden-import имя.модуля перед запуском".
    Но одно дело - сделать по бумажке, другое - сделать, понимая, что ты делаешь и почему.
  • Как убрать ошибку кода в exe?

    Vindicar
    @Vindicar
    1parahon, а ты прочитай мой ответ внимательно и подумай. Я тебе написал, как называется ситуация, когда pyinstaller не видит модуль.
  • Как исправить код?

    Vindicar
    @Vindicar
    minamisa, что-то у тебя первый код кривой, как не знаю что.
    Отступы куда-то подевались, подчёркивания вокруг названия __init__() куда-то подевались, в цикле создаёшь слои одного и того же размера, а их размер должен уменьшаться. Вполне очевидно, что первый и последний слой должны быть вне цикла, так как их размеры не вписываются в логику "19, 18, ..., 11". В общем, исправляй сначала это.
  • Как исправить код?

    Vindicar
    @Vindicar
    Блин, курс-то кто проходит - ты или хабр?
    Пиши конкретно, в чём сложность.
  • Ошибка в коде py. Как написать код?

    Vindicar
    @Vindicar
    temik2898, а ты посмотри внимательно. Кнопку </> в редакторе текста видишь? А кнопку-меню ... справа внизу от вопроса? Вот и действуй.
    И убедись, что ты запускаешь именно тот код, который показываешь (ну, с поправкой на токен, конечно).
  • Проблема с обучением змейки на python, почему она не обучается быть эффективней?

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