• Почему после подключения внешнего монитора к ноутбуку приложения стали работать с использованием дискретной видеокарты Nvidia?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    В современных ноутбуках с несколькими видеокартами переключение портов делается программно (поищите software and hardware mux in laptops, если интересно подробнее). То есть порт для внешнего монитора физически подсоединён только к дискретной карте. А если приложение запущено на встроенной, то выводимые им кадры всё равно копируются на дискретную (это реализовано где-то в драйверах) и на монитор выводятся с её помощью. Поэтому отключить её полностью при использовании внешнего монитора не получится.
    Ответ написан
    Комментировать
  • Что не так с моим ООП на Python?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Поскольку метод не объявлен как статический, то нужно создать конкретный экземпляр класса и вызывать уже для него. То есть
    newb = Newbie(login,password)
    newb.logging(login,password)

    Ну или ещё вариант — Newbie.logging(newb,login,password)
    Кстати, если логин и пароль запомнили в self, то зачем передавать их в logging в параметрах ещё раз? Лучше используйте self.login и self.password.
    Ответ написан
    Комментировать
  • Как не выводить страницу с ошибкой Nginx error_page на определенном урле?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Прописать для этого адреса отдельный location:
    location =/wp-admin/ {
    // здесь пишем то, что нужно сделать, например, выдать свою страницу ошибки вместо nginxовской
    error_page 500 501 502 503 504 505 /my_error_page.html;
    // или отредиректить пользователя куда-то далеко
    return 301 4xpro.ru;
    }
    Ответ написан
    Комментировать
  • Как можно автоматизировать выбор размера?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Подозреваю, что дело не в этом, а в том, что что-то на странице не успевает догрузиться к моменту, когда этот код срабатывает. Имеет смысл попробовать добавить задержку при загрузке:
    setTimeout(function () {
    $("li:contains('36 RU / 4 UK')").trigger( "click" );
    },3000);
    Ответ написан
    Комментировать
  • Как сделать так, чтобы скрипт импорта не тупил?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Регулярные выражения вам в помощь. Код примерно такой (добавлять в конец приведённого фрагмента):
    if (strpos($r['sku'],'/')===false && preg_match('|_(\d+cm)$|',$r['sku'],$match) {
      $r['sizes'][]=$match[1];
    }

    Если я правильно понял, что размеры нужно собрать в $r['sizes'], а не в $size, и размеры могут быть только в cm, а не в каких-то других единицах.
    Ответ написан
    3 комментария
  • Блок с картинкой ужимается до произвольных размеров, почему?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Для .menu-img нужно прописать
    .menu-img { width: 100%; height: auto }
    вместо height:100%. Или наоборот, height: 100%; width: auto, если нужно, чтобы картинка была на всю высоту, но при этом допустима разная ширина.
    Ответ написан
    Комментировать
  • Как можно ускорить код php?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Насколько я понимаю, это алгоритм распознавания лица. Можно использовать готовый из PHP OpenCV (https://github.com/php-opencv/php-opencv). Ну или если в вашем варианте есть какие-то отличия, то реализовать этот же код заново, используя функции PHP OpenCV. Там большая часть вычислений реализована на C, поэтому выполняться будет существенно быстрее. (Правда, для этого нужен VDS, где можно самому ставить PHP extensions, а не обычный хостинг.)
    Ещё вариант — переписать код на C самостоятельно, без OpenCV, так, чтобы он висел в виде демона, а взаимодействие с ним происходило через Unix-сокет.
    Также, как правильно отметили в комментариях, некоторое ускорение может дать переход с 5 на 7 версию PHP.
    Ответ написан
    Комментировать
  • Почему не проходит пинг до пк?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Проверьте маски подсетей в роутере BSBO_09_L и на самом bad_man, возможно, они прописаны неправильно. И вообще, проверьте есть ли в роутере запись в таблице маршрутизации для 172.31.1?
    Ответ написан
  • Почему программа не видит путь к файлу?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Нужно формировать путь одинаково. А то в первом случае он у вас пишется относительно текущего каталога:
    "./downloads/{}.exe".format(package)
    а во втором — относительно пути, где лежит скрипт:
    os.path.dirname(os.path.abspath(__file__))+"\\downloads\\{}.exe".format(package)
    Если текущий каталог — это каталог со скриптом, то всё работает нормально, если же нет, то файл найти не удаётся. Причём я бы использовал второй вариант (с абсолютным путём).
    Ответ написан
    Комментировать
  • Можно ли сделать открытие камеры на телефона со сканером ш-к по на сайте?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Максимум, что можно сделать — это вставить вот такой input:
    <input type="file" accept="image/*" capture="camera" />

    По щелчку по нему на мобильных устройствах будет вызываться камера, а не выбор файла, как обычно. Дальше можно на событие onchange для этого input повесить отправку формы на сервер. А вот распознавание кода и всю последующую обработку придется делать на сервере. Или писать полноценное Android-приложение.
    Ответ написан
    Комментировать
  • Как исправить ошибку при запуске PHP скрипта?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Это вообще-то не ошибка, а предупреждение, связанное с тем, что массив $argv определен только при запуске из командной строки, а вы скрипт через Web-сервер запускаете. Тем не менее, код, по идее, отрабатывает нормально.
    Чтобы избавиться, нужно добавить дополнительную проверку:
    if (!empty($argv) && array_key_exists('1', $argv) && mb_strlen($argv[1]) > 2) {

    И еще не могу не заметить: делать include файла, имя которого пришло извне (из GET-запроса) без каких-либо проверок — в общем случае очень серьезная дыра в безопасности.
    Ответ написан
  • Не обновляется Apache2. Пишет (Job for apache2.service failed because the control process exited with error code.) Что делать?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Вариант 1. Проверить, что нет ошибок в конфиге:
    apache2ctl -t
    Вариант 2. Посмотреть логи и статус службы:
    tail /var/log/apache2/error.log
    journalctl -xu apache2.service
    Вариант 3. Запустить вручную из консоли в отладочном режиме: apache2 -X, чтобы все ошибки выводились в консоль.
    Ответ написан
  • Какой самый компактный способ проверить поле крестики-нолики?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Для классических крестиков-ноликов 3x3, на мой взгляд, проще всего сделать так: хранить выставленные на поле на поле крестики и нолики в одномерном массиве. А для проверки сделать массив для проверки выигрышных комбинаций, где перечислить смещения в основном массиве. И дальше — сделать цикл для проверки.
    То есть получаем вот что:
    var game_field=[' ',' ',' ',
    ' ',' ',' ',
    ' ',' ',' '];
    var wins = [[0,1,2],[3,4,5],[6,7,8],[0,4,8],[2,4,6],[0,3,6],[1,4,7],[2,5,8]];
    
    function check_game_over() {
      for (i=0; i<wins.length; i++) { // перебираем все выигрышные комбинации
        var game_over=true;
        if (game_field[wins[i][0]]!=' ') { // если первая из проверяемых клеток не пуста, начинаем проверку
          for (j=1; j<wins[i].length; j++) { // начинаем с единицы, так как сравнивать первую выигрышную клетку с собой не имеет смысла
            if (game_field[wins[i][0]!=game_field[wins[i][j]]) { // если значение в текущей клетке проверяемой комбинации отличается от первой, комбинация не выигрышная, выходим из вложенного цикла
              game_over=false;
              break;
            }
          }
          if (game_over) return game_field[wins[i][0]]; // возвращаем выигравшую сторону — крестик или нолик
        }
      }
      return false;
    }
    Ответ написан
  • Как сократить js код?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Зачем нужны конструкции вида var a=a и зачем текущее время сначала присваивать в x, а потом переносить в now_time? Можно сразу в now_time поместить.
    Еще можно объединить условия: c>0 && a>0 && b>0
    Также можно применить такую вещь как замыкание (closure), если знаете, как его делать, хотя особого сокращения оно тут не даст.
    А setInerval можно вызывать в обычном цикле for:
    <?php for ($i=0; $i<5; $i++) echo 'setInterval(calc_sum,1000,"'.$cfg['pf'.$i].'",".$usdat['fa'.$i].'","'.$usdat['sbor'].'",24,"'.$i.'");'; ?>
    Ответ написан
    Комментировать
  • Как правильно генерировать конечную цену и строить динамические скидки?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Во-первых, я сделал бы интерфейс iPriceCalc, и набор классов, реализующих этот интерфейс, и все расчеты вынес бы в них. (Соответственно, в классе должен быть один метод, в который передается информация о товаре и, на всякий случай, залогиненном пользователе.) Плюс на всякий случай предусмотрел бы для каждого товара предусмотреть возможность указывать в базе, какой именно класс для расчета цены должен использоваться.
    Редактор динамических скидок сделал бы так: таблица, в каждой ее строке несколько selectов. В первом из них выбираем, что именно проверяем (текущее число, текущий день недели, текущее время, цена продукта, категория и т.п.). Во втором — операция проверки (меньше, больше, равно, не равно). В третьем - значение с которым сравниваем.
    В конце таблицы — размер скидки и ее тип (абсолютная в рублях или относительная в процентах).
    Все это сохраняем в массив (с помощью сериализации в PHP или JSON) и передаем классу, осуществляющему расчет цены. Он проходит этот массив последовательно, берет каждую строку, подставляет вместо первого selectа реальное значение, смотрит, какую операцию нужно применить и сравнивает. Если все условия в наборе выполнились, скидка применяется и класс возвращает исправленную цену.
    То есть получаем примерно такой:
    class ConditionPriceCalculator implements iPriceCalc {
    function calc($product,$user) {
    $data = get_file_contents('файл с условиями');
    $conditions = unserialize($data);
    $result = true;
    foreach ($conditions as $condition) {
       // в поле comp_value лежит условное значение из первого selectа, для которого нужно посчитать реальное значение
       if ($condition['comp_value']=='day') $value1==date('d');
       elseif ($condition['comp_value']=='weekday') $value1=date('N');
      // ... и так далее
      $value=$condition['value']; // тут хранится, с чем сравнивать
      if ($condition['op']=='eq') $cur_res = $value1==$value2;
      if ($condition['op']=='ne') $cur_res = $value1!=$value2;
      //  и т.д.
      if (!$cur_res) $result = false; // если условие не выполнилось, общий результат сбрасываем в false, еще можно добавить break;
    }
    if ($result) {
      // если все условия из набора выполнились, рассчитываем новую цену:
    }
    }
    }

    В принципе, можно предусмотреть, чтобы таких наборов условий было несколько и применялся первый сработавший.
    Единственное ограничение — это то, что нельзя в одном наборе условий объединять их по "ИЛИ", а не по "И".
    Ответ написан
    1 комментарий
  • Как сделать плавающий блок замирающий под header?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Навесить обработчик на событие onscroll и смотреть, насколько прокрутилась страница от начала. Т.е. будет что-то вроде такого:
    jQuery('body').on('scroll',function (e) {
      if (jQuery('body').scrollTop()>500) { // вместо 500 поставить отступ среднего блока от верха страницы
        jQuery('.midblock').addClass('fixedblock');
      }
      else {
       jQuery('.midblock').removeClass('fixedblock');
      }
    });

    Тут предполагается, что у среднего блока постоянно прописан класс midblock, а когда он переходит в состояние fixed, то добавляется класс fixedblock, в котором прописаны position:fixed и отступ сверху.
    Ответ написан
  • Какие есть современные альтернативы Wordpress?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    У меня есть мысль InstantCMS в этой роли попробовать. Единственное что — она не совсем блоговый движок, чтобы ее таковым сделать, нужно немного настроить — создать соответствующий тип контента, добавить и настроить виджеты. А по легкости и скорости показатели очень даже неплохие: у меня достаточно навороченный сайт грузится менее чем за 0.5 секунды. Плюс еще есть склейка и сжатие CSS и JS из коробки.
    Ответ написан
    2 комментария
  • Правильная переадресация htaccess?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Нужно посмотреть, что в текущем .htaccess прописано. Скорее всего, нужно для URLов типа /novosti/ добавить в конец символ $ (конец строки), чтобы на URL вида /novosti/kategoriya/ корректно выдавался статус 404, а не делать костыли вида редиректов.
    Ответ написан
    Комментировать
  • Как лучше реализовать хранение данных в БД? Какой стек технологий выбрать?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    А зачем такое делать на NoSQL? Тут реляционные базы вполне подходят.
    Я бы вообще ограничился тремя таблицами:
    1) сайт
    2) товар вообще (по сути, там хранится только его id и наименование)
    3) товар на конкретном сайте (тут хранится id товара, id сайта, цена, дата парсинга).
    Ответ написан
    7 комментариев
  • В чем причина ошибки modx?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Вы меняете кодировку в MySQL, а тут речь идет о кодировке в самом PHP. Если конкретно, где-то (скорее всего, в php.ini в опции internal_encoding, или в .htaccess в директивах php_value , или в настройках самого MODX, из которых через ini_set выставляется та же опция) прописана кодировка в виде utf8 вместо utf-8, что PHP воспринимает как некорректное значение.
    Кроме того, это не ошибка, а предупреждение.
    Ответ написан
    Комментировать