• Как отрефакторить классы с неоднородными конструкторами?

    @Flying
    Я бы использовал service locator для формирования списка сервисов и передавал его в конструктор фабрики.

    Альтернативно можно определить фабрику как service subscriber, тогда формирование service locator'а будет, возможно, ещё проще.

    Если же каким-то образом (например через общий интерфейс или статический метод класса-фабрики), определить список сервисов, которые умеет создавать фабрика, то можно создать compiler pass, который будет формировать service locator на этапе компиляции контейнера через анализ их зависимостей. Это чуть сложнее, но не потребует править код при расширении списка создаваемых фабрикой классов.
    Ответ написан
    Комментировать
  • Как понять статистику клонирования репозиториев?

    @sergiodev
    Может быть у вас CI настроен, и проект клонируется оттуда?

    Другая теория - всякие сторонние сайты, индексирующие код на GitHub, например какой-ниудь gitmemory.com
    Ответ написан
    2 комментария
  • Nginx + php-fpm: где накапливается очередь для процессов и можно ли мониторить эту очередь?

    karabanov
    @karabanov
    Системный администратор
    Есть у Nginx нативный мониторинг NGINX Monitoring, в частности видно количество активных и ожидающих соединений.
    Ответ написан
    Комментировать
  • Терминология: почему контейнеры называют микросервисами?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Нет, контейнер может содержать и монолит и группу сервисов, но это «не принято в приличном обществе».

    Задача контейнеризации - повторяемость и изоляция среды исполнения

    Задача микросервисов - изоляция доступа по контракту и независимый цикл разработки/деплоймента
    Ответ написан
    Комментировать
  • Как можно ускорить работу Exception?

    Maksclub
    @Maksclub Куратор тега PHP
    maksfedorov.ru
    на расходы конкретно на исключения для 15 000 вызовов (на каждую строку по 1 исключению) будут около 0.01 секунды (сотая секунды крч) для моего локального компа (много, но и данных много)
    Пруф

    618e769ee759d433078044.png


    $error = $this->handle($json);
    if ($error === '') {
    // логируем что все ок
    } else {
    // логируем ошибку
    }

    Тут заменено не только это, а заменено что-то внутри в handle(), тк не летит исключение

    возможно в описании задачи вы не указали, что валидируете возможно через что-то симфовое, не отключив finger cross, который собирает весь стек-трейс или еще что-то... кажется, не хватает контекста для понимания проблемы

    в 15 тыс новых объектов проблемы может не быть. Такие задержки по времени выглядят как проблема на уровне логирования исключений, тк I/O операции над файлом долгие, а сбор трейса исключений и его запись — долгие потенциально.
    Уйдя от исключений вы возможно ушли и от логирования исключений.
    Ответ написан
  • Что такого хорошего в иммутабельности?

    vabka
    @vabka
    Токсичный шарпист
    Иммутабельность - это про гарантию, что ты случайно не изменишь то значение, которое тебе передали извне.
    И что функция, в которую ты передал своё значение, не изменит его.

    Вот тупой пример:
    let today = now().date
    let tomorrow = today.addDays(1)
    assert(today != tomorrow)

    И вот если DateTime мутабельный, то мы можем словить ошибку в этой ситуации.
    Иммутабельность же позволяет на корню этого избежать.

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

    А отстутсвие сайд-эффектов позволяет делать вычисления ленивыми, и тоже даёт возможность безопасно распараллеливать, тк нет привязки к порядку операций.
    Ответ написан
    Комментировать
  • "Умение профилировать и отлаживать свой код без использования функции dd/var_dump" - это как?

    karabanov
    @karabanov
    Системный администратор
    Это о xdebug
    Ответ написан
    Комментировать
  • Увеличивали ли вы продажи Push уведомлениями?

    alexgp13
    @alexgp13
    Руководитель ИТ-проектов
    Push-уведомления нужны для оперативной доставки пользователю важных для него сообщений. Реклама к таковым определенно не относится, поэтому такое использование вызовет только негатив.
    Конкретно мой сценарий - я вообще превентивно блокирую все пуши от любых приложений, кроме банков и мессенджеров, причем банки тоже подумываю заблокировать, а то один зеленый немного замучал рекламой своей экосистемы.
    Если же приложение спамит рекламой в пушах и оно не то чтобы жизненно необходимо, то, как верно отметили в комментарии, путь такому приложению сразу в корзину.
    Ответ написан
    1 комментарий
  • Как правильно сархитектурить graphQL в микросервисах?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Не надо так делать. Graphql это только gateway. Использовать его как интерфейс к базе данных, даже через бизнес-логику это такое себе решение. Хотя можно, конечно, кто же спорит. Федерации это удобно, но на масштабе проще застрелиться, чем заниматься этим. Сам aplollo ничего не сделает за вас - это фреймворк, не больше) ну и большое комьюнити с готовыми модулями
    Ответ написан
    4 комментария
  • Docker: принято ли ставить на продакшене?

    1. принято. Если кто-то станет шикать на вас за это — это их проблемы, а у нас свободные нравы!
    2. правильно.

    С монтированием – по-разному. Как удобнее. Варианты:
    • в проекте папка /docker под ней в подпапке /docker/nginx – конфиги nginx, которые биндятся в контейнер по одному, или всей подпапкой. Удобно, если захочется по-живому редактить конфиги;
    • в контейнер при его билде, инструкциями в его Dockerfile, копируются файлы из папки;
    • прилетает уже готовый-собранный образ, из которого поднимается рабочий контейнер, не запариваясь расположением конфигов и какими-то настройками.

    Логи направляются в Stdout контейнера и хранятся Docker'ом. Посмотреть хвост: docker logs --tail 50 имя_контейнера
    Ответ написан
    Комментировать
  • Возможно ли связать нынешние знания с вхождением в IT сферу?

    @calculator212
    Lampapuc, на hh зайдите и промониторьте вакансии. Но если вы за 18 часов в неделю зарабатываете от 40 до 100к будучи студентом, то в разработке вы вряд ли сможете заработать не на много больше, т.к. у многих 40к зп это должность джуна на фултайм. около 170к медиана по Москве (т.е. крепкий мидл мб сеньор/лид в обычной компании). Так что если я правильно понял, то когда вы устроитесь на фултайм, то уже будете зарабатывать как хороший мидл.
    Хочу начать изучать C# и автоматизировать процессы.

    Ну тут есть особенность в том, что у c# есть хорошие средства для автоматизации работы с десктопом, но реальность такова, что вы либо бэкенд будете разрабатывать, либо писать игры на юнити, если хотите быть именно проф. разработчиком.

    Хочу начать изучать C# и автоматизировать процессы.
    Вы можете начать изучать и скорее всего для вас это будет большим плюсом(ряд вещей проще делать через программирование), если revit это популярная программа и вы уверены, что будете долго с ней работать, то это будет преимуществом перед другими.
    Но если хотите перекатиться в IT, то вам проще будет перекатиться на менеджерские должности. Т.к. для разрабов больше решает насколько хорошо ты умеешь прогать, а разобраться в предметной области обычно быстрее чем научиться программировать.
    P.S. работать в программе и разрабатывать это слишком разные вещи, многие прогеры часто вообще толком не знают что делает программа, а просто фиксят баги например(и в целом это +/- нормально).
    Ответ написан
    3 комментария
  • Git и два вопроса о работе?

    SagePtr
    @SagePtr
    Еда - это святое
    Чтобы такого не вышло, лучше работать в отдельных ветках, потом по завершению их сливать в master и на этом этапе разрешать конфликты.
    Ответ написан
    Комментировать
  • Как обработать теги в тексте на php коде?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Во первых задания запрещены правилами. Не по тому что жалко ответить, а такова политика ресурса, дать подсказку и показать путь решения, чтобы человек сделал сам и разобрался как работает, ну и ответ был полезен не только автору вопроса, а давал способ решения похожих задач.

    Во вторых вам нужен preg_replace(), а не preg_match_all(). Вот тут можно попробовать подобрать паттерн для вашего выражения.

    И в третьих - Ирохи Исики, так как в России и русскоязычных сообществах используется транскрипция Поливанова.
    Ответ написан
    1 комментарий
  • Docker и php-fpm: почему рекомендуют не пробрасывать ip?

    rozhnev
    @rozhnev Куратор тега PHP
    Fullstack programmer, DBA, медленно, дорого
    Самое главное не высунуть php-fpm порт наружу в интернет что бы никто не запустит на нем какой-нибудь зловред.

    Если же порт торчит из докера и прикрыт с наружи файр-волом то занчит вы знаете что делаете и принимаете на себя управление рисками you know exactly what you are doing (and are willing to accept the extreme risk)

    Ели же у Вас из докера в интернет торчит неважно кто рнр, база данных или еще какой-нибудь сервис - повертье желающих его взломать достаточно
    Ответ написан
    Комментировать
  • PHP обрезает строку, хотя strlen выдаёт правильную длину, как это исправить?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    https://www.php.net/manual/ru/function.strlen.php
    Замечание:
    Функция strlen() возвратит количество байт, а не число символов в строке.
    ...
    mb_strlen() - Получает длину строки
    Ответ написан
    Комментировать
  • 301 редирект как сократить нагрузку?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Ложится он явно не из-за нгинкса, поэтому уберите соответствующий тэг (как и серверное оборудование, кстати).

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

    web_Developer_Victor
    @web_Developer_Victor
    Что такое google?
    Делайте как у других сервисов. Например: если сегодня 03.11.2021 21:33, подписка на 1 месяц будет к 03.12.2021 21:33, на 3 месяца — 03.02.2022, на пол года (6 месяцев) — 03.05.2022 и т.д. Я считаю это за стандарт и, честно говоря, даже не знаю сервисов, которые работают по-другому.
    Ответ написан
    3 комментария
  • Конфигурация проекта: где и как лучше хранить?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Использовать .env - нормальный вариант
    В репозитории как-правило ложится .env.example из которого каждый разработчик может сделать себе .env и настроить переменные окружения под свою среду разработки
    И дальше в PHP конфигах используете тот же getenv()
    Естественно часть переменных для конфигурации можно не выносить в .env если это какие-то константы, и оставить их просто в PHP

    По поводу деплоя prod/dev то как-раз переменные окружения можно задать извне, если используется ci/cd и тот же docker.

    Касательно кастинга типов: bool, null, empty string то легко можно написать свой хэлпер или подсмотреть у других
    https://github.com/laravel/framework/blob/8.x/src/...
    Ответ написан
    Комментировать
  • Как заставить Laravel Octane (Swoole) кэшировать скрипты и стили?

    Sanasol
    @Sanasol Куратор тега Laravel
    нельзя просто так взять и загуглить ошибку
    https://laravel.com/docs/8.x/octane#serving-your-a...
    In production environments, you should serve your Octane application behind a traditional web server such as a Nginx or Apache. Doing so will allow the web server to serve your static assets such as images and stylesheets, as well as manage your SSL certificate termination.

    Ответ написан
    1 комментарий
  • На сколько хорошо нужно знать разговорный английский для работы на удаленную компанию?

    alexgp13
    @alexgp13
    Руководитель ИТ-проектов
    Именно разговорный английский нужен не так часто, сейчас большая часть общения в мессенджерах, плюс в реальной жизни в английской речи очень лояльно относятся к ошибкам, главное, чтобы понять друг друга могли.
    Из личного опыта - тяжело общаться с англичанами и очень тяжело общаться с индусами, европейцы обычно говорят очень понятно. С индусами, к слову, за три разные попытки общения так и не смог поговорить, у нас совсем разный английский)
    Ответ написан
    Комментировать