YiiFramework Новости Yii 2020, выпуск 1

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Нет. Цели делать только через аннотации нет. Так потому что вот таких кейсов у нас пока нет. Никто не просил и не рассказывал детально как и что настраивает. Нет спроса — делать незачем если нам самим не нужно. Сообщество открытое, нужно — участвуйте.
Я тебе немного рассказывал о своих мучениях с кастомизацией запросов. Не хочу грузить просто.
Аннотации - причина, почему я никогда не использую доктрину.

С контейнерами ни аннотации, ни миграции не нужны. Для разработки в репе проекта лежит актуальный полный дамп структуры в SQL, который проигрывается при старте сервиса базы, нет проблем с кешем, не надо никаких консольных команд, просто дропнул volume - и база обновилась за 2 минуты, тестировщик, фронтендщик и мобильщик сами справляются.
В проде изменения базы по миграциям разработчиков не отрабатываются - их вычитывают, чтобы никаких DROP, выполняют ручками, после бекапа, на резервном мастере, тестируют, часть до выкладки кода, часть после.
В проектах с деньгами и мозгами костыли для тех, кто не умеет SQL, просто мешают.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
опять прибито гвоздями, как вы любите :)
похоже, тех, кто любит, уже нет - реальность все-таки догнала

Один из успешных продуктов на Yii 2 — https://craftcms.com/. Они делились со мной статистикой, как кто разворачивает. И большинство, к сожалению, контейнерами не пользуется. Ну и забивать на "коробочную" нишу не вижу смысла, не настолько много это добавляет нам проблем как разработчикам фреймворка.
Разница в том, что за это платят. И платят не за удовольствие, а только потому, что это решает проблемы.
За установку CMS на шаред - нет, а за проектирование надежной масштабируемой системы - да.
Что я всегда предлагал - помогать людям решать их реальные проблемы реальных проектов, а не пытаться заставить мир соответствовать фантазиям одного человека.
Это нужно тем людям, которые делают что-то для большого количества людей, а не просто киоск с фантой и орбитом открыли.

Посмотри на настоящий серьезный ecommerce - shopify, amazon. SAAS, PAAS, контейнеры, serverless, облачные базы, аппы из сторов, вот это вот все.

Тот же Симфони относительно успешно используется для коробочных решений, кстати. Например, phpbb или Drupal.
И я ж про это. Помогай людям делать коробки - дай решение на инфраструктурном уровне, чтобы они пилили свои CMS-ки.

Сейчас нужен фреймвок для интеграции сервисов.

Сообщество открытое, нужно — участвуйте.
про это и был мой первый вопрос, если можно - расскажи, что изменилось,
а то выгребать за простое предложение сформулировать RFC flow от идиота, который на полном серьезе выступает с докладами о том, что интерфейсы тормозят, очень уж не хочется
 

roxblnfk

Новичок

Фиксится легко - schema сделать отдельной зависимостью, разделить хелпер на MigrationsProvider и SchemaProvider.

(Слово helper в имени класса - это вообще четкий маркер архитектурных проблем.)
всё правильно, я лишь хотел убедиться в отсутствии предвзятости :D
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
@roxblnfk тут такое дело ... более предвзятого сообщества, чем этот клуб, я в жизни не встречал,
не знай я многих тут лично и в работе, и понимая как мне тут помогли, и что просто надо делать поправку -
минуты бы не тратил тут
в yii есть генетические дефекты, это не твои проблемы, но они есть,
но если надо что-то реальное, можешь обсудить решение в прямом смысле любых самых сложных задач
 

fixxxer

К.О.
Партнер клуба
Я про докер - yii2, как и Sy4, ставится в контейнер только с хаком, я просто отдебажил, но это было не очевидно.
Проброс переменных окружения, логгер в stdout.
А что ты называешь хаком? Я проброс env хаком не считаю, это же by design!

Почти все RESTful api маскируют RPC-вызовы.
Называть это RESTful я бы не стал. REST-ish :)

Сваггер удобен
GraphQL еще удобнее. Из swagger легко сконвертировать, кстати.


