Задать вопрос
  • Как повысить скорость работы xray+reality?

    Vindicar
    @Vindicar Автор вопроса
    Поставил маскировку под сайт-заглушку на той же VPS, скорость стала такой же, как и без прокси. Спасибо!
    Написано
  • Как повысить скорость работы xray+reality?

    Vindicar
    @Vindicar Автор вопроса
    А вас не затруднит ткнуть пальцем? Я что-то не нахожу этот момент...
    Написано
  • Передать параметры (высота и ширина) в класс. models.ImageField?

    Vindicar
    @Vindicar
    Я с джанго не работал почти, но... вот это не похоже?
    Написано
  • Почему впн работает не на всех сайтах?

    Vindicar
    @Vindicar
    CityCat4, я просто зацепился за эту фразу:
    На клиенте есть маршрут до сервера, где локальный (российский) конец туннеля.

    Почему-то подумалось, что сервер - это российский VPS, а не on-premises сервер организации. Не так понял. =)

    А говорил я о том, что на домашних провайдерах часто проблемы с необфусцированными vpn-соединениями, идущими на зарубежные сервера. Вот и интересовался, для организаций и VPS в российкой зоне это тоже верно, или там правила помягче.
    Написано
  • Как повысить скорость работы xray+reality?

    Vindicar
    @Vindicar Автор вопроса
    Ну многие VPN протоколы хотя бы детектятся легко. У меня на йоте openvpn тут же рвёт соединение, а reality работает. Я, собственно, из-за чего и нервничаю: если нашли способ детектить reality (на гитхабе ходят слухи, что нашли), то надо искать другие варианты.

    Но я бы перенёс ответ в комментарий.
    Написано
  • Почему впн работает не на всех сайтах?

    Vindicar
    @Vindicar
    CityCat4, ну т.е. правила для "домашних" пользователей и для VPS разные. Так? Домашнему пользователю VPN за рубеж низзя, а VPSке можно. И VPN до российской VPSки тоже можно.
    Написано
  • Не настраиваются разные уровни логирования в python logging?

    Vindicar
    @Vindicar
    Не вполне по теме вопроса, но замечу: работа с путями у тебя просто ппц какая. Тут тебе и pathlib.Path, тут тебе и os.path, тут тебе и ручная склейка путей... не говоря уже о том, что __file__ всё же имеет специальное значение.
    import sys
    from pathlib import Path
    # __file__ и sys.argv[0] могут не совпадать для скриптов из нескольких файлов.
    script_path = Path(sys.argv[0]).resolve()
    dotenv_path = script_path.parent / '.env'
    script_name = script_path.stem
    log_dir = script_path.parent
    log_file = log_dir / (script_name + '.log')
    Написано
  • Почему код работает, только, если замедлять сервер до 5 кадров секунду?

    Vindicar
    @Vindicar
    Ланской Кирилл, в разных задачах требуется разная манера обмена данными. Вообще голыми сокетами хорошо пользоваться разве что в обучающих задачах.
    А json имеет схожую проблему - он предполагает, что ты декодируешь одно полное сообщение.
    Так что разделитель какой-то придётся придумать. Можно полагаться на то, что json по умолчанию не содержит переноса строк. Тогда можно будет в конце json-строки передать, скажем, \n\n. А при приёме данных накапливать принимаемые данные в буфере, пока в нём не появится \n\n. Появилось - всё что до \n\n декодируем и удаляем из буфера, сам разделитель тоже удаляем.
    Написано
  • Почему код работает, только, если замедлять сервер до 5 кадров секунду?

    Vindicar
    @Vindicar
    Ланской Кирилл, ну вот и ответ. Ты используешь потоковый сокет, а он подразумевает сплошной поток байт. Он не понимает, что в потоке могут быть отдельные сообщения. Клиент может отправить килобайт, а сервер читать его по байту. Или наоборот, как в твоём случае - клиент отправляет два сообщения, а сервер работает медленнее, и читает оба сообщения за один присест.
    Иными словами, ты можешь прочитать неполное сообщение, или прочитать несколько, или прочитать сколько-то целых и неполное. Это не от твоей программы зависит. Так что это уже твоя забота - добавить в данные какой-то разделитель, чтобы понять, где сообщение закончилось, и реагировать только на сообщение, которое пришло полностью.

    А вообще я бы посоветовал поискать библиотеку и работать с ней. Просто погугли pygame network, найдёшь несколько вариантов. Посравнивай их.
    Написано
  • Sign in to confirm you’re not a bot. This helps protect our community. Learn more (Yt-dlp) - как решить?

    Vindicar
    @Vindicar
    Николай Медведков, о, про netrc и user/pass я и сам забыл. Значит, не два, а четыре.
    Написано
  • Деление строки в список Python?

    Vindicar
    @Vindicar
    Ланской Кирилл, питон это позволяет. Гугли list comprehension.
    Это то же самое, что и
    rects_to_send = []
    for rect in rectangles:
      rects_to_send.append( [rect.x, rect.y, rect.w, rect.h] )
    Написано
  • Можно ли создать бота который действия из LINUX будет перенаправлять в Telegram сообщением?

    Vindicar
    @Vindicar
    fwewefef, а ты глянь код выше. Там это переменная, в которую читается очередная строка файла.
    Я исходил из того, что ты bash скриптинг хотя бы базово знаешь.

    В принципе, можно аналог и на питоне написать, и через urllib.request (ну или пакет requests) дёргать телегу.
    Написано
  • Опасно ли не закрыть сокет сервера или клиента в 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 - ствол. А как дальше от него ветви идут? "Ветка" всегда получает параметром то, к чему она крепится.
    Написано