SlideShare a Scribd company logo
1 of 27
Download to read offline
Как разрабатывается




        Макаров Александр
              Yii core team
Что такое Yii?
 PHP5 MVC фреймворк.       Свой Active Record.
 Лёгкий и быстрый.         I18n на основе CLDR.
 Мощный и гибкий.          Кэш с зависимостями
 Красивый API.              и кучей бэкэндов.
 Пересекается с            RBAC.
  Prado, Rails,             Консоль.
  Symfony и Joomla.         Генератор кода.
                           …

     Prado, с 2004 → Yii 1.0, 2008 → Yii 1.1, 2010
Типичный action
public function actionView($id)
{
       $post = Post::model()->findByPk($id);
       if(!$post)
              throw new CHttpException(404);

      $this->render('view', array(
             'post' => $post,
      ));
}
И немного AR посложнее
$posts = Post::model() ->taggedWith(array('yii',
'CodeFest'))->published()->with('comments')-
>findAll();

foreach($posts as $post){
  echo $post->title;
  foreach($post->comments as $comment){
    echo $comment->text;
  }
}
Откуда такое название?
• Yes It Is (2010)
• Easy Efficient Extensible (2009)
• Китайский символ Yi:
  – Лёгкость, простота.
  – Изменчивость и гибкость.
  – Постоянство. Главные принципы не меняются.


                    “Yi ching”, “Книга перемен”.
Зачем велосипед и почему MVC?
• Во времена Prado не было нормальной
  альтернативы.
• Prado заимствовал у ASP.NET. Чужеродно.
• MVC популярен и удобен.
• Существующие в 2008 году фреймворки не
  устраивали.
Иногда велосипед — это хорошо!
Заимствование
• Стоит ли смотреть на других?
• Заимствование идей в неизменном виде.




                   ?
Сообщество и компания
Сообщество                   Компания
 Фреймворк не               × Заинтересована в
  подпиливается под            получении прибыли.
  конкретные проекты.        × Фреймворк часто является
 Заинтересовано в             побочным продуктом
  оттачивании инструмента.     проектов компании.
 Готово к обсуждениям.      × Работает за деньги.
 Работает на репутацию.     × Часто откладывает
 Принимает решения            принятие решений.
  относительно быстро.
Компания — зло для фреймворка?
• Не всегда.

• Acquia, Lullabot (Drupal)
• Percona (MySQL)
• Zabbix
Почему BSD?
• Фреймворк — инструмент.
• Чтобы код «жил» его должны серьёзно
  использовать.
• Серьёзно = для получения прибыли.
• BSD не ограничивает коммерческое
  использование.
Сообщество
Yii                        В общем
• Оттянул на себя часть    • Интересные уникальные
    сообщества Prado          решения, рецепты
• Не превратиться в        • Собрать лояльное ядро
    helpdesk               • Обучить на личном
• Повторяющиеся вопросы       примере, что для
    → wiki, поиск             сообщества хорошо
• Мало пишут — не всегда   • Оставить шанс показать
    плохо                     себя
Новые предложения


                  Необходимо?


 Типично?




Обсуждение



             Реализация
«Ну и что... Это ситуация когда
количество параметров меньше и
  тут все OK. А ситуация с зомби
          совсем другая»
Команда Yii
• 6 разработчиков.        • Количество
• Технический писатель.     разработчиков не
• ~50 переводчиков.         растёт т.к. рост
                            означает:
                            – Больше времени на
• Приоритеты:                 общение, меньше на
  – Стабильность кода.        код.
  – Надёжность кода.        – Возможные
  – Единый стиль.             конфликты.
Use the force and read the source!
Нет уж, спасибо!
Документация
• Код без документации — мусор.
• 40% успешности проекта — документация.
• Пишем код — обновляем документацию.
• Всегда сразу документируем методы,
  классы и свойства.
• Важны примеры, но слишком много
  примеров — тоже плохо.
Почему код должен быть приятным?
• Чтобы проект доставлял разработчику не
  меньше удовольствия, чем пользователям.
• Чтобы не тратить неоправданно много
  времени на документацию.

• Деньги, время, мотивация.
Каким должен быть API?
• Согласованный. Всё в одном стиле.
• Не сложный. Сложность = много всего.
   – Магия, если она есть, должна обязательно быть
     однозначной и, по возможности, простой.
• Гибкий. Легко поменять поведение.
• Документированный.