всё правильно, я лишь хотел убедиться в отсутствии предвзятости :D
После Yii 2.0 сложно быть непредвзятым.
Я посмотрел в репозитории, вроде нормально в этот раз стараетесь сделать, но вижу, что уже тянет в две противоположные стороны - "Symfony с PSR и без Yaml-ов" и "попроще, чтобы средние умы осилили". Обе цели одновременно достижимы, если постараться - но тут сначала надо сделать по уму, а потом уже поверх делать всякие фасадики для упрощения. Может получиться нехилое такое дерево зависимостей, но не думаю, что этого стоит бояться, это нормально. У меня даже в своей внутрянке поверх sf5 бандл на бандле погоняет, и ничего, нормально - зато микросервис взял и собрал, подтянув только нужное.

более предвзятого сообщества, чем этот клуб, я в жизни не встречал
Тут просто еще жив дух web 1.0. :) В нынешние времена codes of conduct это редкость, я это ценю. :)
 

Фанат

oncle terrible
Команда форума
Тут просто еще жив дух web 1.0. :) В нынешние времена codes of conduct это редкость, я это ценю. :)
Ой, не говори.
На Реддите сегодня запостили очередной совершенно беспомощный неотлаженный убогий квери билдер, хуже даже чем safemysql.
Так накидали плюсов полную панамку. Бо автор - трансгендер, его нельзя обижать!
 

fixxxer

К.О.
Партнер клуба
Ой, не говори.
На Реддите сегодня запостили очередной совершенно беспомощный неотлаженный убогий квери билдер, хуже даже чем safemysql.
Так накидали плюсов полную панамку. Бо автор - трансгендер, его нельзя обижать!
A standalone QB without ORM indeed has a very little use.
Я там начал писать длинный ответ, начиная с того, что сначала надо определиться, что мы понимаем под ORM, но мысль о том, что я это пишу несколько не в том месте, где это кто-то поймет, меня остановила. :)
 

Фанат

oncle terrible
Команда форума
Я там начал писать длинный ответ, начиная с того, что сначала надо определиться, что мы понимаем под ORM, но мысль о том, что я это пишу несколько не в том месте, где это кто-то поймет, меня остановила. :)
Так напиши здесь!
 

Sam Dark

Новичок
RoadRunner - игрушка, у него будет ноль целых ноль десятых процента проектов.
В серьезном проекте инфраструктурная зависимость runtime от сторонней библиотеки на golang с непредсказуемым lifecycle ради +10% в php за счет утечек памяти? Версию php обновить - такое же эффект.
На шареды его не поставить, на VPS проще докинуть $10 и вынести базу на отдельную виртуалку.
Во-первых, не уверен что ноль десятых. Решение популярность набирает в общем, а учитывая что Swoole лихорадит и тот же китайский рынок начал щупать, будущее есть. По производительности там не 10%, сильно больше. Например, я запускал на нём Yii 2, на винде ответ был 1-2 ms. И это потом я узнал что упиралось не в производительность, а в разрешение таймера винды. Ответ от fpm в тех же условиях 20-40ms. То есть разница на бутстрап грубо в 20 раз, а не 10%. Yii 2 ну совсем не предназначен для такого режима работы в отличие от того же Yii 3 с хорошо абстрагированными request-response.

На тему шаредов и VPS технически всё так, там это работать не будет (хотя чуть выше кто-то говорил что это не нужно будет). Но Yii 3 не затачивается только под RoadRunner. Просто может работать под ним или под Swoole.

А preload будет условно везде, и его нужно готовить. Удобно иметь готовый пакет анализа запросов с генерацией preload-скрипта прямо в фреймвоке. Включил лог, собрал статистику в файл, запустил команду, сгенерил, включил в конфиге, вперед.
Планы сделать генерацию preload-скрипта есть: https://github.com/yiisoft/yii-web/issues/104. Задача не приоритетная потому как предварительные тесты не показали значительного приороста производительности.

