Задать вопрос
  • Как передать значения?

    @Vitsliputsli
    Как вариант, передавать в переменную значения разделенные запятыми, в процедуре IN заменить на FIND_IN_SET, что-то вроде:
    select * from test where find_in_set(field, 'var1,var2,var3')>0;
    Ответ написан
    Комментировать
  • Почему не работает демон?

    @Vitsliputsli
    Не хватает, как минимум:
    #include <fcntl.h>
    
    char buf[7];
    Ответ написан
  • Как написать SQL-запрос для данной ситуации?

    @Vitsliputsli
    Для MySQL <=5.7
    select
        id,
        date,
        @s:=(case when type=1 then 1 else -1 end)*sum + (case when @t<>id then (@t:=id)*0 else @s end) sum
    from (
        select * from tt order by id,date
    ) t, (select @t:=1,@s:=0) t2
    Ответ написан
    Комментировать
  • Как не дать украсть пароль на удалёнке?

    @Vitsliputsli
    Либо 2FA, либо меняйте пароль каждый раз.
    Либо что-то извращенное, например, если сайт простой, то авторизовываться у себя, и передавать на удаленную машину куку, и не забывать закрывать сессию.
    Ответ написан
    Комментировать
  • Как запустить несколько php скриптов одновременно?

    @Vitsliputsli
    А в чем сложность? В php целый ворох команд, типа exec, для запуска внешних приложений. Используйте их.
    Хотя скорее всего этого и не нужно, но без описания задачи не угадаешь.
    Ответ написан
    Комментировать
  • При вводе команды "composer update" выясняется, что нету доступа к репозиторию, почему?

    @Vitsliputsli
    В чем может быть проблема?

    Написано же: Host key verification failed.
    Ответ написан
    Комментировать
  • Низкоуровневое форматирование диска в Linux?

    @Vitsliputsli
    Я не понял, какая разница между zero и null?

    zero - это ноль;
    null - это отсутствие значения.

    /dev/zero при чтении генерит поток нулей, при записи игнорирует все что в него попадает.
    /dev/null при чтении отправляет конец файла, при записи игнорирует все что в него попадает.
    Ответ написан
    Комментировать
  • Планировщик cron: не выполняется пользовательский скрипт.?

    @Vitsliputsli
    Откуда взялся /etc/cron.daily ? Скрипты оттуда стартуют только 1 раз в сутки в определенное время. Используйте обычный список крона.
    Ответ написан
    Комментировать
  • Как вывести значение в запросе если нет данных в базе?

    @Vitsliputsli
    Если я правильно понял, то вам нужен pivot. В MySQL специальной функции для этого нет, но можно так:
    select 
            max(case when id=1 then `like` end) user1,
            max(case when id=45 then `like` end) user2
        from `likes` 
        where id in (1,45)
        group by ''

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

    @Vitsliputsli
    doubleArray ($arr, $callback):
    В $arr передали массив [1,2,3,4,5,6]
    В $callback передали функцию function($x) {return $x *2;}

    Далее в doubleArray работает foreach
    foreach ($arr as $v) {
    yield $callback ($v);
    }
    Т.е. для каждого значения из [1,2,3,4,5,6] запускается функция $x *2.
    Если заменить yield на return, то получится обычная функция, она возьмет первое значение массива, умножит его на 2 и вернет его, при повторном вызове тоже самое. Но у нас генератор, yield поступит также сначала, но при повторном вызове функции он начнет не сначала, а продолжит с того места, где остановился.
    Ответ написан
    Комментировать
  • Как получить одну любую запись из таблицы, с условием что в связанной таблице не будет записи с определенным значением?

    @Vitsliputsli
    Вместо
    (`task`.`executor_id` != 5)
    нужно написать
    (`task`.`executor_id` is null)

    откуда взялось 5 совершенно непонятно.
    Ответ написан
  • Как предотвратить изменение переменной?

    @Vitsliputsli
    Но почему в переменной startTime значение изменилось?

    Потому что в startTime ссылка на объект полученный через $item->getStartTime();

    Потому что тут везде все работает по ссылкам?

    Не везде, но при работе с объектами применяются ссылки.

    Но как мне сделать, чтоб в startTime было постоянно 13:00

    Не изменяйте существующий объект startTime, создайте новый объект на основе времени в startTime. Что-то вроде:
    (new DateTime())
    ->setTimestamp($item->getStartTime()->getTimestamp())
    ->setTimezone($item->getStartTime()->getTimezone())

    Можно, конечно, и склонировать, но по сути это совсем другой объект, хоть вы и используете для его создания данные из startTime.
    Ответ написан
  • Как правильно оформить базу данных для сервиса чек листов?

    @Vitsliputsli
    users:
    - user_id
    - name

    checklists:
    - checklist_id
    - user_id - связь с users

    tasks:
    - task_id
    - checklist_id - связь с checklists
    - task_message
    Ответ написан
    Комментировать
  • Стоить ли уходить с работы?

    @Vitsliputsli
    Вы так пишите, будто хотите чтобы вас пожалели и поддержали. Это лучше к близким.

    Вы бы стали работать при таких условиях дальше, при том что уже работаете полтора года и такие вещи случается довольно часто?

    При условии 30к? Насколько это соответствует вашим навыкам никто здесь не знает.
    По поводу просьбы исправить свои косяки в нерабочее время - да, вы не обязаны этого делать в нерабочее время, но и с точки зрения работодателя вы по факту не сделали свою работу в рабочее время. И тем более, если исправление ошибки не ждало рабочего дня. Кто в итоге ее исправил? Вы в рабочий день? Или ваш начальник сам разбирался?
    Как вы этот конфликт будете решать зависит от вас, для кого-то это нормально, кому-то это компенсирует зарплата или иные моменты.

    Если же хотите не только погрустить, но и что-то делать, то как уже написали, идите на собеседования и от этого уже отталкивайтесь. Менять что-либо всем страшно, но без этого ничего не изменится, подумайте что будет через 5, 10 лет.
    Ответ написан
    Комментировать
  • Правильное разрешение конфиктов при мердже PR?

    @Vitsliputsli
    Как можно поправить конфликты PR, чтобы лишние коммиты не попадали в develop?

    Не коммитить лишнее в develop. Удалите лишний коммит.

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

    @Vitsliputsli
    У gitflow есть разные варианты реализации, но чаще всего да, подразумевается создание из dev. Причина проста: dev - это ветка разработки, там уже могут быть реализованные фичи, которых еще нет в master, лучше сразу начать разработку с более новой версии, чем потом решать конфликты при мердже.
    Ответ написан
    Комментировать
  • Как установить лимит на LEFT JOIN?

    @Vitsliputsli
    Если версия MySQL позволяет, смотрите аналитические функции.
    Если нужно на 5.7, то можно применить следующую магию:
    select 
            case when @userId<>user_id then @q:=1 else @q:=@q+1 end q,
            case when @q=1 then @userId:=user_id else @userId end user_id
        from (select * users_images order by user_id) t1, (select @userId:=0, @q:=1) t2
        where user_id<>@userId or (user_id=@userId and @q<=2)

    Здесь мы получаем из таблицы users_images по 3 элемента в каждой группе по user_id. Лимит установлен в самом конце <=2 - означает 3. Выглядит кошмарно, но решая такие задачи переменными mysql часто получается так.
    Ответ написан
  • Как организовать совместную разработку нескольких проектов в git?

    @Vitsliputsli
    Исходники проекта, ядра и модулей - это одно. Бизнес-проекты, для которых собираем билды из первых - это иное. Git - это система контроля версий исходного кода, она не занимается решением вопросов бизнеса. Поэтому не стоит через git решать вопросы кому какие модули были проданы.
    Если смотреть шире, то пусть разработчики пишут код (в одном репе, в нескольких репах: ядро и модули, как вам удобнее). А в каком виде собирать билд очередному заказчику пусть решают и делают другие люди (а если даже и те же, то все равно в рамках совсем иного процесса).
    Ответ написан
  • Как структурировать разработку веб-приложений?

    @Vitsliputsli
    Зачем? Что вы хотите получить? Что вам не нравится сейчас?
    Нет универсальных решений, чтобы все было хорошо, смотреть нужно по ситуации. К примеру, есть ли смысл контейнеризировать, на это вы сможете ответить только сами. Прикиньте плюсы и минусы, стоит ли сейчас тратить на это время, чтобы получить сомнительные (а может и нет) плюсы. Когда для всех разработчиков есть одинаковое готовое окружение - это хорошо, но когда эти все - 2 человека, стоит задуматься.
    Насчет схемы, опять же, что вы хотите ей решить, что есть у вас сейчас. Если этой схемой вводите ветку dev - отлично, будет где интегрироваться разработчикам. Сказать, что это должно быть must have - да, но для спринтовой релизной системы, при rolling releases и отсутствии постоянной необходимости интегрироваться - не обязательно.
    Если же хочется просто следовать трендам, то по этим вопросам docker и git-flow.
    Ответ написан
    Комментировать
  • Как правильно писать ТЗ?

    @Vitsliputsli
    ПМ обычно не пишут ТЗ, т.к. ТЗ - это техническое задание, т.е. подразумевает техническую экспертизу. Если же речь, про некие функциональные требования, то писать обычным человеческим языком, придерживаясь правила писать то, что хотим получить и для чего, а не как это реализовывать. Этого вполне достаточно. Будет ли на основе этих требований формировать ТЗ отдельный специалист или сам разработчик, это вопрос организации компании.
    Разработчик - это переводчик с человечьего языка на язык машин, если он не знает одного из языков, то беда. Поэтому этакий разработчик-интроверт, который не умеет общаться, но отлично пишет код, это проблема, т.к. переводчиком он работать не сможет.
    Но как бы вы не писали ФТ или даже ТЗ, без коммуникаций во время разработки результат может неприятно удивить, отсюда и стали развиваться различные agile-направления. Насчет "писать обычным человеческим языком" тоже не нужно бросаться в крайности, а то были на моей памяти "одаренные", которые удаляли блок-схемы описывающие бизнес-логику и писали их человеческим языком в меру своих возможностей, это, конечно, уже бред.
    Исходя из всего перечисленного, вполне возможно, что ваша проблема не в "правильном" написании ТЗ, а отсутствии коммуникаций и подхода "ничего не знаю, я сделал как в ТЗ" со стороны разработки. Проблема частая, но одним простым советом ее не решить.
    Ответ написан
    Комментировать