• Гибкость vs простота.
   – Крайности. God object.
• Решение: фасад для скрытия деталей, адаптер для
  выравнивания API.
Готового идеала нет
• В больших проектах всегда приходится что-
  то подпиливать.
  – Как потом обновлять?
  – Как ничего не сломать?
• В фреймворк нельзя встроить всё.
  – Надо ещё и сторонний код пилить?
  – А вдруг не заработает?
Версии и обратная совместимость
1.1.x — обратно совместимые релизы.
  – Небольшие документированные изменения.
  – Новые возможности.
  – Подходит для обновления уже начатых
    проектов.
1.x.0 — частичная несовместимость.
  – Обновить проект возможно, но затратно.
x.0.0 — более свежие возможности без
оглядки на обратную совместимость.
Поддержка старых версий
Проект                        Фреймворк
• Делается не один месяц,     • Поддерживать все старые
  за это время выходит          версии нереально →
  обратно несовместимая         ограничиваем время
  версия.                       поддержки.
• Немедленное                 • Не перетаскиваем новые
  адаптирование под неё —       возможности в старые
  потеря времени и денег.       версии. Исправляем
• Возможно, стоит               ошибки.
  остановиться, но как быть
  с багами в фреймворке?
Инструментарий
• «Одноразовую» миграцию данных в
  большинстве случаев приходится делать
  много раз.
• Код надо тестировать.
• Однотипный код писать лень.
• IDE должны поддерживать код.
• Отладка — это важно.
Производительность и оптимизация
• Yii быстрый т.к. загружается только то, что
  нужно. Используется SPL __autoload.
• Не подключаемся к БД, пока не
  понадобится, не парсим запрос пока не
  потребуют и т.д.
• Если код используется часто и много —
  производительность важнее фич.
• Если используется редко —
  производительность не так важна.
Yii — это хорошо!
Спасибо
•   http://yiiframework.com/
•   http://yiiframework.ru/
•   http://rmcreative.ru/
•   sam@rmcreative.ru

• Принимаются
    – Отзывы
    – Идеи
    – Предложения

More Related Content

What's hot

Всему своё время Highload Junior 2016
Всему своё время   Highload Junior  2016Всему своё время   Highload Junior  2016
Всему своё время Highload Junior 2016Roman Ivliev
 
Как мы делаем Banki.ru
Как мы делаем Banki.ruКак мы делаем Banki.ru
Как мы делаем Banki.ruRoman Ivliev
 
О фреймворках Backend conf 2016
О фреймворках Backend conf 2016О фреймворках Backend conf 2016
О фреймворках Backend conf 2016Roman Ivliev
 
Creating Open Source Projects
Creating Open Source ProjectsCreating Open Source Projects
Creating Open Source ProjectsAlexei Yuzhakov
 
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.ScrumTrek
 
Junior java standard edition developer
Junior java standard edition developerJunior java standard edition developer
Junior java standard edition developerDmitriy Neguritsa
 
Презентация: 1С-Bitrix — как начать
Презентация: 1С-Bitrix — как начатьПрезентация: 1С-Bitrix — как начать
Презентация: 1С-Bitrix — как начатьDmitriy Polisadov
 
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)Ontico
 
Курс молодого бойца-автоматизатора – как стать ветераном и остаться в живых
Курс молодого бойца-автоматизатора – как стать ветераном и остаться в живыхКурс молодого бойца-автоматизатора – как стать ветераном и остаться в живых
Курс молодого бойца-автоматизатора – как стать ветераном и остаться в живыхautomated-testing.info
 
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидахОмские ИТ-субботники
 
Алексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникаций
Алексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникацийАлексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникаций
Алексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникацийScrumTrek
 
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Антипаттерни та велосипеди в JavaScript автоматизації» ...
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Антипаттерни та велосипеди в JavaScript автоматизації» ...ОЛЕКСАНДР ХОТЕМСЬКИЙ «Антипаттерни та велосипеди в JavaScript автоматизації» ...
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Антипаттерни та велосипеди в JavaScript автоматизації» ...GoQA
 
Дмитрий Кушников — БЭМ глазами бэкенд-разработчика
Дмитрий Кушников — БЭМ глазами бэкенд-разработчикаДмитрий Кушников — БЭМ глазами бэкенд-разработчика
Дмитрий Кушников — БЭМ глазами бэкенд-разработчикаYandex
 
