Задать вопрос
  • После переноса на сервак vds с CentOS не видит public laravel5?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Laravel
    RewriteCond %{REQUEST_URI} !^public
    RewriteRule ^(.*)$ public/$1 [L]

    Если корректно настроен VirtualHost, такое перенаправление делать неверно.

    Корректный VirtualHost:
    <VirtualHost *:80>
        ServerName localhost
    
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/project/public
    
        <Directory /var/www/html/project/public>
            AllowOverride All
        </Directory>
    
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>

    .htaccess:
    Options +FollowSymLinks
    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
    Ответ написан
    Комментировать
  • Почему MySQL сам редактирует данные?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Вариантов несколько:
    1. MySQL сам редактирует данные. Ваша БД была выбрана для проведения секретного правительственного эксперимента в области искусственного интеллекта и возможности его применения в качестве оружия массового поражения (не щадит ни одного пользователя, а ведь среди них, наверняка, есть женщины и дети!).
    2. Вашу БД кто-то взломал и балуется.
    3. В вашем коде есть ошибка, из-за которой при изменении значения этого поля для одного или нескольких пользователей используется некорректное условие фильтрации и обновляются все пользователи.

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

    Так ведь написано же в чём проблема:
    require(C:\OpenServer\domains\site.ru\modules\purifier\vendor\htmlpurifier\library): failed to open stream: Permission denied

    Недостаточно прав доступа к файлу, поэтому и дальше всё под откос катится.
    Ответ написан
  • Почему HTTP/2 на конкретном сайте не работает в Chrome, IE и Edge, но работает в FF на Windows 10?

    alexey-m-ukolov
    @alexey-m-ukolov Автор вопроса
    Помогли на SO: проблема оказалась в том, что антивирус пропускает весь трафик через себя и поддерживает только HTTP/1. Самый простой способ проверить в этом ли дело - посмотреть сертификат, который получает браузер. В моём случае это был сертификат, выпущенный ESET, а не оригинальный сертификат сайта.

    Необъяснёнными остались две странности: почему всё работало в FF и почему medium.com работал в Chrome. Напишу обращение в поддержку антивируса, если они ответят что-то вразумительное, добавлю информацию сюда.
    Ответ написан
    4 комментария
  • Почему не работает авторизация?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Unknown column 'status' in 'where clause'
    Какое из слов в этом предложении вы не можете перевести с английского самостоятельно?
    Ответ написан
    Комментировать
  • Gulp-плагин для импорта js?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Из вопроса не очень понятно, но, похоже, вы ищете browserify. Для gulp, разумеется, есть плагин.
    Ответ написан
  • Что не так с этим phpQuery?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    libxml_use_internal_errors(true);
    php.net/manual/en/domdocument.loadhtml.php#95463
    Ответ написан
    Комментировать
  • Call tracking (Колл-трекинг, отслеживание звонков). Где ошибка?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Прочитайте документацию setcookie(), посмотрите какие параметры принимает эта функция, посмотрите, что вы ей передаёте. Сразу станет понятно, почему она работает не так, как вы ожидаете (обратите внимание на разницу между "не работает" и "работает не так, как я хочу").

    $phone  = "{$_COOKIE['phone']}"; // Зачем сдесь нужны фигурные скобки?
    Фигурные скобки помогают php правильно обработать переменные внутри строки. В данном случае они не нужны, можно просто написать "$_COOKIE['phone']", но если хорошо подумать, станет понятно, что мы занимаемся какой-то хренью - переводим переменную в строку, чтобы интерполировать и получить её значение. Убираем кавычки вообще: $phone = $_COOKIE['phone'];

    А можно как-то проще написать форматирование?
    Можно использовать другие конструкции: sprintf, preg_replace, но проще код от этого не станет. Ещё можно подключить какую-нибудь библиотеку, в которой эта задача уже решена, но с вашим уровнем программирования пока не стоит. Встроенного Волшебного Форматирователя Номеров Телефонов в php, к сожалению, нет. Вот дождёмся, когда его в джаву встроят и тогда портируем.

    Какие ошибки я допустил?
    Code и format - это должны быть строки, а вы используете константы (без кавычек). Такие константы не определены, поэтому php просто возвращает их название в виде строки и код работает как должен. Но если включить вывод предупреждений, вы увидите, что интерпретатору не очень нравится то, чем вы его кормите.
    Но это не самая большая проблема. Зачем вообще в этой функции аргумент, да ещё с таким ужасным названием? Явно же должно быть две функции: одна получает номер, другая его форматирует. Композиция, все дела.
    Ответ написан
    Комментировать
  • Какие аргументы в пользу использования транзакций в бд?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега MySQL
    Единственное, что можно возразить, это то, что при использовании встроенных возможностей БД гораздо меньше кода - зачем писать то, что уже хорошо реализовано в БД?
    А так, при полном покрытии кода тестами и нормальной архитектуре, большой разницы нет. Разве что писать транзакции на уровне приложения - это какое-то странное извращение. А вот без внешних ключей вполне можно обойтись. Я их всегда ставлю, но могу понять тех, кто на это забивает.
    Ответ написан
  • Почему код не работает?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    У вас, как минимум, какая-то ерунда с синтаксисом. Если отформатировать ваш код, получается что-то очень странное:
    bot.on('message', httpGet(msg))
    
    httpGet(
      function(msg) {
        var chatId = msg.chat.id;
        console.log(msg);
        bot.sendMessage(chatId, "Привет11", {
          caption: "I'm a bot!"
        });
        return chatId;
      }.then(sendM(chatId), function(chatId) {
        return chatId;
      })
    );

    Что вы вообще пытаетесь сделать?
    Ответ написан
  • Почему не срабатывает удаление класса с помощью toggleClass?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Если поставить брейкпоинт на изменение атрибутов тега #sb-search, то видно, что класс удаляется, а потом сразу ставится на место. Скорее всего, срабатывает обработчик клика, который открывает поле поиска изначально. Попробуйте добавить в свой обработчик stopPropagation().
    Ответ написан
    Комментировать
  • Можно ли использовать flexbox/ html5 для сетки в верстке?

    Можно, в значении есть такая возможность.
    Нельзя, если вам нужно поддерживать браузеры, в которых flexbox не работает.
    Ответ написан
    Комментировать
  • Почему не работает код (Не бойтесь, 20 строк) на php?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    else if ($D=0)
    Используйте сравнение (===), а не присваивание (=).

    $x == $b/(2*$a);
    Используйте присваивание (=), а не сравнение (==).

    abcx($a=2, $b=-4, $c=3);
    При такой записи вы создаётё вне функции переменные $a, $b и $c, а потом передаёте в неё их значения. Переменные при это продолжают болтаться снаружи и никак не связаны с одноименными локальными переменными функции. Это не ошибка, код будет работать, но действие бессмысленное и потенциально вредное. Вызывайте функцию как обычно: abcx(2, -4, 3);

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

    P.S. Что же вы лесенку-то не достроили? :)
    $D = sqrt($D);
    $x == ($b + $D)/2*a;
    $x2 === ($b - $D)/2*a;
    Ответ написан
    3 комментария
  • Как настроить Крон на Vesta?

    0 */2 * * * /some/script.sh
    Ответ написан
    Комментировать
  • Возможно ли написать универсальный парсер сайтов?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    И да, и нет: у вас очень расплывчатая формулировка. Непонятно, насколько осмысленным и обработанным должен быть итоговый результат, насколько допустим мусор.

    Скачать страницу, построить дерево документа и какими-то элементарными эвристиками вырезать ненужное (меню, сайдбары, подвалы, рекламу и т.п.) относительно просто, но результат будет довольно грубый с неудовлетворительным соотношением сигнал/шум.

    Для повышения универсальности инструмента, потребуется увеличивать количество и сложность этих эвристик. А ещё можно подключить туда машинное обучение, чтобы они сами себя улучшали.
    И вот вы уже хотите написать что-то вроде поискового паука. Представьте, сколько сил вложено в разработку паука Яндекса или Гугла. У вас есть такие возможности? А ведь мало его просто написать, надо поддерживать, следить за новыми стандартами...

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

    Функции - это инструмент, используемый для написания поддерживаемого кода, главная их задача - избавить программиста от необходимости писать одно и то же несколько раз.
    Если приложить это определение к вашей задаче, становится понятно, что функции вам вообще ни к чему, забудьте о них пока.
    Процесс в общем случае такой:
    1. Придумываете алгоритм решения задачи.
    2. Описываете алгоритм литературным псевдокодом.
    3. Последовательно реализуете каждый шаг псевдокода без оглядки на функции, паттерны, абстрации и все прочие наслоения (это если ваш уровень программирования реально низок; это всё-таки нужные вещи и с опытом ими всё проще жонглировать в голове).
    4. Когда программа полностью готова и работает, можно заняться оптимизацией, улучшением архитектуры и т.п.

    Примерно такой алгоритм описан у Мартина в "Совершенном коде", если мне не изменяет память. Почитайте, хорошая книга. В идеале, стоит в этот процесс добавить ещё тестирование, но опять, это если голова не пухнет и без него.
    Это позволяет на каждом этапе фокусироваться на том, что важно в данный момент и не забивать голову нерелевантными вещами. Есть слона по кусочкам, вот это всё.
    Ответ написан
    Комментировать
  • Как получить значение из промиса синхронно?

    как сделать асинхронное синхронным?

    Никак. Вы можете использовать async/await, если промисы кажутся многословными, но это только изменит синтаксис, а не суть дела.
    Всё, что дальше по стеку от асинхронной функции обязано быть асинхронным, даже если вам очень-очень хочется, чтобы было иначе.
    Ответ написан
    Комментировать
  • Как в php отключить код при компиляции?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Если у вас включен и настроен Opcache, то мёртвый код удаляется автоматически: https://bugs.php.net/bug.php?id=71102
    Ответ написан
    Комментировать
  • Как получить значение пользовательского свойства раздела инфоблока?

    Примечание №1: для вывода пользовательских свойств обязательно должен быть передан IBLOCK_ID и в arSelect код необходимых свойств UF_XXX.
    dev.1c-bitrix.ru/api_help/iblock/classes/ciblockse...
    Ответ написан
    Комментировать