• Как выполнить относительный импорт библиотеки в Python?

    @o5a
    Можно добавить путь верхнего уровня (project_catalog) к pythonpath, тогда можно будет использовать относительный импорт. Например так
    import os
    
    # выходим на верхний уровень
    parentdir = os.path.dirname(os.path.dirname(__file__))
    # и добавляем его к путям поиска
    os.sys.path.insert(0,parentdir)
    # после чего можем использовать импорт по вложенному пути
    import module_name.module.ModuleFileOne
    Ответ написан
    1 комментарий
  • Как изменить консоль по умолчанию linux?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    init это не консоль, это процесс ядра операционки.

    оболочка bash запускается после того, как юзер залогинился, и дефолтная оболочка указывается для юзера в /etc/passwd. И это тоже не консоль.

    Нужно разобраться с терминологией и что именно нужно сделать.
    Ответ написан
    Комментировать
  • Selenium не может нажать на radio button из- за befor, что делать?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    В Selenium должна быть функция ожидания появления элемента. Вот отличная статья на Хабре по Selenium + Python для ожидания появления элемента. Так же можете использовать XPath, что бы более эффективно находить нужные элементы. Вот отличная статья на Хабре и по этому поводу
    Ответ написан
    Комментировать
  • Как с помощью php отдать react?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Как я уже не раз говорил, чтобы получить ответ на свой вопрос, надо сначала разобраться с кашей у себя голове.
    Вас же на первом же шаге унесло не туда.

    jQuery уже в прошлом

    это правда

    его теснят фреймворки типа react

    а это уже чушь собачья
    jQuery - это был костыль, позволявший выполнять определенные задачи, которые было невозможно или слишком сложно выполнить на чистом JavaScript. Но уже больше 10 лет нужда в этом костыле полностью отпала
    К фреймворкам типа React этот костыль не имеет никакого отношения вообще.
    Для замены jQuery вам нужно просто выучить Яваскрипт.

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

    При использовании реакта, сначала загружаются его статические файлы. обычно это делается через отдельный веб-сервер, на котором крутится приложение, написанное на js. и эту вашу проверку можно делать там.
    но в принципе вы можете отдавать их и РНР скриптом. HTML отдавать через РНР умеете? Ну вот и отдавайте.

    Но повторюсь, это только если вам действительно нужен реакт. А для замены jquery он не нужен.

    404й редирект

    для начала, такой вещи, как "404й редирект" в природе не существует.
    Бывает либо редирект (коды ответа 3хх), либо 404. Два НТТР статуса вы никогда не отдадите.

    при этом сама по себе дурацкая задача "если пользователь пришёл с определенного ip и ему нужно отдать 404" вообще никакого отношения к обсуждаемому вопросу не имеет. И решать ее по-хорошему надо на уровне веб-сервера. Если вообще надо, в чем есть большие сомнения.
    Ответ написан
    4 комментария
  • Как подключиться к Postgres при помощи Javascript?

    yunus_mil
    @yunus_mil
    Backend разработчик | SRE инженер
    Во первых alert используется в браузерном JavaScript, тогда как pg (postgres) используется для взаимодействия с базой данных postgres на Nodejs (это backend). Клиент и сервер взаимодействуют по rest API в большинстве случаев и у них разные задачи, если JavaScript на frontend используется для взаимодействия с пользователем, то Nodejs backend используется для обработки запросов пользователей и для взаимодействия с базой данных.
    Ответ написан
    1 комментарий
  • Как исправить проблему с асинхроностью?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Ошибка первая: вы в sliceHandler передаёте div-обёртку, а внутри функции думаете, что это какой-то его ребёнок.
    Ошибка вторая: вы пытаетесь получить реактовское служебное свойство key через атрибут html-тега. Значение key даже через props нельзя получить, не говоря уже про html.

    Давайте вы своими словами опишете, чего хотите добиться и зачем, а мы вам подскажем, как это сделать правильно.
    Ответ написан
    2 комментария
  • Логика работы Python?

    Vindicar
    @Vindicar
    RTFM!
    Логика предельно простая - на момент обращения к элементу он должен быть определён.
    Простой пример:
    def func_B(s):
        print('B says:')
        func_A(s)
    
    def func_A(s):
        print('Hello from A to', s)
    
    func_B('the world')


    Данный код отработает. Почему, ведь func_A() описана после её вызова в func_B()?
    Потому что поиск этой функции произойдёт в момент вызова func_B() - а тогда функция func_A() уже будет определена.

    А вот тут поменять местами не получится:
    DEFAULT = 'world'
    
    def func_C(s = DEFAULT):
        print('Hello,', s)

    Потому что обращение к DEFAULT происходит в момент определения func_C(), а не в момент её выполнения.
    Ответ написан
    1 комментарий
  • Почему не работает transition для градиента?

    Get-Web
    @Get-Web Куратор тега CSS
    Front-End Developer
    Градиент нельзя анимировать, хотя может через переменные уже как-то можно выкрутиться. Знаю несколько вариантов, в зависимости от того какая анимация нужна. Можно сместить позицию таким образом:


    Либо наложить поверх невидимый градиент, чтобы он появлялся при наведении:
    Ответ написан
    Комментировать
  • Как правильно мержить в main из dev, если там есть незаконченные фичи?

    bingo347
    @bingo347
    Crazy on performance...
    Фича ветки делаем только от актуального main.
    Для проверки мержим фича-ветку в dev, но не удаляем.
    Когда одна или несколько фичей проверены и готовы, то делаем от main релизную ветку и мержим туда все готовые фичи, прогоняем тесты и если всё ок, то мержим релизную вету в main.
    Ну и полезно мержить main в фича ветки, когда main обновился.
    Ответ написан
    Комментировать
  • Почему он выдает сразу 2 вопроса вместо того чтобы поочередно?

    Все вопросы отдаются потому, что вы сами так написали:
    ...
    for num, question in enumerate(questions):
    ...
       bot.send_message(chat_id, question_message, reply_markup=options)
    ...


    Вам нужно брать один вопрос, присылать его пользователю, дожидаться ответа и, если он правильный, отправлять следующий вопрос.
    Ответ написан
    1 комментарий
  • Зачем используют curl когда есть file_get_contents?

    riky
    @riky
    Laravel
    file_get_contents сложновато передавать и получать куки и др заголовки. file_get_contents для POST запроса тоже выглядит многословно, уже наравне с curl. Не очень хорошее поведение при 4xx 5xx ошибках и тд. Хорошей практикой будет использовать file_get_contents только для локальных файлов.
    Ответ написан
    1 комментарий
  • Что лучше: socket.io p2p или webRTC?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Для начала определиться с ответом на вопросы: Для чего? В чем именно? А уже в зависимости от ответа и выбирать более подходящее решение.
    Ответ написан
    1 комментарий
  • Что это за файл, и как его удалить?

    pindschik
    @pindschik
    ФЫВА ОЛДЖ
    1) То, что tcpsvcs.exe - системный процесс, еще не означает, что он не был подменен, в него не инжектирован вредоносный код (в том числе только в оперативке, а не на диске).

    2) Вы установили себе вредоносное ПО. То, подо что оно мимикрирует - не имеет значения. То ли это псевдо-торент, то ли "скачивальщик", то ли показыватель баннеров. Надо понимать - злоумышленникам нужен доступ к вашему ПК и он был получен, при чем с админскими правами. Название компании - это просто для вашего самоуспокоения, дескать это такое своеобразное ПО.

    3) Схема троянского ПО обычно такая: сайт-приманка; "дроп" - компонент который забрасывает на ваш комп
    полезную нагрузку; "троян" - сам компонент зловреда с полезной нагрузкой и удаленным управлением; дальше идет сервис в даркнете по продаже услуг, связанных с зараженными ПК, согласно покупок сервиса - вам будет по необходимости инсталлироваться то вредоносное ПО, на которое есть спрос: кража банковских данных, аккаунтов в соцсетях и мессенджерах, майнинг крипты и т.д.

    4) Ваши действия сейчас не соответствуют угрозе. У вас есть немного форы, пока злоумышленники продают базу в даркнете. Потом ее кто-то купит и начнется веселье. Срочно необходимо:
    а) с чистого устройства немедленно сменить все пароли доступа которые когда либо как угодно были на вашем ПК, в том числе в хранилище гугла. Включить двухфакторку везде, где это возможно.
    б) предупредить всех ваших контактов в соцсетях, мессенджерах и т.д. - что вы взломаны, и денег никому не давать.
    с) обойти все банки, которыми вы пользуетесь - заблокировать все онлайн операции и приложение.
    ... и только уже потом снести систему полностью, включая загрузочные разделы на жестком диске, перепрошить заново BIOS, и ставить винду по новой, с образа MSDN.

    Ну и молиться, что всё обойдется только этим, а легкомыслие - не приведет к действительно серьезному ущербу.
    Ну или быть легкомысленным и дальше, и однажды получите "привет" существенно серьезнее.
    Ответ написан
  • Как некоторые сайты определяют что запрос от прокси?

    vabka
    @vabka
    Токсичный шарпист
    CORS-это не сайт, а браузер твой ругается. Выставляй корректные CORS-заголовки
    Ответ написан
    Комментировать
  • Почему dispatch нельзя использовать в потоке кода при отрисовке компонента?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Почему dispatch нельзя использовать в потоке кода при отрисовке компонента?

    - Проблемы с производительностью: Если бы dispatch вызывался прямо в теле компонента (то есть во время его рендеринга), каждый раз, когда компонент рендерится (например, из-за изменения других данных на странице), он бы снова и снова добавлял товар в корзину (в контексте интернет-магазина). Это приведет к бесконечному циклу и сильно замедлит работу приложения.
    - Непредсказуемость поведения: Поскольку рендеринг компонентов может происходить по разным причинам и в разное время, использование dispatch в процессе может привести к непредсказуемым и нежелательным изменениям в состоянии приложения. В контексте интернет-магазина, товары могли бы добавляться в корзину без Вашего ведома.
    - Сложности в управлении состоянием: Использование dispatch во время рендеринга усложняет понимание того, когда и почему происходят изменения в состоянии приложения, что затрудняет отладку и поддержку кода.

    Именно поэтому лучше использовать dispatch внутри обработчиков событий (например, при клике на кнопку) или внутри useEffect, где Вы имеете полный контроль над тем, когда и по какой причине должны происходить изменения состояния.
    Ответ написан
    1 комментарий
  • Где взять старую версию Node.js?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Попробуй nvm
    Ответ написан
    Комментировать
  • Понимает ли js, что функция вернет promise?

    @paroletatel
    Отвечу так, как сам понимаю, без претензий на экспертство.

    Сама функция в вашем примере — синхронная. Внутри данной функции вызывается fetch — он асинхронный.

    Вызов функции и её выполнение — это блокирующий код, он выполняется синхронно, и останавливает поток, пока не отработает функция.

    Но суть в том, что идея отрабатывания данной синхронной функции в том, чтобы поместить в event loop асинхронный запрос (который возвращает promise), обработчик которого запускается и не блокирует основной поток, — и только. Сама функция же, как синхронная, возвращает то, что вы ей даете вернуть, — в данном случае undefined.

    Если бы вы записали функцию, как асинхронную, и перед fetch использовали await, то данная функция как раз и возвращала promise, который предполагал бы полное исполнение fetch до выполнения самой функции, то есть resolve'а promise функции.

    const getData = async () => {
      await fetch('адресДаты').then((resp) => {
        resp.json()
      })
      .then((data) => {
        return data.data
      })
    }
    Ответ написан
    5 комментариев
  • Как правильно использовать тип unknown?

    vabka
    @vabka
    Токсичный шарпист
    Варианта четыре:
    1. Кастануть в any
    2. Кастануть в конкретный тип
    3. Использовать narrowing: Сделать проверки, что typeof item === "object" и что у него есть нужные свойства.
    4. Если заранее знаешь, что у тебя item - это какой-то тип из нескольких, то вместо unknown можно сделать union

    Вот ещё пример:
    https://www.typescriptlang.org/play?target=9#code/...
    Ответ написан
    Комментировать
  • Как не обновлять локальный файл docker-compose при git pull?

    @Kostik_1993
    Web Developer
    Я так понимаю вам нужна правка для локальной разработки которая не нужна на проде. Для этого вам нужно создать еще один docker-compose.dev.yml файл только с теми конфигами которые хотите поправить. Сам же файл не нужно индексировать, а поместить его в .gitignore

    https://docs.docker.com/compose/multiple-compose-f...
    https://docs.docker.com/compose/multiple-compose-f...

    UPD. Так же если вам нужно делать отличными какие-то опции вроде порт, имя или пароль бд можно вынести это в переменные окружения или .env файл. Его также стоит поместить под .gitignore
    Ответ написан
    Комментировать