Задать вопрос
  • Как правильно завершить работу скрипта PHP?

    Decadal
    @Decadal
    >Существуют ли другие способы пропустить выполнение die() или исключения следует обрабатывать иначе? Если да, то как?

    замените die на return и поменяйте его местами с print_r. Вам на самом деле не нужно насильно обрывать работу php - как только код выполнится, обработка запроса завершится сама.
    Если вы опасаетесь что где-то ниже по коду выполнится какое-то действие, которое должно выполниться только в случае успешного завершения - добавьте туда дополнительное условие которое будет проверять результат, либо перехватывайте исключение именно там, а в catch оставьте пустоту. И всё будет хорошо.
    Ответ написан
    4 комментария
  • Папка .git занимает 200гб?

    Decadal
    @Decadal
    как и любая другая директория, .git хранит то что вы туда когда-либо положили. Не напрямую, конечно, а посредством утилиты git.

    если удалить эту папку, вы потеряете: 1) локальную историю коммитов, бранчей, сташи и тд - всё что связано с разработкой и гитом, если коротко. 2) потеряете origin, если он не указан в гите глобально или в конфигах в ide. Т.е. будет непонятно какой удалённый репозиторий у этого проекта.
    Проект будет работать, но переключиться на другую ветку будет нельзя (тоже думаю очевидно), да и не будет никаких других веток.
    Ответ написан
    Комментировать
  • Мобильное приложение на базе Интернет магазина?

    Decadal
    @Decadal
    коротко: да, реально, но сложно.

    для мобильного приложения нужно делать отдельную апишку, особенно если у вас MPA, в котором в ответах от бекенда генерируется html а не json.

    Реально ли сделать быстрое приложение?

    Правильный вопрос таков: реально ли найти специалистов, которые готовы сделать быстрое приложение и быстрый бекенд в заданных условиях? Скорость работы приложения зависит как от организации поставки данных на бекенде, так и от внутренней оптимизации.

    Хотелось бы создать приложение существующего интернет магазина, не переделывая и не переписывая с нуля сайт.

    надеюсь, эта фраза не означает "мы ничего не будем делать на бекенде". Дописывать под потребности мобильного приложения придётся 100%.
    Ответ написан
    3 комментария
  • Git: как игнорировать файл при пуше?

    Decadal
    @Decadal
    как игнорировать файл при пуше?

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

    В обоих файлах должны отслеживаться изменения при коммите.


    оффтоп: если должны отслеживаться, значит, должны и попадать в гит. Вы делаете что-то странное. Будет лучше, если вы опишете, какую проблему решаете.
    Ответ написан
  • Как примерно лучше реализовать?

    Decadal
    @Decadal
    Есть несколько способов. Из дешёвых - cron на секунду, который каждую секунду запускает скрипт и проверяет лоты. У такого варианта есть ограничения - он должен отрабатывать очень быстро.
    Можно обойтись timestamp-ами в базе и раз в некоторое время выбирать все истекшие лоты за последний неотработанный отрезок времени, ограничив также какое-либо взаимодействие с истекшими лотами в остальных частях системы.
    Ответ написан
    9 комментариев
  • Как в MVC правильно связать Controller и Model?

    Decadal
    @Decadal
    MVC это про идею, не про реализацию.
    Вы можете реализовать через глобальный контейнер, если приложение не предполагается развивать и поддерживать большой командой. Можете упороться и сделать гибкую, продуманную конфигурацию оркестрации контроллерами, моделями и вьюхами и получить свой вариант Симфони. Техническая правильность решений уступает целесообразности их реализации.
    Ответ написан
    Комментировать
  • Отличие сеттеров от геттеров?

    Decadal
    @Decadal
    Ээээ...ээм.. разницу можно понять из определения.
    Сеттеры задают значение приватному полю класса. Геттеры возвращают значение приватного поля класса, потому что поскольку поле приватное, узнать его значение другим путем не выйдет
    Геттеры и сеттеры работают в паре
    На моей памяти вы первый человек который интересуется их отличиями.

    Предназначение геттеров и сеттеров в языках с динамической типизацией(ваш случай) в том чтобы иметь возможность строго указать тайп хинтом, какой тип значений может принимать поле.
    При статической типизации в сеттерах остаётся возможность контролировать, как происходит запись и выдача значений в то или иное поле, если вы хотите чтобы запись и чтение значений проходили с дополнительной обработкой. Например при setPassword можно было бы сразу хэшировать значение пароля.
    Ответ написан
    2 комментария
  • Нужно ли при 401 ошибке делать редирект на страницу логина/пароля?

    Decadal
    @Decadal
    Ну, если вы бэкенд, то редиректить или нет, решает фронт. Вы ж не знаете какие ещё параметры он хочет указать? Например он хочет ещё дополнительно передать урл на который надо перекинуть после логина - это важно если пользователь кидает ссылку в мессенджер другому юзеру, а тот с телефона не залогинен. Удобно когда после логина он всё-таки перейдет по ссылке а не на главную.

    А бекенд только отправляет респонс с кодом 401 и на этом его работа закончена
    Ответ написан
    Комментировать
  • Чья обязанность проверять переменные(isset)?

    Decadal
    @Decadal
    в MVC нет чёткого определения, куда отнести валидацию. В то же время, MVC не описывает абсолютно всё приложение, только идею. В популярных фреймворках типа Symfony и Zend есть специальные штуки - формы, которые собирают в себя массив пришедших данных, а возвращают заполненный объект, если данные прошли проверку, либо возвращают массив ошибок. Часто практикуют использование формы в контроллере: там сеттятся данные из реквеста в форму, затем происходит проверка формы на наличие ошибок, и если они есть, контроллер возвращает сообщение об ошибке, иначе забирает заполненный объект с данными и передает его в нужный сервис.
    Ответ написан
    Комментировать
  • "$" не является внутренней или внешней командой. Nodejs. что делать, А?

    Decadal
    @Decadal
    Знак доллара - распространённое обозначение для команд, которые предлагается выполнять в терминале.
    Попробуйте ввести команду без знака доллара:
    node -v
    Ответ написан
    1 комментарий
  • Как обновить файлы в мастере?

    Decadal
    @Decadal
    git reset --hard origin/master
    Но учтите что эта команда сломает все незакомиченные изменения которые трекаются гитом. Выполняйте ее на копии исходников прода
    *Мастер - ветка на которую смотрит прод обычно. Если у вас не так, укажите нужную ветку
    Ответ написан
  • Что мотивирует IT специалистов кроме ЗП?

    Decadal
    @Decadal
    Меня бы мотивировало уменьшение рабочих часов. Кажется, в Японии проводят эксперимент по снижению рабочих часов, что привело к необычайной эффективности сотрудников. У нас, конечно, совсем не тот менталитет, но очень часто задумывался о том, что зарабатываю деньги без понимания, когда я уже наконец остановлюсь в своем бешеном темпе, замру, подумаю, на что можно потратить деньги или где отдохнуть. Было бы очень круто иметь четыре рабочих дня в неделю, пусть даже с уменьшением зарплаты.
    Все равно не получится работать все сорок часов в неделю эффективно. А вот провести время с родными или заняться своими хобби - лично мне помогает хорошо отдохнуть и потом с большим интересом вникать в задачи и делать свою работу
    Ответ написан
    Комментировать
  • Как победить противный CORS в Yii?

    Decadal
    @Decadal
    Насколько я понимаю, OPTIONS запросы Yii , вообще, должен разруливать самостоятельно.


    если вы сами это не настроите, оно не будет ничего разруливать.

    Нужно чтобы любой опшнс запрос уходил на роут одного и того же контроллера который 1) не требует авторизации 2) возвращает все нужные заголовки. Настроить это универсально с помощью роутинга yii2 мне так и не удалось, пришлось хардкодить разные уровни роутов и переадресовывать их на единый метод.
    Ответ написан
  • Как получить переменную php?

    Decadal
    @Decadal
    $props = json_decode($result['properties'], true);
    echo $props['userdata']['phone'];
    Ответ написан
    Комментировать
  • Есть возможность откатить и слить изменения в Git?

    Decadal
    @Decadal
    Так вы не откатились. Вы переключились.
    Чтобы откатить ветку до определенно коммита, нужно делать reset.

    Если солью теперь эту ветку в мастер, сработают ли эти изменения?

    нет, не сработает. Вам нужно делать либо реверт, либо ресет
    Ответ написан
  • Существуют ли в каких-либо СУБД такое понятие, как условный уникальный индекс?

    Decadal
    @Decadal
    Вы можете сделать Composite Unique Key по полям addr, city_id или addr и group_id
    Например:
    ALTER TABLE Line ADD UNIQUE KEY `uk_address_city` (addr, group_id);


    в случае, если вам какая-то информация нужна из другой таблицы, вероятно, ваша база данных нуждается в дополнительной нормализации. Вы не должны ограничивать запись в одну таблицу на основании каких-либо значений из связанной таблицы, потому что тогда появляется неоднозначная связь
    Ответ написан
  • Построчный вывод данных БД. Как это сделать?

    Decadal
    @Decadal
    Код, который составлен на php, работает полностью корректно.
    Некорректно отображение вывода.
    Вам нужно разделять каждый вывод строки HTML разметкой, чтобы был визуальный эффект
    К примеру:

    // здесь завершается php
    ?>
    <table>
    <?php 
    while($row = mysqli_fetch_assoc($res)) : 
    ?>
    <tr><td>
    <?= $row['headline'];?>
    </td></tr>
    <?php endwhile;?>
    </table>
    Ответ написан
    9 комментариев
  • Могу ли я одновременно направлять ответ клиенту и body и делать redirect?

    Decadal
    @Decadal
    Если клиент это браузер, то нет
    Редиректы это заголовки, которые вы отправляете в ответе. Увидев редирект, браузер игнорирует тело и совершает редирект.
    Ответ написан
    Комментировать