• Система управления майниг - ЦОДом, такое вообще существует?

    samizdam
    @samizdam
    Netbox смотрели? Из коробки электричества не будет, но интегрировать по апи можно с чем угодно. А цод администрировать наглядно помогает. DO для себя делал.
    Ответ написан
    Комментировать
  • Как проверять файлы только в конретной папке?

    samizdam
    @samizdam
    break после обработки properties для выхода из цикла?
    Ответ написан
  • Создание хранилища файлов для api(.net) или microservice в докере?

    samizdam
    @samizdam
    Minio посмотрите. S3 совместимое хранилище, легко запустить в контейнере. Для любого стека найдётся sdk, клиент к тому же S3 должен работать.
    Ответ написан
    Комментировать
  • Какой основной патерн применить для маркетплейса в laravel?

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

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

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

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

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

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

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

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

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

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

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

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

    samizdam
    @samizdam
    Ответы:
    > How much is too much?
    Столько сколько достаточно, чтобы из имени класса понять его ответственность.

    > В каком случае лучше использовать короткий нейминг, в каком длинный?
    Дело вкуса. Чувство вкуса приходит с практикой. Практикуйте!

    > Есть ли зависимость между размером проекта и длиной имён?
    Нет.

    > Может есть какой-то сервис/рейтинг популярных слов (прилагательных, существительных) для нейминга, чтобы пополнить словарный запас?
    Учите английский, используйте переводчики. Чем более метко вы сможете транслировать свои мысли в код, тем понятнее он будет. При условии, что мысли правильные и понятные =)
    Ответ написан
    Комментировать
  • На чём писать UDP-сервер под VPS: Java vs Node.js?

    samizdam
    @samizdam
    > поток сообщений пойдёт от C#
    Если есть в C# экспертиза, то можно на нём же.
    Ответ написан
  • Должны ли приёмочные тесты быть в том-же репо что и сам продукт?

    samizdam
    @samizdam
    В общем случае да. Потому что:
    1. Концептуально. Набор тестов - часть приложения, и без него они не имеют смысла
    2. Методологически. Удобство единого версионирования: меняем поведение приложение, меняет тесты в той же версии.
    3. Процессно. Проще клонируя один реп автоматизировать процессы и запускать руками локально.

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

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

    samizdam
    @samizdam
    У нас время прохождения pipeline в gitlab-ci не так давно дошло до часа и даже перевалило эту величину.
    Пришлось разбираться как ускорить, смотреть узкие места и возможные оптимизации.

    В моём случае, самые узкие места были npm install, gulp и docker build. Точные цифры сейчас не помню, но от 7 до 20 минут занимали некоторые jobs. Ну а npm install необходим на нескольких последовательных шагах: линтерах, тестах, сборкой исходников для образов и т.д. Кумулятивно это давало 60-80 минут на все шаги.

    Решил тем что:
    - перешли с npm на yarn - в несколько раз быстрее отрабатывает.
    - сборку gulp и docker распараллели где возможно, увеличив кол-во раннеров

    Сократили до 15 минут.
    Ответ написан
    Комментировать
  • Почему когда используют Docker для поднятия окружения, создают по контейнеру на каждый сервис а не всё в одном контейнере?

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

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

    samizdam
    @samizdam
    Через volume примонтировать директорию с исходниками. А в контейнере уже собирать и запускать.
    Ответ написан
    2 комментария
  • Как сделать composer install внутри docker контейнера?

    samizdam
    @samizdam
    Вы можете посмотреть рабочие примеры использования composer в docker в настоящих проектах. на github.
    Моих например:
    https://github.com/FreeElephants/rest-auth/blob/ma...
    https://github.com/FreeElephants/thruway-in-docker...
    Ответ написан
    Комментировать
  • Есть ли у phpStorm интеграция с phpdbg?

    samizdam
    @samizdam
    Можно подписаться и проголосовать за issue и вопрос в сообществе:
    https://youtrack.jetbrains.com/issue/WI-21414
    https://intellij-support.jetbrains.com/hc/en-us/co...

    Я так полагаю, что чем больше заинтересованна аудитория, тем выше вероятность появления фичи.
    Я вот проголосовал за, т.к. актуально в связи на порядок большей скоростью расчёта coverage. При TDD актуально.
    Ответ написан
    Комментировать
  • Как соединяется клиентская и серверная часть приложения?

    samizdam
    @samizdam
    Очевидно по сети. REST, либо web-socket.
    Ответ написан
    Комментировать
  • Почему возникает ошибка Cannot set property 'user' of undefined?

    samizdam
    @samizdam
    Ну, раз
    Cannot set property 'user' of undefined
    и
    req.session.user = User._id;

    видимо, у сессии нет такого свойства, как user.
    Ваш, К.О.
    Ответ написан
    2 комментария
  • С помощью чего писать тесты для сайта?

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

    samizdam
    @samizdam
    Почему я рекомендую делать ревью до мержа (вариан 1):
    1. психологически: легче вернуть задачу разработчику и внести изменения в код до того, как ветка фичи ушла в основную
    2. технически: с точки зрения тестирования и конфликтов также легче внести изменения в тематическую ветку до мержа, чем после в основную
    Пусть, в случае если Вы доверяете разработчикам, и не успеваете провести ревью всех пул-реквестов — дайте тогда разработчикам возможность мержить самим, а в интерфейсе (gitlab / github / bitbucket) всегда можно отревьюить и закрытый мерж-реквест, пост-фактум. Просто принять соглашение, чтобы все мержи в основную ветку осуществлялись через один этот интерфейс.
    Ответ написан
    Комментировать
  • Как ограничить частоту запросов к бэкэнду?

    samizdam
    @samizdam
    Посмотрите в сторону WebSocket - в общем случае это как раз и является решением: сервер будет уведомлять клиент с нужным ему интервалом, а клиент - пассивно ждать обновлений.
    Ответ написан
    Комментировать