• Как сделать цикл в PyQt5?

    Azamat_Lee
    @Azamat_Lee
    Работаю с Wordpress
    Для решения вашей проблемы с бесконечным циклом в PyQt5, вы можете использовать механизм многопоточности, чтобы цикл выполнялся в фоновом потоке, и это не блокировало главный интерфейс пользователя. Также вам понадобится добавить кнопку для остановки цикла. Вот пример кода, который демонстрирует, как это можно сделать:

    from PyQt5 import QtCore, QtGui, QtWidgets
    import pyautogui
    import threading
    
    class Ui_MainWindow(object):
        # ... ваш предыдущий код ...
    
        def add_functions(self):
            self.pushButton.clicked.connect(self.start_autoswap)
            self.stopButton.clicked.connect(self.stop_autoswap)  # Добавьте кнопку остановки в ваш интерфейс
    
        def start_autoswap(self):
            self.autoswap_thread = threading.Thread(target=self.autoswap, daemon=True)
            self.autoswap_thread.start()
    
        def stop_autoswap(self):
            self.running = False
    
        def autoswap(self):
            self.running = True
            while self.running:
                x = 459
                y = 1402
                Color = pyautogui.screenshot().getpixel((x, y))
                print(Color)
                if Color == (185, 185, 185):
                    pyautogui.press("2", presses=4, interval=0.01)
    
    # ... остальная часть вашего кода ...


    В этом примере:

    Метод start_autoswap запускает метод autoswapв отдельном потоке.
    Переменная self.running используется для контроля выполнения цикла.
    Метод stop_autoswap изменяет значение self.running на False, что приводит к остановке цикла.
    Не забудьте добавить кнопку остановки в ваш пользовательский интерфейс и соединить её с методом stop_autoswap. Также убедитесь, что вы используете daemon=True при создании потока, чтобы он завершался вместе с основной программой.
    Ответ написан
    Комментировать
  • Как можно реализовать SQL запрос для поиска по двум столбцам одновременно с исключением некоторых столбцов из поиска?

    Azamat_Lee
    @Azamat_Lee
    Работаю с Wordpress
    Для выполнения поиска по двум столбцам в SQLite с использованием FTS5 и исключением одного столбца из поиска, вы можете использовать следующий запрос:

    SELECT a, b, c FROM data WHERE data MATCH 'a:$fullQuery OR b:$fullQuery' AND NOT c:$fullQuery;


    этом запросе используется оператор MATCH для поиска по столбцам a и b с использованием переменной $fullQuery. Оператор AND NOT исключает результаты, где столбец c также соответствует запросу $fullQuery.

    Таким образом, если $fullQuery содержит “Что ГЛАВРЫБА может”, запрос вернет строки, где a или b содержат эту фразу, но c не содержит её. Это позволит вам исключить столбец c из поиска, но при этом включить его в выводимые результаты. Пожалуйста, убедитесь, что ваш запрос корректно обрабатывает специальные символы и пробелы в $fullQuery.
    Ответ написан
  • Как правильно вывести значения из бд Mysql node js?

    Azamat_Lee
    @Azamat_Lee
    Работаю с Wordpress
    Для работы с MySQL в Node.js и использования async/await для асинхронных операций, вы можете использовать библиотеку mysql2/promise, которая поддерживает промисы и позволяет использовать async/await. Вот пример того, как можно реализовать ваш запрос:

    const mysql = require('mysql2/promise');
    
    async function getData() {
      const connection = await mysql.createConnection({
        host: "127.0.0.1",
        user: "root",
        password: "",
        database: "mania"
      });
    
      try {
        const [rows, fields] = await connection.execute('SELECT * FROM price_history_1d');
        for (let row of rows) {
          console.log(`ID: ${row['birza']}, NAME: ${row['symbol']}, PRICE: ${row['price']}`);
          // Теперь вы можете работать с каждой строкой данных как с объектом
          // Например, вы можете сохранить данные в переменные или отправить их куда-либо
        }
      } catch (err) {
        console.error(err);
      } finally {
        await connection.end();
      }
    }
    
    getData();


    Этот код создает асинхронную функцию getData, которая устанавливает соединение с базой данных, выполняет запрос и выводит результаты. Каждая строка результатов обрабатывается в цикле, и вы можете сохранять данные в переменные или использовать их для других операций внутри цикла.

    Обратите внимание, что для использования mysql2/promise вам нужно будет установить этот пакет через npm:

    npm install mysql2

    Использование async/await позволяет писать асинхронный код, который выглядит как синхронный, и делает его более читаемым и удобным для отладки.
    Ответ написан
    21 комментарий
  • Как использовать переменные из массива поочерёдно (Powershell)?

    Azamat_Lee
    @Azamat_Lee
    Работаю с Wordpress
    Для выполнения операций поочерёдно с использованием переменных из массива в PowerShell, вы можете использовать цикл ForEach-Object или foreach. В вашем случае, когда у вас есть два файла с данными, и вы хотите создать символические ссылки для каждой пары номера ПК и имени пользователя, скрипт может выглядеть следующим образом:

    $pc_numbers = Get-Content 'C:\test\pc_name_stm.txt'
    $user_names = Get-Content 'C:\test\stm_name.txt'
    
    for ($i = 0; $i -lt $pc_numbers.Length; $i++) {
        $pc_number = $pc_numbers[$i]
        $user_name = $user_names[$i]
        $path = "\\$pc_number\c$\Users\$user_name\Desktop\Полезные_ссылки_СТМ"
        $target = "\\192.168.123.220\Shared\СТМ\Полезные_ссылки_СТМ"
        
        New-Item -ItemType SymbolicLink -Path $path -Target $target
    }


    Этот скрипт считывает данные из обоих файлов и сохраняет их в массивы $pc_numbers и $user_names. Затем он использует цикл for, чтобы пройти по каждому элементу массивов, создавая символическую ссылку для каждой пары номера ПК и имени пользователя.

    Обратите внимание, что если количество строк в файлах различается, это может привести к ошибкам. Убедитесь, что количество строк в обоих файлах совпадает.

    Если вы столкнулись с проблемой потери строк при использовании переменных в двойных кавычках, убедитесь, что вы правильно обращаетесь к элементам массива, как показано в примере выше, где $pc_number и $user_name являются отдельными элементами массива, а не всем массивом сразу.
    Ответ написан
  • Как настроить module css в React в VS Code для вложенной папки?

    Azamat_Lee
    @Azamat_Lee
    Работаю с Wordpress
    Если вы работаете с проектом, где package.json находится не в корневой папке, где вы открываете VS Code, то действительно, могут возникнуть проблемы с распознаванием TypeScript и соответствующих плагинов, таких как typescript-plugin-css-modules. Вот несколько шагов, которые могут помочь решить эту проблему:

    Убедитесь, что у вас установлен TypeScript в рабочей области, где находится ваш package.json. Это может потребовать запуска команды установки в соответствующей подпапке.
    Настройте VS Code для использования версии TypeScript из вашей рабочей области. Это можно сделать, выбрав версию TypeScript в нижнем правом углу редактора или через настройки settings.json, указав путь к нужной версии TypeScript.
    Проверьте, правильно ли настроен tsconfig.json. Убедитесь, что путь к плагину typescript-plugin-css-modules указан относительно корня рабочей области, где находится package.json.
    Используйте многокорневые рабочие области в VS Code, если это возможно. Это позволит вам иметь несколько package.json файлов и соответствующие конфигурации TypeScript в одной рабочей области.

    Если проблема сохраняется, возможно, потребуется более детальная настройка или создание пользовательского скрипта для запуска TypeScript из нужной папки.
    Ответ написан
    Комментировать
  • Как создать реферальную ссылку на свой сайт и отслеживать переход по этой ссылке с помощью google analytics?

    Azamat_Lee
    @Azamat_Lee
    Работаю с Wordpress
    Для создания реферальной ссылки, которую можно разместить на различных ресурсах и отслеживать трафик в Google Analytics, вы можете использовать следующие шаги:

    Создание реферальной ссылки:
    Используйте сервисы для создания реферальных программ, такие как Referral Factory, которые позволяют легко создавать и управлять реферальными ссылками.
    Вы можете также вручную добавить параметры отслеживания к URL вашего сайта, используя UTM-метки. Это позволит Google Analytics отслеживать источник перехода по ссылке.
    Отслеживание трафика в Google Analytics:
    В Google Analytics 4 перейдите в раздел Отчеты (Reports) » Приобретение (Acquisition) » Получение трафика (Traffic Acquisition) и найдите строку с реферальным трафиком.
    Используйте фильтры для просмотра данных только по реферальному трафику, чтобы увидеть, откуда приходят пользователи.
    Ответ написан
    Комментировать
  • Почему в React-Router-DOM Navigate не редиректит на указанную ссылку?

    Azamat_Lee
    @Azamat_Lee
    Работаю с Wordpress
    Проблема с <Navigate> в вашем компоненте NotFoundзаключается в том, что вы пытаетесь использовать его как JSX-элемент внутри обработчика событий, что не приведет к рендерингу и перенаправлению. Вместо этого вам нужно использовать хук useNavigateдля программного перенаправления.

    Вот как можно исправить ваш код:
    import { useEffect, useState } from "react";
    import { useNavigate } from "react-router-dom";
    
    export default function NotFound(props) {
      const [redirectTimeOut, setRedirectTimeOut] = useState(5);
      const navigate = useNavigate(); // Используйте хук useNavigate
    
      useEffect(() => {
        const interval = setInterval(() => {
          if (redirectTimeOut >= 1) {
            setRedirectTimeOut((current) => (current >= 1 ? current - 1 : 0));
          } else {
            clearInterval(interval);
            navigate('/'); // Программное перенаправление
          }
        }, 1000);
    
        // Очистка интервала при размонтировании компонента
        return () => clearInterval(interval);
      }, [redirectTimeOut, navigate]); // Добавьте navigate в массив зависимостей
    
      const failedURL = "https://main/test";
      return (
        <div className="notFound-page">
          {/* Остальной код компонента */}
        </div>
      );
    }

    Теперь, когда счетчик обратного отсчета достигнет нуля, функция navigate('/') будет вызвана, и пользователь будет перенаправлен на главную страницу. Убедитесь, что вы добавили navigateв массив зависимостей useEffect, чтобы избежать нежелательных повторных вызовов перенаправления.
    Ответ написан
    Комментировать
  • Авторизация через Google на сайте для избранных доменов (почт)?

    Azamat_Lee
    @Azamat_Lee
    Работаю с Wordpress
    Да, в настройках Google OAuth можно ограничить доступ к вашему сайту, разрешив вход только с определенных доменов. Это обычно делается путем настройки списка разрешенных доменов в консоли Google API для вашего проекта. Также, вы можете реализовать дополнительную логику на стороне вашего сервера, чтобы проверять домен электронной почты пользователя после аутентификации и перед предоставлением доступа к сайту.

    Для сайтов на WordPress существуют плагины, которые могут помочь вам управлять процессом авторизации через Google OAuth и настроить ограничения на основе доменов электронной почты. Вы можете настроить такой плагин, чтобы он принимал только пользователей с электронной почтой из определенных доменов.

    Кроме того, если вы используете Google Workspace, вы можете настроить политики доступа к областям действия OAuth, которые позволяют контролировать, какие приложения могут получать доступ к данным Google Workspace в вашем домене
    Ответ написан
  • Как проверять в реальном времени подтвердили ли Email (Firebase, Unity)?

    Azamat_Lee
    @Azamat_Lee
    Работаю с Wordpress
    Для реализации проверки подтверждения электронной почты в реальном времени в Unity с использованием Firebase, вы можете использовать обработчик состояния аутентификации. Firebase предоставляет событие StateChanged, которое вызывается каждый раз, когда изменяется статус аутентификации пользователя, включая подтверждение электронной почты.

    Вот пример кода, который демонстрирует, как можно настроить слушатель для обработки изменений состояния аутентификации:
    void Start() {
        FirebaseAuth auth = FirebaseAuth.DefaultInstance;
        auth.StateChanged += AuthStateChanged;
        AuthStateChanged(this, null);
    }
    
    void AuthStateChanged(object sender, EventArgs eventArgs) {
        if (FirebaseAuth.DefaultInstance.CurrentUser != null && FirebaseAuth.DefaultInstance.CurrentUser.IsEmailVerified) {
            // Пользователь вошел в систему и подтвердил свой Email.
            // Переход в игру.
        } else {
            // Пользователь либо не вошел в систему, либо не подтвердил Email.
            // Оставаться на экране входа или регистрации.
        }
    }
    
    void OnDestroy() {
        if (auth != null) {
            auth.StateChanged -= AuthStateChanged;
            auth = null;
        }
    }


    Этот код будет реагировать на любые изменения в статусе аутентификации пользователя, включая подтверждение электронной почты. Если пользователь подтвердил свой адрес электронной почты, вы можете автоматически перенаправить его в игру без необходимости повторного входа.
    Ответ написан
  • Есть в Windows API для задания тега Write Combining для моей области памяти?

    Azamat_Lee
    @Azamat_Lee
    Работаю с Wordpress
    Да, в Windows API существует возможность задать атрибут Write Combining для области памяти. Это можно сделать с помощью функции VirtualAlloc или VirtualAllocEx, передав флаг PAGE_WRITECOMBINE в параметре flProtect. Однако стоит отметить, что использование Write Combining может привести к снижению производительности при чтении или не последовательной записи, поэтому его следует применять осторожно и только в тех случаях, когда это действительно необходимо.

    Пример использования VirtualAlloc с флагом PAGE_WRITECOMBINE:

    void* pMemory = VirtualAlloc(NULL, size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE | PAGE_WRITECOMBINE);


    Если вы столкнулись с ошибкой или функция возвращает NULL, убедитесь, что вы правильно указали все параметры и что ваша система поддерживает Write Combining. Также проверьте значение, возвращаемое функцией GetLastError(), чтобы получить информацию о возникшей ошибке.

    Обратите внимание, что для использования Write Combining ваш процессор должен поддерживать эту функцию, и она должна быть включена в BIOS или UEFI. Кроме того, доступ к некоторым специфическим функциям, таким как настройка регистров MTRR (Memory Type Range Registers), обычно требует привилегий уровня ядра

    Так видит этот ответ нейросеть. (с)
    Ответ написан