В поисках магической кнопки или как приручить SOAP UI
В поисках магической кнопки или как приручить SOAP UIВ поисках магической кнопки или как приручить SOAP UI
В поисках магической кнопки или как приручить SOAP UIautomated-testing.info
 
«Компьютерное зрение как альтернатива офисным пропускам», Вадим Балашов
«Компьютерное зрение как альтернатива офисным пропускам», Вадим Балашов«Компьютерное зрение как альтернатива офисным пропускам», Вадим Балашов
«Компьютерное зрение как альтернатива офисным пропускам», Вадим БалашовMail.ru Group
 
встать на рельсы
встать на рельсывстать на рельсы
встать на рельсыRoman Lemekha
 
Бумажное прототипирование
Бумажное прототипированиеБумажное прототипирование
Бумажное прототипированиеMaxim Gaponov
 
Как воспитать программиста
Как воспитать программистаКак воспитать программиста
Как воспитать программистаMikhail Payson
 
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только одинHappyDev
 

What's hot (20)

Всему своё время Highload Junior 2016
Всему своё время   Highload Junior  2016Всему своё время   Highload Junior  2016
Всему своё время Highload Junior 2016
 
Как мы делаем Banki.ru
Как мы делаем Banki.ruКак мы делаем Banki.ru
Как мы делаем Banki.ru
 
О фреймворках Backend conf 2016
О фреймворках Backend conf 2016О фреймворках Backend conf 2016
О фреймворках Backend conf 2016
 
Creating Open Source Projects
Creating Open Source ProjectsCreating Open Source Projects
Creating Open Source Projects
 
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
 
Junior java standard edition developer
Junior java standard edition developerJunior java standard edition developer
Junior java standard edition developer
 
Презентация: 1С-Bitrix — как начать
Презентация: 1С-Bitrix — как начатьПрезентация: 1С-Bitrix — как начать
Презентация: 1С-Bitrix — как начать
 
WepPerfomance,
WepPerfomance, WepPerfomance,
WepPerfomance,
 
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
 
Курс молодого бойца-автоматизатора – как стать ветераном и остаться в живых
Курс молодого бойца-автоматизатора – как стать ветераном и остаться в живыхКурс молодого бойца-автоматизатора – как стать ветераном и остаться в живых
Курс молодого бойца-автоматизатора – как стать ветераном и остаться в живых
 
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
 
Алексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникаций
Алексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникацийАлексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникаций
Алексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникаций
 
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Антипаттерни та велосипеди в JavaScript автоматизації» ...
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Антипаттерни та велосипеди в JavaScript автоматизації» ...ОЛЕКСАНДР ХОТЕМСЬКИЙ «Антипаттерни та велосипеди в JavaScript автоматизації» ...
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Антипаттерни та велосипеди в JavaScript автоматизації» ...
 
Дмитрий Кушников — БЭМ глазами бэкенд-разработчика
Дмитрий Кушников — БЭМ глазами бэкенд-разработчикаДмитрий Кушников — БЭМ глазами бэкенд-разработчика
Дмитрий Кушников — БЭМ глазами бэкенд-разработчика
 
В поисках магической кнопки или как приручить SOAP UI
В поисках магической кнопки или как приручить SOAP UIВ поисках магической кнопки или как приручить SOAP UI
В поисках магической кнопки или как приручить SOAP UI
 
«Компьютерное зрение как альтернатива офисным пропускам», Вадим Балашов
«Компьютерное зрение как альтернатива офисным пропускам», Вадим Балашов«Компьютерное зрение как альтернатива офисным пропускам», Вадим Балашов
«Компьютерное зрение как альтернатива офисным пропускам», Вадим Балашов
 
встать на рельсы
встать на рельсывстать на рельсы
встать на рельсы
 
Бумажное прототипирование
Бумажное прототипированиеБумажное прототипирование
Бумажное прототипирование
 
Как воспитать программиста
Как воспитать программистаКак воспитать программиста
Как воспитать программиста
 
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
 

Similar to Как разраба

Практики масштабирования гибкой разработки
Практики масштабирования гибкой разработкиПрактики масштабирования гибкой разработки
Практики масштабирования гибкой разработкиAskhat Urazbaev
 
Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Ontico
 
Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.ScrumTrek
 
TК°Conf. Организация разработки Frontend. Виталий Слободин.
TК°Conf. Организация разработки Frontend. Виталий Слободин.TК°Conf. Организация разработки Frontend. Виталий Слободин.
TК°Conf. Организация разработки Frontend. Виталий Слободин.TKConf
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практикеDenis Tuchin
 
