<rmcreative>

RSS

Слайды с UWDC 2013

22 февраля 2013

Мои слайды с прошедшей конференции. Делал два доклада. Очень много говорил совсем не по слайдам. Если есть вопросы — спрашивайте.

UWDC 2013, Как мы используем Yii
UWDC 2013, Yii2

Видео обрабатывается организаторами конференции. Если что-то получилось, будет выложено.

Комментарии RSS

  1. №7562
    Aibolit
    Aibolit 22.02.2013, 14:43:13

    Спасибо за доклад и презентации. Можете прояснить 31 слайд на первой презентации? Что значит без registerScriptFile? Есть ли примеры с описанием скриптов в конфиге? yiic compress - это уже существует (не нашел) или планируется? Спасибо.

  2. №7563
    Александр
    Александр 22.02.2013, 15:06:42

    Затронутые вопросы очень интересные, но со слайдов совсем ничего не понять, нужно более аккуратно оформлять презентацию, на мой взгляд

  3. №7564
    Sam
    Sam 22.02.2013, 15:13:02

    Александр, она просто не особо рассчитана на использование без докладчика :)

    Aibolit, «без registerScriptFile» означает то, что на многих своих проектах мы отказались от стандартной работы Yii с пакетами и подключением JS и CSS. Скрипты описываются просто массивом:

    return array(
      'common.js',
      'facebook.js',
       ...
    );

    yiic compress — внутренний инструмент. Никто никуда его пока не выкладывал. Планируем включить в состав Yii2.

  4. №7565
    itspoma
    itspoma 22.02.2013, 15:27:29

    Привет, по "UWDC 2013, Yii2". 37-й слайд, noSQL. Зачем вы тратите время на всякие дополнительные плюшки? Может стоит выпустить наконец то альфу, и дать народу внести вклад в open-source мир (создав как раз те допольнительные плюшки) ? :)

  5. №7566
    Sam
    Sam 22.02.2013, 15:29:33

    itspoma, так мы прощупываем, достаточно ли хорошо продуман интерфейс AR. Суперполную реализацию под noSQL мы к альфе не делаем.

  6. №7568
    XAKEPEHOK
    XAKEPEHOK 22.02.2013, 18:18:18

    Кстати интересно, а как у вас обрабатывается Less? Из одной лишь презентации непонятно. Я чуть расширил ExtendedClientScript так, что я везде теперь просто регистрирую less файл (будь то виджет или тема) и он сам компилируются средствами lessphp. Без этого уже не могу. Думаю чуть подправить его еще и выложить.

    И если видео опубликуете, то отдельной записью, или за этой следить придется?

  7. №7569
    rmrevin
    rmrevin 22.02.2013, 19:56:13

    Александр, поясните пожалуйста 35 слайд Yii2. Разве не должно быть return $this; или return $query? И зачем в методе параметре $query?

  8. №7571
    Sam
    Sam 22.02.2013, 21:10:08

    XAKEPEHOK, двумя способами:

    1) Для разработки используется обычный less.js, то есть ничего перекомпилировать не нужно. Просто делается цикл по всем именам файлам и echo. На страницу попадает куча

    <link rel="stylesheet/less" type="text/css" href="/css/user.less" />

    2) На сервере запускается консольная команда, которая процессит LESS (less-rhino*.js отсюда + сам Rhino), объединяет файлы и минифицирует их. Далее в конфиг пишется путь к новому файлу. Если он есть, приложение вставляет в HTML всего одну ссылку, на этот файл.

    Видео опубликую отдельно.

  9. №7572
    Sam
    Sam 22.02.2013, 21:15:42

    rmrevin, надо return добавить. andWhere возвращает всё нужное. $query нужен потому как мы поделили окончательно модель на инстанс и критерий. Критерий больше не накапливается в самой модели и не создаёт неприятного залипания параметров с кучей ограничений.

  10. №7574
    Max Lapko
    Max Lapko 23.02.2013, 11:04:59

    Привет всем, методы scenarios и table и тд, так и будут не статическими?

  11. №7575
    Sam
    Sam 23.02.2013, 11:49:27

    Max Lapko, перепроверил. table заменён на статический tableName. scenarios да, остаётся не статическим.

  12. №7577
    zlodey
    zlodey 23.02.2013, 16:52:17

    Здравствуйте, Александр! шорткаты в global.php, можно и в index.php ведь указать перед запуском прил-я? global.php - это видимо ваш файл настроек, где его создавать и как подключать? заранее спасибо

  13. №7578
    Aibolit
    Aibolit 23.02.2013, 18:06:30

    @zlodey, посмотрите как сделано в Yiiboilerplate. Вот сам файл, а подключается здесь.

  14. №7579
    Эльдар
    Эльдар 24.02.2013, 7:42:02

    Вопрос по структуре приложений. Как вы перенаправляете вход в backend и frontend. Средствами конфига сервера или в входном index.php делаете перенаправку на frontend/index.php или backend/index.php

  15. №7580
    zlodey
    zlodey 24.02.2013, 8:03:18

    @Aibolit, спасибо, посмотрел. Значит, Александр, про этот скелет прил-я говорил? расскажите вкратце в чем + и - перед стандартным скелетом или перед модульным построением прил-я, т.к. исходя из опыта на zend'е, продолжаю исп-ть для переносимости - модульную структуру приложения.

  16. №7581
    Sam
    Sam 24.02.2013, 12:09:30

    Эльдар, это разные хосты. У каждого свой index.php.

    zlodey, у нас не совсем он, но так как я был tech lead в CleverTech довольно продолжительное время, а также там работали Jeffrey Winesett и Antonio Ramirez, решение очень похожее.

    По сравнению со стандартным скелетом нет проблем с конфигами при использовании нескольких серверов, определено, как разбивать backend/frontend, как использовать что-то и там и там и т.д.

  17. №7591
    miron
    miron 25.02.2013, 20:35:34

    Из слайдов не понятно, будет ли query builder поддерживать возможность множественных условий where(..)->where(..)->where(..) ?!

  18. №7607
    JiLiZART
    JiLiZART 26.02.2013, 1:31:14

    А миграции научатся наконец то с модулями работать? и в модулях что то новое будет?

  19. №7611
    Sam
    Sam 26.02.2013, 12:05:11

    miron, будет andWhere.

    JiLiZART, так они и так умеют. Нового ничего особо на тему модулей не придумалось. Если есть идеи, делитесь.

  20. №7613
    Vdm17
    Vdm17 26.02.2013, 12:13:50

    Здравствуйте, Sam. Отличные слайды, но как вы сами сказали: "презентация просто не особо рассчитана на использование без докладчика :)". Подскажите, пожалуйста, а можно ли где-нибудь достать видео с вашим выступлением?

  21. №7615
    Sam
    Sam 26.02.2013, 12:32:59

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

  22. №7616
    Vdm17
    Vdm17 26.02.2013, 12:40:27

    Спасибо за ответ. Надеюсь, будет видео. Т.к. в живую гораздо лучше послушать и увидеть :)

  23. №7618
    miron
    miron 26.02.2013, 13:05:42

    @Sam

    А как будет выглядеть условия вида: param1='value1' OR (param2='value2' AND param3='value3' ) AND param4='value4' ?!

    То есть, суть вопроса, можно ли составлять такие условия используя методы билдера, а не голый sql?

  24. №7623
    Sam
    Sam 26.02.2013, 15:14:37

    miron, в andWhere можно передать кусок SQL и параметры.

  25. №7624
    miron
    miron 26.02.2013, 19:18:21

    Sam

    Как-то некрасивое решение, не находите?! Этой проблемой страдает билдер и в первой ветке. Почему не сделать, как у коханы в ORM или Доктрины ?

    ->where_open()
      ->where()
      ->where()
    ->where_close()
    ->or_where_close() .....
    

    И получается, избавляемся от SQL в чистом виде.

  26. №7625
    Sam
    Sam 26.02.2013, 22:39:19

    miron, а если ещё раз вложить? А если надо OR, а не AND?

  27. №7626
    Ярослав
    Ярослав 26.02.2013, 23:06:49

    Можно пояснить слайд Javascript - что означает модульная система? Спасибо.

  28. №7627
    miron
    miron 27.02.2013, 0:54:20

    Sam

    Вложенность любая, в этом и прелесть билдера. Вот запрос:

    SELECT `id`, `alt_title`, `title`, `content_short`, `author`, `date` 
    FROM `articles` 
    WHERE (`id` = 1 AND `date` < 1334007425)  OR (`id` = 2 AND `date` > 1334007425)

    На кохановском билдере:

    $query = DB::select('id', 'alt_title', 'title', 'content_short',  'author', 'date')
            ->from('articles')
            ->where_open()
               ->where('id', '=', 1)
                ->and_where('date', '<', time() - 86400)
            ->where_close()
            ->or_where_open()
               ->where('id', '=', 2)
               ->and_where('date', '>', time() - 86400)
            ->or_where_close();
    

    Плюс еще есть вариант, писать не так: ->or_where('date', '<', time() - 86400), а вот так -> ->where('date', '<', time() - 86400, 'OR')

    Очень бы хотелось увидеть такой "чистый" билдер на второй версии фреймворка. Потому как на первой он жутко неудобный. Проще иногда составить sql с помощью конкатенации строк, в зависимости от условий, чем юзать его.

  29. №7628
    Ярослав
    Ярослав 27.02.2013, 1:18:25

    miron, я конечно извиняюсь что вмешиваюсь, но писать

    where_open()
               ->where('id', '=', 1)
                ->and_where('date', '<', time() - 86400)
            ->where_close()
            ->or_where_open()
               ->where('id', '=', 2)
               ->and_where('date', '>', time() - 86400)
            ->or_where_close();

    вместо

    (`id` = 1 AND `date` < 1334007425)  OR (`id` = 2 AND `date` > 1334007425)

    это чистейший мазохизм, уж лучше в массиве это все составлять, там и вложенность любая и работать с ним проще

  30. №7629
    Sam
    Sam 27.02.2013, 1:59:03

    miron, вот что-то в этом я солидарен с Ярославом... строка чище выглядит. Надо подумать...

    Ярослав, что-то вроде вот этого.

  31. №7631
    miron
    miron 27.02.2013, 10:59:23

    Ярослав Это удобно, когда запрос формируется в результате if-ов.

    Sam Если юзать строками, то полезность билдера становится минимальной. Можно просто запрос тогда составлять конкатенацией строк, но мне такой подход крайне не нравится.

  32. №7632
    Sam
    Sam 27.02.2013, 11:58:35

    miron, подумали-посовещались. Не нравится как сделано в Kohana. При динамическом формировании достаточно неудобно пользоваться. В Yii2 можно вот так:

    ->where(array(
        'or', array(
            'and', 'id=1', 'date<1334007425',
        ), array(
            'and', 'id=2', 'date>1334007425',
        )
    ));

    или

    ->where(array('and', 'id=1', 'date<1334007425'))
    ->orWhere(array('and', 'id=2', 'date>1334007425'))
  33. №7633
    miron
    miron 27.02.2013, 12:06:53

    Sam Так еще вполне читабельно, а вложенные в AND условия как будут выглядеть? Просто пока возникает ощущение, что на yii2 есть ограничения во вложенности:)

  34. №7634
    Sam
    Sam 27.02.2013, 13:04:11

    Как массивы.

  35. №7635
    miron
    miron 27.02.2013, 13:36:26

    Sam Ясно. Спасибо большое за дискуссию, буду ждать релиза.

  36. №7637
    Александр
    Александр 28.02.2013, 1:47:11

    Александр, позвольте вопрос. Первая презентация, 38 слайд. На нем изображены шорткаты в загадочном global.php. Откуда этот файл, где и как подключается?

  37. №7638
    Sam
    Sam 28.02.2013, 12:35:38

    Файл просто создан. Положить можно куда угодно. Подключить в index.php после инициализации приложения конфигом.

  38. №7639
    Александр
    Александр 28.02.2013, 13:09:27

    И еще один вопрос, Александр. Опять же в первой презентации говорится про API. Но больше про него ничего далее не слышно, папки разносятся как backend, command, frontend. А куда API подевалось?

  39. №7640
    Sam
    Sam 28.02.2013, 17:09:33

    У нас в проекте API просто в отдельном контроллере в приложении frontend, но можно вынести и в приложение api.

  40. №7641
    Андрей
    Андрей 03.03.2013, 1:12:12

    А что значит "планируем пощупать Mongo"?

  41. №7642
    Sam
    Sam 03.03.2013, 4:37:36

    Андрей, значит попробуем написать для Mongo обёртку.

  42. №7643
    Андрей
    Андрей 03.03.2013, 16:50:16

    Александр, это я понял :) Я просто думал, что такая обертка будет во второй версии точно, а тут вдруг "попробуем". Почему так?

  43. №7644
    Sam
    Sam 04.03.2013, 12:15:48

    Андрей, вдруг не получится :)

  44. №7645
    Андрей
    Андрей 04.03.2013, 17:04:10

    Я уверен, что у вас все получится :)

  1. Почта опубликована не будет.

  2. Можно использовать синтаксис Markdown или HTML.

  3. Введите ответ в поле. Щёлкните, чтобы получить другую задачу.