Я про докер - yii2, как и Sy4, ставится в контейнер только с хаком, я просто отдебажил, но это было не очевидно.
Проброс переменных окружения, логгер в stdout.
Например, в проде и в dev удобно использховать одну конфигурацию стека с переопределением переменных.
Чтобы люди делали в докере - им нужен пример стека с интеграцией, аналогично образцу приложения для начала проекта.
Из опыта, один раз запускают проект с первого тычка и без танцев вообще, хоть на маке, хоть на винде, без настроек и установок - сразу забывают как жили без контейнеров.
Могу помочь.
Образу уже много много лет: https://github.com/yiisoft/yii2-docker

RPC/GraphQL, я бы сказал. Почти все RESTful api маскируют RPC-вызовы.
Сваггер удобен, поэтому берем restful-style синтаксис.

Сложность проектов со временем растет, весь HTML ушел на фронт в ноду с отдельным деплоем.
На php остается только middleware, но он становится сложнее и больше, и вот в этом нужна помощь со стороны фреймвока.
Во-первых, никуда никто не ушёл. Это мы просто ушли с простых проектов. Ниша никуда не делась. Писать бложик, который работает на API и к нему ваять UI на Angular с отдельным пайплайном сборки — просто неверный выбор инструментов.

Но да, что всё больше делается через API мы в курсе. Уже в Yii 2 было много чего для REST API. В Yii 3 View-слой опционален.
 
Последнее редактирование:

Sam Dark

Новичок
С контейнерами ни аннотации, ни миграции не нужны. Для разработки в репе проекта лежит актуальный полный дамп структуры в SQL, который проигрывается при старте сервиса базы, нет проблем с кешем, не надо никаких консольных команд, просто дропнул volume - и база обновилась за 2 минуты, тестировщик, фронтендщик и мобильщик сами справляются.
В проде изменения базы по миграциям разработчиков не отрабатываются - их вычитывают, чтобы никаких DROP, выполняют ручками, после бекапа, на резервном мастере, тестируют, часть до выкладки кода, часть после.
В проектах с деньгами и мозгами костыли для тех, кто не умеет SQL, просто мешают.

...

Разница в том, что за это платят. И платят не за удовольствие, а только потому, что это решает проблемы.
За установку CMS на шаред - нет, а за проектирование надежной масштабируемой системы - да.
Что я всегда предлагал - помогать людям решать их реальные проблемы реальных проектов, а не пытаться заставить мир соответствовать фантазиям одного человека.
Это нужно тем людям, которые делают что-то для большого количества людей, а не просто киоск с фантой и орбитом открыли.

Посмотри на настоящий серьезный ecommerce - shopify, amazon. SAAS, PAAS, контейнеры, serverless, облачные базы, аппы из сторов, вот это вот все.
Это комментировать не буду. Тут налицо профдеформация.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Я вот, кстати, думаю, что в контейнерах для php-приложений nginx unit подойдет идеально.
Все собираюсь попробовать.
да оно неважно, какой движок, какой менеджер процессов

Это комментировать не буду. Тут налицо профдеформация.
Это вопрос, скорее, личной цели.
Конечно, есть аутсорс для шаредов и self-hosted, но его мало и по суммарному траффику на сайтах, и по интересу на конференциях.
Можно заниматься кастомизацией коробок. Сколько со мной обсуждали руководство аутсорсингами - вся Украина торгует гребцами, как беларусы картошкой. Это не то.

Все проекты, в которые я приходил последние годы - везде упаковка сервисов по серверам, разработка в докере, проблемы с монолитами.
Различаются только инструменты - какой балансировщик, какой service locator, storage, как работа с логами сделана.

Какая у тебя цель по yii3? Если сделать что-то, нужное людям, то людям нужна магия.
На конфу про то, как yii деплоит ассеты, не пойдут, а про то, как на yii запустить сервис на лямбде, нажав пару кнопок - скорее всего да.
А бизнесу нужна не дешевая разработка, а работающие продажи.
 

Sam Dark

Новичок
Я посмотрел в репозитории, вроде нормально в этот раз стараетесь сделать, но вижу, что уже тянет в две противоположные стороны - "Symfony с PSR и без Yaml-ов" и "попроще, чтобы средние умы осилили". Обе цели одновременно достижимы, если постараться - но тут сначала надо сделать по уму, а потом уже поверх делать всякие фасадики для упрощения.
Что именно показалось не верно спроектированным?
 

