Слайды с UWDC 2013
22 февраля 2013
Мои слайды с прошедшей конференции. Делал два доклада. Очень много говорил совсем не по слайдам. Если есть вопросы — спрашивайте.
Видео обрабатывается организаторами конференции. Если что-то получилось, будет выложено.
Комментарии RSS по email OK
Спасибо за доклад и презентации. Можете прояснить 31 слайд на первой презентации? Что значит без registerScriptFile? Есть ли примеры с описанием скриптов в конфиге? yiic compress - это уже существует (не нашел) или планируется? Спасибо.
Затронутые вопросы очень интересные, но со слайдов совсем ничего не понять, нужно более аккуратно оформлять презентацию, на мой взгляд
Александр, она просто не особо рассчитана на использование без докладчика :)
Aibolit, «без registerScriptFile» означает то, что на многих своих проектах мы отказались от стандартной работы Yii с пакетами и подключением JS и CSS. Скрипты описываются просто массивом:
yiic compress
— внутренний инструмент. Никто никуда его пока не выкладывал. Планируем включить в состав Yii2.Привет, по "UWDC 2013, Yii2". 37-й слайд, noSQL. Зачем вы тратите время на всякие дополнительные плюшки? Может стоит выпустить наконец то альфу, и дать народу внести вклад в open-source мир (создав как раз те допольнительные плюшки) ? :)
itspoma, так мы прощупываем, достаточно ли хорошо продуман интерфейс AR. Суперполную реализацию под noSQL мы к альфе не делаем.
Кстати интересно, а как у вас обрабатывается Less? Из одной лишь презентации непонятно. Я чуть расширил ExtendedClientScript так, что я везде теперь просто регистрирую less файл (будь то виджет или тема) и он сам компилируются средствами lessphp. Без этого уже не могу. Думаю чуть подправить его еще и выложить.
И если видео опубликуете, то отдельной записью, или за этой следить придется?
Александр, поясните пожалуйста 35 слайд Yii2. Разве не должно быть return $this; или return $query? И зачем в методе параметре $query?
XAKEPEHOK, двумя способами:
1) Для разработки используется обычный
less.js
, то есть ничего перекомпилировать не нужно. Просто делается цикл по всем именам файлам иecho
. На страницу попадает куча2) На сервере запускается консольная команда, которая процессит LESS (
less-rhino*.js
отсюда + сам Rhino), объединяет файлы и минифицирует их. Далее в конфиг пишется путь к новому файлу. Если он есть, приложение вставляет в HTML всего одну ссылку, на этот файл.Видео опубликую отдельно.
rmrevin, надо
return
добавить.andWhere
возвращает всё нужное.$query
нужен потому как мы поделили окончательно модель на инстанс и критерий. Критерий больше не накапливается в самой модели и не создаёт неприятного залипания параметров с кучей ограничений.Привет всем, методы scenarios и table и тд, так и будут не статическими?
Max Lapko, перепроверил.
table
заменён на статическийtableName
.scenarios
да, остаётся не статическим.Здравствуйте, Александр! шорткаты в global.php, можно и в index.php ведь указать перед запуском прил-я? global.php - это видимо ваш файл настроек, где его создавать и как подключать? заранее спасибо
@zlodey, посмотрите как сделано в Yiiboilerplate. Вот сам файл, а подключается здесь.
Вопрос по структуре приложений. Как вы перенаправляете вход в backend и frontend. Средствами конфига сервера или в входном index.php делаете перенаправку на frontend/index.php или backend/index.php
@Aibolit, спасибо, посмотрел. Значит, Александр, про этот скелет прил-я говорил? расскажите вкратце в чем + и - перед стандартным скелетом или перед модульным построением прил-я, т.к. исходя из опыта на zend'е, продолжаю исп-ть для переносимости - модульную структуру приложения.
Эльдар, это разные хосты. У каждого свой
index.php
.zlodey, у нас не совсем он, но так как я был tech lead в CleverTech довольно продолжительное время, а также там работали Jeffrey Winesett и Antonio Ramirez, решение очень похожее.
По сравнению со стандартным скелетом нет проблем с конфигами при использовании нескольких серверов, определено, как разбивать backend/frontend, как использовать что-то и там и там и т.д.
Из слайдов не понятно, будет ли query builder поддерживать возможность множественных условий where(..)->where(..)->where(..) ?!
А миграции научатся наконец то с модулями работать? и в модулях что то новое будет?
miron, будет
andWhere
.JiLiZART, так они и так умеют. Нового ничего особо на тему модулей не придумалось. Если есть идеи, делитесь.
Здравствуйте, Sam. Отличные слайды, но как вы сами сказали: "презентация просто не особо рассчитана на использование без докладчика :)". Подскажите, пожалуйста, а можно ли где-нибудь достать видео с вашим выступлением?
Vdm17, у меня пока нет. Организаторы конференции обещали выложить, если что-то выйдет. Когда не знаю.
Спасибо за ответ. Надеюсь, будет видео. Т.к. в живую гораздо лучше послушать и увидеть :)
@Sam
А как будет выглядеть условия вида: param1='value1' OR (param2='value2' AND param3='value3' ) AND param4='value4' ?!
То есть, суть вопроса, можно ли составлять такие условия используя методы билдера, а не голый sql?
miron, в
andWhere
можно передать кусок SQL и параметры.Sam
Как-то некрасивое решение, не находите?! Этой проблемой страдает билдер и в первой ветке. Почему не сделать, как у коханы в ORM или Доктрины ?
И получается, избавляемся от SQL в чистом виде.
miron, а если ещё раз вложить? А если надо
OR
, а неAND
?Можно пояснить слайд Javascript - что означает модульная система? Спасибо.
Sam
Вложенность любая, в этом и прелесть билдера. Вот запрос:
На кохановском билдере:
Плюс еще есть вариант, писать не так:
->or_where('date', '<', time() - 86400)
, а вот так-> ->where('date', '<', time() - 86400, 'OR')
Очень бы хотелось увидеть такой "чистый" билдер на второй версии фреймворка. Потому как на первой он жутко неудобный. Проще иногда составить sql с помощью конкатенации строк, в зависимости от условий, чем юзать его.
miron, я конечно извиняюсь что вмешиваюсь, но писать
вместо
это чистейший мазохизм, уж лучше в массиве это все составлять, там и вложенность любая и работать с ним проще
miron, вот что-то в этом я солидарен с Ярославом... строка чище выглядит. Надо подумать...
Ярослав, что-то вроде вот этого.
Ярослав Это удобно, когда запрос формируется в результате if-ов.
Sam Если юзать строками, то полезность билдера становится минимальной. Можно просто запрос тогда составлять конкатенацией строк, но мне такой подход крайне не нравится.
miron, подумали-посовещались. Не нравится как сделано в Kohana. При динамическом формировании достаточно неудобно пользоваться. В Yii2 можно вот так:
или
Sam Так еще вполне читабельно, а вложенные в AND условия как будут выглядеть? Просто пока возникает ощущение, что на yii2 есть ограничения во вложенности:)
Как массивы.
Sam Ясно. Спасибо большое за дискуссию, буду ждать релиза.
Александр, позвольте вопрос. Первая презентация, 38 слайд. На нем изображены шорткаты в загадочном global.php. Откуда этот файл, где и как подключается?
Файл просто создан. Положить можно куда угодно. Подключить в
index.php
после инициализации приложения конфигом.И еще один вопрос, Александр. Опять же в первой презентации говорится про API. Но больше про него ничего далее не слышно, папки разносятся как backend, command, frontend. А куда API подевалось?
У нас в проекте API просто в отдельном контроллере в приложении
frontend
, но можно вынести и в приложениеapi
.А что значит "планируем пощупать Mongo"?
Андрей, значит попробуем написать для Mongo обёртку.
Александр, это я понял :) Я просто думал, что такая обертка будет во второй версии точно, а тут вдруг "попробуем". Почему так?
Андрей, вдруг не получится :)
Я уверен, что у вас все получится :)