Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Как мы используем       Александр Макаров              Yii core team                   Stay.com
Типичный проект– Основная веб-мордочка.– Админка.– Консоль.– API.
Проблемы?– Структура, общий код.– Команда.– Разные сервера.– Разные настройки.
СТРУКТУРА
Приложения– Common (↓)  • Models  • Parameters  • Components– Console (↑)– Frontend (↑)– Admin (↑)
АлиасыYii::getPathOfAlias(),Yii::setPathOfAlias()– root– common– application (Yii default)– webroot–…
Серверы– Машина разработчика.– Тестовый.– RC.– Production.
Как быть с конфигами?– Общий конфиг.– Конфиги для разных  приложений.– Конфиги для разных  серверов.– Свой конфиг у  разра...
Environments– Development– Production–…– Локальные *-local.php  (игнорируется VCS)– install.php <environment>
Как перекрываются конфиги– common/config/params.php– common/config/params-local.php– frontend/config/params.php– frontend/...
VCS, КОД, СХЕМА БД
Как хранить код– Git или другая  VCS. Git очень  удобен.– Ветки: master,  release-X.X,  feature-XXX.– Теги: X.X.Y– Релиз.
Что делать с базой?– base-schema.sql– base-data.sql– Миграции  •   Не использовать модели и код приложения.  •   Если ушла...
AR vs SQL• AR кушает больше, работает медленней• Актуально только если на странице 50+  записей• Для изменения удобней AR
АВТОМАТИЗАЦИЯ, ДЕПЛОЙ
Серверы– Машина разработчика.– Тестовый.– RC.– Production.
Деплой– Pull.– Билд.– Чистим APC (stat=0).– Рестарт вебсервера (если нужен).– Production/test/local.
Билд– LESS/SCSS → CSS.– Собрать и минифицировать CSS и JS. yiic  compress all. Жмёт, генерит файл аля  all_123hash123.js, ...
ДАННЫЕ, ХРАНИЛИЩА, I18N
Данные– MySQL.– Кеш в APC.– noSQL только когда нужен.– Поиск SOLR/Sphinx.
Внешние API– Facebook.– Google.–…– Могут не работать.– Могут меняться.– Кеш.
i18n– UTF-8.– Collation.– Yii::t, исходник всегда английский.– С данными всегда по-разному…
ПРОИЗВОДИТЕЛЬНОСТЬ
Преждевременная оптимизация – Узкие места будут не там, где вы думаете. – Все будут использовать проект «не так». – Рост м...
Что тормозит?– Тормозит не там, где вы думаете.– Не всё можно воспроизвести локально.– Следите за изменениями.
Что делать?– Отложить выполнение.– Очереди.– SQL.– Кеш.
ВНЕШНИЕ СЕРВИСЫ
Внешние vs внутренниеВнешние              Внутренние  –   Latency.         –   Нужно ставить.  –   Ломаются.        –   Ну...
Внешние сервисы– Postmark.– Ratchet.io / Sentry.– S3 / Selectel.– Очереди Amazon.
CLIENTSIDE
JavaScript– Без CClientScript::registerScriptFile().– Модульная система, по модулю на 1-2  страницы.– + виджеты, структура...
CSS– LESS / SCSS …– Перечислены в конфиге, жмутся явно при  деплое.
Соглашения CSS/JS– Каждый view оборачивается div.path-to-file или  div.widget-path-to-file.– В CSS/JS используется .news-i...
ДОКУМЕНТАЦИЯ И ЗАДАЧИ
Документация– Readme.– API.– Комментарии.
Задачи– assembla.– Basecamp.– github.– Trello.– Pivotal tracker.…
ПОЛЕЗНЯШКИ
Шорткаты в global.php– app() = Yii::app()– user() = Yii::app()->user– db() = Yii::app()->db– t(…) = Yii::t(myproject, …)– ...
Вопросы?– ru.yiicookbook.org– yiiframework.ru– yiiframework.com– rmcreative.ru– sam@rmcreative.ru– @sam_dark
Upcoming SlideShare
Loading in …5
×

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

19,504 views

Published on