Компонентный подход: скучно, неинтересно, бесперспективно
Компонентный подход: скучно, неинтересно, бесперспективноКомпонентный подход: скучно, неинтересно, бесперспективно
Компонентный подход: скучно, неинтересно, бесперспективноRoman Dvornov
 
Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Ontico
 
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхРаспространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхSergey Xek
 
Проходим тест Джоэла
Проходим тест ДжоэлаПроходим тест Джоэла
Проходим тест Джоэла0leGG
 
непрерывная интеграция шаг к непрерывному деплою родионов игорь
непрерывная интеграция   шаг к непрерывному деплою родионов игорьнепрерывная интеграция   шаг к непрерывному деплою родионов игорь
непрерывная интеграция шаг к непрерывному деплою родионов игорьdrupalconf
 
Tech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU
 
Непрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
Непрерывная интеграция шаг к непрерывному деплою. Родионов ИгорьНепрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
Непрерывная интеграция шаг к непрерывному деплою. Родионов ИгорьPVasili
 
Непрерывная интеграция - шаг к непрерывному деплойменту
Непрерывная интеграция - шаг к непрерывному деплойментуНепрерывная интеграция - шаг к непрерывному деплойменту
Непрерывная интеграция - шаг к непрерывному деплойментуИгорь Родионов
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruYandex
 
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Ontico
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU
 
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)Ontico
 

Similar to Как разраба (20)

Практики масштабирования гибкой разработки
Практики масштабирования гибкой разработкиПрактики масштабирования гибкой разработки
Практики масштабирования гибкой разработки
 
Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)
 
2 bdw.key
2 bdw.key2 bdw.key
2 bdw.key
 
Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.
 
Ryazan
RyazanRyazan
Ryazan
 
TК°Conf. Организация разработки Frontend. Виталий Слободин.
TК°Conf. Организация разработки Frontend. Виталий Слободин.TК°Conf. Организация разработки Frontend. Виталий Слободин.
TК°Conf. Организация разработки Frontend. Виталий Слободин.
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практике
 
Компонентный подход: скучно, неинтересно, бесперспективно
Компонентный подход: скучно, неинтересно, бесперспективноКомпонентный подход: скучно, неинтересно, бесперспективно
Компонентный подход: скучно, неинтересно, бесперспективно
 
Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)
 
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхРаспространенные ошибки применения баз данных
Распространенные ошибки применения баз данных
 
Проходим тест Джоэла
Проходим тест ДжоэлаПроходим тест Джоэла
Проходим тест Джоэла
 
непрерывная интеграция шаг к непрерывному деплою родионов игорь
непрерывная интеграция   шаг к непрерывному деплою родионов игорьнепрерывная интеграция   шаг к непрерывному деплою родионов игорь
непрерывная интеграция шаг к непрерывному деплою родионов игорь
 
Tech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест Джоэла
 
Непрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
Непрерывная интеграция шаг к непрерывному деплою. Родионов ИгорьНепрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
Непрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
 
Gitlab devconf
Gitlab devconfGitlab devconf
Gitlab devconf
 
Непрерывная интеграция - шаг к непрерывному деплойменту
Непрерывная интеграция - шаг к непрерывному деплойментуНепрерывная интеграция - шаг к непрерывному деплойменту
Непрерывная интеграция - шаг к непрерывному деплойменту
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
 
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
 
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
 

More from Alexander Makarov

UWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiUWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiAlexander Makarov
 
Yii, frameworks and where PHP is heading to
Yii, frameworks and where PHP is heading toYii, frameworks and where PHP is heading to
Yii, frameworks and where PHP is heading toAlexander Makarov
 
DevConf 2012 - Yii, его разработка и Yii2
DevConf 2012 - Yii, его разработка и Yii2DevConf 2012 - Yii, его разработка и Yii2
DevConf 2012 - Yii, его разработка и Yii2Alexander Makarov
 
YiiConf 2012 - Alexander Makarov - Yii2, what's new
YiiConf 2012 - Alexander Makarov - Yii2, what's newYiiConf 2012 - Alexander Makarov - Yii2, what's new
YiiConf 2012 - Alexander Makarov - Yii2, what's newAlexander Makarov
 
