• Какие проверки делать phpunit когда возвращается url?

    1. Как проверить, что пришла ссылка:
    https://www.php.net/manual/ru/filter.examples.vali...
    <?php
    $email_a = 'joe@example.com';
    $email_b = 'bogus';
    
    if (filter_var($email_a, FILTER_VALIDATE_EMAIL)) {
        echo "E-mail адрес '$email_a' указан верно.\n";
    }
    if (filter_var($email_b, FILTER_VALIDATE_EMAIL)) {
        echo "E-mail адрес '$email_b' указан верно.\n";
    } else {
        echo "E-mail адрес '$email_b' указан неверно.\n";
    }
    ?>


    2. Как проверить, что ссылка указывает на валидный документ — это вне обязанностей юнит-тестов. Они тестят только код на уровне метода. Вам нужно либо написать unit-тест на тот кусок кода, который эту ссылку и генерит, либо функциональный тест, который будет тестировать код как черный ящик:
    - отправить запрос в ваш метод
    - получить ссылку
    - перейти в документ по этой ссылке
    - проверить, что документ тот, что ожидается
    Тут можно посмотреть в сторону behat/selenium. Также в фреймворках для этих целей часто есть свои пакеты типа SymfonyWebTest.
    Ответ написан
    Комментировать
  • Почему версии php в phpinfo() и php -i расходятся?

    Установлены две версии php.
    Одна — см. путь до php.ini в браузере
    Вторая — сделать `php --ini` в консоли.

    В теории, можно сделать так, чтобы веб-сервер использовал консольный пхп или наоборот, чтобы в консоли в $PATH был путь до вашего веб-серверного php.
    Ответ написан
    Комментировать
  • E_NOTICE: type 8 -- Undefined offset: -1 -- at line 11. В чем проблема?

    Код не запускал, но скорее всего в строке
    replacement(count($attachmentsArray[1]), $attachmentsArray, $result);

    `$attachmentsArray[1]` пустой. Поэтому внутрь функции передаётся $count=0, ну и дальше обращение к массиву с индексом $count - 1, то есть -1.

    Проверьте, что preg_replace_all возвращает то, что нужно. И добавьте условие с проверкой до вызова функции, что $attachmentsArray именно того формата, что вам нужен.
    Ответ написан
    1 комментарий
  • Как прокинуть массив в viev через Mail::send в laravel?

    В Ларавеле не силён, но попробуйте закомментить в шаблоне строки с циклам по ссылкам. Тогда всё работает? Если так, то дело точно в них и скорее всего. Может, структура массива $downloadLinks всё-таки не такая? Лучше json_encode() сделайте, чтобы убедиться.
    Ответ написан
  • Как проверить существует ли такой пользователь в базе данных, чтобы можно было валидировать регистрацию пользователей на сайте?

    Ещё один запрос перед вставкой:

    $stmt = $pdo->prepare('SELECT COUNT(id) FROM users WHERE email=:email OR login=:login');
    $stmt->execute([
      'email' => $email,
      'login' => $login,
    ]);
    if ($stmt->fetch() > 0) {
      // Такой пользователь уже существует.
    }


    Вопрос: зачем вам юзернейм и логин.
    Ответ написан
    Комментировать
  • Как отправить длинный base64 POST?

    А ошибка какая-то есть? В явном виде или в логах веб-сервера/фреймворков?
    План по локализации проблемы:
    1) Попробуйте отправить такой же curl, но с консоли. Так вы исключите проблему в скрипте-отправителе.
    2) Скрипт-получатель замените на что-то простое, а-ля `echo $_POST['img'];`. Ответ выводится для всех отправок? Так вы исключите проблему в инфраструктуре (настройках пхп и веб-сервера) на приём данных.
    3) Если оба пункт выше не показали проблем и всё стабильно доходит, значит проблема в обработке полученной картинки. Тут уже можно экспериментировать, комментируя и возвращая строки последовательно.

    Но вообще кажется, что сама обработка данных неверна. По идее это должна быть обычная обработка формы, без плясок вокруг str_replace'ов.
    Ответ написан
    Комментировать
  • Почему echo date('Y-m-d H:m:s'); из разных скриптов выводит разные результаты?

    Проблема часового пояса в настройках php или конкретного скрипта.

    Первое, выполните `php -i | grep timezone` в консоли. Там будет скорее всего UTC стоять. Если так, то вам нужно будет заменить на Europe/Moscow: `php --ini` покажет в консоли путь до php.ini файла, его нужно отредактировать (часто под рутом/администратором) строчку date.timeone = "Europe/Moscow"

    Второе, что может быть, часовой пояс где-то выставлен в самом скрипте, тут нужно поискать по коду команду https://www.php.net/manual/ru/function.date-defaul...

    Третье, может быть, вы эти скрипты запускаете разными php? Скажем, один в консоли, второй через веб-сервер (php-fpm)? Тогда у каждого из них свой php.ini и их нужно отредактировать по 1му варианту выше.
    Ответ написан
    Комментировать
  • Необычный слайдер в форме параллелограмма

    Я не верстальщик, но опыт в вебе есть. Такое обычно верстается путем наложения «маски» в форме параллелограмма поверх картинки, а не путем вписывания картинки внутрь параллелограмма.
    p.s^ еще вам нужно ограничить ширину и высоту фотки, чтобы ее было видно всю, а не часть. Но ограничить с запасом, вдруг фотка будет больше в высоту, а не в ширину?
    Ответ написан
    Комментировать
  • Настройка виртуальных хостов на локальном сервере?

    Может вам не подойдет, но я бы посоветовал установить Mamp Pro. Там эта задача решается тремя действиями:
    1) добавить новый хост
    2) указать нужное имя
    3) указать физический путь до корня проекта.

    p.s: только после Мамп Про смог полностью насладиться разработкой под маком, а то до этого все перепробовал и выходили танцы с бубном похлеще, чем в линуксе.
    Ответ написан
    2 комментария
  • Что изучать веб-программисту самоучке, кроме самого языка?

    Это комментарий на обсуждение выше — ошибся веткой.

    > Изучать то, что вы не используете полезно, но скучно и быстро забывается.

    Смотря как подходить к вопросу изучения. Если на «меня заставили» или «мне это не пригодиться», тогда да. А если понимание, что это моя работа, мой хлеб, моё хобби и от этого я буду писать более лучший код? :)


    1) Если это работа, хлеб и хобби, то тогда это не «то, что вы не используете». Для этого случая я написал выше — более основательно подходить к изучению.

    2) Судя по вашим ответам, вы сами не знаете чего хотите. Это не дерзость, а просто факт. Все что связано с вебом, но не связано с «питон, вёрстка, базы данных, высоко нагруженные сайты, не стандартная логика» — это другие сферы жизни. Похоже, вам просто нужно хорошее интеллектуальное хобби, отличное от работы. Я прав?
    Ответ написан
    2 комментария
  • Как упростить спагетти?

    Наверное, я не правильно понял задачу. Если поясните, на примере, то помогу. Задача-то вроде как не сложная.
    Я понял так, что нужно проверить у каждого выключателя атрибут status и сверить с pass.
    Если так, то делается просто:
    1) добавляем к каждому контролу class=«control»
    2) пишем функцию:
    function isCheckPassed() {
        //  Получаем все контролы
        var controls = document.getElementsByClassName('control');
    
        // Пробегаемся по каждому контролу
        for(var i=0; i<controls.length; i++) { 
            // Если значения status не равно pass, то возвращаем false
            if (controls[i].getAttribute("data-status") != controls[i].getAttribute("data-pass")) return false;
        }
    
        // Если не было ни одного false, то значит true.
        return true;
    }
    


    P.s^ хранить ответы в атрибутах — не есть гуд. Если нужны советы с этим, пишите, помогу.
    P.s.s^ если задачу понял не правильно, прошу прощения.
    Ответ написан
  • Где взять базу данных или сервис для определения страны по почтовому индексу?

    А какая у вас конкретно задача стоит? Может быть подскажем вам другой способ ее решения.
    Ответ написан
    Комментировать
  • Что изучать веб-программисту самоучке, кроме самого языка?

    Нужно изучать то, что требуется. Если задались таким вопросом, значит почувствовали, что вот тут что-то делаете не так. Возьмите и загуглите "<язык программирования> как сделать <вещь>". Но при этом не забывайте изучать более полно, а не ограничиваться одной статьей и рваться в бой. Прочитали про технологию, прочитайте еще пару статей. Постарайтесь понять какие минусы и недостатки, как и где эта технология применяется. Как оптимизировать ее. Это и есть база. Плюс этого способа в том, что не требует сразу тратить много времени. По сути, вы будете делать тоже самое, что и сейчас, но более полно, более основательно подходить к изучению. Со временем накопиться тот самый бэкграунд.

    А всякий матанализ скорее всего и не пригодится. Дискретка еще возможно, но тоже редко. Согласитесь, 80% кодинга — рутина :) Если вы не используете этого в работе, то они вам не помогут, а когда столкнетеся с реальной задачей, то, наверняка, сами захотите ее загуглить.

    Давайте пример приведу. Появилась задача найти кратчайший путь между двумя точками на карте дорог. Загуглив эту тему, вы обнаружите уже решенные подобные задачи, сведение их к графами и использованию какого-то алгоритма, например Дейкстры. Но не торопитесь сразу же кодить. Почитайте какие алгоритмы для графов есть, какие из них применимы к вашей задаче, сравнение их с алгоритмом Дейкстры и т.д. После этого у вас появится та самая база. Правда только в сфере поиска кратчайшего пути в взвешенных графах. Но, аналогично поступая во всех подобных случаях, вы расширите свой бэкграунд и в целом.

    Если хотите самой-самой базы, то возьмите книгу по интересующему языку — это лучший способ. Просмотрите все системные функции (не заучивайте, а просто просмотрите, чтобы представлять возможности языка). У php-программистов частая ошибка — писать свои велосипеды (особенно по обработке массивов), хотя есть очень много нативных функций, которые работают быстрее.
    По алгоритмам — читайте то, что используете. Например, в вебе нужны сортировки, редко что-то сложнее. Поэтому погуглите алгоритмы сортировки.
    Изучать то, что вы не используете полезно, но скучно и быстро забывается.
    Прочитайте про паттерны, хотя инфа о них, как правило, трудно воспринимается, кроме тех, что используете реально. Например, active record для работы с базой. Последнее и будет полезным.
    Для улучшения практического скилла советую читать чужой код и смотреть скринкасты опытных людей. Такие вещи часто богаты мелкими-оптимизациями. А если автор еще и озвучивает ход своих мыслей при проектировании функционала, вообще замечательно. (Именно этим полезны курсы по питону на udacity, например.)

    p.s^ Старайтесь знать все о чем-то и что-то о всем :)
    p.s.s^ длинновато вышло :(
    Ответ написан
    2 комментария
  • [БД] Как лучше хранить атрибуты товара, если их количество известно и не будет меняться?

    Я бы сделал стандартным способом:
    Product
    — id
    — name
    — color_one_id
    — color_two_id
    — style_id
    — fabric_id

    И соответствующие таблицы: COLOR, STYLE, FABRIC. Если у вас не супер-посещаемый проект, то больше ничего и придумывать не нужно.

    Оптимизация 1. Если, например, стиль четко определен, то его можно хранить как ENUM.
    Оптимизация 2. Если вас напрягают допзапросы, то храните списки цветов, стилей и материалов в виде серверных конфигов (в виде простых массивов).

    По поводу клиентской части — используйте <select></select>.
    Ответ написан
    Комментировать
  • Java + WEB + OS X: на чем разрабатывать?

    Сам под Java не разрабатываю, но попробую ответить на часть вопросов.
    IDE — попробуйте NetBeans, она первоначально для java-кодинга была создана, если не ошибаюсь.
    Из «отличий Win/Lin платформ» вспоминаю такую проблему под линуксом (убунтой), что по умолчанию установлена java jdk не от sun, а openJDK. И чтобы что-то на java делать, приходилось удалять вторую и ставить первую. Помню, помучился с этим.
    Ответ написан
  • JQuery Ajax, пожалуйста дай мне CSV?

    Попробуйте забирать csv простым текстом, а затем воспользоваться каким-нить плагином. Например, code.google.com/p/js-tables/wiki/CSV или любым другим.
    Ответ написан
  • Пазл на HTML5

    Может быть, достаточно проверять положение мыши во время отпускания кусочка паззла? Смотрим, попадают ли координаты курсора мыши внутрь фигуры или нет. Потом сверяем id'шники у фигуры плейсхолдера и у перетаскиваемой фигуры (их нужно будет раздать заранее). Если id совпадают, то значит мы опустили нужный кусок на нужное место. Как вам такой вариант?
    Ответ написан
    2 комментария
  • А у всех такая система минусов ?

    «да сидим, читаем, видим минус стоит — ставим еще один минус, открываем профиль и минус в карму и неважно про что вообще комментарий, даже не читаем его».
    — Мне кажется, у этого человека просто хорошее чувство юмора:) да, попадаются те, кто минусует непонятно за что, но не стоит изливать здесь душу. Такое было с каждым хабраюзером (а с некоторыми и не раз). Нужно относится к этому стоически и относится к мнению других людей более толерантно. Сомневаюсь, что кто-то действительно минусует ни за что, иначе просто будет лень открывать профиль пользователя, а потом ещё тянутся мышью до минуса… нужна хоть какая-то мотивация к действию :) По-видимому, у минусующего своё отношение к вашему комментарию/статье, которое отлично от вашего, но ведь это нормально.
    Единственный настоящий недостаток минусования в том, что у человека отбирается право публиковать статьи. Это — да, это — настоящий изъян в системе кармооборота. Но это уже должна исправлять хабраадминистрация.

    p.s^ главное не отвечать на минусы минусами, не порождать новую агрессию (попахивает религией, ну и ладно). Верю, что такая «кармадоброта» спасет сообщество.
    Ответ написан
    1 комментарий
  • Архитектура SaaS

    Тоже задаюсь этим вопросом и склоняюсь ко второму варианту, но лишь в силу специфичности своего SaaS'a: работа без перерыва 24 часа в сутки, 7 дней в неделю и полная кастомизация / допиливание / разработка под нужды каждого конкретного клиента. Считаю, что будет такой разброс вариаций сервиса, что в одну базу не уместить. К тому же, имхо, расширяться проще — закупкой нового железа. Один клиент — один экземпляр, и никаких путаниц.
    Ответ написан
  • ПДД, изучение, как?

    1) Не знаю, видел только бумажные варианты.
    2) Пользовался только ГАИшным и quto.
    3) Есть симулятор вождения по городу (с соблюдением всех правил), но почему-то так и не смог его запустить. Вроде просто комп не потянул. Помнится, читал в обсуждениях, что он крайне не оптимизирован (делались бенчмарки и сравнивались с другими известными играми и получалось, что по графике уступает, а ресурсов жрет больше). На этом из интересного в этой сфере всё. По опыту могу сказать, что книжки с ПДД и N прогонов по билетам достаточно и для того, чтобы знать и для того, чтобы водить.
    4) Как всегда — идея есть, а времени нет.
    Ответ написан
    1 комментарий