Ответы пользователя по тегу Веб-разработка
  • Какой основной патерн применить для маркетплейса в laravel?

    samizdam
    @samizdam
    > Сейчас к нам в команду пришел программист Symfony и предлагает ввести патерн CQRS и писать в Symfony Style.
    > Как лучше разрулить ситуацию?

    Всё смешалось, стили, программисты, "патерны" какие-то. Вы пытаетесь решить множество не связанных вопросов по организации разработки хватаясь за разные термины, которые на слуху, но про которые пока имеете смутное представление. Термины из разных областей, к тому же.

    Если у вас цель - в первую очередь набраться опыта за счёт проекта, попробовать разное, похоливарить на работе и поэксперименировать - держать в том же духе!

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

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

    > лучше декларировать подход и расписать документацию о том как он работает и как в него добавляются новые методы

    Проблема в том, что если проект будет жить, всё это много раз поменяется, под новые требования, рефакторинг, фиксы. И документация будет врать. Лучше код писать насколько простым, насколько это возможно. Чтобы глядя на него было несложно разобраться. На эту тему много рассуждений у Р. Мартина и С. Макконнелла.

    Я тесты использую, как фиксацию того, как работает код, документацию стараюсь вообще избегать.

    Я не очень понял пассаж про нового разработчика покидающего проект, вы сбивчиво излагаете. Вообще код ревью общепринятая практика, чтобы изменения в коде не были сюрпризом для команды.

    > код, который тяжело читается, но ведущий к правильной архитектуре.
    Если пожертвовать простотой кода, к "правильной" архитектуре это вас точно не приведёт. Чем сложнее понять код, тем больше шансов понять его не правильно, и добавить новый не как следовало бы.

    Что значит "правильная архитектура" для начала стоит определить. На самом деле её не бывает, это Грааль. Я бы сказал, что есть подходящая и не подходящая, избыточная для требований проекта и отстающая от них, мешающая развитию. По тому что озвучено, ларавеля, с его общепринятыми подходами, вам должно хватит за глаза надолго. Вот когда перестанет хватать, вы хотя бы будете решать реальную проблему, а не придуманную. И найдёте ту архитектуру, которая подходит лучше изначальной, к новым реалиям.

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

    samizdam
    @samizdam
    Под капотом сервиса алгоритм хэширования, дающий короткий хэш из допустимых в url символов.
    Можно поискать готовый, можно накостылить свою реализацию.
    Хранилищем сервиса в простейшем случае может быть key-value, где ключ, это хэш, а значение - исходная ссылка.
    Ответ написан
    Комментировать
  • Почему когда используют Docker для поднятия окружения, создают по контейнеру на каждый сервис а не всё в одном контейнере?

    samizdam
    @samizdam
    На примере LAMP
    1. Задел на горизонтальную масштабируемость. Нужно сделать несколько бэкендов, делаете два P. Оркестраторы это поддерживают. В одном контейнере не тривиальная задача.
    2. Распределённость, изолированность. Общаясь только по сети, все сервисы могут быть запущены на разных нодах, в кластере, etc. Опять из коробки же есть разные плюшки для организации сетей. Сюда же отвязка от файловой системы одного хоста.
    3. Один контейнер - один процесс. Докер, как супервизор, либо оркестраторы, берёт на себя часть проблем по перезапуску контейнера. в случае некоторых проблем. Если мухи и смузи в одном стакане (контейнере), самостоятельно придётся решать, к какому из процессов его привязать.

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

    samizdam
    @samizdam
    Очевидно по сети. REST, либо web-socket.
    Ответ написан
    Комментировать
  • С помощью чего писать тесты для сайта?

    samizdam
    @samizdam
    Почитайте про Selenium — для любого языка программирования есть фреймворки работающие на базе его.
    Ответ написан
    Комментировать
  • Как правильно организовать среду разработки с git?

    samizdam
    @samizdam
    Для того чтобы использовать git, в желаемом вами контексте, я бы рекомендовал освоиться со следующими понятиями:
    - origin — центральный репозиторий, через который происходит синхронизация
    - master — по умолчанию это главная, центральная ветка
    - .gitignore — файл, в котором можно указать файлы и директории, которые не должны отслеживаться — например локальные конфиги, автоматически генерируемые артефакты, вендоры, логи и прочий runtime
    Таким образом, Вы с коллегами
    1. настраиваете локальную dev окружение
    2. игнорите конфиги и прочее
    3. разрабатываете что-то локально, коммитите
    4. пушите в origin
    5. на продакшене делаете clone, настраиваете конфиги
    6. повторяете п.п. 3-4 + pull на продакшене

    Это, пожалуй, самая простая схема — реализует то о чём Вы спрашивали.
    Ответ написан
    Комментировать