Published in: Technology
  • Be the first to comment

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

  1. 1. Как мы используем Александр Макаров Yii core team Stay.com
  2. 2. Типичный проект– Основная веб-мордочка.– Админка.– Консоль.– API.
  3. 3. Проблемы?– Структура, общий код.– Команда.– Разные сервера.– Разные настройки.
  4. 4. СТРУКТУРА
  5. 5. Приложения– Common (↓) • Models • Parameters • Components– Console (↑)– Frontend (↑)– Admin (↑)
  6. 6. АлиасыYii::getPathOfAlias(),Yii::setPathOfAlias()– root– common– application (Yii default)– webroot–…
  7. 7. Серверы– Машина разработчика.– Тестовый.– RC.– Production.
  8. 8. Как быть с конфигами?– Общий конфиг.– Конфиги для разных приложений.– Конфиги для разных серверов.– Свой конфиг у разработчика.– Пароли нельзя держать в VCS.
  9. 9. Environments– Development– Production–…– Локальные *-local.php (игнорируется VCS)– install.php <environment>
  10. 10. Как перекрываются конфиги– common/config/params.php– common/config/params-local.php– frontend/config/params.php– frontend/config/params-local.php
  11. 11. VCS, КОД, СХЕМА БД
  12. 12. Как хранить код– Git или другая VCS. Git очень удобен.– Ветки: master, release-X.X, feature-XXX.– Теги: X.X.Y– Релиз.
  13. 13. Что делать с базой?– base-schema.sql– base-data.sql– Миграции • Не использовать модели и код приложения. • Если ушла в VCS и запускалась, не править. • Если ушла в VCS и не запускалась — поправить. • Не лезть в базу руками.
  14. 14. AR vs SQL• AR кушает больше, работает медленней• Актуально только если на странице 50+ записей• Для изменения удобней AR
  15. 15. АВТОМАТИЗАЦИЯ, ДЕПЛОЙ
  16. 16. Серверы– Машина разработчика.– Тестовый.– RC.– Production.
  17. 17. Деплой– Pull.– Билд.– Чистим APC (stat=0).– Рестарт вебсервера (если нужен).– Production/test/local.
  18. 18. Билд– LESS/SCSS → CSS.– Собрать и минифицировать CSS и JS. yiic compress all. Жмёт, генерит файл аля all_123hash123.js, прописывает его в frontend/config/params-local.php.– Применить миграции.
  19. 19. ДАННЫЕ, ХРАНИЛИЩА, I18N
  20. 20. Данные– MySQL.– Кеш в APC.– noSQL только когда нужен.– Поиск SOLR/Sphinx.
  21. 21. Внешние API– Facebook.– Google.–…– Могут не работать.– Могут меняться.– Кеш.
  22. 22. i18n– UTF-8.– Collation.– Yii::t, исходник всегда английский.– С данными всегда по-разному…
  23. 23. ПРОИЗВОДИТЕЛЬНОСТЬ
  24. 24. Преждевременная оптимизация – Узкие места будут не там, где вы думаете. – Все будут использовать проект «не так». – Рост можно контролировать. – Время.
  25. 25. Что тормозит?– Тормозит не там, где вы думаете.– Не всё можно воспроизвести локально.– Следите за изменениями.
  26. 26. Что делать?– Отложить выполнение.– Очереди.– SQL.– Кеш.
  27. 27. ВНЕШНИЕ СЕРВИСЫ
  28. 28. Внешние vs внутренниеВнешние Внутренние – Latency. – Нужно ставить. – Ломаются. – Нужно поддерживать. – Без напряга. – Детали. – Стоят денег. – Нужно мониторить. – Гарантии. – Нет гарантий.
  29. 29. Внешние сервисы– Postmark.– Ratchet.io / Sentry.– S3 / Selectel.– Очереди Amazon.
  30. 30. CLIENTSIDE
  31. 31. JavaScript– Без CClientScript::registerScriptFile().– Модульная система, по модулю на 1-2 страницы.– + виджеты, структура примерно как у jQueryUI.– Все скрипты описываются явно в конфиге, жмутся при деплое.
  32. 32. CSS– LESS / SCSS …– Перечислены в конфиге, жмутся явно при деплое.
  33. 33. Соглашения CSS/JS– Каждый view оборачивается div.path-to-file или div.widget-path-to-file.– В CSS/JS используется .news-index .title { ... }– Глобальные классы g-*. Стили для них в global.css.– На каждый контроллер одноимённый CSS-файл (если нужен).– Для виджета имя CSS такое же, как имя виджета.– Layout использует префикс layout- и файл layout.css.
  34. 34. ДОКУМЕНТАЦИЯ И ЗАДАЧИ
  35. 35. Документация– Readme.– API.– Комментарии.
  36. 36. Задачи– assembla.– Basecamp.– github.– Trello.– Pivotal tracker.…
  37. 37. ПОЛЕЗНЯШКИ
  38. 38. Шорткаты в global.php– app() = Yii::app()– user() = Yii::app()->user– db() = Yii::app()->db– t(…) = Yii::t(myproject, …)– h() = CHtml::encode– l() = CHtml::link– param(…) = Yii::app()->params[…]
  39. 39. Вопросы?– ru.yiicookbook.org– yiiframework.ru– yiiframework.com– rmcreative.ru– sam@rmcreative.ru– @sam_dark

×