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

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Далеко не всегда стоит разбивать класс ради красоты и т.д. Выносить отдельно стоит вещи которые вы сможете как-то использовать отельно. В противном случае вы только вынесете сложность на уровень взаимодействия классов, а поддержка не упростится.

    Если у вас получится выделить общий интерфейс для части обработчиков - попробуйте их вынести отдельно. Если же интерфейс прийдется корректировать под каждый случай - лучше не стоит.

    То, что вам точно поможет - это убрать всё лишнее. Например уровень работы с файловой системой в парсере не нужен, его стоит сразу отделять. Как вариант можете так же разделить парсинг по этапам: например первый этап на базе неких данных строит их модель. наполняя некую модель данных. Впторой этап - пост процессинг, на вход берет модель данных и обрабатывает.
    Ответ написан
    Комментировать
  • Как организовать общение двух nodejs приложений?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    На ум приходит с создание служебного http роута у чат-бота. Этот роут апи будет вызывать и чат-бот будет запускать рассылку. Но кажется, что это не самый оптимальный и лучший вариант.

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

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Оффер в слепую — нормальная практика?

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

    Когда вас хотят на***ть конечно же.
    Можно ли требовать его подписание до принятия оффера?

    Более того, вы даже набор документов можете попросить зарение, что бы ознакомиться. Что если там как в сауспарке вы согласитесь на человеческую многоножку?

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

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    отсутствуют навыки декомпозиции и решения задач, не развито алгоритмическое и логическое мышление.

    Определите сущности, которыми будете пользоваться. Например, нужно сделать чат. Какие сущности данных у вас могут быть? Наверное Пользователь, от имени которого будут отправляться Сообщения. Сообщения будут отправляться в Каналы. У каждой сущности есть какой-то свой набор данных.

    Далее определите действия, что вы можете сделать с этими сущностями. Под эти действия заводите сервисы.

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

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Лучше всего подходит язык, на котором у вас есть експертиза.
    Но сначала стоит сконцентрироваться на постановке задачи. Жанр и мультиплеер - это конечно круто, но мягко говоря недостаточно, но это как описывать устройство автомобиля по цвету пластика дверной ручки.
    1к играков - это тоже довольно абстрактное значение. Какой трафик и как его обрабатывать/хранить/передавать другим игракам - вот это задача.
    Ответ написан
    3 комментария
  • В чем причина странного поведения PHP?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Похоже на БД. Посмотрите нагрузку цпу/рам/то на сервере с БД. Так же не лишним будет посмотреть лог медленных запросов и процесс лист. Если наблюдаются сильные тормоза при вставке, посмотрите загруженность буфера бд.
    Ответ написан
  • Возможно ли закрыть файл, открытый через include?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Угу, за счёт его не открывания. В случае, если вы не изменяли файл и не отключали opcache, ваш файл будет читаться один раз, потом браться из кэша.
    Ответ написан
    Комментировать
  • Для каких проектов использовать CMS а для каких писать свою админ панель на yii2 or laravel?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Зависит от задачи. Если CMS в большей части решает задачу, юзайте CMS. Если нет, лучше юзать фреймворк. Например для бложика я бы взял wp, для визитки - modx, для простенького эл. магазина либо prestashop, либо порекомендовал бы готовую платформу. Для системы продажи и учёта билетов - фреймворк.
    Ответ написан
    Комментировать
  • В чем может быть проблема у простого php-роутера?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Но когда видишь библиотеки в несколько килобайт, то вопрос чем простая регулярка плоха и чего она не учитывает?

    Вопрос сложности поддержки. Если у вас всего один паттерн для вообще всех роутов - не вопрос, юзайте регулярку.
    Если же вам нужно множество паттернов роутов - тут тоже можно одной регуляркой, но ее сложность будет расти экспоненциально и проще уже будет пройтись по списку регулярок. Еще часто требуется проверять метод запроса, т.е. циклов у вас будет уже по больше. Ну конечно же желательны плюшки типа параметров например /user/{userId}/settings, но это так, к слову. Учитывая что роутер отрабатывает на каждый запрос - стоит его сделать по быстрее. Symfony роутер например компилирует все ваши роуты в микс бинарных деревьев с регулярками, не знаю есть ли другие на столько же производительные и функциональные решения.

    Что касается нескольких килобайт - не парьтесь, вот вообще. Всё равно в результате будет меньше, еще и лежать в op кеше.
    Ответ написан
    Комментировать
  • Почему PMA не работает из-за Symfony?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    7.2 - древняя версия, официально не поддерживаемая. Хотя бы 8-ку установите
    Ответ написан
    Комментировать
  • Как реализовываются микросервисные проекты?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Это полностью проекто зависимая штука. К микросервисам стоит выростать из монолита. Микросервис по хорошему должен покрывать полностью конкретный домен, но им же и огранививаться. Вот тут как раз и кроется сложность. Если вы никогда не реализовывали проекты конкретной области, вероятнее всего вы разделите микросервисы не правильно, что усложнит и удорожает поддержку. В худшем сценарии ваши микросервисы будут чем-то вроде REST вокруг таблички в БД.

    Представьте, что часть микросервисов вашего проекта делает команда иностранных инженеров, плохо говорящих на английском и что бы решить хоть какую-то проблему о взаимодействии с их сервисами, вам потребуется неделя, а то и несколько. С такими мыслями стоит подходить к этому вопросу. В идеале изменения у них не должны влиять на вас и наоборот.

    Пример плохого разделения для задачи отправки писем по событиям (регистрация, новости, маркетинг...):
    Сервис_А подготавливает данные и дергает Сервис_Б, что бы тот запихнул их в шаблон и отправил почту.
    Подход плохой потому, что каждое новое сообщение требует изменений И Сервис_А И Сервис_Б, причем синхронизированных.

    Та же задача, но с более лучшим решением:
    Сервис_А отправляет события в стиле "юзер зарегался", "юзер сделал покупку",... Сервис_Б самостоятельно решает, что и когда отправлять ползователю.
    В этом случае Сервис_А и Сервис_Б зависят друг от друга по минимуму.
    Ответ написан
    Комментировать
  • Как сделать кастомный mysql запрос от пользователя?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    По хорошему лучше так не делать. Разбор синтаксического дерева - это довольно сложная задача и ее стоит решать в крайнему случае.
    Я бы рекомендовал ввести по полю на все ваши возможные фильтра и уже их использовать для построения запроса. Например: id (id = ), amountFrom (amount >=), createdAtFrom (createdAt >=),... Каждый фильтр объединяет в себе операцию и поле табицы. Да, прийдется перечислить все ваши поля и операции, но это решение самое простое в поддержке.

    Так же вы можете передавать массив фильтров, в стиле: [field, operation, value].
    На этапе обработки вы сможете относительно легко проверить и название поля, и операцию (>,<,=,!=,...), и заэкранировать значение. Вложенные условия будут уже сложнее.
    Ответ написан
    Комментировать
  • Как синхронизировать в HttpFoundation глобальные переменные?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Объект Request по хорошему стоит воспринимать как иммутабельный и вообще не производить с ним ни каких изменений. Установка кук - это задача Response. Жабы отдельно, гадюки отдельно.
    Ответ написан
    7 комментариев
  • Как лучше хранить данные при пошаговой регистрации?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Всем привет. Хочу сделать пошаговую регистрацию на сайте. Как бы это сделать правильнее?

    Если есть возможность - просите минимум, например почту и пароль, в идеале - вообще через google, или еще что-то подобное, fb например.
    Уже потом запрашивайте данные которые вам нужны для конкретных действий.
    С точки зрения пользовательского опыта вероятно это будет самый лучший сценарий.

    1. После каждого шага сохранять в БД? Много запросов бессмысленных

    Оптимизируйте там, где есть узкое горлышко, а не там где его нет.

    2. Хранить в сессии?
    3. LocalStorage?

    Вам стоит точно решить, как вы взаимодействуете с фронтом. Если это грубого говоря отдельное приложение с каким-нить rest или подобным взаимодействием - LocalStorage, или SessionStorage. Если старый добрый серверный рендеринг - сессии.

    4. Куки?

    нет.
    Ответ написан
    Комментировать
  • Headerless cms на базе Laravel можно/нужно?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    С технической точки зрения ларка безусловно поможет сделать cms.
    С бизнес точки зрения вы точно должны понимать, почему существующие решения вам не подходят. Если этого понимания нет, есть очень большая вероятность того, что вы напшете оередной никому не нужный велосипед
    Ответ написан
    Комментировать
  • Это безопасный способ аутенцификации?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Если вы не собираетесь передавать токен никуда дальше, то в нем особого смысла нет. В сессии пользователя вы можете хранить его идентификатор.
    Ответ написан
    Комментировать
  • Как написать свой аналог DOCS в Yii2?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    C нуля если у вас не завалялось несколько лямов вечено зеленых инвестиций, даже начинать не стоит.
    Как альтернатива - можете посмотреть в сторону Onlyoffice, правда там не точто Yii2, там даже про php думать не стоит.
    Ответ написан
    4 комментария
  • Зачем нужны объявления типов php?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Тайп хинтинг нужен, что бы уменьшить количество ошибок, в идеале со строгой декларацией типов.

    Что будет, если вы запихнете в функцию обрабатывающую строки например объект? В случае явного указания типа вы получите исключение. Если этого не делать поведение полностью зависит от тела функции, и худшим сценарием будет не правильный результат без ошибок и исключений. Подобные проблемы может быть очень сложно отследить
    Ответ написан
    Комментировать
  • Cron или планировщик заданий mySQL?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Чем меньше логики на стороне БД вы будете держать - тем проще вам будет с этим жить
    Ответ написан
    Комментировать
  • Как сделать хот релоад Docker + Nest Js?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Гуглите на тема inotify
    Ответ написан
    Комментировать