Задать вопрос
  • Можете объяснить асинхронность в JS?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    WebAPI браузера поедоставляет вещи типа setTimeout, или async await, коллбек-функции которые закидываются в очередь, а оттуда в порядке своей приоритетности попадают в стек по очереди. Промисы обрабатываются в приоритетном порядке.
    Обычные callback-функции не попадают в очередь, они вызываются в общем стеке. Кроме промисов в приоритетную очередь микрозадач функция может быть добавлена через queueMicrotask(function).
    А что если "асинхронные" операции занимают много памяти и выполняются долго. Если они выполняются в том же стеке, то они также перекроют доступ ко всем остальным операциям?
    Асинхронные операции выполняются отдельными служебными потоками параллельно с основным стеком. Поэтому сами они не могут заблокировать основной стек. По завершению/таймеру асинхронная операция кладёт функцию в очередь микро- или макрозадач.
    Ответ написан
    Комментировать
  • Как отправить межсайтовый запрос(Flask, axios)?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Postman не подчиняется CORS, это расширение браузера, у него свои правила.
    Вы в ответе дважды добавляете заголовок Access-Control-Allow-Origin, отсюда и ошибка.
    Ответ написан
  • Как отфильтровать такой массив объектов?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    В массив .rounds можно не смотреть, всё в основном наборе данных лежит.
    data.filter((u) => u.round_number > round || u.position);
    Ответ написан
    Комментировать
  • Правильно ли я делаю json-rpc запрос?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Запрос сам по себе правильный. А вот ответ нет.
    Ответ должен быть таким:
    {
      "jsonrpc": "2.0",
      "id": 1,
      "result": 54321
    }

    Ну и должна быть проверка пришедшего запроса на читаемость и соответствие стандарту. По уму, должна быть единая точка входа в api, которая вызывает запрошенный метод (getCurrencies).
    Ответ написан
    3 комментария
  • Формула вращающегося прямоугольника как?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    (AD - AB)/sqrt(2)
    Ответ написан
    Комментировать
  • Почему в данном коде необходимо нижнее подчёркивание?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Подчёркивание в JS - допустимое имя переменной. Вы можете заменить его на любое другое неиспользуемое имя.
    Автор кода, скорее всего, хотел показать, что деструктурируемое значение в дальнейшем не используется.
    Ответ написан
    Комментировать
  • Почему в данном коде выходит ошибка Found non-callable @@iterator?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Если посмотрите стандарт, то для spread-аргументов присутствует шаг Let iteratorRecord be ? GetIterator()
    Ответ написан
    Комментировать
  • Разбиение локалки на подсети?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Теоретически так. Практически, для таких целей обычно используют другие адреса: 172.16.0.0 с маской 255.240.0.0 или 10.0.0.0 с маской 255.0.0.0
    Ответ написан
    Комментировать
  • Как сделать вебсокет?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Вы не понимаете сути вебсокетов.
    Сервер вебсокета должен работать как демон, постоянно слушая порт. Клиент подключается не к какому-то конкретному файлу, а непосредственно к открытому порту.
    Посмотрите готовый фреймворк для реализации вебсокет-сервера: workerman
    Ответ написан
    4 комментария
  • Две версии php на одном сайте без домена на одном ip на одном порту в разных папках?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Откуда вы взяли такой синтаксис VirtualHost?
    <VirtualHost addr[:port] [addr[:port]] ...> ... </VirtualHost>

    https://httpd.apache.org/docs/2.4/mod/core.html#vi...
    Вам надо делить на основе Directory, как-то так:
    <VirtualHost 192.168.1.1:80>
        ServerAdmin admin@8080
        ServerName 192.168.1.1
        DocumentRoot /var/www
        ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
        <Directory "/var/www/8080">
            DirectoryIndex 7.php
            SetHandler "proxy:fcgi://127.0.0.1:8080
            AddHandler php74-fcgi .php
            Action php74-fcgi /cgi-bin/php74.fcgi
        </Directory>
        <Directory>
            DirectoryIndex 8.php
            SetHandler "proxy:fcgi://127.0.0.1:8082
            AddHandler php82-fcgi .php
            Action php82-fcgi /cgi-bin/php82.fcgi
        </Directory>
        ErrorLog /var/log/httpd/8080.log
        CustomLog /var/log/httpd/8080.log combined
    </VirtualHost>
    Ответ написан
    Комментировать
  • Как пофиксить эту ошибку?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Возвращайте JSON со статусом и необходимыми данными.
    {
      "status": "error"
      "error": {
        "form": {
          "email": "Пользователь с таким адресом электронной почты уже зарегистрирован",
          "password": "Слишком короткий пароль. Минимальная длина 8 символов."
        }
      }
    }

    {
      "status": "ok"
      "location": "/email-verification"
    }
    Ответ написан
  • Правильное ли решение к задаче про "среднее время доступа к слову"?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    2000 событий.
    Каждый раз доступ к кэш-памяти, 2000 * 1нс = 2000нс
    В 5% доступ к озу, 100 * 10нс = 1000нс
    В 0.05% доступ к диску, 1 * 10000000нс = 10000000нс
    10000000нс + 1000нс + 2000нс = 10003000нс
    10003000нс / 2000 = 5001,5нс
    Ответ написан
    1 комментарий
  • Как правильно сформировать запрос в MySql, не вижу ошибки?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Вообще-то ошибка показывает на совершенно другую проблему.
    В вашем коде:
    FROM " . DB_PREFIX . "product_to_category ptc LEFT JOIN  . DB_PREFIX . "category_description"

    Тот же фрагмент в тексте ошибки:
    FROM oc_product_to_category ptcoc_category_description

    Куда делся LEFT JOIN oc_?

    А проблема с пустым $product_id решается элементарно. Достаточно предварительно проверять переменную и заменять её на фиктивное значение, например -1.
    Ответ написан
    Комментировать
  • Правильно ли я понимаю смысл статических и не статических объектов (this self)?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    1. $this указывает на текущий экземпляр класса, в контексте которого был вызван метод. Но доступ к нестатическим свойствам и методам возможен для любого экземпляра (к публичным из любого контекста, к приватным и защищённым изнутри класса).
    2. self используется для доступа к классу, в котором описан метод, static для доступа к классу, в котором вызван метод, parent для доступа к родительскому классу.
    4. В нестатических классах C# не запрещено создавать статические методы. Если эти статические методы в классе нужны, то ничто не мешает их создать.
    Ответ написан
    Комментировать
  • Я встретил непонятную конструкцию в чужом коде на ассемблере, кто обьяснит?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    В квадратных скобках не два значения, а одно - адрес со смещением ecx относительно res.
    Берём адрес res, прибавляем к нему значение из ecx и по полученному адресу записываем значение из dl.
    Ответ написан
    1 комментарий
  • Почему при указании в :nth-of-type числа не работает, но указание 2n работает?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Потому что в nth-of-type указывается номер потомка относительно родителя.
    Ваш селектор .two div[id]~div:nth-of-type(2) читается как:
    1. Найти элемент с классом .two
    2. Внутри этого элемента найти div, имеющий атрибут id.
    3. Среди следующих за этим div'ом сиблингов найти div, являющийся вторым потомком своего родителя.
    Но такого div'а нет, поскольку div[id] сам является вторым потомком, а следующие за ним сиблинги - третий, четвёртый и т.д. потомки.
    2n работает потому, что оно берёт четвёртого и шестого потомков, второй также не подходит под селектор.
    Ответ написан
    Комментировать
  • Как отрефакторить данный объект со значениями?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Если нет формулы, по которой можно рассчитать нужное значение, то остаётся только табличный метод. Но здесь надо использовать не объект, а массив.
    const rangeValues = [
      0, 0, 0, 1, 1, 1, 2, 2, 3, 3,
      4, 4, 4, 5, 6, 6, 7, 7, 8, 8,
      9,
    ];
    Ответ написан
    Комментировать
  • Хороша ли архитектура моего кода? Информация цепляется по API?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Я бы сделал как-то так. Но не претендую на истину в последней инстанции.
    spoiler
    class API
    {
        public function getProduct(int $productId): Product
        {
            $product = $this->request(...); // Получение данных из API
            return Product::from($product)
        {
    }
    
    class Product
    {
        private int $id;
        private string $title;
        // прочие свойства
    
        public function getId(): int
        {
            return $this->id;
        }
        
        public function getTitle(): int
        {
            return $this->title;
        }
    
        // прочие геттеры
    
        // сеттеры, если нужны
     
        public static function from(object $source): self
        {
            $product = new static();
            $product->id = $source->id;
            $product->title = $source->title;
            // заполнение свойств
            return $product;
        }
    }
    
    ...
    $api = new API($login, $password);
    $product = $api->getProduct(325);

    Хотя, для современных версий PHP можно описать преобразование из json с помощью атрибутов и сделать трейт с функцией from, которая будет парсить полученный из API объект согласно этим атрибутам. Плюс аналогичный трейт, реализующий JsonSerializable::jsonSerialize по атрибутам.
    Ответ написан
    Комментировать
  • Как реализовать функцию, которая будет связывать зарегистрированные пользователями домены с внутренними адресами сервиса?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Пользователь покупает свой домен, настраивает в DNS связь доменного имени с IP вашего сервиса.
    А дальше в настройках вашего сервиса прописывается новый сайт с указанием его корневой директории, SSL-сертификата и прочих настроек.
    Ответ написан
    Комментировать
  • Как работает killall -w в ubuntu?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    $ man killall
    ...
    killall sends a signal to all processes running any of the specified commands. If no signal
    name is specified, SIGTERM is sent.
    ...
    -w, --wait
                  Wait  for all killed processes to die.  killall checks once per second if any
                  of the killed processes still exist and only returns if none are left.  Note
                  that killall may wait forever if the signal was ignored, had no effect, or if
                  the process stays in zombie state.
    Ответ написан