<rmcreative>

RSS
  1. composer для продакшна

    2 февраля

    Продакшн можно разворачивать многими способами. Один из них — когда код попадает на сервер отдельно, а зависимости ставятся запуском composer уже на месте.

    В этом случае важно:

    1. Коммитить в репозиторий composer.lock.
    2. Делать только composer install, ни в коем случае не update.
    3. Не забывать оптимизировать автозагрузку. Предпочтительней флагом --classmap-authoritative или соответствующей опцией в composer.json.
    4. Не забывать флаг --no-dev чтобы не ставить зависимости из require-dev.
    5. Указать ту же версию PHP, что используется на сервере, в platform.
    Комментировать
  2. Официально начата работа над Coding style PER

    31 января

    Coding Style PER, который заменит PSR-12, официально одобрен PHP-FIG. Работы начаты в https://github.com/php-fig/per-coding-style.

    Это первый документ группы согласно PER, то есть «живой» стандарт. Его не будут заменить каждый раз при добавлении нового синтаксиса в PHP. Вместо этого пакет правки будут релизиться по SemVer.

    Комментировать
  3. Форсируем LF для всего проекта

    27 января

    Форсировать линуксовое окончание строк LF вместо CRLF из Windows полезно потому как тот же Docker CRLF очень не любит. Настраивать локально что-то не очень приятно, поэтому просто замечательно что есть возможность форсировать это для всей команды средствами git.

    1. В корне репозитория создаём .gitattributes, пишем туда * text=auto eol=lf первой строкой.
    2. Делаем коммит с этим изменением, пушим.

    Собственно, всё. Осталось локально себе сконвертить всё в LF. В этом также поможет git:

    1. git rm --cached -r .
    2. git reset --hard
    Комментировать
  4. Галеры против продукта

    5 января

    На хабре проскачила неплохая статья, показывающая плюсы работы на «галерах», то есть в аутсорсе и аутстаффе.

    Я был и там и там. Да, есть галеры где неплохо, но:

    1. Срок жизни «галерного» проекта слишком мал, чтобы увидеть самые фатальные свои косяки. Они достанутся кому-то ещё, а вы будуете думать что решение было норм.
    2. Главная метрика любого проекта галеры — клиент доволен. Это сказывается практически на всём.

    То есть на каком-то этапе галера даёт хорошее ускорение для развития вширь, но очень вероятно что не даёт развития, например, на той же позиции архитектора. Очень часто галерные архитекторы творят тот ещё ужас и всерьёз думают что это норм.

    Комментировать
  5. 2021

    31 декабря 2021

    Пожалуй, пора подвести итоги года. Получился он не менее напряжённым, чем 2020-й. Сначала даже хотел написать "выжили и ладненько", но вспомнил что интересного тоже было много.

    Читаем

    1 комментарий
  6. PHP 8.1

    26 ноября 2021

    Ура! Релизнулся.

    Комментировать
  7. История одной оптимизации

    2 октября 2021

    Было: Каталог товаров с фасетами и хитрой сортировкой на MySQL.

    A: Переписали на SphinxSearch. После деплоя упёрлись в max_matches.

    B: Быстро повысили max_matches, но слишком сильно.

    C: Вернули max_matches в допустимые границы.

    Стало: Ответ сверера в два раза быстрее. Уменьшилась общая загрузка CPU и потребление памяти сервера.

    6 комментариев
  8. Дебажим остановившийся контейнер Docker

    26 августа 2021

    Бывает что надо понять, почему не поднялся контейнер. Ну то есть он вроде запустился, но сразу остановился. В stdout ничего не написал.

    1. docker ps -a - узнаём ID контейнера.
    2. docker commit ID-контейнера mydebug - делаем из контейнера образ.
    3. docker run -it --rm --entrypoint sh mydebug - мы внутри. Можем смотреть, например, логи в локальной файловой системе.
    4. docker image rm mydebug - чистим за собой.
    Комментировать
  9. Yii 3 и PSR

    21 августа 2021

    На хабре задали интересный вопрос: «зачем пилить свои имплементации шаблонных вещей когда вокруг куча готовых, протестированных, оптимизированных? Не является ли это бутылочным горлышком в процессе реализации фреймворка?»

    Распишу по каждому PSR-у:

    • 1 - Basic Conding Standard. Исплользуем, не переделывали.
    • 3 - Logger Interface. Можно было взять Monolog, но нам нравился концепт логгера из Yii 2 больше, поэтому портировали и почистили. Но можно использовать в своих приложениях и Monolog.
    • 4 - Autoloading Standard. Исплользуем, не переделывали.
    • 6 - Caching Interface. Не используем, см. 16.
    • 7 - HTTP Message Interface. Своё сразу решили не делать. Сначала сравнили всё и выбрали самую лёгкую реализацию Tobias Nyholm. Но потом пришёл Евгений, у которого была ещё более оптимальная реализация. Впоследствии он влился в команду фреймворка.
    • 11 - Container Interface. Контейнер свой потому как стандарт регламентирует только получение зависимостей, а конфигурирование — нет. Сделать удобное конфигруирование как раз задача для фреймворка и то, что его отличает от других. И да, вот эта реализация кушает много времени.
    • 12 - Extended Coding Style Guide. Этот стандарт я координировал в PHP-FIG. Конечно же, используем.
    • 13 - Hypermedia Links. Не используем.
    • 14 - Event Dispatcher. Написали свой, ничего достойного готового на момент выхода стандарта не было, а события уже были нужны.
    • 15 - HTTP Handlers. Тоже центральная часть фреймворка так как определяет, какие Middleware поддерживаются, как задаются и, главное, как вызываются. Поэтому написали свой.
    • 16 - Simple Cache. Написали не PSR-ный yiisoft/cache, который использует любые PSR-16 адаптеры кеша и добавляет сверху всякие классные штуки. Ну а так как с Yii 2 уже был рабочий код адаптеров, портировали в PSR-16.
    • 17 - HTTP Factories. См. 7.
    • 18 - HTTP Client. Не будем реализовывать, будем использовать.

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

    5 комментариев
  10. Новости Yii 2021, выпуск 3

    20 августа 2021

    Написал свежий выпуск новостей и выложил на хабр. Дело движется. До релиза дожмём.

    Читаем

    Комментировать