YiiConf 2012 - Alexander Makarov - Yii2, что нового
YiiConf 2012 - Alexander Makarov - Yii2, что новогоYiiConf 2012 - Alexander Makarov - Yii2, что нового
YiiConf 2012 - Alexander Makarov - Yii2, что новогоAlexander Makarov
 
UWDC'12, Александр Макаров, Yii, его разработка и Yii2
UWDC'12, Александр Макаров, Yii, его разработка и Yii2UWDC'12, Александр Макаров, Yii, его разработка и Yii2
UWDC'12, Александр Макаров, Yii, его разработка и Yii2Alexander Makarov
 
Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedAlexander Makarov
 
Выбираем PHP-фреймворк. Особенности разработки с фреймворками
Выбираем PHP-фреймворк. Особенности разработки с фреймворкамиВыбираем PHP-фреймворк. Особенности разработки с фреймворками
Выбираем PHP-фреймворк. Особенности разработки с фреймворкамиAlexander Makarov
 

More from Alexander Makarov (10)

UWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiUWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем Yii
 
UWDC 2013, Yii2
UWDC 2013, Yii2UWDC 2013, Yii2
UWDC 2013, Yii2
 
Yii, frameworks and where PHP is heading to
Yii, frameworks and where PHP is heading toYii, frameworks and where PHP is heading to
Yii, frameworks and where PHP is heading to
 
DevConf 2012 - Yii, его разработка и Yii2
DevConf 2012 - Yii, его разработка и Yii2DevConf 2012 - Yii, его разработка и Yii2
DevConf 2012 - Yii, его разработка и Yii2
 
YiiConf 2012 - Alexander Makarov - Yii2, what's new
YiiConf 2012 - Alexander Makarov - Yii2, what's newYiiConf 2012 - Alexander Makarov - Yii2, what's new
YiiConf 2012 - Alexander Makarov - Yii2, what's new
 
YiiConf 2012 - Alexander Makarov - Yii2, что нового
YiiConf 2012 - Alexander Makarov - Yii2, что новогоYiiConf 2012 - Alexander Makarov - Yii2, что нового
YiiConf 2012 - Alexander Makarov - Yii2, что нового
 
UWDC'12, Александр Макаров, Yii, его разработка и Yii2
UWDC'12, Александр Макаров, Yii, его разработка и Yii2UWDC'12, Александр Макаров, Yii, его разработка и Yii2
UWDC'12, Александр Макаров, Yii, его разработка и Yii2
 
Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developed
 
Выбираем PHP-фреймворк. Особенности разработки с фреймворками
Выбираем PHP-фреймворк. Особенности разработки с фреймворкамиВыбираем PHP-фреймворк. Особенности разработки с фреймворками
Выбираем PHP-фреймворк. Особенности разработки с фреймворками
 
Yii rit 2010
Yii rit 2010Yii rit 2010
Yii rit 2010
 

