Задать вопрос
  • Как реализовать здачку в ООП?

    @Vitsliputsli
    Необходимо написать функцию которая принимает в качестве аргументов предполагаемый и реальный счёт, и возвращает целое число 0, 1 или 2 (нулевой, маленький или большой приз)

    Подскажите как сделать в ООП, как лучше сделать, саму суть.

    class Rewarding
    {
        const BIG_PRIZE = 2;
        const SMALL_PRIZE = 1;
        const ZERO_PRIZE = 0;
    
        private $bets;
        private $matches;
    
        public function __construct(BetsCollection $bets, Matches $matches)
        {
            $this->bets = $bets;
            $this->matches = $matches;
        }
    
        public function run() : void
        {
            /** @var Bet $bet */
            foreach ($this->bets as $bet) {
                /** @var Match $match */
                $match = $this->matches->getMatchById($bet->getMatchId());
                /** @var Score $score */
                $score = $match->getScore();
                $bet->setPrize($this->scoreBetCompare($bet->getScore(),$score));
            }
        }
    
        public function getBetsPrizes() : BetsCollection
        {
            return $this->bets;
        }
    
        private function scoreBetCompare(Score $betScore, Score $matchScore) : int
        {
            $bet1 = $betScore->getFirstCommandResult();
            $bet2 = $betScore->getSecondCommandResult();
            $match1 = $matchScore->getFirstCommandResult();
            $match2 = $matchScore->getSecondCommandResult();
            if ($bet1 === $match1 && $bet2 === $match2)
            {
                return self::BIG_PRIZE;
            }
            if (($bet1 > $bet2 && $match1 > $match2)
                ||
                ($bet1 < $bet2 && $match1 < $match2)
                ||
                ($bet1 === $bet2 && $match1 === $match2)
                )
            {
                return self::SMALL_PRIZE;
            }
            return self::ZERO_PRIZE;
        }
    }
    Ответ написан
    Комментировать
  • Как реализовать тест (quiz), что бы он работал раз в сутки?

    @Vitsliputsli
    Проверяйте время предыдущего прохождения теста. Зачем тут крон?
    Ответ написан
  • Как задать метод перебора всех возможных сочетаний элементов?

    @Vitsliputsli
    Возьмите суммарную высоту всех цилиндров, поделите на 3 - это будет идеальная минимально возможная высота (ИМВВ).
    Далее просто перебирайте все варианты по принципу, кидаем в первую группу пока не превысит ИМВВ, потом во вторую пока не превысит ИМВВ. И так для всех возможных комбинаций, соответственно фиксируя высоту самой высокой группы.
    Ответ написан
    3 комментария
  • Почему WebStorm не меняет line separator у всего проекта автоматически?

    @Vitsliputsli
    Это не IDE, это git, почитайте про выбор переводов строк в нем.
    Ответ написан
    Комментировать
  • Есть ли смысл к Yii2 подключать ORM RedBeanPhp?

    @Vitsliputsli
    Для оптимизации запросов к БД нужно проводить оптимизацию запросов к БД - это ручная работа. ORM не занимается оптимизацией, он призван ускорять разработку.
    Кроме того, в Yii2 своя собственная ORM, которая сильно сращена с ядром фреймворка, мне кажется попытка использовать другую ORM породит что-то монструозное. Но речь про Yii2, есть и более гибкие фреймворки.
    Ответ написан
    Комментировать
  • Зачем нужен сервер в цепочке клиент сервер база данных?

    @Vitsliputsli
    Потому что, backend - это не база данных, а бизнес-логика - это не данные.
    Но не для всех задач нужно клиент-серверное взаимодействие, не нужен сервер - не используйте, размещайте БД на клиенте.
    Ответ написан
    Комментировать
  • Как хранить два состояния одного объекта в базе данных?

    @Vitsliputsli
    Кроме дублирования таблиц что бы хранить Проверенную и Не проверенную инфу какие есть варианты?

    1) партиционирование;
    2) построить индексы.
    Ответ написан
    Комментировать
  • Объединяю в себе навыки ux/ui и frontend, как получить больше профита?

    @Vitsliputsli
    Имхо, ответ очевиден. Если хочешь развиваться как специалист - изучаешь рынок, смотришь то, что тебе нравится, находишь среди этого з/п, которые тебя устраивают (может придется искать компромисс между первым и вторым), если необходимо подтягиваешь требуемые навыки (в рамках текущей работы, а не в свободное время), профит.
    Открывать свое дело, фриланс, когда твоя квалификация не высокая - это "заморозка" своего развития как минимум.
    Топ 15 в своей области ничего не говорит о российской компании. Пусть хоть топ 5, она все равно может платить очень низкую заработную плату, а квалификация сотрудников будет соответствующей.
    Ответ написан
    Комментировать
  • Почему xdebuger не показывает содержимое переменных?

    @Vitsliputsli
    Судя по скриншоту, потому что программа не выполняется.
    Ответ написан
    2 комментария
  • Возникла ошибка при запуске программы?

    @Vitsliputsli
    error while loading shared libraries: libgo.so.13: cannot open shared object files: No such file or directory

    Вы переводили ошибку? Из текста ведь все понятно. Читайте про компиляцию, особенно про static и static-libgo.

    И вопрос как запустить эту программу на сервере в фоновом режиме то есть чтоб программа работала даже если мы выходим с сервера. В гугле много способов , какой легче и правильнее не знаю ?

    Легче: ./mygo &
    Правильно через systemd unit.
    Ответ написан
    Комментировать
  • Как принудительно установить пакет Composer?

    @Vitsliputsli
    Как мне проигнорировать эту проблему и все равно установить пакет?

    Никак, composer для того и создан чтобы управлять зависимостями. Если это не нужно, то зачем composer?

    Чтобы решить конфликт, понижайте minimum-stability и устанавливайте. Либо используйте более ранние стабильные версии.
    Ответ написан
  • Тестовые задания при приеме на работу. Что скажете?

    @Vitsliputsli
    Срок выполнения не равен времени трудозатрат. Срок 3 дня вполне нормален, с учетом, что вы, например, работаете, ходите на другие собеседования и за 3 дня сможете выделить всего несколько часов на задание.
    Трудозатраты в 24 часа неадекватны для тестового задания. Либо работодатель не умеет составлять задания, либо сразу показывает свое отношение к будущим сотрудникам, либо что-то еще в том же ключе. В любом случае, это определенным образом его характеризует. Подходит вам это или нет, решать только вам.
    Ответ написан
  • Как сделать так, чтоб поле id в таблице всегда начиналось с 1?

    @Vitsliputsli
    truncate
    Ответ написан
    Комментировать
  • Как выводить прогресс выполнения команды из терминала на сайт?

    @Vitsliputsli
    Самый простой способ:
    1) писать лог во временный файл на сервере (/tmp как правило в памяти, но могут быть сложности с правами доступа при SELinux) или pipe;
    2) через ajax время от времени читать этот файл/pipe.

    Или в варианте посложнее использовать unix-socket, tcp-socket, web-socket.
    Ответ написан
    Комментировать
  • Как правильно проверить наличие переменной?

    @Vitsliputsli
    if($result['value']); - не слишком хороший вариант, слишком много вариантов, всегда лучше уточнять, что конкретно нужно, так легче читать и дебажить код;
    if (isset($result['value']); - проверяет переменную на существование, буде false если она отсутствует или null;
    if($result['value'] != ""); - не строгая проверка на пустую строку в переменной, к примеру 0 будет преобразован в '', лучше использовать строгую проверку !==

    Выбирайте исходя из того, что проверяете, если переменная может принимать только значения:
    ""
    "qeqwe"
    "2323"
    и больше никаких, то лучше:
    if($result['value'] !== "");
    Ответ написан
    2 комментария
  • Насколько сложные проекты создают на php?

    @Vitsliputsli
    На php пишут проекты любой сложности, причем даже highload, и не обязательно web. И речь не только о легаси, а о новых проектах тоже. Причина простая - язык универсальный и мощный, достаточно быстрый, с высокой скоростью разработки. Иногда требуется что-то более быстрое, в этих случаях делают отдельные сервисы на другом языке, сейчас обычно на go. Go разумеется быстрее, имеет не высокий порог входа, но скорость разработки на нем гораздо ниже, чем на php, хотя в целом очень хорошая.
    Ответ написан
    Комментировать
  • Какая правильная философия работы с ветками в git?

    @Vitsliputsli
    master - только для стабильного кода, который уже работает на проде.
    Новую разработку ведите в другой ветке (например, dev). Как стабилизируете и проверите код в dev, мержите его в master.
    На следующем этапе разработку в dev разбивайте на отдельные feature, там уже можно посмотреть что-нибудь вроде git-flow.
    Ответ написан
    1 комментарий
  • Как организовать модель ветвления GIT и отливку на стейжинг?

    @Vitsliputsli
    1)
    мне хочется, чтобы после исправления бага, новый коммит проходил проверку QA, но как организовать стейжинг пространство в этом случае? Слить код в нестабильный девелоп и выкатиться на стейжинг мы не можем, поскольку изменения девелопа могут нестабильно сказаться на релизе№1. Как быть?

    А в чем проблема? Отдайте hotfix в QA пусть проверяют. Как в случае feature QA тестирует ветку release-..., так и в случае hotfix, QA тестирует ветку hotfix/... .

    2)
    откуда разраб должен отпачковываться в данном случае, от девелопа или от ветки с фичой №1?

    Если фича №1 зависит от фичи №2, а в dev фича №1 отсутствует, то очевидно, что от ветки фича №1, других вариантов я не вижу.

    3)
    Согласно agile вторая команда, работающая над фичой№2 не может отправлять свой код в девелоп, иначе это замедлит поставку нового релиза

    Наверное agile здесь не при чем. Если работаете по scrum, то каждый спринт это подготовка нового релиза и вы не можете работать над фичей не из этого релиза. git-flow ориентирован именно на такую работу.
    Если релизы плавающие, я так понял у вас так, значит не сливайте фичи не из текущего релиза в ветку из которой готовите релиз. Если не выходить за рамки git-flow, то не сливайте в dev ветки не из текущего релиза, QA пусть тестирует либо feature, либо по тегам, если работаете с pull-request, то апрувьте их, но не делайте merge.

    Из всего выше описанного, мне кажется у вас 1 единственная сложность, это вопрос как должны работать QA.
    Ответ написан
    3 комментария
  • Как составить запрос который выводит именинников?

    @Vitsliputsli
    with birthday as (
        select 'Ivanov' as name, date '1977-11-30' as birthdate
        union all
        select 'Petrov', date '1991-11-18'
        union all
        select 'Test', date '2000-01-01'
    ) 
    select 
        name, birthdate 
    from birthday
    where 
        make_date(extract(year from date '2019-11-01')::integer,
                  extract(month from birthdate)::integer,
                  extract(day from birthdate)::integer) 
            between date '2019-11-01' and date '2019-11-01' + interval '3' month
        or
        make_date(extract(year from date '2019-11-01')::integer + 1,
                  extract(month from birthdate)::integer,
                  extract(day from birthdate)::integer) 
            between date '2019-11-01' and date '2019-11-01' + interval '3' month
    Ответ написан
  • Правильно ли я понимаю суть Tests в Postman?

    @Vitsliputsli
    Без разницы где вы пишите тесты. Тест - это эмулирование некой ситуации и сравнение полученного результата с ожидаемым. Абсолютно не важно 200 или 400. Вы посылаете корректный запрос и ожидаете получить в ответ 200, получили - значит ок. Вы шлете запрос с ошибочными данными и ожидаете в ответ 400, получили что-то иное, значит fail. Т.к. это тоже некорректное поведение.
    Другое дело, что лучше сначала покрыть тестами стандартное поведение, и не только возвращаемые коды, но и данные, а затем уже исключения, ошибки и прочее.
    Ответ написан
    Комментировать