• Как группировать измененные файлы в git?

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

    Decadal
    @Decadal
    Создать ветку: git checkout -b your_branch_name
    После внесения изменений проверьте что они отслеживаются гитом: git status должен показать что-то красное (untracked files or modified files)
    Если есть что-то красное - вы на правильном пути.
    git add .- отметит все файлы в текущем репозитории как подготовленные к коммиту. В git status они будут зелёного цвета.
    git commit -m "some commit message"- вот теперь вы закоммитили.
    Если просто написать git push и ваша ветка перед этим не была на ориджин, в консоль выдаст сообщение вроде "такой ветки на ориджин не найдено. Чтобы запушить на ориджин, выполните команду ....(команда)."

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

    Decadal
    @Decadal
    клонируйте мастер
    Обычно мастер это ветка со стабильным, проверенным кодом, принятым на прод. Разработки других разработчиков ведутся в их ветках, и вам нет необходимости беспокоиться о самом последнем коммите куда-либо кроме мастера - потому что любой код в итоге либо попадет в мастер, либо будет отброшен.
    Ответ написан
    Комментировать
  • Как посчитать количество выполненых задач каждым работником в JS?

    Decadal
    @Decadal
    Тоже через команды MySQL

    есть агрегирующая функция COUNT в sql.
    select COUNT (1) from completed_tasks ct WHERE ct.user_id= "конкретный айди пользователя"
    если нужно считать по каждому пользователю, то есть способы сгруппировать записи по идентификатору пользователя, например GROUP BY ct.user_id
    Если вы уже взялись за базы данных и PHP то знайте, что задачи статистики, группировки и всего такого - почти всегда лежит на базах данных и серверных языках.
    Ответ написан
    1 комментарий
  • Как работает функция построения дерева?

    Decadal
    @Decadal
    if(!$node['parent']) {
          $tree[$id] = &$node;
        }

    если у текущего элемента нет предка, значит, вы помещаете текущий элемент в $tree по ссылке. То есть, изменение этого элемента в $tree повлияет на $dataset и наоборот, изменив этот элемент в dataset вы измените tree.
    рекомендую заменить первую строку в фрагменте кода, который я выделил, на if(!isset($node['parent'])) {
    далее:
    $dataset[$node['parent']]['childs'][$id] = &$node;

    если предок есть (то есть, это не рутовый элемент), вы добавляете в изначальный dataset информацию о том, что у его элемента, идентификатор которого равен предку текущего элемента, есть child, и заносите туда текущий элемент. Поскольку перед этим вы сохранили в tree элемент node по ссылке, то эта операция также изменит и структуру переменной tree.
    Обратите внимание, что, убрав & из выделенного фрагмента, вы получите тот же результат, что и с ним.
    Ответ написан
    1 комментарий
  • Как справиться с проблемой удаления Linux с последующей установкой Windows?

    Decadal
    @Decadal
    Вам нужно в биосе поменять приоритет загрузчика (поставить usb) и вставить флешку с установщиком винды (правильно настроенным установщиком).
    Также переключите boot mode в режим uefi. Это все
    Ответ написан
  • Смысл хранить «секреты» приложений через переменные окружения?

    Decadal
    @Decadal
    Разница в том что конфиги под гитом а окружение нет.
    Потому что конфиги это инструкции "как настроить" приложение, а окружение - сами значения, которые нужно передать в настройки. Итак, конфиг знает, в каком виде и формате приложение принимает, например, настройки коннекта к базе(connection string например). А окружение это значения портов конкретной базы, пользователь конкретной базы, пароль конкретной базы и т.д.
    Ответ написан
    Комментировать
  • Почему не работает .gitignore?

    Decadal
    @Decadal
    gitignore работает немного не так. В нём указываются файлы, которые вы бы хотели менять локально, но не хотели бы их загружать в гит.
    А если в гите что-то изменилось, вы обязаны это получить к себе при git pull
    Ответ написан
    2 комментария
  • Какой подход использовать для взаимодействия приложения на C# и сервера на PHP?

    Decadal
    @Decadal
    Мне не совсем понятна архитектура, при которой возможен вариант 1 - означает ли это, что PHP и C# оба лежат на сервере? Если имеется в виду, что вы напишете консольные команды которые будут запускаться на клиенте, то однозначно не стоит, выбирайте вариант2. Потому что судя по C#, клиентское приложение вероятнее всего ставится на Windows, а доустанавливать интерпретатор PHP вместе с клиентским приложением это сильно излишне.
    Ну и помимо того, REST API это старый, добрый, проверенный метод общения, а запуск консольных команд с чтением их вывода или с побочными эффектами выглядит как костыль, он имел бы место, если это какая-то системная утилита от стороннего разработчика, которую просто использовать из терминала и сложно использовать как SDK.
    Ответ написан
  • Как обратиться к таблице если для неё не создана сущность?

    Decadal
    @Decadal
    Если вам нужен маппинг Doctrine как результат запроса, то придется создать сущность под связанную таблицу. А если вы хотите получить просто массив данных то можете попросить у EntityManager connection и выполнить plain SQL запрос. В пределах DQL либо всё, либо ничего. Частично не выйдет
    Ответ написан
    Комментировать
  • Как хорошо ИЗУЧИТЬ javascript?

    Decadal
    @Decadal
    Что значит "два года пишу"? Это плохой показатель. Я так на английском уже "десять лет пишу" но экспертом по английскому языку не стал. Мало просто писать код на этом языке, мало просто читать книги про язык. Нужно сочетать всё это, интересоваться языком, который вы учите, постоянно следить за его развитием. Нужно обретать знания и применять их на практике - и, как только вы хорошо изучите JavaScript, у вас не будет в этом никаких сомнений.
    Ответ написан
    Комментировать
  • Как правильно сделать отвязывание аккаунта?

    Decadal
    @Decadal
    Есть понятие Primary Email - это контактная информация, куда направляются все запросы (по смене пароля, уведомления и тд). При вашей архитектуре email в users является таким Primary Email, а в networks - список secondary emails. Не самое красивое решение в итоге, но у вас есть следующие варианты:
    1) стянуть связанные соц сети и выбрать какой-нибудь email оттуда
    $networks = $this->networkRepository->findBy(['clientId' => $command->clientId]);
    foreach ($networks as $net) 
    {
    // здесь логика по которой вы решаете какой именно secondary email делать primary. 
    // если решения нет (например нет ни одного акка с email), выбивать ту же ошибку что и при count === 1
    }
    // решение есть, значит получен некий email
    
    //задаете новый primary, желательно перед этим проверить что нет юзера с таким праймари
    $user->setEmail($email);


    2) предложить пользователю самостоятельно выбирать Primary Email в случае если он пытается отвязать аккаунт
    Ответ написан
  • Как правильно добавить файлы миграций в gitignore?

    Decadal
    @Decadal
    Пустые папки гит по умолчанию не индексирует. Разместите в папке миграций файл .gitkeep или .gitignore с контентом
    *
    !.gitignore
    Ответ написан
    Комментировать
  • Какие есть варианты дебагинга если на прод. отваливается сайт?

    Decadal
    @Decadal
    Сентри. Ставьте сентри, это как логи, только с удобными обертками.
    https://sentry.io

    spoiler
    koBRALz.png
    Ответ написан
    Комментировать
  • Какая команда в phpstorm отвечает для перемещения вкладок вправо и влево?

    Decadal
    @Decadal
    Меня самого заинтересовал этот вопрос. Немного поискав, я нашёл такую информацию: в чистом виде PhpStorm, WebStorm и прочие продукты JetBrains не поддерживают перемещения вкладок хоткеями. Но есть плагин:
    plugins -> TabMover.
    он позволяет перемещать табы такой комбинацией - ctrl+alt+shift + left or right arrow на винде, на линуксе лично у меня такая комбинация не сработала из-за пересечения с системными комбинациями, пришлось использовать это: ctrl+win+alt+shift + left or right arrow
    Ответ написан
    1 комментарий
  • Есть ли различие между IoC и DI?

    Decadal
    @Decadal
    IoC более общее чем DI. DI - частный случай IoC.
    https://stackoverflow.com/questions/6550700/invers...
    Ответ написан
    Комментировать
  • Почему count возвращает постоянно 0?

    Decadal
    @Decadal
    user_online - числовое поле или строковое? Типы данных скорее всего не совпадают. Поставьте кавычки в запросе.
    SELECT COUNT(*) FROM users WHERE user_online = '1'
    Ответ написан
    4 комментария
  • Как правильно отвалидировать поле в yii2?

    Decadal
    @Decadal
    ['cities', function ($attribute, $params, $validator) {
    	if(is_array($this->$attribute)) {
    		if(empty($this->$attribute)) {
    			$this->addError($attribute, 'The array shouldnt be empty');
    		}
    	   foreach($this->$attribute as $item)  {
    	      if(!is_int($item)) { 
    	         $this->addError($attribute, 'The array contains not an integer values');
    	         break; 
    	      }
    	   }            
    	}
    }],
    Ответ написан
  • Почему не загружается путь к картинке в таблицу yii2?

    Decadal
    @Decadal
    У вас модель странная. Она хранит инстансы файлов, а не их пути. Во первых перед сохранением модели стоит поверить, все ли хорошо с файлами, а во вторых в поля модели надо записывать строки с путями к картинкам явно. Yii не сделает из файла-объекта строку.
    Кстати лучше было бы разбить это на две модели - собственно, модель для файлов, которая наследуется от yii base model. И модель для клиентов, которая наследуется от active record и содержит поля diploma_img_path and passport_img_path
    Ответ написан
    Комментировать
  • Как использовать анонимные функции в php?

    Decadal
    @Decadal
    "если анонимные функции в yii2 указывают в конфигах, значит их кто-то вызывает"

    Создаете свой Grid - тогда создавайте и обработчик, который будет вызывать ключ tableName, предполагая, что он может быть Callable.

    но мой вам совет - просто оставьте это строкой и делайте tableName => UserRecord::tableName()
    Ответ написан
    4 комментария