Задать вопрос
  • Как правильно проверить наличие переменной?

    @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. Т.к. это тоже некорректное поведение.
    Другое дело, что лучше сначала покрыть тестами стандартное поведение, и не только возвращаемые коды, но и данные, а затем уже исключения, ошибки и прочее.
    Ответ написан
    Комментировать
  • Где Вы принимаете и обрабатываете $_POST запросы?

    @Vitsliputsli
    В том контексте, где вы читали, имелась ввиду бизнес-логика. MVC - это по-сути деление кода на логические слои "ввод", "обработка", "вывод". Попробуйте, представить, что у вас взаимодействие пользователя не только через web, но и как-то еще, какое-нибудь api, или даже командная строка. Чтобы не дублировать код, вы выделите какую-то общую часть, это и будут модели, а различия ввода уйдут в контроллеры, и там уже в них будете обрабатывать http-запросы или аргументы командной строки.
    Но не нужно мои слова понимать буквально, как ту статью. К примеру, я не имел ввиду, что api - это только контроллеры, в какой-то момент вы решите что нужны собственные модели для api, да и вообще нужно выделить его в отдельный модуль.
    Схема MVC, как и паттерны проектирования - это способы управления сложностью. В данном случае мы боремся с сильным зацеплением, т.е. зависимостью классов друг от друга во многих частях. Чем меньше таких зависимостей, тем проще будет расширять код. Писать api к правильно разделенному по mvc коду достаточно легко, но если везде будут произвольно натыканы обращения к данным post-запроса, то все эти куски придется переписывать. Продумывайте как будете расширять проект.
    Ответ написан
    Комментировать
  • Есть ли базы данных, хранилища, бэкенды для конфиденциальных данных?

    @Vitsliputsli
    Посмотрите в сторону мандатного контроля, это в первую очередь решения на основе SELinux, и основные СУБД их поддерживают.
    Ответ написан
    3 комментария
  • Почему PostgreSQL не использует индекс?

    @Vitsliputsli
    Постройте составной индекс по обоим полям.
    Ответ написан
  • Как написать функцию?

    @Vitsliputsli
    Переводите второй аргумент в троичную систему, а цифры заменяйте на буквы abc при выводе. Либо в другую, если букв не 3.

    Нет, ошибся, не соответствует системе счисления, проще циклами пробежаться.
    Ответ написан
  • Linux для начинающих?

    @Vitsliputsli
    Ставьте Ubuntu или лучше Debian (в нем меньше косяков, но и ПО более старое), с ними проще на первых порах, т.к. требуется меньше знаний и сообщество большое. Ставьте систему по-умолчанию, стараясь на первых этапах ничего не менять в ней, иначе погрязнете в починке ненужных проблем. Относитесь к этой системе как к тестовой, которую не страшно поломать, поэтому делайте бекапы важных данных. Погружаетесь в работу с консолью и демонами постепенно, только так вам это не опротивит после первых же проблем, которые вы не сможете решить, а они будут блокировать всю работу.
    Не слушайте советов по установке базовой системы без GUI, такое советуют только для самоутверждения, типа "вот, ещё один не осилил, какой значит я молодец". Как и при любом изучении нового, действуйте постепенно. Если будете заниматься разработкой, то никаких vim, ставьте нормальную IDE, если писать скрипты для администрирования, то без разницы по большому счету.
    Осваивайте постепенно, погружаясь в те области, которые вам нужны для работы прямо сейчас, ликвидируя пробелы которые мешают, т.е. как при любом изучении нового. И без попыток понять все и сразу.
    Ответ написан
    Комментировать
  • Почему не работает mkdir на сервере apache?

    @Vitsliputsli
    Что возвращает функция? А вообще, наверное имелось ввиду:
    mkdir('/var/www/html/page', 0777, true);
    Ответ написан
    3 комментария
  • Берут ли на Java стек людей с других языков?

    @Vitsliputsli
    Есть 2 категории программистов. Одни пишут с помощью языков программирования, другие пишут на языке. Для первых - язык лишь средство, для вторых - основополагающая вещь, на которую они готовы молиться, хотя в некоторых случаях знание глубокой специфики даёт преимущество, но и делает заложником языка. Также как вторые рассуждают и те, у кого не вышло стать программистом.
    Но работадатель скорее всего не станет вас брать и надеяться что вы изучите новый язык за его счёт, поэтому изучите самостоятельно. Если у вас хороший опыт на php7, динамическую типизацию используете когда это нужно, и разрабатывали демонов, то у вас не будет проблем. Половина "специфики" вам уже известна, пусть и в другом виде, половину вы изучите быстро. Далее идите смело работать, будет надо, соврите, что уже работали с новым языком (не рекомендую врать на собеседовании, но здесь проблема в стереотипах). А джун и миддл очень абстрактные словечки и в каждой компании будет свое понимание. Равно как и требования у проводящих собеседования.
    Ответ написан
    Комментировать
  • Соединение php сайта с linux сервером?

    @Vitsliputsli
    Также как без PHP, вызывайте нужные системные команды через exec, shell_exec, system по вкусу.
    Ответ написан
  • Почему в контроллерах MVC-фреймворков на PHP несколько действий?

    @Vitsliputsli
    зачем объединять несколько действий в один класс? Почему бы не сделать все действия одиночными? Единственная причина, которую я сейчас вижу (по крайней мере, в Yii, который я использую), — желание разместить сходные по тематике действия в одном контейнере

    Потому что практически все фреймворки используют ООП, а MVC здесь ни при чем. Заменить все методы классами бредовая фантазия, и дело не в более мелком дроблении или сборке схожего вместе, между объектом и методом принципиальная разница. Контроллер такой же объект, его экшены - методы этого объекта. Сколько у объекта методов зависит от его логики, а не от деления данных (может 1, может 10, а может 0).
    Ответ написан
    Комментировать
  • Сколько потоков в php?

    @Vitsliputsli
    Почитайте про pthreads. Что касается "Zend версии", то наверное имеется ввиду, что PHP должен быть скомпилирован с Zend Thread Safety, это обязательно для pthreads.
    Ответ написан
    Комментировать
  • Как сделать так, чтобы изменение содержимого директории, которая была заменена такой же по названию, было замечено гитом?

    @Vitsliputsli
    Либо добавляемая директория идентична предыдущей, либо она в игноре.
    Директории отличаются? Что в .gitignore? Что пишет git status?
    Ответ написан
    Комментировать
  • Sql и субд для начинающего?

    @Vitsliputsli
    На начальном уровне различий практически нет, поэтому можете изучать. Другое дело изучение без практики невозможно, а практика всегда будет на каком-то диалекте.
    Основы будут почти идентичны и на MySQL, и на PostgreSQL, и на Oracle. В самом начале Oracle "радует" отсутствием limit, и старым багом идентичности '' и null. Но чем больше будете погружаться тем больше будете видеть отличий как синтаксических, так и принципиальных.
    Ответ написан
  • Как перейти на разработку в команде?

    @Vitsliputsli
    Лучше, конечно, сразу на будущее поставить gitlab. Но в принципе, можете обойтись git и хорошим клиентом к нему (в первую очередь для diff). PHPStorm вполне достаточно. Для code review не так уж и нужны доп.инструменты. Даже не заморачивайтесь pull request, отдельных веток и мержа их в dev вашими силами вполне достаточно.
    Ответ написан
    Комментировать