Как разраба

  • 1. Как разрабатывается Макаров Александр Yii core team
  • 2. Что такое Yii?  PHP5 MVC фреймворк.  Свой Active Record.  Лёгкий и быстрый.  I18n на основе CLDR.  Мощный и гибкий.  Кэш с зависимостями  Красивый API. и кучей бэкэндов.  Пересекается с  RBAC. Prado, Rails,  Консоль. Symfony и Joomla.  Генератор кода. … Prado, с 2004 → Yii 1.0, 2008 → Yii 1.1, 2010
  • 3. Типичный action public function actionView($id) { $post = Post::model()->findByPk($id); if(!$post) throw new CHttpException(404); $this->render('view', array( 'post' => $post, )); }
  • 4. И немного AR посложнее $posts = Post::model() ->taggedWith(array('yii', 'CodeFest'))->published()->with('comments')- >findAll(); foreach($posts as $post){ echo $post->title; foreach($post->comments as $comment){ echo $comment->text; } }
  • 5. Откуда такое название? • Yes It Is (2010) • Easy Efficient Extensible (2009) • Китайский символ Yi: – Лёгкость, простота. – Изменчивость и гибкость. – Постоянство. Главные принципы не меняются. “Yi ching”, “Книга перемен”.
  • 6. Зачем велосипед и почему MVC? • Во времена Prado не было нормальной альтернативы. • Prado заимствовал у ASP.NET. Чужеродно. • MVC популярен и удобен. • Существующие в 2008 году фреймворки не устраивали.
  • 7. Иногда велосипед — это хорошо!
  • 8. Заимствование • Стоит ли смотреть на других? • Заимствование идей в неизменном виде. ?
  • 9. Сообщество и компания Сообщество Компания  Фреймворк не × Заинтересована в подпиливается под получении прибыли. конкретные проекты. × Фреймворк часто является  Заинтересовано в побочным продуктом оттачивании инструмента. проектов компании.  Готово к обсуждениям. × Работает за деньги.  Работает на репутацию. × Часто откладывает  Принимает решения принятие решений. относительно быстро.
  • 10. Компания — зло для фреймворка? • Не всегда. • Acquia, Lullabot (Drupal) • Percona (MySQL) • Zabbix
  • 11. Почему BSD? • Фреймворк — инструмент. • Чтобы код «жил» его должны серьёзно использовать. • Серьёзно = для получения прибыли. • BSD не ограничивает коммерческое использование.
  • 12. Сообщество Yii В общем • Оттянул на себя часть • Интересные уникальные сообщества Prado решения, рецепты • Не превратиться в • Собрать лояльное ядро helpdesk • Обучить на личном • Повторяющиеся вопросы примере, что для → wiki, поиск сообщества хорошо • Мало пишут — не всегда • Оставить шанс показать плохо себя
  • 13. Новые предложения Необходимо? Типично? Обсуждение Реализация
  • 14. «Ну и что... Это ситуация когда количество параметров меньше и тут все OK. А ситуация с зомби совсем другая»
  • 15. Команда Yii • 6 разработчиков. • Количество • Технический писатель. разработчиков не • ~50 переводчиков. растёт т.к. рост означает: – Больше времени на • Приоритеты: общение, меньше на – Стабильность кода. код. – Надёжность кода. – Возможные – Единый стиль. конфликты.
  • 16. Use the force and read the source!
  • 18. Документация • Код без документации — мусор. • 40% успешности проекта — документация. • Пишем код — обновляем документацию. • Всегда сразу документируем методы, классы и свойства. • Важны примеры, но слишком много примеров — тоже плохо.
  • 19. Почему код должен быть приятным? • Чтобы проект доставлял разработчику не меньше удовольствия, чем пользователям. • Чтобы не тратить неоправданно много времени на документацию. • Деньги, время, мотивация.
  • 20. Каким должен быть API? • Согласованный. Всё в одном стиле. • Не сложный. Сложность = много всего. – Магия, если она есть, должна обязательно быть однозначной и, по возможности, простой. • Гибкий. Легко поменять поведение. • Документированный. • Гибкость vs простота. – Крайности. God object. • Решение: фасад для скрытия деталей, адаптер для выравнивания API.
  • 21. Готового идеала нет • В больших проектах всегда приходится что- то подпиливать. – Как потом обновлять? – Как ничего не сломать? • В фреймворк нельзя встроить всё. – Надо ещё и сторонний код пилить? – А вдруг не заработает?
  • 22. Версии и обратная совместимость 1.1.x — обратно совместимые релизы. – Небольшие документированные изменения. – Новые возможности. – Подходит для обновления уже начатых проектов. 1.x.0 — частичная несовместимость. – Обновить проект возможно, но затратно. x.0.0 — более свежие возможности без оглядки на обратную совместимость.
  • 23. Поддержка старых версий Проект Фреймворк • Делается не один месяц, • Поддерживать все старые за это время выходит версии нереально → обратно несовместимая ограничиваем время версия. поддержки. • Немедленное • Не перетаскиваем новые адаптирование под неё — возможности в старые потеря времени и денег. версии. Исправляем • Возможно, стоит ошибки. остановиться, но как быть с багами в фреймворке?
  • 24. Инструментарий • «Одноразовую» миграцию данных в большинстве случаев приходится делать много раз. • Код надо тестировать. • Однотипный код писать лень. • IDE должны поддерживать код. • Отладка — это важно.
  • 25. Производительность и оптимизация • Yii быстрый т.к. загружается только то, что нужно. Используется SPL __autoload. • Не подключаемся к БД, пока не понадобится, не парсим запрос пока не потребуют и т.д. • Если код используется часто и много — производительность важнее фич. • Если используется редко — производительность не так важна.
  • 26. Yii — это хорошо!
  • 27. Спасибо • http://yiiframework.com/ • http://yiiframework.ru/ • http://rmcreative.ru/ • sam@rmcreative.ru • Принимаются – Отзывы – Идеи – Предложения