Sam Dark

Новичок
мне сложно понять в чем ее суть;
все проекты, в которые я приходил последние годы - везде упаковка сервисов по серверам, разработка в докере,
различаются только инструменты - какой балансировщик, какой service locator, storage, как работа с логами сделана
Суть в том, что у тебя проекты не простые, не стартапы и даже не средний бизнес. Крупные. У тебя есть бюджет, есть возможность не думая вселиться в AWS или использовать облачную базу, есть необходимость и возможность перекладывать некоторые решения на devops. Профдеформация состоит в том, что ты не считаешь остальное за нормальные проекты и в том, что ты почему-то думаешь что остального мало.

Конечно, есть аутсорс для шаредов и self-hosted, но его мало и по суммарному траффику на сайтах, и по интересу на конференциях.
На конфу не пойдут слушать про yii3, который хорошо деплоит ассеты, а вот про то, как он работает на лямбдах - пойдут.
Боюсь, что про суммарный трафик ты не вполне прав... даже мелочь, что работает на Wordpress, очень тяжело побить https://trends.builtwith.com/cms/WordPress. Это 27 миллионов мелких сайтов. Даже если в среднем на каждый ходит 100 человек в месяц, суммарный трафик превышает трафик Facebook, Youtube, Instagram, Twitter, Yandex, ***** и так далее.

Ну и цель фреймворка не в том, чтобы было о чём рассказать на конференциях. Это побочный эффект. Цель дать инструмент, который позволяет как эффективно начинать проекты, так и нормально без потерь их продолжать поддерживать.
 

Sam Dark

Новичок
Ха! Компания на букву "B" на форуме считается бранным словом :)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Во-первых, не уверен что ноль десятых. Решение популярность набирает в общем, а учитывая что Swoole лихорадит и тот же китайский рынок начал щупать, будущее есть. По производительности там не 10%, сильно больше. Например, я запускал на нём Yii 2, на винде ответ был 1-2 ms. И это потом я узнал что упиралось не в производительность, а в разрешение таймера винды. Это при том, что ответ от fpm в тех же условиях 20-40ms. То есть разница на бутстрап грубо в 20 раз, а не 10%. Это при том, что Yii 2 ну совсем не предназначен для такого режима работы в отличие от того же Yii 3 с хорошо абстрагированными request-response.
Число я взял из памяти, что-то было в статьях бадушников. Конечно, это "одна бабка сказала".
Если разница в 10 раз - другой разговор, надо проверять.

На тему шаредов и VPS технически всё так, там это работать не будет (хотя чуть выше кто-то говорил что это не нужно будет). Но Yii 3 не затачивается только под RoadRunner. Просто может работать под ним или под Swoole.
Swoole не особо интересен. Кто сказал, что через год они продолжат поддерживать совместимость для новых версий?

Планы сделать генерацию preload-скрипта есть: https://github.com/yiisoft/yii-web/issues/104. Задача не приоритетная потому как предварительные тесты не показали значительного приороста производительности.
Он будет, если делать в нем кеш данных - та же структура базы.

Отдельный кастомный образ? А зачем его собирать локально?
Нужен стек, деплоймент, интеграция с nginx, mysql, redis. Образ быстрее скачивается с хаба.
Если это написали, чтобы отвечать, что вот оно лежит никому не нужное - получилось :)

Во-первых, никуда никто не ушёл. Это мы просто ушли с простых проектов. Ниша никуда не делась.
Нишу бложиков и простых проектов скушал wordpress.

Но да, что всё больше делается через API мы в курсе. Уже в Yii 2 было много чего для REST API. В Yii 3 View-слой опционален.
REST в yii2 неполноценный. Хотя бы тот факт, что нет обработки PUT.
Вообще, graphql стоит сделать хотя бы потому, что народ все-равно делает из RESTful его подобие, я тебе рассказывал этот кошмар с relations в extends.
 
Сверху