Задать вопрос
  • Можно ли работать с PythonAnywhere через свою консоль?

    В бесплатной версии нельзя.
    В платной версии можно подключиться по ssh.
    Также в платной версии есть поддержка Jupyter Notebooks
    Ответ написан
    1 комментарий
  • Почему Redis PUB/SUB передаем сообщения хуже чем http tcp?

    Eugene-Usachev
    @Eugene-Usachev
    Я не знаток Redis и по его исходникам не лазил, но все адаптеры, что я смотрел и писал используют TCP, отсюда я делаю вывод, что Redis использует TCP под капотом. Следовательно вы поменяли структуру с
    бек сервер - TCP -> бек сервер
    на
    бек сервер - TCP -> СУБД (не сервер, у неё своих забот хватает) - TCP -> бек сервер.
    - TCP -> второй бек сервер.

    Теперь про советы:
    1 - PUB/SUB у Redis очень производительный, но вы неправильно его используете для этих целей. Я не знаток python и не очень хорошо знаю node, но не вижу у вас ни batching, ни pipelining. Я недавно проводил тесты на Go и пришёл к выводу, что pipelining для PUB/SUB даёт рост скорости более, чем в 4 раза. В документации к Redis очень хорошо описан подход pipeling и большинство адаптеров его так или иначе предлагают, советую провести тесты с ним.
    2 - Вы не по назначению используете PUB/SUB. Для обмена между двумя серверами обычно используют gRPC или TCP или голые сокеты. PUB/SUB используется для масштабирования (я не вижу у вас его в коде, но я не знаток python или node).
    Ответ написан
    9 комментариев
  • Где делать запросы на РЕАКТЕ?

    @n1ksON
    мидл
    Для начала можно и просто в основных компонентах вызывать useEffect, который будет обрабатывать запрос и с помощью useState хранить данные. А если их нужно использовать в каких-то дочерних компонентах, то через пропсы.

    В общем случае, используется стейт-менеджер, типа redux. Данные попадают в нужную компоненту напрямую с помощью useSelector, дальше при необходимости в "глупые" компоненты пробрасываются пропсы.
    Запросы из компонент диспатчатся и выполняются/организуются через redux-saga, например.
    Ответ написан
    Комментировать
  • Где делать запросы на РЕАКТЕ?

    Eugene-Usachev
    @Eugene-Usachev
    Есть простое решение, которое изучают все новички React, оно подразумевает использовать useState в верхних компонентах, через useEffect с пустым массивом зависимостей заполнить этот state и пробросить его ниже.
    Однако лучше использовать стейт менеджер. Я не смогу описать их в одном ответе, но советую вам погуглить про них. Самый популярный (с большим отрывом) - Redux (смотрите так же Redux-thunk и Redux-saga). Однако я бы посоветовал использовать MobX или Zustand так как они тоже популярны, но значительно удобнее. Судя по вашему запросу, я бы посоветовал начать с useState и useEffect.
    Не относится к теме вопроса, но вам стоит посмотреть плейлист "Мощнейшая практика" от uldi TV, так как автор не просто показывает, как использовать React, но и делает акцент на лучших паттернах и структуре.
    Ответ написан
    Комментировать
  • Как сделать так, чтобы данные, которые я пишу в тг бота, заполняли сперва первую строчку в таблице postgre?

    Vindicar
    @Vindicar
    RTFM!
    Почитай хотя бы про основы реляционных БД.
    У каждой таблицы должен быть первичный ключ - иными словами, такое поле/комбинация полей, которая будет уникальной для каждой записи.
    Тогда алгоритм будет такой: спрашиваешь пользователя, какую запись он хочет редактировать, запоминаешь её ключ, затем переходишь в режим редактирования, где поочерёдно спрашиваешь значения столбцов.
    Подразумевается, что ты знаешь, как сделать сценарий, чтобы бот последовательные сообщения обрабатывал по-разному. Если не знаешь - читай, как реализуется finite state machine (FSM) в выбранной тобой библиотеке.
    Ну и да:
    data = message.text.strip()
    cur.execute(f"INSERT INTO {tableName} ({column_name}) VALUES ('{data}')")

    Это - готовая SQL инъекция. И если вставку tableName и column_name еще можно оправдать (хотя ты их тоже не проверяешь на допустимость), то данные так вставлять нельзя. Есть правильный способ.
    Ответ написан
    Комментировать
  • Почему возникает исключение AttributeError при запросе текущего состояния FSM?

    Maksim_64
    @Maksim_64
    Data Analyst
    добавь в конструктор класса super().__init__() Что бы инициализировать атрибуты родительского класса.
    def __init__(self):
        self.command = ""
        super().__init__()
    Ответ написан
    1 комментарий
  • Умная розетка с автовключением без интернета?

    По идее это должно решаться при помощи умной розетки, которая управляется не по wifi (например по zigbee) и соответствующим хабом с возможностью добавления кастомных сценариев.
    Ответ написан
    Комментировать
  • Умная розетка с автовключением без интернета?

    anthtml
    @anthtml
    Системный администратор программист радиолюбитель
    Называется "Аппаратный Watchdog" не знаю встречаются ли готовые в виде розеток, но в виде модулей точно есть
    Ответ написан
    Комментировать
  • Умная розетка с автовключением без интернета?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Я так понимаю речь идёт об импровизированном Watchdog-таймере для роутера.
    Если у роутера есть USB, то вот есть готовые приборчики на али: https://aliexpress.ru/popular/usb-watchdog-timer.html
    Не пробовал их подружить с роутером, но не вижу причины почему бы не заработало.

    Но обычно такая штука реагирует на какое-то условие, например не пингуется какой-то хост, или комп не выдаёт необходимый сигнал на устройство.

    Если вам нужна перезагрузка роутера не связанная с отсутствием интернета, то можно соорудить что-то из реле и вот такого таймера: https://www.youtube.com/watch?v=A3fozboEvWQ
    Сигнал для этого реле задержки с роутера можно ардуинкой через USB подавать.

    Ещё у умных розеток бывает кнопка для управления э той розеткой. Можно подключиться параллельно этой кнопки и "нажимать" её по таймеру (как в видео) с помощью реле с парой нормально замкнутых контактов. Тогда умная розетка отключит роутер по сигналу из интернета, и, за одно, обесточит реле, которое замкнёт при этом свою пару нормально-замкнутых контактов, что запустит таймер, настроенный на 2 минуты, а он, в свою очередь, через две минуты "нажмёт" через другое реле или оптопару кнопку на умной розетке, что приведет к ее включению.

    UPD.
    Наверно такой вотчдог из умной розетки можно заколхозить без всяких внешних реле. В умной розетке есть реле, и оно, скорее всего, запитывается низким напряжением, которое можно использовать и для питания того дешманского народного таймера с алиэкспресса. А этот таймер можно подключить управляемым выходом к кнопке. Надо только прозвонить кнопку и посмотреть куда она подтягивает к плюсу или к минусу. Может понадобиться транзистор и пара резисторов помимо таймера.
    Ответ написан
    Комментировать
  • Как мне применить список из функции в другой функции?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    А в чем, собственно, проблема? Передайте это значение в функцию в качестве аргумента, или вон вы глобальной переменной уже пользуетесь, можете и тут наговнокодить так же.
    Вы не объясняете что конкретно у вас не получается. В чем вопрос? Предоставляете довольно объемный код, который, судя по вопросу, написали не вы и чего хотите? Чтобы вам краткий, но исчерпывающий курс по программированию с нуля тут изложили? На какой-то другой ответ в вопросе просто недостаточно информации.

    А бесплатных курсов и репетиторов тут нет.
    Ответ написан
    2 комментария
  • Почему ничего не выводится хотя ошибок нет?

    HemulGM
    @HemulGM Куратор тега Python
    Delphi Developer, сис. админ
    Да вы задрали. Всё он выводит. Программа сразу закрывается, потому что она не обязана ждать. Она ЗАВЕРШИЛАСЬ!
    input() после print напиши и не закроется, пока не нажмешь что-то
    Ответ написан
    1 комментарий
  • Возникла ошибка Type Error в Python при изучении классов. Где и что в коде не правильно?

    Maksim_64
    @Maksim_64
    Data Analyst
    потерял скобки при создании экземпляра класса. deck = Deck(), Я скопировал, твой код и запустил у себя, там следом еще ошибка, вот в этой строе
    elf.cards[i], self.cards[j] = self.cards[j], self.cards[i]
    говорит list index out of range по всей видимости вот в этой строке j = random.randint(i, num_cards-1) Нужно, добавить -1, что я и сделал тогда все работает.
    Ответ написан
    1 комментарий
  • Как работать с параметризированными запросами и именнованными параметрами?

    dbkv
    @dbkv
    backend developer
    https://www.psycopg.org/psycopg3/docs/basic/params...

    cur.execute("""
        INSERT INTO some_table (id, created_at, updated_at, last_name)
        VALUES (%(id)s, %(created)s, %(created)s, %(name)s);
        """,
        {'id': 10, 'name': "O'Reilly", 'created': datetime.date(2020, 11, 18)})


    p.s для PostgreSQL
    Ответ написан
    8 комментариев
  • Как в YOURLS с помощью api написать удалённый скрипт для сокращения URL?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Так это ж проще простого:
    1. генерируете уникальную _строку_ из случайных символов, длину выбирайте сами;
    2. записываете в имеющуюся у вас Базу Данных эту _строку_ и URL;
    3. при обращении к вашему WEB-серверу с этой _строкой_ - делаете редирект на URL.

    Вуаля, поздравляю, можно пользоваться!
    Ответ написан
    Комментировать
  • Как сделать так чтобы в конце кода когда человек нажимал Y код запускался заново?

    HemulGM
    @HemulGM Куратор тега Python
    Delphi Developer, сис. админ
    Цикл сделай и выходи из цикла, если при вводе не Y
    Ответ написан
    Комментировать
  • Программа не видит элемент страницы по пути xpath. В чем может быть проблема?

    alekciy
    @alekciy
    Вёбных дел мастер
    программа не может понять какой именно checkbox

    Нет, не так. Если под выражение попадает несколько элементов, то возвращается коллекция таких элементов. Но тут явно в ошибке указано "no such element". В момент выполнения команды find_element элемента на странице нет. Если при просмотре страницы в браузере элемент этот есть, значит нужно просто подождать пока он в DOM появится. Для это используют WebDriverWait/until. Для питона это описано в документации: 5.1. Explicit Waits
    Ответ написан
    2 комментария
  • Как перенести базу данных postgresql с Ubuntu на windows?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если кратко - то в Ubuntu делают pg_dump а в Windows - pg_restore.
    Все остальное - это просто детализация этой инструкции.
    Ответ написан
    Комментировать
  • Пропало создание сжатой ZIP папки. Как вернуть?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Со страницы Restore Default Apps for File Type Associations in... скачиваете файл zip.reg, дважды щелкаете по нему, соглашаетесь с изменениями в реестре, всё. Останется только выйти и зайти под пользователем (или просто перезагрузить компьютер) - и вуаля, интеграция ZIP восстановлена!
    Ответ написан
    2 комментария
  • Как заставить работать гигабитный интернет по длинному проводу?

    @Drno
    Если кабель 8 жил (4 пары), то
    роутер не поддерживает гигабит
    сетевая на ПК не поддерживает гигабит
    Если поддерживают - попробовать вместо автосогласования скорости выставить гигабит вручную

    Перебиты какие то жилы - 4,5 или 7,8. т.к. 1,2,3,6 - дают 100мб
    прозвонить кабель, выяснить какие жилы перебиты

    криво обжат провод - переобжать

    Пока подозрение чисто на физику - перебиты жилы \ криво обжали
    Ответ написан
    Комментировать