Задать вопрос
  • Что лучше использовать для real time приложения на laravel?

    @EvgeniiR
    https://github.com/EvgeniiR
    1. Swoole/Amp/Wokerman/ReactPHP если на PHP. В целом не очень популярные инструменты, но справедливости ради замечу что на Swoole работают весьма крупные приложения в Китае, тот же baidy, tencent, игрухи всякие и т.п.

    2. Centrifugo/Roadrunner как простой гейтвей. Не так давно вышел, более известен, вроде никто не жалуется(я не использовал).

    3. Самописный гейтвей для вашей аппки на Node.js/Go etc. Надежный вариант для которого всегда можно найти разработчиков(в отличии от первых двух).

    p.s. Варианты на PHP годятся лишь чтобы работать с websocket тем-же. Чтобы не возникало желания таким образом "ускорить" своё приложение - вот вам ещё немного разбора полётов от автора php-service-bus со сноской почему прикручивать асинхронщину к существующим мейнстрим-php-фреймворкам так себе затея
    Ответ написан
    Комментировать
  • Использовать модульность или просто раскидать по директориям?

    @EvgeniiR
    https://github.com/EvgeniiR
    Админская и клиентская часть.
    Внутри себя разделы, которые можно вынести в модуль пересекаются и взаимозависимы

    Конечно пересекаются. Потому что это не разные модули.
    Система делится на модули исходя из зависимостей, а не по тому как все на UI выглядит.

    Может достаточно по директориям раскидать контроллеры и вьюхи? Моделей мало. С роутами наверное можно будет по-ходу дела, что-то придумать.

    Для чего "достаточно"? Чего конкретно этими действиями хотите достичь?
    Ответ написан
  • Как сервер находит запрашиваемый файл?

    @EvgeniiR
    https://github.com/EvgeniiR
    При запросе, например html файла, сервер или ОС ищет файл циклом

    Зачем, если есть путь?

    С массивами та же история? Например чтобы добраться до 11 элемента, просматриваются все предыдущие?

    В связном списке - да, перебором. В хэш-таблице обычно без перебора, т.е. за O(1) в среднем (если нет коллизий). Зависит от алгоритма.
    Ответ написан
    1 комментарий
  • Почему в React такая схема?

    @EvgeniiR
    https://github.com/EvgeniiR
    Рендерится то что вернётся из функционального компонента App().
    App() рендерит div внутри которого 3 раза рендерится то, что вернёт компонент Welcome(), который, в свою очередь, возвращает заголовок с приветствием.
    Вот такой порядок. В чем проблема?

    Если через ReactDOM отрендерить тег Welcome мы получим один заголовок с приветствием вместо трёх
    Ответ написан
    2 комментария
  • Где найти ресурс с подборкой "правильных" решений на PHP?

    @EvgeniiR
    https://github.com/EvgeniiR
    как правильно реализовать авторизацию с токенами, сделать корзину в онлайн магазине и.т.д,

    Есть бесконечное число вариантов сделать корзину в онлайн магазине, и бесконечное число переменных влияющих на принятое решение.
    Вы знаете что такое комбинаторный взрыв? Это именно то что произойдёт если вы будете пытаться запомнить все реализации любых задач, не говоря уже о том что любая новая задача остаётся по прежнему уникальной(в какой-либо степени), и просто копирование решения из похожей задачей почти никогда проблемы не решит, а в связи с упомянутой выше проблемой в виде множества обстоятельств влияющих на набор выбранных решений, слепое их копирование скорее сильно навредит развитию проекта, чем поможет в сколь-либо обозримом будущем.

    Если хотите научиться делать вещи хорошо, подумайте над тем что нужно чтобы делать вещи хорошо, и как отличить лучшее решение от худшего, на что нужно ориентироваться при выборе решения, какие есть базовые приёмы техники и критерии качества. Коротко говоря - возьмитесь за базовые вещи. Начните с книг.

    P.s. кстати, последнее что я смотрел про проектированию корзины - вот. Полезный ролик чтобы взглянуть на вещи по новому, но не для того чтобы копировать решение. естественно.
    Ответ написан
    4 комментария
  • Как наследоваться от 2 абстрактных классов С#?

    @EvgeniiR
    https://github.com/EvgeniiR
    Стоит задача описать 3 абстрактный класс который наследует в себе 2 класса

    Задача изначально поставлена некорректно. Само по себе наследование двух абстрактных классов никакой практической пользы не принесёт, и не даёт никакой уникальной функциональности которую невозможно реализовать через наследование.

    Если вам кто-то даёт такие задачки под видом "задачек по ООП" - лесом его надо слать. Все эти наследования Customer от User, User от Human на практике в 99% случаев не нужны, т.к если условно модуль хочет себе Покупателя(Customer), ему нет разницы, Человек(Human) там, или робот и т.д, а любое наследование это жесткие иерархии классов в коде, лишняя связность(чит. Coupling) и лишние зависимости между компонентами, что делает код более сложным для понимания и изменения.

    Зачем в данном случае, наземно-воздушную MaskCar наследовать от StandartCar и StandartPlane? Всегда ли она будет вести себя так же как её родители, не будет ли нарушений принципа подстановки(см. Liscov Substitution Principle)?
    Если MaskCar планируется изменять независимо от родителей, даже если по каким-то причинам на текущий момент она реализует те же методы, нет никаких проблем определить те же методы в новом классе заново, и при необходимости реализовывать интерфейсы Car и Plane(ICar и IPlane в вашем случае).
    Если нужно поведение родителей, в большинстве случаев наследование можно без проблем заменить композицией, если речь идёт о C#, можно также очень удобно решать такие проблемы через делегирование(https://metanit.com/sharp/tutorial/3.13.php)
    Ответ написан
    Комментировать
  • Задачи по ооп для C#?

    @EvgeniiR
    https://github.com/EvgeniiR
    Ответ написан
    Комментировать
  • Правильный ли пример реализации middleware?

    @EvgeniiR
    https://github.com/EvgeniiR
    Мало что можно сказать по паре десятков строчек кода, даже без гитхаба с проектом. Пара примечаний:

    1. Очень смущает парметр $args в методе execute(). Массив, типы и элементы внутри которого не определены, потенциальный источник многих проблем.
    2. Зачем прокидывать DI в контроллер?

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

    @EvgeniiR
    https://github.com/EvgeniiR
    Реализцаия IoC(Инверсия управления) через Dependency Injection.

    Опишите логику игры скрыв все компоненты которые должны быть нестабильными/гибкими (см. Stable Abstractions Principle) за абстракциями(интерфейсами/абстрактными классами).

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

    @EvgeniiR
    https://github.com/EvgeniiR
    Можно, формально все будет работать точно также (ну только в один js файл все не скомпилируется), но вы потеряете все преимущества использования сборщиков фронтенда и пакетного менеджера
    Ответ написан
    3 комментария
  • Есть ли быстрый язык программирования с возможностью динамической перекомпиляции?

    @EvgeniiR
    https://github.com/EvgeniiR
    Actor model мб, Эрланг тот же?
    Ответ написан
    Комментировать
  • Как сделать скелет сайта до загрузки?

    @EvgeniiR
    https://github.com/EvgeniiR
    Загрузить js + минимальный шаблон (со скрина)
    -> отправить AJAX-запросы за данными
    -> отрендерить блоки с данными

    p.s. Если что, в Хроме есть удобнейший профайлер, через который можно просмотреть каждый кадр в загрузке страницы, какие скрипты выполнялись и какие ресурсы загружались в какое время
    screen
    5d0754871bcbb487098172.png
    Ответ написан
    Комментировать
  • Как использовать функцию в роли класса (объекта)?

    @EvgeniiR
    https://github.com/EvgeniiR
    class App {
        public function getLocale();
    }
    
    function app {
        return new App(); // в вашем примере тут синглтон
    }


    Воспользуйтесь переходом к определению в вашей IDE, или поставьте PhpStorm если в вашей среде разработки нет такой возможности, чтобы отследить где объявляется эта функция

    p.s. но вообще, очень так себе подход, тут и статика, и глобальное состояние. Глобальный App в php только в Yii фреймворке я видел, да и те одумались и вроде выпилят его в 3 версии(если она будет, конечно)
    Ответ написан
    2 комментария
  • Как верно описать опыт в резюме, если ты работал в компании стартап-инкубаторе над множеством проектов?

    @EvgeniiR
    https://github.com/EvgeniiR
    А работать 7 лет на одном месте уже стало чем-то зазорным?
    Указывайте где работали, в описании пишете что было много разных проектов, можно наиболее значимые указать, да и важнее ведь что вы умеете, а не где работали

    Как-то видел в резюме ещё вариант - переходы Мидл -> Сеньор -> Лид отдельными позициями были оформлены.

    p.s. Только devops это все же подход, в котором остаются те же разработчики и админы, а не должность )
    Ответ написан
  • Что выбрать - пост запрос из консоли или команду на выполнение скрипта?

    @EvgeniiR
    https://github.com/EvgeniiR
    Не нужны там запросы. Все популярные фреймворки позволяют без проблем добавлять консольные команды, и иметь отдельные контроллеры под это дело
    Ответ написан
    Комментировать
  • Как спроектировать агрегатор?

    @EvgeniiR
    https://github.com/EvgeniiR
    1. Сделать отдельную сущность - Рейтинг Организации, и иметь общую айдишку с организацией. Там уже статический конструктор инициализирующий рейтинг по количеству специализаций.
    Судя по описанию, ни имя, ни телефоны, ни адреса для расчета рейтинга не нужны, а значит смысла ложить его в ту же сущность нет.
    Думаю самый оптимальный вариант.

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

    @EvgeniiR
    https://github.com/EvgeniiR
    Я такой человек который предпочитает полагаться на свои знания, да и вообще на самого себя (Ну, то есть могу взять и изобрести велосипед, как говорится)

    Синдром неприятия чужого кода. Пройдёт )

    Ведь невозможно абсолютно всё держать в голове и при необходимости запрограммировать что угодно или я что-то не так понимаю?

    Есть базовые вещи и понимание как что-то делать или как что-то сделано, а есть кучи либ и инструментов выполняющих +/- те же задачи документацию по которым можно загуглить за пару минут и прочитать за пару часов. Запоминать нужно первое.

    В гуглении нет никаких проблем и ничего предосудительного ни для кого. Совсем.
    Тем более при изучении инструментов/фреймворков и т.п.

    Для базовых вещей(паттерны, дизайн и т.п.), конечно, стоит начать с книг.
    Ответ написан
    Комментировать